ovm打印机投射错误

时间:2018-02-26 18:29:24

标签: system-verilog uvm

我想打印出ovm_sequence_item中使用的结构。由于结构很长,我计划使用tbl_printer.knobs.value_width = 100覆盖表打印机旋钮;

这是代码片段

   virtual function void do_print(ovm_printer printer);
     ovm_table_printer tbl_printer;
     super.do_print(printer);  //print all other fields
     $cast(tbl_printer, printer);
     tbl_printer.knobs.value_width = 100;
     tbl_printer.print_generic("ppid","CppPpid_t",$bits(CppPpid_t),
                                  $psprintf("A=%0b,B=%0b,C=%0d,D=%0d,E=%0d,F=%0x",
                                               struct.A,
                                               struct.B,
                                               struct.C,
                                               struct.D,
                                               struct.E,
                                               struct.F)
                               );
   endfunction: do_print

我收到了这个投射错误。 错误 - [DCF]动态转换失败 * .sv,58   将源类类型'SIP_SHARED_LIB.ovm_pkg.ovm_tree_printer'强制转换为   目标类类型'SIP_SHARED_LIB.ovm_pkg.ovm_table_printer'失败   键入不匹配。   请确保动态投射的匹配类型

有人可以帮我解决我做错的事吗?当我尝试使用ovm_printer时,它是如何获得ovm_tree_printer的?

0 个答案:

没有答案