Problem

Hi, I have some question about run phase in scoreboard.
Usually, we use raise objection and the drop objection in the test’s run phase to start the sequence.
But,why we don;y need to use raise objection and the drop objection in the scoreboard 's run phase?

Thanks!

In reply to peter:

You can use the objection mechanism in different places also concurrently.
It is legal to have it in the sequences, in components like drivers, scoreboards and tests.
Having to much objection mechanisms implemented might cause confusion for the simulator and the simulation does never come to an end.
The UVM has 1 key role, i.e. ‘as simple as possible’.
Having only 1 objection mechanism in your UVM testbench follows exactly this role.
If you face the situation your last transaction might not be executed in the scoreboard you can avoid the simulation stop by isung different approaches.

In reply to peter:

Our recommendation is to use phase_ready_to_end in the scoreboard to optionally postpone the end of the run phase if the scoreboard is not finished processing.

thanks for reply. if i want the scoreboard postpone more 1us in the run phase after the start function is unblocked , the sudo code for scoreboard’s run phase is also the solution too?

// test’s run phase
task run_phase(uvm_phase phase);
phase.raise_objection(this);
t.start(xxxxxx);
phase.drop_objection(this);

endtask

// scoreboard’s run phase
task run_phase(uvm_phase phase);
phase.raise_objection(this);
if(compare_cnt < upper)
xxxx
else
#1us
phase.drop_objection(this);

endtask