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-448 18 - St<strong>and</strong>ard Delay Format (SDF) Timing Annotation<br />

Optional edge specifications<br />

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

Timing check ports <strong>and</strong> path delay input ports can have optional edge specifications. The<br />

annotator uses the following rules to match edges:<br />

A match occurs if the SDF port does not have an edge.<br />

A match occurs if the specify port does not have an edge.<br />

A match occurs if the SDF port edge is identical to the specify port edge.<br />

A match occurs if explicit edge transitions in the specify port edge overlap with the SDF<br />

port edge.<br />

These rules allow SDF annotation to take place even if there is a difference between the<br />

number of edge-specific constructs in the SDF file <strong>and</strong> the Verilog specify block. For<br />

example, the Verilog specify block may contain separate setup timing checks for a falling<br />

<strong>and</strong> rising edge on data with respect to clock, while the SDF file may contain only a single<br />

setup check for both edges:<br />

SDF Verilog<br />

(<strong>SE</strong>TUP data (posedge clock) (5)) $setup(posedge data, posedge clk, 0);<br />

(<strong>SE</strong>TUP data (posedge clock) (5)) $setup(negedge data, posedge clk, 0);<br />

In this case, the cell accommodates more accurate data than can be supplied by the tool that<br />

created the SDF file, <strong>and</strong> both timing checks correctly receive the same value.<br />

Likewise, the SDF file may contain more accurate data than the model can accommodate.<br />

SDF Verilog<br />

(<strong>SE</strong>TUP (posedge data) (posedge clock) (4)) $setup(data, posedge clk, 0);<br />

(<strong>SE</strong>TUP (negedge data) (posedge clock) (6)) $setup(data, posedge clk, 0);<br />

In this case, both SDF constructs are matched <strong>and</strong> the timing check receives the value from<br />

the last one encountered.<br />

Timing check edge specifiers can also use explicit edge transitions instead of posedge <strong>and</strong><br />

negedge. However, the SDF file is limited to posedge <strong>and</strong> negedge. For example,<br />

SDF Verilog<br />

(<strong>SE</strong>TUP data (posedge clock) (5)) $setup(data, edge[01, 0x] clk, 0);<br />

The explicit edge specifiers are 01, 0x, 10, 1x, x0, <strong>and</strong> x1. The set of [01, 0x, x1] is<br />

equivalent to posedge, while the set of [10, 1x, x0] is equivalent to negedge. A match occurs<br />

if any of the explicit edges in the specify port match any of the explicit edges implied by<br />

the SDF port.

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

Saved successfully!

Ooh no, something went wrong!