I have a sequence item of the type :
class seq_item#(int PARAM_NAME) extends uvm_sequence_item;
`uvm_object_param_utils(seq_item#(PARAM_NAME))
The sequence item is created in the sequence as:
m_seq_item = seq_item#(PARAM_NAME):: type_id::create("name")
In the agent, the sequencer is declared and created as:
uvm_sequencer#(seq_item#(PARAM_NAME))) m_sqr;
...
m_sqr = uvm_sequencer#(seq_item#(PARAM_NAME))::type_id::create("name", this);
The driver class definition is
class driver#(int PARAM_NAME) extends uvm_driver #(seq_item#(PARAM_NAME))
The driving loop is :
forever begin
seq_item_port.get_next_item(req);
do_transaction();
// please note that the transaction is visible on the bus
seq_item_port.item_done();
$cast(rsp,req);
rsp.set_id_info(req);
seq_item_port.put_response(rsp)
end
LE:
typedef parameterized_sequence_with_very_long_name#(PARAM_NAME) my_sequence_type;
class my_test extends uvm_test;
my_sequence_type m_seq;
...
function void build_phase(uvm_phase phase);
super.build_phase(phase)
m_seq = my_sequence_type::type_id::create("name")
endfunction
...
endclass
class parameterized_sequence_with_very_long_name#(PARAM_NAME) extends uvm_sequence;
I get a runtime fatal from the sequencer :
UVM_FATAL : <..> [PUTRSP] Failure to cast response in put_response.
Please support to find what I'm doing wrong.
Thank you