Return to Support Page
 homesearchagentssupportask xilinxmap

Answers Database


CADENCE VERILOG-XL: Buffer output does not follow transitions on its input (transport and inertial delays)


Record #648

Product Family:  Software

Product Line:  Cadence

Problem Title:
CADENCE VERILOG-XL:   Buffer output does not follow transitions on its
input (transport and inertial delays)



Problem Description:
Keywords:  gclk clock buffer verilog follow transport delay
inertial, pulse swallowing

Urgency: standard

General Description:
GCLK or other clock buffer's output does not follow
transitions on its input during simulation.  The buffer
output ends up being stuck at 0 or stuck at 1.

VERSION:  Verilog-XL version 2.1 and above

This is usually due to the user trying to clock the design at
a higher rate than allowed, based on the delay between the
I/O pin and the clock buffer output.

Verilog-XL runs in "pulse swallowing mode" by default, which
means that it will simulate distributed delays as *inertial
delays* unless told to do otherwise.  With an inertial delay,
a delaying element does not pass a pulse through if its
duration is shorter than the element's delay to its output.

On the other hand, an element with *transport delay*
functionality *does* pass pulses of shorter duration than the
element's delay.





Solution 1:


Force Verilog-XL v2.1 and higher to enable transport delay
functionality by using the following options when invoking
the Verilog simulation:
	
	     +transport_path_delays  (Enables transport delay
			 	functionality and pulse
				control for module path
				delays.)

	     +transport_int_delays  (this option enables
				transport delay functionality
				and pulse control for inter-
				connect delays.)

	     +multisource_int_delay  (Enables transport delay
				functionality and pulse
				control for interconnect
				delays plus unique source-
				load delays for multi-
				source nets.)

For Verilog-XL v2.5, pulse you may also need to specify these
additional pulse limit options:

	     +pulse_e/n

	     Example:

	     +pulse_e/0      sets the module output path to e
				(error state) and lets the
				module path output pulse pass
				through if the pulse width
				exceeds 0 time units)



	     +pulse_r/m  (sets the module output path to e
				(error state) and lets the
				module path output pulse pass
				through if the pulse width
				exceeds 0 time units)

Also in Verilog-XL v2.5, interconnect delays are controlled
with the following plus options on the command line:

	    +pulse_int_e/n
	    +pulse_int_r/m

(See the 97A Verilog-XL Reference Manual, Chapter 12, p.24,
for more details)

You can determine whether routing and component delays are
the cause of the problem by using XDelay to run a static
timing analysis on the problem path to check the delay of the
buffer input signal against the delay through the buffer.
		




End of Record #648

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents