• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Logic Design
  3. Preserving structure in RTL Compiler

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 62
  • Views 18725
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Preserving structure in RTL Compiler

Aram Shahinyan
Aram Shahinyan over 11 years ago

 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

  • Cancel
  • grasshopper
    grasshopper over 11 years ago

    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-

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Aram Shahinyan
    Aram Shahinyan over 11 years ago

     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

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 11 years ago

     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-

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Aram Shahinyan
    Aram Shahinyan over 11 years ago

     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

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 11 years ago

     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-

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Aram Shahinyan
    Aram Shahinyan over 11 years ago

     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

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • grasshopper
    grasshopper over 11 years ago

     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-

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information