In reply to chr_sue:
ifndef DPRAM_SCOREBOARD_SV
define DPRAM_SCOREBOARD_SV
uvm_analysis_imp_decl(_before)
uvm_analysis_imp_decl(_after)
class dpram_scoreboard extends uvm_scoreboard;
`uvm_component_utils(dpram_scoreboard)
uvm_analysis_imp_before #(packet,dpram_scoreboard) item_collected_before;
uvm_analysis_imp_after #(packet,dpram_scoreboard) item_collected_after;
uvm_tlm_analysis_fifo #(packet) before_fifo;
uvm_tlm_analysis_fifo #(packet) after_fifo;
packet packet_1;
packet packet_2;
function new(string name,uvm_component parent);
super.new(name,parent);
packet_1 = new("packet_1");
packet_2 = new("packet_2");
endfunction :new
function void build_phase(uvm_phase phase);
super.build_phase(phase);
item_collected_before = new("item_collected_before",this);
item_collected_after = new("item_collected_after",this);
before_fifo = new("before_fifo ",this);
after_fifo = new("after_fifo ",this);
endfunction :build_phase
//write
function void connect_phase(uvm_phase phase );
item_collected_before.connect(before_fifo.analysis_export);
item_collected_after.connect(after_fifo.analysis_export);
// pkt.print();
endfunction : connect_phase
task run();
forever begin
before_fifo.get(packet_1);
after_fifo.get(packet_2);
compare();
end
endtask :run
virtual function void compare();
if(packet_1 ==packet_2) begin
uvm_info("compare ",{"test : OK!"} ,UVM_LOW); end else begin
uvm_info(“compare”,{“Test : Fail !”},UVM_LOW);
end
endfunction :compare
endclass : dpram_scoreboard
`endif