• 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: The dangers of using "set undriven signal...

Stats

  • Locked Locked
  • Replies 0
  • Subscribers 61
  • Views 8282
  • 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: The dangers of using "set undriven signal"

archive
archive over 18 years ago

Tip of the Month: The dangers of using "set undriven signal" in Conformal EC

Say you have a design with floating inputs that cause non-equivalences
in Conformal EC and you hear "set undriven signal" fixed a similar problem
with another design. You ask yourself, "Is this a safe method to verify
my design? Is there a better way of doing this?"
 
set undriven signal is a Conformal EC command that globally ties all
floating signals to a defined value:
 
  set undriven signal [-Both | -Golden | -Revised]
 
One has to exercise caution with global constraints. Here are two
potential pitfalls when using this command:

1) The undriven signal was not intended. This can occur more easily in
VHDL than in Verilog. As an example:

  signal one : std_logic := '1';

Here the designer's obvious intent is to have a signal called 'one' tied
to a constant '1'. Yet, synthesis will tie it off to '0' since the
initial assignment (:= in VHDL) is ignored. Blindly using 'set undriven
signal 0 -golden' will cause this gross error to be covered up. The code
should have been changed to:

  signal one : std_logic;
  [begin]
     one


2) If just "set undriven signal 0" is used, Conformal EC will tie floating inputs
to zero in both the golden and revised (since -both is the default).
This could make the non-equivalences go away but it could also mask a
tie-off synthesis problem. If the synthesis tool didn't tie a floating
input to zero then the implied -both will tie RTL and gate floating
inputs to zero and report equivalence.

Here are recommendations when encountering undriven signals in an
RTL-to-gate run:
 

  • Use "report floating signal" and verify that the floating signals are expected.
  • Fix the RTL. Tie the signal off in the RTL. Floating signals in RTL are usually a bad design practice.
  • If that's not possible, use "add tied signals 0 mysignal -golden" to explicitly tie individual signals or buses. This avoids a global setting and clearly shows the verification intent in the dofile.
  • As a last resort, consider "set undriven signal 0 -golden". This will only tie floating inputs in the RTL.


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