Home > Community > Forums > Logic Design > Preserving structure in RTL Compiler

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Preserving structure in RTL Compiler 

Last post Mon, Dec 23 2013 6:02 AM by grasshopper. 7 replies.
Started by Aram Shahinyan 17 Dec 2013 06:46 AM. Topic has 7 replies and 5322 views
Page 1 of 1 (8 items)
Sort Posts:
  • Tue, Dec 17 2013 6:46 AM

    Preserving structure in RTL Compiler Reply

     Dear all,

    I have a AND-OR structure written in RTL in a module. After the synthesis I see that the same logic is implemented using different logic elements in different modules. In one module I see AND-OR is formed with 4 instances, in other module with 5 instances.

    Is there a way to tell RC to use exactly the same AND-OR structure in different modules, that are using same piece of RTL code?

    Thanks,

    Aram

    • Post Points: 20
  • Tue, Dec 17 2013 7:18 AM

    • grasshopper
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Chelmsford, MA
    • Posts 242
    • Points 3,205
    Re: Preserving structure in RTL Compiler Reply

    Hi Aram,

    structures are not infered by simple expresion lookup in most synthesis tools hence something like

     a = b && c;

    will not always map to 

    AND2X1 (a, b, c)

    and could just as easily be

    NOR2X1(a_int, b, c)

    BUFX1 (a, a_int)

    if such structure offers any advantages (i.e better for congestion, faster, smaller, better power, etc.)

    Not only that but many times, a change in one structure enables better optimization which is a common occurrance for arithmetic operations in building better CSA trees, etc.

    Long and short of it is that if you want a specific implementation in gates, you might as well hand-instantiate it and preserve/dont_touch but if you are hand-instantiating everything then why use a synthesis tool?

    Maybe you can share the rational behind your question

     

    hope this helps,

    gh-

     

     

     

    • Post Points: 20
  • Tue, Dec 17 2013 7:31 AM

    Re: Preserving structure in RTL Compiler Reply

     Hello!

    Thanks for quick responce! The idea of having exactly the same structure of AND-OR is that I am going to hand place instances in place & route, so I have repeatable structure and can scipt it

    Thanks,
    Aram

    • Post Points: 20
  • Tue, Dec 17 2013 7:56 AM

    • grasshopper
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Chelmsford, MA
    • Posts 242
    • Points 3,205
    Re: Preserving structure in RTL Compiler Reply

     If u start from RTL u are giving the synthesis engine the power to do exactly that, synthesize. You can certainly pre-compile and even harden a small block if you want to replicate / clone it several times in your desig. There are numerous ways to write the same function in RTL. What you are trying to do is frequently done but the scale of what you are doing needs to justify the effort.  Adding hierarchy to the logic in question can be a good way to identify the logic even if it is structurallly different in some cases

     

    gh-

    • Post Points: 20
  • Tue, Dec 17 2013 10:04 AM

    Re: Preserving structure in RTL Compiler Reply

     I understand your point. Structurally different logic does not work good if you had place specific instances from repeating 

    modules. That's why I need to have exactly the same structure

     

    Thanks,

    Aram

    • Post Points: 20
  • Fri, Dec 20 2013 11:10 AM

    • grasshopper
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Chelmsford, MA
    • Posts 242
    • Points 3,205
    Re: Preserving structure in RTL Compiler Reply

     In that case, you will need to either hardened your structure and place it as a hardened macro or resort to approaches such as SDP which are more geared to the placement of regular structures. For example, a used builds a synchronizer and may turn it into a hardened macro to ensure timing, etc. does not result in meta-stability. It ultimately has to do with what the goal is. Improve runtime? Create regular structures? Consistent QoR? There are several factors that drive this decision and it can be supported but the deciding factor is what your needs ultimately are.

     

    gh-

    • Post Points: 20
  • Sat, Dec 21 2013 2:25 AM

    Re: Preserving structure in RTL Compiler Reply

     Yes, there are factors that drive this decision. Design is very congested and if I don't preplace cells it will never work. 

    There are over 100K AND-OR structures in my design and if they have different logic it would be very hard to script 

    the placement. I'm looking at something repeatable, but hardening probably is not an option. Any other ideas?

    Thanks,

    Aram

    • Post Points: 20
  • Mon, Dec 23 2013 6:02 AM

    • grasshopper
    • Top 25 Contributor
    • Joined on Thu, Jul 17 2008
    • Chelmsford, MA
    • Posts 242
    • Points 3,205
    Re: Preserving structure in RTL Compiler Reply

     Sounds like all you want is to pre-compile them and script the handling in P&R. Without hierarchy for the structure in question, you will be challenged in a number of way. Nothing prevent you from pre-compiling and then reading as netlist and using set_dont_touch/preserve. It sounds like the design is extremely uniform (100K structure and hand-solution is ALWAYS best) or physical aware solution should do a reasonable job addressing your congestion concerns. I suggest you work with your local AE on this since they may be able to provide more specific advise once they see your exact situation

     happy holidays,

    gh-

     

    gh-

    • Post Points: 5
Page 1 of 1 (8 items)
Sort Posts:
Started by Aram Shahinyan at 17 Dec 2013 06:46 AM. Topic has 7 replies.