我有一个参数化的seq_item如下
class seq_item#(int A = 100) extends uvm_sequence_item;
....
endclass
class extended_seq_item#(int A = 100) extends seq_item#(A);
....
endclass
在我的UVM TB中,我需要使用extended_seq_item在工厂中覆盖所有seq_item实例。不同的实例将具有不同的A参数值。如何在工厂中覆盖它?
感谢与问候,基兰
不幸的是,具有不同参数值的参数化类(specializations >>是LRM的术语)被视为单独的类类型,因此您需要为每个参数值提供覆盖。
seq_item#(10)::type_id::set_type_override(extended_seq_item#(10)::get_type()); seq_item#(20)::type_id::set_type_override(extended_seq_item#(20)::get_type()); seq_item#(30)::type_id::set_type_override(extended_seq_item#(30)::get_type());
如果您可以将此代码放入已经参数化A的地方,例如在参数化的env或agent的build_phase中,那么它可能不会像上面那样痛苦。