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();,否则仿真卡顿
本文探讨了SV中的激励时序问题,特别是竞争冒险现象,介绍了通过加延时、非阻塞赋值和层次化事件队列的解决方法。SV接口的使用、modport区分信号方向以及端口与接口连接的区别也进行了详细说明。

2374

被折叠的 条评论
为什么被折叠?



