Hi,
I was trying an example to start a sequence on sequencer. I am getting the below error:
UVM_FATAL @ 100: [simple_seqr ] ( 0) send_request failed to cast sequence item
Can someone help me with this please???
Below is my code:
----------------- sequence item -----------------
class simple_seq_item extends uvm_sequence_item;
rand real a;
rand real b;
function new(string name = “”);
super.new(name);
endfunction: new
uvm_object_utils_begin(simple_seq_item)
uvm_field_real(a, UVM_ALL_ON)
uvm_field_real(b, UVM_ALL_ON)
uvm_object_utils_end
endclass: simple_seq_item
----------------- sequencer ---------------------
class simple_sequencer extends uvm_sequencer#(simple_seq_item);
`uvm_component_utils(simple_sequencer)
//constructor
function new(string name, uvm_component parent);
super.new(name,parent);
endfunction
endclass
------------------- sequence ---------------------
class simple_sequence extends uvm_sequence#(simple_seq_item);
`uvm_object_utils(simple_sequence)
function new(string name = “simple_sequence”);
super.new(name);
endfunction: new
task body();
simple_seq_item req;
req = simple_seq_item::type_id::create("req");
start_item (req);
assert(req.randomize()) else `uvm_error("SIMPLE SEQ", "Randomization Failed");
req.print;
finish_item(req);
endtask: body
endclass: simple_sequence
---------------- driver --------------------------
class simple_driver extends uvm_driver#(simple_seq_item);
– some declarations
task run_phase(uvm_phase phase);
simple_seq_item req;
seq_item_port.get_next_item (req);
drive();
seq_item_port.item_done();
endtask
endclass
---------------- agent --------------------------
class simple_agent extends uvm_agent
simple_sequencer simple_seqr;
simple_driver simple_drvr;
task connect_phase(uvm_phase phase);
simple_drvr.seq_item_port.connect(simple_seqr.seq_item_export);
endtask
------------------ test -------------------------
class simple_test extends uvm_test
environment env;
simple_sequence simple_seq;
function void build_phase(uvm_phase phase);
super.build_phase(phase);
env = environment ::type_id::create(.name(“env”), .parent(this));
simple_seq = simple_sequence ::type_id::create(.name(“simple_seq”) ,.parent(this));
endfunction
task run_phase(uvm_phase phase);
simple_seq.start(env.simple_ag.simple_seqr);
endtask
can someone please help me with this