SDF to Verilog construct matching
The annotator matches SDF constructs to corresponding Verilog constructs in the cells. Usually, the cells contain path delays and timing checks within specify blocks. For each SDF construct, the annotator locates the cell instance and updates each specify path delay or timing check that matches. An SDF construct can have multiple matches, in which case each matching specify statement is updated with the SDF timing value. SDF constructs are matched to Verilog constructs as follows:
IOPATH is matched to specify path delays or primitives:
SDF Verilog (IOPATH (posedge clk) q (3) (4)) (posedge clk => q) = 0; (IOPATH a y (3) (4)) buf u1 (y, a);The IOPATH construct usually annotates path delays. If the module contains no path delays, then all primitives that drive the specified output port are annotated.
INTERCONNECT and PORT are matched to input ports:
SDF Verilog (INTERCONNECT u1.y u2.a (5)) input a; (PORT u2.a (5)) inout a;Both of these constructs identify a module input or inout port and create an internal net that is a delayed version of the port. This is called a Module Input Port Delay (MIPD). All primitives, specify path delays, and specify timing checks connected to the original port are reconnected to the new MIPD net.
PATHPULSE and GLOBALPATHPULSE are matched to specify path delays:
SDF Verilog (PATHPULSE a y (5) (10)) (a => y) = 0; (GLOBALPATHPULSE a y (30) (60)) (a => y) = 0;If the input and output ports are omitted in the SDF, then all path delays are matched in the cell.
DEVICE is matched to primitives or specify path delays:
SDF Verilog (DEVICE y (5)) and u1(y, a, b); (DEVICE y (5)) (a => y) = 0; (b => y) = 0;If the SDF cell instance is a primitive instance, then that primitive's delay is annotated. If it is a module instance, then all specify path delays are annotated that drive the output port specified in the DEVICE construct (all path delays are annotated if the output port is omitted). If the module contains no path delays, then all primitives that drive the specified output port are annotated (or all primitives that drive any output port if the output port is omitted).
SETUP is matched to $setup and $setuphold:
SDF Verilog (SETUP d (posedge clk) (5)) $setup(d, posedge clk, 0); (SETUP d (posedge clk) (5)) $setuphold(posedge clk, d, 0, 0);HOLD is matched to $hold and $setuphold:
SDF Verilog (HOLD d (posedge clk) (5)) $hold(posedge clk, d, 0); (HOLD d (posedge clk) (5)) $setuphold(posedge clk, d, 0, 0);SETUPHOLD is matched to $setup, $hold, and $setuphold:
RECOVERY is matched to $recovery:
SDF Verilog (RECOVERY (negedge reset) (posedge clk) (5)) $recovery(negedge reset, posedge clk, 0);REMOVAL is matched to $removal:
SDF Verilog (REMOVAL (negedge reset) (posedge clk) (5)) $removal(negedge reset, posedge clk, 0);RECREM is matched to $recovery, $removal, and $recrem:
SKEW is matched to $skew:
SDF Verilog (SKEW (posedge clk1) (posedge clk2) (5)) $skew(posedge clk1, posedge clk2, 0);WIDTH is matched to $width:
SDF Verilog (WIDTH (posedge clk) (5)) $width(posedge clk, 0);PERIOD is matched to $period:
SDF Verilog (PERIOD (posedge clk) (5)) $period(posedge clk, 0);NOCHANGE is matched to $nochange:
SDF Verilog (NOCHANGE (negedge write) addr (5) (5)) $nochange(negedge write, addr, 0, 0);
Model Technology Incorporated Voice: (503) 641-1340 Fax: (503)526-5410 www.model.com sales@model.com |