- 博客(11)
- 收藏
- 关注
原创 断言中disable iff在表达式为x态时,检查不会失效,断言仍会开启
SV断言中disable iff(~en)在en为x/z时不会禁用断言,因为x/z不被视为真值。这符合验证安全原则,防止错误禁用检查。解决方案是使用disable iff(~en || $isunknown(en)),确保在控制信号异常时也能正确禁用断言。文中表格清晰展示了不同en状态下的断言行为。
2025-09-17 16:42:54
269
原创 system verilog中,continue、break与return的场景使用区别
System Verilog中continue、break和return语句的功能区别:continue用于跳过当前循环迭代,继续下一次循环;break用于立即终止整个循环;return则用于退出当前函数/任务,并可返回数据。return作用范围最大,可作用于整个函数/任务,而break和continue仅作用于循环体内。常见错误包括在循环外使用continue/break、return未返回值或类型不匹配、误用break代替return等。正确使用这些控制语句能有效管理代码执行流程。
2025-08-13 17:39:16
525
原创 在使用数组定位方法时,其返回值是一个队列,并非标量
摘要: 在SystemVerilog中,数组的max()方法返回的是一个队列而非标量值。若错误地用int类型变量接收返回值(如value_max=array.max()),会导致类型不匹配的编译错误。正确做法是将接收变量声明为队列(如int value_max[$]),因为仿真显示array.max()的返回类型为int[$]。此问题揭示了需注意内置函数的返回值类型,类似方法(如find()等)也需用队列接收结果。实验通过修改代码验证了队列类型赋值的有效性,并强调类型匹配在SV中的重要性。 (字数:150)
2025-07-23 11:28:25
297
原创 system verilog中为什么forever循环中无任何阻塞语句(@、wait、#延时等),仿真会卡死
在system verilog中为什么forever循环中无任何阻塞语句(@、wait、#延时等),仿真会卡死?
2025-06-19 10:47:10
476
原创 为什么sequence中的body任务没被声明为virtual,却依然可以被子类继承?
在搭建验证平台环境时,有的函数或任务被声明了virtual,而有的函数或任务却没有,这个virtual的作用是什么,而有的任务如:body函数即使没有被声明为virtual,却也可以被子类继承?
2024-11-22 15:19:38
614
原创 system verilog中module net连接时,若信号未声明会导致可能出现的bug
在复盘第一个项目时,当时需要做一个接口Interface,需要把dut的输出接到interface上,以方便我们去采样其信号值。出于项目整体环境的可维护性,整体的思路如下:会有一个Temp文件,用来声明中间变量,中间变量分别与interface与dut连接。
2024-11-12 16:46:21
755
原创 linux下,本地文件更新与云端产生冲突的解决思路
例如:在开发时,有时会遇到这种情况:某个文件,自己本地做了修改,但是云端也修改了,与本地文件内容有差异,在svn 更新时会产生如下得冲突。
2024-11-07 18:16:19
511
原创 sv中===和==的使用事项注意
提示:这里填写问题的分析:假设这里由于多驱或者断电等原因,接受数据的信号变为x态,环境去检查时的逻辑时,若a!=1,则报错,a为x态,为不定态,一样为假,这种情况就会出现检查的隐患。在验证旁路(bypass)数据通路时,无论是tx还是rx方向会放一定的pattern,在对应的接收方去检查收到的pattern准确性,来验证数据通路的可靠性。例如:假设发出了一个pattern为1,理论上收到的数据为1,在check时,我们设置若不为1,则报错,否则检查通过。(这里a is 0,只是打印信息的问题,a!
2024-11-07 17:41:30
610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅