Uvm_scoreboard

Thanks chr_sue for your reply.

I saw an example scoreboard class. Here there is a uvm_tlm_analysis_fifo instantiated.
The Monitor call the write function implemented in the scoreboard. ( Here in this example there is no write function shown ). I believe a write task should be implemented
in scoreboard and Scoreboard should call the get(transaction) to pop the transaction
out of the analysis port before comparison.

Could you please give me an example of write function in scoreboard

class simpleadder_scoreboard extends uvm_scoreboard;
`uvm_component_utils(simpleadder_scoreboard)

 uvm_analysis_export #(simpleadder_transaction) sb_export_before;
 uvm_analysis_export #(simpleadder_transaction) sb_export_after;

 uvm_tlm_analysis_fifo #(simpleadder_transaction) before_fifo;
 uvm_tlm_analysis_fifo #(simpleadder_transaction) after_fifo;

 simpleadder_transaction transaction_before;
 simpleadder_transaction transaction_after;

 function new(string name, uvm_component parent);
      super.new(name, parent);
      transaction_before    = new("transaction_before");
      transaction_after    = new("transaction_after");
 endfunction: new

 function void build_phase(uvm_phase phase);
      super.build_phase(phase);
      sb_export_before    = new("sb_export_before", this);
      sb_export_after        = new("sb_export_after", this);

      before_fifo        = new("before_fifo", this);
      after_fifo        = new("after_fifo", this);
 endfunction: build_phase

 function void connect_phase(uvm_phase phase);
      sb_export_before.connect(before_fifo.analysis_export);
      sb_export_after.connect(after_fifo.analysis_export);
 endfunction: connect_phase

 task run();
      forever begin
           before_fifo.get(transaction_before);
           after_fifo.get(transaction_after);
           compare();
      end
 endtask: run

 virtual function void compare();
      if(transaction_before.out == transaction_after.out) begin
           `uvm_info("compare", {"Test: OK!"}, UVM_LOW);
      end else begin
           `uvm_info("compare", {"Test: Fail!"}, UVM_LOW);
      end
 endfunction: compare

endclass: simpleadder_scoreboard

Thanks
JeffD