从这里我们可以看到,UVM 对于这种信息报告的控制到了非常精细的地步。例如假如在 main_phase 中我们使用 main 这个 ID 来报告信息,而在 shutdown_phase 中使用 shutdown 这个 ID,那么我们可以分别对这两个 ID 的信息报告冗余级别进行设置,如可以把 main 设置为 UVM_HIGH,而把 shutdown 设置为UVM_MEDIUM。 如果...
(2) set_report_verbosity_level: 设置某个component的冗余度阈值; 注1:冗余度阈值的设置可以放在build_phase之后run_phase之前的任意phase; (3) set_report_verbosity_level_hier: 递归的设置某个component及其下所有component的冗余度阈值. (4) set_report_id_verbosity (5) set_report_id_verbosity_hier 1.2命...
ID信息 (BUILD_PHASE) 打印message实体 (case0 on going) 也就是说UVM源代码已经帮我们做了处理,将我们执行的`uvm_info内的内容输出固定的打印格式到中端上,如果我们想调整打印的内容格式,那就需要对UVM中的report机制有个比较深入系统的了解,下面我们就以`uvm_info为例看下UVM源代码具体是怎么样一个执行过程。
virtual function void end_of_elaboration(); print(); `uvm_info(get_type_name(), "---TEST PASS---", UVM_NONE) endfunction function void report_phase(uvm_phase phase); uvm_report_server svr; super.report_phase(phase); svr = uvm_report_server::get_server(); //`uvm_info(get_type_...
functionvoidfinal_phase(uvm_phase phase); uvm_report_server m_server = uvm_report_server::get_server(); super.final_phase(phase); if(m_server.get_serverity_count(UVM_FATAL)||(m_server.get_serverity_count(UVM_ERROR)) $display("CASE FAILED"); ...
function void build_phase(uvm_phase phase); … demoter = test1_demoter::type_id::create("demoter"); … endfunction : build_phase task main_phase(uvm_phase phase); uvm_report_cb::add(env.ag.mon, demoter); crc_err_seq.start(env.ag.seqr); ...
`uvm_error(get_type_name(),"error message here") endfunction : report_phase in my env, I instance an array of some_env which has an array of some_agents. each, in turn instances the some_monitor as below: my_env.sv: some_env my_some_env[NUM_CONNECTED_ENVS]; ...
1+uvm_set_verbosity=<comp>,<id>,<verbosity>,<phase>2+uvm_set_verbosity=<comp>,<id>,<verbosity>,time,34+uvm_set_action=<comp>,<id>,<severity>,<action>5//+uvm_set_action=uvm_test_top.env.*,_ALL_,UVM_ERROR,UVM_NO_ACTION67+uvm_set_severity=<comp>,<id>,<current_severity>...