SV的激励时序
竞争冒险
竞争:由于每条途径延迟时间不同
冒险:竞争有先有后产生毛刺
解决方法:
仿真时,一般采用加#0延时,多个#0无法判定→非阻塞赋值
cb、program
UVM中通过phase解决
层次化事件队列
仿真器对一个timeslot内语句的执行是按照一定的时间顺序执行的,sv对其进行了更丰富的区域划分
sv中,为了区分验证和RTL事件,tb代码都包含在program模块中,program内部不能包含module、interface、program
SV的interface(可综合)
理解
无interface时,tb是rtl的top
有interface时,tb和rtl同级,还可以延伸出更多的同级文件,top层作为时钟发生器生成时钟激励
SV使用接口来连接不同模块,它连接了DUT和验证平台
使用接口的仲裁器和使用接口的测试平台
interface连接接口和端口,管理端口
modport
为了指定方向,使用modport将接口中的信号分组
端口连接和接口连接的对比
代码说明
当输入request为0或1时,输出grant和request相同
当request为3时,pri为0,grant为1;pri为1,grant为0
当request不为0时,输出grant_valid置1
端口
结果如接口中相同
接口
要注意写$finish();,否则仿真卡顿