24.03.2013 Views

ModelSim SE User's Manual - Electrical and Computer Engineering

ModelSim SE User's Manual - Electrical and Computer Engineering

ModelSim SE User's Manual - Electrical and Computer Engineering

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

UM-144 5 - Verilog simulation<br />

Cell libraries<br />

SDF timing annotation<br />

Delay modes<br />

<strong>ModelSim</strong> <strong>SE</strong> User’s <strong>Manual</strong><br />

Model Technology passed the ASIC Council’s Verilog test suite <strong>and</strong> achieved the "Library<br />

Tested <strong>and</strong> Approved" designation from Si2 Labs. This test suite is designed to ensure<br />

Verilog timing accuracy <strong>and</strong> functionality <strong>and</strong> is the first significant hurdle to complete on<br />

the way to achieving full ASIC vendor support. As a consequence, many ASIC <strong>and</strong> FPGA<br />

vendors’ Verilog cell libraries are compatible with <strong>ModelSim</strong> Verilog.<br />

The cell models generally contain Verilog "specify blocks" that describe the path delays<br />

<strong>and</strong> timing constraints for the cells. See section 13 in the IEEE Std 1364-1995 for details<br />

on specify blocks, <strong>and</strong> section 14.5 for details on timing constraints. <strong>ModelSim</strong> Verilog<br />

fully implements specify blocks <strong>and</strong> timing constraints as defined in IEEE Std 1364 along<br />

with some Verilog-XL compatible extensions.<br />

<strong>ModelSim</strong> Verilog supports timing annotation from St<strong>and</strong>ard Delay Format (SDF) files.<br />

See Chapter 18 - St<strong>and</strong>ard Delay Format (SDF) Timing Annotation for details.<br />

Verilog models may contain both distributed delays <strong>and</strong> path delays. The delays on<br />

primitives, UDPs, <strong>and</strong> continuous assignments are the distributed delays, whereas the portto-port<br />

delays specified in specify blocks are the path delays. These delays interact to<br />

determine the actual delay observed. Most Verilog cells use path delays exclusively, with<br />

the distributed delays set to zero. For example,<br />

module <strong>and</strong>2(y, a, b);<br />

input a, b;<br />

output y;<br />

<strong>and</strong>(y, a, b);<br />

specify<br />

(a => y) = 5;<br />

(b => y) = 5;<br />

endspecify<br />

endmodule<br />

In the above two-input "<strong>and</strong>" gate cell, the distributed delay for the "<strong>and</strong>" primitive is zero,<br />

<strong>and</strong> the actual delays observed on the module ports are taken from the path delays. This is<br />

typical for most cells, but a complex cell may require non-zero distributed delays to work<br />

properly. Even so, these delays are usually small enough that the path delays take priority<br />

over the distributed delays. The rule is that if a module contains both path delays <strong>and</strong><br />

distributed delays, then the larger of the two delays for each path shall be used (as defined<br />

by the IEEE Std 1364). This is the default behavior, but you can specify alternate delay<br />

modes with compiler directives <strong>and</strong> arguments. These arguments <strong>and</strong> directives are<br />

compatible with Verilog-XL. Compiler delay mode arguments take precedence over delay<br />

mode directives in the source code.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!