In reply to AbdulRauf1251:
Hi @chr_sue, I have used fifos instead of queues. But the results are still the same, which I don’t understand why they are happening? I have given the scoreboard updated code with fifo’s addition.
task scoreboard::write_rec2(input seq_item tr);
seq_item pkt = new();
pkt.copy(tr);
fifoRec2.try_put(pkt);
$display("Queue Got this data: %0h",pkt.data);
endtask
task scoreboard::write_rec1(input seq_item tr);
seq_item pkt = new();
pkt.copy(tr);
fifoRec1.try_put(pkt);
$display("Queue Got this data: %0h",pkt.data);
endtask
task scoreboard::run_phase (uvm_phase phase);
forever begin
if (enb == 2'b11) begin
fork
begin thread1(); end
begin thread2(); end
join
end
else if (enb == 2'b10) begin
thread1();
end
else if (enb == 2'b01) begin
thread2();
end
end
endtask
task scoreboard::thread2();
fifo_Rec2.get(Rec2);
fifo_Trans2.get(trans2);
$display("Queue Received this Data: %0h", Rec2.data);
compare(trans2.data,Rec2.data); // this function two inputs and check equality
endtask
task scoreboard::thread1();
fifo_Rec1.get(Rec1);
fifo_Trans1.get(trans1);
$display("Queue Received this Data: %0h", Rec1.data);
compare(trans1.data,Rec1.data); // this function two inputs and check equality
endtask
can you also give me some thought about this theory?
I have read somewhere in the blog due to some delay in the testbench environment’s components sometimes the scoreboard can’t process kinds of stuff and ends up being broken. Except for these very high-level thoughts, I haven’t seen much info about the theory. Can you please share some thoughts about this side too if you think that’s a possibility…?