In reply to dave_59:
I have a short question about more complex synchronization items that a scoreboard should handle in order to compute the Golden (reference) model:
For e.g. I have a SCBD (extended from uvm_scoreboard) with 3 analysis imports that have to deal with "custom" transaction types, like:
uvm_analysis_imp_block1 #(block1_txn, my_block1_scbd) bl1_export;
uvm_analysis_imp_block2 #(block2_txn, my_block2_scbd) bl2_export;
uvm_analysis_imp_block3 #(block3_txn, my_block1_scbd) bl3_export;
And, all these 3 different items are written in their monitor (threfore, I have 3 different monitors) such that, the items arrive in SCBD in an asynchronous mode and randomly... Let's say that I can heve this flux: block2_txn, block2_txn, block1_txn, block2_txn, block3_txn,block1_txn, block2_txn, ...
Now, suppose that my scbd (named "my_block1_scbd") has to predict something like this:
ref_model_eq = block1_txn.A + 2*block2_txn.Operand - block3_txn.x;
My question is: how to synchronize all three items in order to not miss one of them and to have all that I need for the ref. equation "ref_model_eq"?
Currentlly, I'm trying (in a run() task of SCBD) a fork - join_none with 3 threads for each collected item (each thread has a forever loop!)... I know that it is not recommended to use FORKs in a SCBD, right?