- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am trying to speed up my design. I have a large fan out clock enable signal that goes through a combinatorial logic. I do not want to pipeline the signal. I see that it is possible to duplicate combinatorial logic. It seems simple enough but I do not get why I need to specify entity name. I am bit sure what the entity name refers to.
So any examples or alternative ways to accomplish the same thing. Besides duplicating hdl code. --- Quote Start --- December 2012 Altera Corporation Quartus Settings File Reference Manual DUPLICATE_ATOM Directs the Compiler to duplicate the source node, and uses the new duplicate node to fan out to the destination node; the original source node no longer fans out to the destination node. Use the Value field to specify the name of the duplicate node. Syntax set_instance_assignment -name DUPLICATE_ATOM -from <from> -to <to> -entity <entity name> <value> --- Quote End --- Also can I specify wildcard characters like is done is the SDC files like this: set_instance_assignment -name DUPLICATE_ATOM -from "*lpm_counter_component|cntr_lok:auto_generated|counter_reg_bit[1]" -to "*dcfifo_lql1:auto_generated|rdemp_eq_comp_msb_aeb" -entity <entity name>"dupname*"Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Look at the following, which has examples of that assignment:
http://www.alterawiki.com/wiki/register_duplication_for_timing_closure Now, when the combinatorial node has a large fanout, I don't believe assignments work. First, I just don't think it works when applied to a combinatorial node. Second, to get better performance just duplicating the comb node won't help. As an example, pretend a register feeds a combinatorial node right next to it, which then fans out to a bunch of nodes above it and a bunch below it. If we duplicate the combinatorial node, the original could be placed near the nodes above and the duplicate could be placed by the ones below. That would make the hop from combinatorial node to fanouts much shorter and faster. But the source register is still in the same place since it wasn't duplicated, and it now has a longer route to these two comb nodes. Net result is your paths have the same timing. (Remember, as the document states, duplicating nodes helps timing by being able to decrease distance traveled. Unlike ASICs, reducing the load doesn't make much of a difference). What I've done for these is duplicate the source registers in the source code, but a dont_merge attribute on the duplicates, and then duplicate the comb node. By duplicating the source registers and high-fanout comb, one duplicate can be placed above and one below. Admittedly, this is much more painful to do.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for your link and feedback. In my testing I also feel that DUPLICATE_ATOM does not duplicate a combinatorial node. I will try dont merge & Remove Duplicate Registers assignments in your doc.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page