UVM info级别是指在基于UVM的验证环境中,使用`uvm_info`语句定义的信息严重性。UVM默认有四种信息严重性,分别是UVM_INFO、UVM_WARNING、UVM_ERROR和UVM_FATAL。其中,UVM_INFO是最常见的等级,代表信息的重要性比较低,如通常用来报告仿真中的某些细节,比如环境变量或者端口的状态等。UVM_WARNING则提示可能存在问题,仿真...
而$realtime获取的时间是一个实数,但是在显示的时间受$timeformat设置的默认值的影响,即此时显示的时间单位是该语句执行时所在域的时间精度,所以此时我们看到`uvm_info调用时在log中显示的时间是一个五位数,与波形上期望的小数有一些差异,如果期望对这个数据显示格式进行约束,可以在顶层调用`uvm_info...
warning/error/fatal调试语句 调试语句除了uvm_info,UVM内部根据问题的严重性(severity)由低到高,还引入了uvm_warning/uvm_error/uvm_fatal。 它们也是UVM预定义的宏,格式跟umv_info很像,只是不再需要设定啰嗦程度了;因此不能通过调整啰嗦容忍等级来忽略。 uvm_warning是打印一些警告信息,用来提醒仿真中的潜在问题。...
`uvm_info("my_driver", "build_phase is called", UVM_LOW); if(!uvm_config_db#(virtual my_if)::get(this, "", "vif", vif)) `uvm_fatal("my_driver", "virtual interface must be set for vif!!!") endfunction config_db的set和get函数都有四个参数: a. 第一个和第二个参数联合起来...
`uvm_fatal(“message_id”,“message_string”)`uvm_error(“message_id”,“message_string”)`uvm_warning(“message_id”,“message_string”)`uvm_info(“message_id”,“message_string”,uvm_verbosity) message_id是一个字符串,可以用来标识消息的来源。它在消息传递系统中用作参考,允许使用者控制消息行...
uvm_info是一个带参数的宏,包含3个部分:ID(标示信息)、MSG(调试信息)、啰嗦程度。ID并非唯一,可为多条语句指定相同ID。MSG为打印信息,可直接指定或通过$sformat产生格式化字符串。啰嗦程度通过枚举类型指定,决定信息是否被屏蔽。通过uvm_report_enabled函数计算信息的啰嗦程度与系统容忍等级进行比较...
重载是深入到UVM骨子里的一个特性。UVM默认有四种信息严重性:UVM_INFO、UVM_WARNING、UVM_ERROR、UVM_FATAL。这四种严重性可以互相重载。如果要把driver中所有的UVM_WARNING显示为UVM_ERROR,可以使用如下的函数: //base_test.sv 16virtualfunctionvoidconnect_phase(uvm_phase phase); ...
set_report_verbosity_level会对某个component内所有的uvm_info宏显示的信息产生影响。 env.i_agt.set_report_verbosity_level_hier(UVM_HIGH); UVM_ERROR到达一定数量结束仿真 当uvm_fatal出现时,表示出现了致命错误,仿真会马上停止。UVM同样支持UVM_ ERROR达到一定数量时结束仿真。例,如果出现了大量的UVM_ERROR,根...
4. `uvm_fatal之后两个参数,uvm_info有三个参数,冗余度对于fatal来说没有意义。 5. 无论传递给run_test的参数是什么,它创建的实例名字都是uvm_test_top。 6. Config_db使用双冒号作用域是因为这两个函数是静态函数。 五、transaction 1. 通过transaction实现由信号级到事务级的转换。
uvm_info本质上通过调用uvm_report_enabled函数来计算当前这条打印语句是不是太啰嗦,再决定是屏蔽还是打印;打印动作是通过uvm_report_info这个函数来完成的。 这里`uvm_file和`uvm_line是两个宏,分别记录了该条打印语句所在的文件名和行号;这就是为什么我们通常会看到uvm_info打印信息里面有文件名和行号的原因。