interface中clocking block输入偏差与输出偏差

资料来源

(1) 硅芯思见:【125】clocking block中的输入偏差和输出偏差 (qq.com)

(2) sv绿皮书;

1.输入偏差与输出偏差

(1) system verilog的时钟块机制(clocking block)可以对指定信号进行基于特定时钟的同步处理,时钟块中的任何信号都将根据指定时钟被同步驱动或采样;

(2) clocking block可以样信号和驱动信号指定input偏差和output偏差;

(3) clocking block中默认的input偏差是1step,默认的output偏差为0; 其中,1step可以认为是上一时间槽(time slot)的最后时刻;

注1:#1step中的step与`timescale中的仿真精度一致(出处???);

注2:当input skew大于0时,避免竞争现象,避免到底采样的是时钟沿前的数据还是时钟沿后的数据;

注3:以program定义的代码被认为是测试平台代码,会放到reactive区域执行;

注4:$monitor,$storbe以及其他类似的事件都在postponed区域执行;

(4) interface中的clocking block只能用于验证平台,不能用于RTL设计;

2.示例

2.1input偏差和output偏差为默认值

(1)默认的输入偏差为1step,默认的输出偏差为0;

(2)输入偏差1step可以认为是上一时间槽的最后时刻,指采样信号事件(cb.sig1)采样输入信号(sig1)在时钟边沿1step前的稳定值;

注1:采样输入信号,使用阻塞赋值;驱动输出信号,采用非阻塞赋值;

(3)输出偏差0则表示采样事件发生后(cb.sig2)立即将对应值驱动或更新到输出端口(sig2)(对于clocking block的输出sig2而言,该信号通过cb引用时,可以被驱动,但是不能被读,否则会报错);

2.2定义default输入偏差与输出偏差

2.3default偏差设置为posedge和negedge

(1)输入偏差设置为posedge,时钟采样到sig1后立即在上升沿将值更新到cb.sig1中;

(2)输出偏差设置为negedge,cb.sig2的值在采样后,等到时钟下降沿将值更新到sig2中;

 

 

posted on 2021-12-30 20:50  知北游。。  阅读(1747)  评论(0编辑  收藏  举报

导航