【发布时间】:2021-09-09 03:31:07
【问题描述】:
我这样创建序列类:
`define SEQ_NAME(sub_name) ``sub_name``_test_seq
class base_sequence extends uvm_sequence;
`uvm_object_utils(base_sequence)
......
endclass
class `SEQ_NAME(abc) extends base_sequence;
`uvm_object_utils(`SEQ_NAME(abc))
......
endclass
然后我想使用 set_type_override_by_name 覆盖 base_sequence :
factory.set_type_override_by_name("base_sequence","abc_test_seq"); //fatal, abc_test_seq is not registered with the factory
我发现 `uvm_object_utils(`SEQ_NAME(abc)) 是这样展开的:
typedef uvm_object_registry#(abc_test_seq,"`SEQ_NAME(abc)") type_id;
......
我修改了我的覆盖代码:
factory.set_type_override_by_name("base_sequence","`SEQ_NAME(abc)"); //PASS
那么,如果我想在覆盖工厂中使用字符串“abc_test_seq”,是否应该将uvm_obeject_utils 传递给abc_test_seq 参数?有没有办法像我的第二课一样使用宏?
【问题讨论】:
标签: macros verilog system-verilog uvm