• 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. TIP OF THE MONTH: gate to gate EC, with different synthesis...

Stats

  • Locked Locked
  • Replies 0
  • Subscribers 61
  • Views 12723
  • 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

TIP OF THE MONTH: gate to gate EC, with different synthesis engines

archive
archive over 18 years ago

TIP OF THE MONTH: gate to gate EC, with different synthesis engines
 
I have netlist A and netlist B from the same RTL. Can I compare equivalency of the two netlists?
 
This question often comes up when a customer has RTL to netlist A that has passed previous EC run, but decides to produce a netlist B from the same RTL due to change in synthesis strategy.
 
Comparison between gate netlists is usually faster to perform than RTL to netlist. However if the two netlists are produced from different synthesis runs, user typically cannot use equivalency checking to prove equivalency.
 
The main reason for this is the usage of X in RTL. RTL almost always contains X's, which creates a Don't Care (DC) space in implementation. Synthesis has freedom on how these Don't Cares are optimized away - and it often is the case that two netlists from same RTL differs in DC optimizations.
 
Common ways to introduce X in RTL are:  
 1) case default X assignment,  
 2) else clause X assignment, and  
 3) parallel case/full case directive.  
 
 From past experiences, X optimizations don't seem to have deterministic results, although all the factors stay constant (same OS, version of the tool, script).
 
A secondary reason for gate-gate difficulties would be differing datapath optimizations. If the structures of the 2 netlists were implemented differently, EC could result in aborts. Then the best course of action is to do 2 RTL vs gate runs, where 'analyze multiplier' and 'analyze datapath' can make use of the word-level information in the RTL (e.g. '*' or '+') to understand the datapath transforms.
 
Note that, if the design you are verifying is completely free from X assignments or datapath elements, comparing two netlists from different synthesis runs should be possible. Also, any subsequent netlist produced from the seed netlist can be compared to each other.


Originally posted in cdnusers.org by surlung
  • 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