又或者,当我们把uvm_fatal/uvm_error改成了uvm_warning/uvm_info以后,仿真虽然没有终结,但是这些信息仍在刷屏怎么办? 别急,听Q哥给大家慢慢道来。 除了啰嗦程度(verbosity)和严重程度(severity),UVM内部为每个调试语句都记录了一个调试行为(action),它是一个多比特的变量,每一比特都代表一种行为,如下图所示。
这里会调用 uvm_root 的 m_do_pre_abort 函数,进行仿真结束前的清理工作,之后调用 report_summarize 函数,把所有的统计信息打印出来,如有多少个UVM_ERROR 出现等,每个不同的 ID 有多少条信息打印。最后会调用$finish 退出仿真。例如如果是一个uvm_fatal 宏的话,这里就会结束仿真。 345 到 352 行用来查看 UVM_...
打印冗余度设置 显示冗余度信息。 打印严重性的 重载 超出多个ERROR打印则终止 将其它也纳入计数 设定严重性暂停进入交互 INFO写入文件 其中的ID是在drv中的如下:info和warning指出 控制打印行为的不显示 config_db automation的省略get语句 get语句生效顺序 通配符 检查变量的get情况 检查component的可见信息 虚类 执行...
3.4.3/3.4.4 UVM_ERROR到达一定数量停止仿真/设置计数目标 对于一些大型的验证项目,完整跑一次验证可能需要数个小时甚至数天,但有时通过前期报错已经可以定位到某个bug了,或者我们想快速验证一些修改是否有效,这是再跑完完整的验证就意义不大了,因此需要设置testbench在累积一定数量的UVM_ERROR后自动结束仿真。 实现...
最终打印的log显示没有UVM_ERROR报出。 第二种解决办法的思路更简单直接,就是将1195行的response_queue_error_report_disabled设为1,那么按理说就不会执行1196行的UVM_ERROR打印行为我们先看下这是个什么变量以及如何进行赋值。response_queue_error_report_disabled定义在uvm_sequence_base.sv中行如图11所示,uvm_sequ...
其中,UVM_INFO是最常见的等级,代表信息的重要性比较低,如通常用来报告仿真中的某些细节,比如环境变量或者端口的状态等。UVM_WARNING则提示可能存在问题,仿真人员需要关注并采取措施。UVM_ERROR代表出现严重错误,需要立即暂停仿真并进行处理。而UVM_FATAL则表示仿真已经无法继续进行,需要立即终止。这四个信息严重性等级可以...
最终打印的log显示没有UVM_ERROR报出。 第二种解决办法的思路更简单直接,就是将1195行的response_queue_error_report_disabled设为1,那么按理说就不会执行1196行的UVM_ERROR打印行为我们先看下这是个什么变量以及如何进行赋值。response_queue_error_report_disabled定义在uvm_sequence_base.sv中行如图11所示,uvm_sequ...
uvm的打印分级策略如下图所示: 其中,`uvm_fatal宏的严重等级最高,发生uvm_fatal,仿真会直接停止;其次是`uvm_error,发生uvm_error,不会导致仿真直接停止,仿真会运行完成,只不过运行到最后,用例会fail,指明有bug,可能是环境问题,也可能是dut问题。然后是uvm_warning,起到提醒作用,说明当前点可能会发生错误,有的地方...
在report_phase中根据UVM_ERROR的数量来打印不同的信息。它在main_phase结束之后执行。 设置整个验证平台的超时退出时间 通过config_db设置验证平台中某些参数的值 2.5.2 UVM中测试用例的启动 通过传递参数变量值启动的原因: 保证后加的测试用例不影响已经建好的测试用例 ...
另外,适配器为我们提供了轻松驱动信号的方法,而无需进行复杂的uVC驱动器编码。如果需要,适配器则能够将电压或电流值返回给uVC,例如清单5所示,显示了我们想打印的带有电压信息的错误消息。如果不期望发生(测试序列所期望的)OV事件,则将通过一条包含Vout电压值的消息来报告UVM_ERROR。