Cadence® system design and verification solutions, integrated under our System Development Suite, provide the simulation, acceleration, emulation, and management capabilities.
System Development Suite Related Products A-Z
Cadence® digital design and signoff solutions provide a fast path to design closure and better predictability, helping you meet your power, performance, and area (PPA) targets.
Full-Flow Digital Solution Related Products A-Z
Cadence® custom, analog, and RF design solutions can help you save time by automating many routine tasks, from block-level and mixed-signal simulation to routing and library characterization.
Overview Related Products A-Z
Driving efficiency and accuracy in advanced packaging, system planning, and multi-fabric interoperability, Cadence® package implementation products deliver the automation and accuracy.
Cadence® PCB design solutions enable shorter, more predictable design cycles with greater integration of component design and system-level simulation for a constraint-driven flow.
An open IP platform for you to customize your app-driven SoC design.
Comprehensive solutions and methodologies.
Helping you meet your broader business goals.
A global customer support infrastructure with around-the-clock help.
24/7 Support - Cadence Online Support
Locate the latest software updates, service request, technical documentation, solutions and more in your personalized environment.
Cadence offers various software services for download. This page describes our offerings, including the Allegro FREE Physical Viewer.
Get the most out of your investment in Cadence technologies through a wide range of training offerings.
This course combines our Allegro PCB Editor Basic Techniques, followed by Allegro PCB Editor Intermediate Techniques.
Virtuoso Analog Design Environment Verifier 16.7
Learn learn to perform requirements-driven analog verification using the Virtuoso ADE Verifier tool.
Exchange ideas, news, technical information, and best practices.
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.
It's not all about the technlogy. Here we exchange ideas on the Cadence Academic Network and other subjects of general interest.
Cadence is a leading provider of system design tools, software, IP, and services.
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?
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,
In reply to grasshopper:
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
In reply to Aram Shahinyan:
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
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
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.
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?
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