之前的文章,从理论讲述了 SDF 反标相关知识,通过学习,大家想必已经掌握了不少。老话讲:纸上得来终觉浅,绝知此事要躬行。不错,今天我们一起来探究一下 SDF延迟文件中的数据信息,是如何与标准单元库或者网表代码进行关联的。
下面一个module 是来自于某家单元库。库中的specify...endspecify 块结构,采用了module-path-delay 的方式,指定延时信息。
`timescale 1ns/1ps
module my_std_cell(Y, A, B);
output Y;
input A, B;
nor (Y, A, B);
specify
(B => (Y:1'b1)) = (0.01 , 0.01);
(A => (Y:1'b1)) = (0.01 , 0.01);
endspecify
endmodule
下面的数据描述信息,来源于经过PT 工具提取的SDF文件延迟片段信息。可见:SDF中的IOPATH delay 用于描述 my_std_cell中的module-path-delay 延迟大小。
(CELL
(CELLTYPE "my_std_cell")
(INSTANCE a/b/c/d/my_std_cell_inst)
(DELAY
(ABSOLUTE
(IOPATH A Y (0.016::0.016) (0.003::0.002))
(IOPATH B Y (0.021::0.025) (-0.000::-0.001))
)
)
)
另外,在my_std_cell 中的 specify...endspecify block 中定义的延迟路径信息,理论上应该和SDF文件中的延迟标注路径信息和列表数目,完全相等。