时序报告中的library hold time
flip flop的hold time和setup time不是跟其内部结构有关吗?
setup /hold time 不是固定值,和 D pin和related clock pin的transition有关,
如果transition越差 ,setup/hold time 越大,
见一个
cell (SDFCND0) {
area : 11.16;
cell_footprint : "sdfcnd1";
pg_pin (VDD) {
pg_type : primary_power;
voltage_name : COREVDD1;
}
。
pin(D) {
direction : input;
nextstate_type : data;
related_ground_pin : VSS;
related_power_pin : VDD;
capacitance : 0.0007567;
rise_capacitance : 0.0007567;
fall_capacitance : 0.0007462;
timing () {
related_pin : "CP";
timing_type : setup_rising;
rise_constraint (constraint_template_3x3) {
index_1 ("0.0046, 0.0663, 0.5596");
index_2 ("0.0046, 0.0663, 0.5596");
values ( \
"0.07022, 0.0857, 0.1652", \
"0.05304, 0.0678, 0.1465", \
"0.02379, 0.03817, 0.1009" \
);
}
fall_constraint (constraint_template_3x3) {
index_1 ("0.0046, 0.0663, 0.5596");
index_2 ("0.0046, 0.0663, 0.5596");
values ( \
"0.09933, 0.1132, 0.2137", \
"0.07799, 0.09132, 0.1919", \
"-0.02286, -0.008814, 0.09107" \
);
}
}
timing () {
related_pin : "CP";
timing_type : hold_rising;
rise_constraint (constraint_template_3x3) {
index_1 ("0.0046, 0.0663, 0.5596");
index_2 ("0.0046, 0.0663, 0.5596");
values ( \
"-0.04327, -0.05849, -0.1232", \
"-0.0315, -0.04615, -0.1095", \
"-0.007945, -0.02199, -0.07701" \
);
}
fall_constraint (constraint_template_3x3) {
index_1 ("0.0046, 0.0663, 0.5596");
index_2 ("0.0046, 0.0663, 0.5596");
values ( \
"-0.02274, -0.03682, -0.1168", \
"-0.007162, -0.02089, -0.102", \
"0.071, 0.05877, -0.02542" \
);
}
}
然后你看
lu_table_template (constraint_template_3x3) {
variable_1 : related_pin_transition;
variable_2 : constrained_pin_transition;
index_1 ("0.0001, 0.0002, 0.0003");
index_2 ("0.0001, 0.0002, 0.0003");
}
这个表是pin和realted clock pin 的transition来构造的,
具体为什么会变 是由触发器内部结构决定的,
transition 不一样 , setup/hold time不一样
你好,那个transition不是高低电平跳变时间吗,不是直接在给出的时钟信号上定义的吗?
transition 又叫slew time,就是高低电平的转换时间,
你说直接给出的是 set_clock_transition 0.1这种吧,这种是 PR之前对clock transition的一种估计,
CTS后,就让set_propagated_clock 自动计算 这个leaf pin上的transition了,
和D pin的transtion一起 ,就可以得出当时的setup/hold time值了,
所以这个lib 里面的setup/hold time是个变值,靠查找表来找的,
请问下小编,一般这个transition值的定义依据什么来定义?根据chip的频率还是其他的,谢谢
请问下小编,一般这个transition值的定义依据什么来定义?根据chip的频率还是其他的,谢谢
领教啦!
slew是library characterize的时候自己设计的
真正分析timing的时候按照实际情况插值运算
谢谢分享!
小编解答不错。我再贴一下怎么计算library setup time, 本质上和普通的cell delay计算一样,也是查表加插值。
pt_shell > report_delay_calculation -from reg1/CLK to reg1/D
…… ……
input tran 可以在timing report中看到。
output load 可以通过下面命令查到
pt_shell > get_attr [get_pins reg1/D] pin_capacitance_max
学习学习~
之前还真没想过这个问题受教了