接口的使用
实验用于验证组件和DUT之间通过接口连接
tb1.1:可以看到之前的实验 channel initiator 发送的数据例如 valid 和 data 与时钟 clk 均在同一个变化沿,没有任何延迟,这种0延迟的数据发送不利于波形查看和阅读,因此在已有代码的基础上使用 intf.ck 的方式来做数据驱动,并且再观察波形,查看驱动的数据与时钟上升沿的延迟是多少?
答:此处实验并没有更改代码,有延迟1ns,不加也没发现需要
tb1.2:为了更好地控制相邻数据之间的空闲间隔,引入一个变量 idle_cycles, 它表示相邻有效数据之间的间隔。已有代码会使得有效数据之间保持固定的一个空闲周期,我们需要使用 idle_cycles 变量, 来灵活控制有效数据之间的空闲周期。通过这个方法,在 tb 的 initial 块中我们通过方法 set_idle_cycles() 使得三个 channel initiator 的空闲周期变为 0, 即可以实现有效数据的连续发送。
仿真的结束
通过fork-join的功能和方法,实现三个chnl_initiator同时发送数据的要求。同时将不同test也组装到task中,以此区分不同的测试内容。
fork join :内部是并行执行
1.fork join:当fork join内部全部执行完之后,才会继续往下顺序执行,不用同时执行完,只要都执行过就可以;
2.fork join_none:fork join_none语句块执行的同时,父线程会继续执行,即全部并行执行;
3.fork join_any:执行到fork join_any内部语句时,当有任意一个语句执行完,那么后续的父类线程也会继续顺序执行。
要求2.1
要求2.2
标签:fork,cycles,join,实验,MCDF,执行,数据,空闲 From: https://www.cnblogs.com/Dukefish/p/17094082.html