国内做的比较简洁的网站,网站界面设计基础,兰州网络推广服务合同,改变网站的域名文章目录 1.clocking简介2.clocking实例分析3.重点分析#xff08;1#xff09;bus定义是不是随便取名的#xff08;2#xff09;输入输出的定义原则是什么#xff08;3#xff09;到底如何消除了竞争和冒险#xff08;4#xff09;没用到的信号如何处理#xff08;51bus定义是不是随便取名的2输入输出的定义原则是什么3到底如何消除了竞争和冒险4没用到的信号如何处理5clocking和modport有什么关系6真实的clocking同步体会 1.clocking简介
概念接口中声明clocking时序块和采样的时钟信号用来做信号的同步和采样。clcoking块基于时钟周期对信号进行驱动或采样的方式使得待测平台不再苦恼于如何准确及时地对信号驱动或采样消除了信号的竞争问题。 作用
事件的同步输入的采样输出的驱动
2.clocking实例分析
clocking bus (posedge clock1);//定义了clocking为bus由clock1的上升沿来驱动采样。default input 10ns output 2ns;//clocking所有信号默认为前10ns对其进行输入采样在事件的后2ns对其进行输出驱动input data,reday,enable top.mem1.enable//定义了输入信号output negedge ack;//定义了驱动信号驱动信号的事件是时钟clock1的下降沿input #1step addr;//addr采用自身定义的采样时间即clock1上升沿的1setp
endclocking注意点
clocking块不但可以定义在interface中也可以定义在module和program中clocking中列举的信号不是自己定义的而是interface或其他声明clocking的模块定义的clocking在声明完名字之后应该伴随定义默认时间。如果没定义默认在clocking采样事件前的1setp对输入进行采样在采样事件后的#0对输出进行驱动。除了定义默认的采样和驱动事件也可以在定义信号方向时用新的采样事件对默认采样事件进行覆盖。
3.重点分析
1bus定义是不是随便取名的
bus不是随意进行的取名而是对于driver和monitor中信号赋值的时候需要用上的比如
my_if vif;
my_transaction tr;
...vif.bus.ack tr.ack;
...2输入输出的定义原则是什么 当信号从testbench到DUT是为输入这里的data是输入 当信号从DUT到testbench是为输出这里的ack为输出
3到底如何消除了竞争和冒险
在RTL仿真时由于无法确定具体电路的延迟时间默认情况下时钟驱动电路时会添加一个无限最小的时间delta cycle的延迟这个延迟要比最小时间单位精度还要小(可以理解成远小于1ps。由于各种可能性clk与被采样数据之间如果只存在若干个delta-cycle的延迟那么采样就会出问题在同样的时刻可能会得到不同的采样结果。 为了避免在RTL仿真中发生信号竞争的问题使用时钟块来决定信号的驱动和采样的方式。 从这张图可以得知input skew为 10step输入信号的采样会在时钟时间clock1上升沿前的10ns采样output skew 为2输出会在clocking事件后2ns时刻输出驱动。这样使得对clocking块中声明的信号进行采样和驱动时不会造成竞争情况。
4没用到的信号如何处理
clocking是可以不使用全interface里面的信号的如
interface my_if(input clock1,input rst_n);logic [7:0]data;
logic ready;
logic enable;
logic addr;
logic ack;
logic psel;clocking bus (posedge clock1);default input 10ns output 2ns;input data,reday,enable top.mem1.enableoutput negedge ack;input #1step addr;
endclockingendinterface很明显psel在clocking中未使用。
5clocking和modport有什么关系
interface A_Bus( input bit clk );wire req, gnt;wire [7:0] addr, data;clocking sb (posedge clk);input gnt;output req, addr;inout data;endclockingmodport STB ( clocking sb ); // synchronous testbench modport
endinterfacemodport介于interface和clocking之间主要用于对信号进行分组指定信号的输入输出方向而clocking则是作用于信号的更底层主要用于信号时序相关的控制例如采样、同步等当然clocking也可以指定信号的输入输出方向。这么来看modport好像没啥作用modport能做的clocking都能做。
6真实的clocking同步体会
[DV]在长burst中漏采样的问题_什么叫漏采样-CSDN博客