目录
clocking块中,语句“default input #1 output #1;”使得在波形图上:输出会相对时钟上升沿有1个时间单位的延时,但输入不会相对时钟上升沿有1个时间单位的超前。
clocking主要用在testbench的验证中,所以default input #1 output #1中input和output都是针对testbench而言的。 input #1 的含义是:当tb采样dut的输出信号时,会采用时钟边沿信号的#1 之前的信号,此处应该注意的是 tb的input信号是由dut的输出信号驱动的,而dut的输出是理想的信号,不存在延迟#1。 output #1 的含义是:tb 输出信号(驱动dut)时会延迟#1。
1. clocking…endclocking块
clocking块是SV新feature,主要是为了更好解决testbench和DUT之间的timing和同步建模的问题,可以使user基于clock cycle在更高的抽象层次上写testbench(如“## 3”,表示三个clock)。clocking只能在module/interface/checker/program中声明,不能在function/task/package中。clocking块是声明和例化一体的(类似always块没有例化语句)。
clocking块是对所在的module/interface/checker/program里的信号的采样或驱动的timing属性进行声明,也可以通过hierarchy引用的方式作用于其他模块的信号。
同一个module/interface/checker/program中声明多个clocking块,同一个信号也可以出现在不同的clocking块中。
2. clocking shew的含义
Default的clocking shew作用在所有未明确声明的信号。对于声明为input的信号,clocking skew是指最clock event来之前多少事件对其进行取样。对于output信号,则是指clock event发生后多少事件对其进行驱动。注意,clocking块