使用UVM_OBJECTION_TRACE定位UVM环境挂死的方法 在调试UVM环境时,有时会遇到某个phase无法正常结束,但是仿真log中的打印太少,看不出来是哪个phase挂死了。比较让人抓狂。 通常有2种情况,导致phase挂住: 1)等待某个信号一直没来; 2)循环次数过大; 3)举手没有drop 本文介绍打开+UVM_OBJECTION_TRACE,来快速排查哪...
此时,UVM监测发现所有的objection都被撤销了(因为只有driver raise_objection),于是UVM会直接“杀死”monitor中的无限循环进程,并跳到下一个phase,即post_main_phase()。 假设进入main_phase的时刻为0,那么进入post_main_phase的时刻就为100。如果driver根本就没有raise_objection,并且所有其他component的main_phase里面...
+UVM_DUMP_CMDLINE_ARGS:导出所有的命令行参数,确认当前的命令行参数符合你的预期。 +UVM_CONFIG_DB_TRACE:打开访问Config_db的追踪(tracing)功能,可以看到config_db的set和get操作在什么时间由什么组件发起。 +UVM_PHASE_TRACE:打开Phase执行...
+UVM_CONFIG_DB_TRACE: 打开访问Config_db的追踪(tracing)功能,可以看到config_db的set和get操作在什么时间由什么组件发起。 +UVM_PHASE_TRACE:打开Phase执行的追踪功能,可以看到不同phase的执行顺序。 +UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。 +UVM_VERBOSITY:...
+UVM_PHASE_TRACE:打开Phase执行的追踪功能,可以看到不同phase的执行顺序。 +UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。 +UVM_VERBOSITY:设置打印信息的冗余程度,有效地控制不同重要性信息的...
+UVM_PHASE_TRACE:打开Phase执行的追踪功能,可以看到不同phase的执行顺序。 +UVM_OBJECTION_TRACE:打开Objection相关活动的追踪功能,可以清晰地呈现出objection在运行中的状态。 +UVM_VERBOSITY:设置打印信息的冗余程度,有效地控制不同重要性信息的打印和屏蔽。
简介:芯片验证 | UVM的objection机制 了解完phase机制后,发现这不了解objection极其不合适,于是好吧好吧,再学习一点。 以下内容全部来自白皮书。 1 objection与task phase objection字面的意思就是反对、异议。在验证平台中,可以通过drop_objection来通知系统可以关闭验证平台。
UVM:5.2.5 objection 的调试 1.命令行: <sim command> +UVM_OBJECTION_TRACE 2.一次raise 两个objection: 1)第二个是string,可以为空。 2)第三个是数量。 3.加入UVM_OBJECTION_TRACE 结果: 1)UVM 采用树形结构管理所有objection。 2)当有一个objection提起后,会检查从当前component 一直到顶层uvm_top 的...
1+UVM_OBJECTION_TRACE (8)+UVM_RESOURCE_DB_TRACE:使能resource_db访问的追踪; 1+UVM_RESOURCE_DB_TRACE (9)+UVM_CONFIG_DB_TRACE:使能config_db访问的追踪; 1+UVM_CONFIG_DB_TRACE 3.控制仿真行为的命令行参数设置(与冗余度相关的,与严重性相关的,与配置相关的,与启动seq相关的,与重载相关的) ...
1. do_monitor是一个无线循环,在driver_main_phase中控制objection的raise和drop。 2. 如果line42加上时间延迟,则会直接退出main_phase,进入下一个phase. 如果注释掉line43行也是直接退出main_phase,进入下一个phase. 打印结果: 3. 如果加上line49, line51,main_phase则无法退出。打印结果: ...