Dear Forum,
Please help understand one issue if forever and fork/join that I am facing.
In my monitor I want to collect dut input data and SCK toggled data.
This is my code:
task run_phase (uvm_phase phase);
int i;
reg [7:0] cntr;
...
forever
fork
@ (vItf.data)
$display ("%t: MNTR<><><><><><><>< 1. HERE", $time);
@ ( posedge vItf.SCK)
$display ("%t: MNTR<><><><><><><>< 2.HERE", $time);
join
endtask
After simulation I can see that 2nd statement is not triggering for each posedge of SCK.
Simulation screenshot: Waveform
Please see simulation log below:
45: Got the Item
45: MNTR<><><><><><><>< 1. HERE
65: MNTR<><><><><><><>< 2.HERE
65: Shifted slave MISO data: 11100011 : vItf.MISO=1
75: Shifted slave MISO data: 11000110 : vItf.MISO=1
85: Shifted slave MISO data: 10001100 : vItf.MISO=1
95: Shifted slave MISO data: 00011000 : vItf.MISO=0
run
105: Shifted slave MISO data: 00110000 : vItf.MISO=0
115: Shifted slave MISO data: 01100000 : vItf.MISO=0
125: Shifted slave MISO data: 11000000 : vItf.MISO=1
135: Shifted slave MISO data: 10000000 : vItf.MISO=1
145: repeat…
145: → slave MISO data: 01101101
145: Got the Item
145: MNTR<><><><><><><>< 1. HERE
165: MNTR<><><><><><><>< 2.HERE
165: Shifted slave MISO data: 01101101 : vItf.MISO=0
175: Shifted slave MISO data: 11011010 : vItf.MISO=1
185: Shifted slave MISO data: 10110100 : vItf.MISO=1
195: Shifted slave MISO data: 01101000 : vItf.MISO=0
So for each shift operation I am expecting the @(posedge SCK) should trigger. But for some reason it is not begin triggered.
Can you please explain understand why the 2nd event (posedge SCK) is not triggereing at each SCK posedge?
Thanks
Hayk