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

VHDL VITAL SDF<br />

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

VHDL SDF annotation works on VITAL cells only. The IEEE 1076.4 VITAL ASIC<br />

Modeling Specification describes how cells must be written to support SDF annotation.<br />

Once again, the designer does not need to know the details of this specification because the<br />

library provider has already written the VITAL cells <strong>and</strong> tools that create compatible SDF<br />

files. However, the following summary may help you underst<strong>and</strong> simulator error messages.<br />

For additional VITAL specification information, see "VITAL specification <strong>and</strong> source<br />

code" (UM-93).<br />

SDF to VHDL generic matching<br />

An SDF file contains delay <strong>and</strong> timing constraint data for cell instances in the design. The<br />

annotator must locate the cell instances <strong>and</strong> the placeholders (VHDL generics) for the<br />

timing data. Each type of SDF timing construct is mapped to the name of a generic as<br />

specified by the VITAL modeling specification. The annotator locates the generic <strong>and</strong><br />

updates it with the timing value from the SDF file. It is an error if the annotator fails to find<br />

the cell instance or the named generic. The following are examples of SDF constructs <strong>and</strong><br />

their associated generic names:<br />

SDF construct Matching VHDL generic name<br />

(IOPATH a y (3)) tpd_a_y<br />

(IOPATH (posedge clk) q (1) (2)) tpd_clk_q_posedge<br />

(INTERCONNECT u1/y u2/a (5)) tipd_a<br />

(<strong>SE</strong>TUP d (posedge clk) (5)) tsetup_d_clk_noedge_posedge<br />

(HOLD (negedge d) (posedge clk) (5)) thold_d_clk_negedge_posedge<br />

(<strong>SE</strong>TUPHOLD d clk (5) (5)) tsetup_d_clk & thold_d_clk<br />

(WIDTH (COND (reset==1’b0) clk) (5)) tpw_clk_reset_eq_0

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

Saved successfully!

Ooh no, something went wrong!