UVM_ERROR代表出现严重错误,需要立即暂停仿真并进行处理。而UVM_FATAL则表示仿真已经无法继续进行,需要立即终止。这四个信息严重性等级可以通过`uvm_info`语句重载,并可以使用`$sformatf()`系统函数打印带参数的字符串。不同的等级可以在仿真过程中设置不同的冗余度级别,当达到一定数量时,仿真会结束。
uvm_info执行的时候,UVM会判断系统对这条语句的啰嗦容忍等级,然后进行屏蔽或打印。通过命令行参数或者component对象调用配置函数,可以灵活调整系统的啰嗦容忍等级,从而控制对uvm_info语句的屏蔽。 另外,建议大家写uvm_info语句的时候,info id尽量使用一些便于后期筛选或过滤的字符串(比如function或者task的名字); 而不要...
uvm默认的打印等级是UVM_MEDIUM,也就是说,使用`uvm_info打印时,第三个参数传递的为UVM_NONE,UVM_LOW,UVM_MEDIUM,最终会被打印到标准输出,而传递参数为UVM_HIGH,UVM_FULL,UVM_DEBUG,则不会打印到标准输出。从这个角度理解,打印等级实际上是一个阈值的概念,当阈值设定为某个级别时,当前级别往下的等级,都可以打印...
3.set_report_verbosity_level:设置某个特定的component 冗余度。 driver里面两个UVM_HIGH 的info。 base_test里设置为UVM_HIGH。仿真,两条都打印。改成UVM_MEDIUM,两条都不打印。 1)由于牵涉到层次引用,要在connect_phase即以后的phase才能调用。 2)如果不牵涉层次引用,如设置当前component的冗余度,可以在connect...
process_report_message就是四种severity等级执行打印的核心代码了,调用uvm_report_info传入的参数都保存在了report_message中。 要想了解process_report_message的执行内容,我们还需要知道uvm_report_handler中定义的如右图所示的一些联合数组,这里联合数组里存放的就是我们通过factory机制进行override的相关信息。 uvm_report...
uvm_info是一个带参数的宏,包含3个部分:ID(标示信息)、MSG(调试信息)、啰嗦程度。ID并非唯一,可为多条语句指定相同ID。MSG为打印信息,可直接指定或通过$sformat产生格式化字符串。啰嗦程度通过枚举类型指定,决定信息是否被屏蔽。通过uvm_report_enabled函数计算信息的啰嗦程度与系统容忍等级进行比较...
(1) 在一些特殊case中,遇到VIP报uvm_error导致仿真退出,这时,可以使用uvm_report_catcher捕获到它特定的message,并将其降级为UVM_INFO. (2) 比较粗糙的将UVM_ERROR disable的方法有使用uvm打印信息重载方法对UVM_ERROR降级或使用set_report_severity_actiion方法; ...
调试语句除了uvm_info,UVM内部根据问题的严重性(severity)由低到高,还引入了uvm_warning/uvm_error/uvm_fatal。 它们也是UVM预定义的宏,格式跟umv_info很像,只是不再需要设定啰嗦程度了;因此不能通过调整啰嗦容忍等级来忽略。 uvm_warning是打印一些警告信息,用来提醒仿真中的潜在问题。虽然这些问题暂时可能没什么错...
可以看到打印了信息# UVM_INFO ./lab1.sv(6) @ 0: reporter [lab1.1] hello uvm! 软件:Questasim、gitbash 推荐使用gitbash,使用makefile之前要安装makefile,教程在这里->https://www.eemaker.com/git-bash-make.html 本节代码下载链接: 链接:https://pan.baidu.com/s/1GBhvpGaoG_BNvRZqh-4kPA 提取码...