You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何`uvm_info`调用`convert2string()`无法正常打印内容?

UVM中convert2string()输出为空问题排查

问题场景

定义了继承自hermes_base_seq(最终继承uvm_sequence)的repeat_seq类,通过uvm_config_db获取hermes_router_seq_config配置对象,在body任务中调用cfg.convert2string()并通过uvm_info打印,但日志仅输出uvm_info的前缀信息,未显示转换后的配置内容;监视器中调用同样的函数也存在相同问题。

相关代码

repeat_seq类关键代码

class repeat_seq extends hermes_base_seq;
...
hermes_router_seq_config cfg;
...
task pre_body();
 super.pre_body();
 if(!uvm_config_db #(hermes_router_seq_config)::get(get_sequencer(),"","config",cfg))
   `uvm_fatal(get_type_name(), "config config_db lookup failed")
endtask
task body;
...
`uvm_info("repeat_seq",cfg.convert2string(),UVM_HIGH)
...
endtask: body

hermes_router_seq_config的convert2string()实现

virtual function string convert2string();
  string s = super.convert2string();
  s = { s, $psprintf( "\n port       : %0d", port) };
  s = { s, $psprintf( "\n p_size     : %0d", p_size) };
  s = { s, $psprintf( "\n header     : %H" , header) };
  s = { s, $psprintf( "\n valid_addr : %p" , hermes_pkg::valid_addrs(port)) };
  s = { s, $psprintf( "\n npackets   : %0d", npackets) };
  return s;
endfunction: convert2string

实际日志输出

UVM_INFO /home/ICer/nocc/noc-router/tb/seqs/src/repeat_seq.sv(39) @ 130000: uvm_test_top.env.agent_master_2.sequencer@@seq [repeat_seq]

可能的原因及解决方法

  • 日志级别不匹配:uvm_info使用了UVM_HIGH级别,而UVM默认日志级别为UVM_MEDIUM,低于UVM_HIGH的信息不会被打印。可以将日志级别改为UVM_MEDIUM,或者通过仿真命令行提升日志级别:
    +UVM_VERBOSITY=UVM_HIGH
    
  • 父类convert2string()返回空值:如果父类的convert2string()返回空字符串,后续拼接可能出现异常。可以单独打印父类函数的返回结果,或者直接初始化s为空字符串而非调用super:
    string s = "";
    
  • 配置对象变量未初始化:虽然uvm_config_db::get未触发致命错误,但配置对象中的port、p_size等变量可能未被正确赋值,导致$psprintf生成无效内容。可以在pre_body后单独打印单个变量验证:
    `uvm_info("CFG_CHECK", $sformatf("port: %0d, npackets: %0d", cfg.port, cfg.npackets), UVM_MEDIUM)
    
  • hermes_pkg::valid_addrs(port)返回值异常:如果该函数返回空数组或无法被%p格式正确解析的类型,会导致整个字符串拼接失败。可以单独打印该函数的返回值,或者替换为其他格式符测试。

内容的提问来源于stack exchange,提问作者benjstark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 04:25:21