1. OFFSET根据芯片外围电路的时序特性约束了内部延时。
1.1. OFFSET_IN 约束输入信号
OFFSET_IN_AFTER:输入信号(in)在时钟后(after)多长时间进入芯片。
OFFSET_IN_BEFORE:输入信号(in)在时钟前(before)多长时间进入芯片。
显然 CLOCK = OFFSET_IN_AFTER + OFFSET_IN_BEFORE。
OFFSET_IN_AFTER 反映的是外围电路的时序特性,我们无法左右。
OFFSET_IN_BEFORE 是留给芯片的时序余量。PAR的目的就是要满足这个余量,不得超过。
1.2. OFFSET_OUT 约束输出信号
OFFSET_OUT_AFTER:输出信号(out)在时钟后(after)多长时间输出芯片。
OFFSET_OUT_BEFORE:输出信号(out)在时钟前(before)多长时间输出芯片。
显然 CLOCK = OFFSET_OUT_AFTER + OFFSET_OUT_BEFORE。
OFFSET_OUT_BEFORE 反映的是外围电路的时序特性,我们无法左右。
OFFSET_OUT_AFTER 是留给芯片的时序余量。PAR的目的就是要满足这个余量,不得超过。
1.3. 例
OFFSET = IN 10 ns BEFORE "i_ref_clk";
NET “Q_OUT” OFFSET=OUT 15.0 BEFORE “CLK_SYS”;
说明:第二个例子好理解,第一个例子没有指明对象,表示所有受到“i_ref_clk”约束的信号都被施加了该约束。
2. TNM是Timing Name的缩写,是一种grouping约束,用于把若干信号组合成一个特定的组以施加相同的约束。例如
INST "o_dbg_out[0]" TNM = "dbg_out";
INST "o_dbg_out[1]" TNM = "dbg_out";
......
INST "o_dbg_out[63]" TNM = "dbg_out";
采用该方法后一些列信号都被列入名为“dbg_out”的组合。然后可以统一施加约束。如
TIMESPEC "TS_FFS_2_dbg_out" = FROM "FFS" TO "dbg_out" TIG;
3. TIMESPEC用于对时钟周期和路径等进行约束,例如:
TIMESPEC "TS_i_ref_clk" = PERIOD "i_ref_clk_grp" 25.0 ns HIGH 50 %;
TIMESPEC "TS_THIS"=FROM FFS TO RAMS 35;
4. TIG是Timing IGnore的缩写。表示忽略该对象上的时序约束。例如
NET “RESET” TIG=TS_fast, TS_even_faster;
表示对RESET信号,时序约束TS_fast和TS_even_faster无效。