调试语句除了uvm_info,UVM内部根据问题的严重性(severity)由低到高,还引入了uvm_warning/uvm_error/uvm_fatal。 它们也是UVM预定义的宏,格式跟umv_info很像,只是不再需要设定啰嗦程度了;因此不能通过调整啰嗦容忍等级来忽略。 uvm_warning是打印一些警告信息,用来提醒仿真中的潜在问题。虽然这些问题暂时可能没什么错...
uvm_error( ID, Message ); 其中,`ID` 是一个唯一标识符,用于识别错误的来源,`Message` 是一个字符串,用于描述错误的具体信息。 使用`uvm_error` 宏可以帮助验证工程师在 UVM 测试环境中更好地管理和调试错误。当验证过程中发现问题时,可以使用 `uvm_error` 生成相应的错误消息,以便更好地定位和解决问题。
我们通过一个`uvm_error宏的执行进行分析, `uvm_error(“driver”, “the config object is null”) 这是一个在TB中调用的uvm宏,主要接收两个参数 ID和要打印的MSG,这个宏在 uvm_message_defines.svh中进行定义,具体定义如下: 140 `define uvm_error(ID,MSG) \ 141 begin \ 142 if (uvm_report_enabled...
UVM默认有四种信息严重性:UVM_INFO、UVM_WARNING、UVM_ERROR、UVM_FATAL。这四种严重性可以互相重载。如果要把driver中所有的UVM_WARNING显示为UVM_ERROR,可以使用如下的函数: //base_test.sv 16virtualfunctionvoidconnect_phase(uvm_phase phase); 17env.i_agt.drv.set_report_severity_override(UVM_WARNING, UVM...
其中,`uvm_fatal宏的严重等级最高,发生uvm_fatal,仿真会直接停止;其次是`uvm_error,发生uvm_error,不会导致仿真直接停止,仿真会运行完成,只不过运行到最后,用例会fail,指明有bug,可能是环境问题,也可能是dut问题。然后是uvm_warning,起到提醒作用,说明当前点可能会发生错误,有的地方验证出口严格,会让逐条解释uvm_...
消息宏 使用消息宏是使用UVM消息传递系统的推荐方法,这是由于其会自动将消息源的文件名和行号插入到UVM消息字符串中,这对debug来说非常有用。对uvm_info消息,扩展的宏代码还会检查消息的详细设置,以确定是否应该在进行字符串处理之前打印该消息。正如上文所说,这可以提高testbench的性能。
查看UVM源代码,我们首先看下`uvm_info这个宏定义在哪里 上面这段包含了对uvm_info/uvm_warning/uvm_error/uvm_fatal这一系列宏的描述,其本质是对uvm_report_*一系列函数的封装,我们还是以`uvm_info为例继续分析其执行过程,这里使用到了全局函数uvm_report_enbaled ...
uvm_error:这个宏发送带有错误日志的消息。 uvm_fatal: 仿真发生致命错误时,这个宏可以强制结束仿真并打印消息。 为了解释一个UVM环境的结构,在测试用例中,将使用一个简单的加法器作为测试设计(DUT)。UVM测试平台如图所示。DUT是与测试台交互以验证其功能的硬件实现。 为了实现DUT的仿真, sequencer产生一系列数据送入...
实际打印结果格式如下:查看UVM源代码,我们首先定位`uvm_info宏定义的位置:这段代码对uvm_info/uvm_warning/uvm_error/uvm_fatal等宏进行了描述,实际上是对uvm_report_*函数的封装。以`uvm_info为例,分析其执行过程,其中使用了全局函数uvm_report_enabled。这里又调用了uvm_root中定义的uvm_report...
field automation机制提供了与变量、数组、队列等相关的宏,用于实现自动化处理。在打印信息控制方面,UVM提供冗余度阈值设置、信息严重性重载、UVM_ERROR数量控制等机制,以及断点功能、将输出信息导入文件等功能。config_db机制用于在UVM验证平台间传递参数,实现层次结构中参数的设置与获取,同时支持路径、...