Hi,
I am developing basic scoreboard where am facing some issues which is explained below with code.
uvm_analysis_imp_TX_expected_data #(sequence_item_base, my_scoreboard) item_collect_export;
1)Is it compulsory to register with sequence_item_base or its possible to register with child class(sequence_item_child) extended from of sequence_item_base;
class sequence_item_base extends uvm_sequence_item;
//All the transcation items are defined in child class or grand child class.
//constructor
endclass
class sequence_item_child extends sequence_item_base;
int addr,write,enable,data;
//constructor field macros everything defined in this class
endclass
class my_scoreboard extends uvm_scoreboard;
int temp_data;
bit[7:0] actual_queue[$];
sequence_item_base item;
uvm_analysis_imp_TX_expected_data #(sequence_item_base, my_scoreboard) item_collect_export;
function void build_phase(uvm_phase phase);
item_collect_export = new(“item_collect_export”, this);
endfunction : build_phase
virtual function void write_TX_expected_data(sequence_item_base seq_item);
seq_item.print();
temp_data = seq_item.data;
actual_queue.push_back(temp_data);
endfunction : write
endclass
Output: Error - data is not a class item.
//Since above registed analysis port with base class(data is not a class item of base class ) and trying to push data into Queue but data object is not defined in base class , its defined in child class.
How to push data into the Queue for compare in scoreboard for this type of cases.
Could anyone please comment on this case. Thanks!