Fork join inside forever is not triggering the event

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

In reply to haykp:

It is hard to give an answer without knowing the whole Story.
See my case here. It works fine:

module top;

 logic clock = 1'b0;
 logic [3:0] data = 4'h0;

initial 
  forever begin
    fork 
      @(data) $display ("%t: MNTR<><><><><><><>< 1. HERE", $time);
      @(posedge clock) $display ("%t: MNTR<><><><><><><>< 2.HERE", $time);
    join
  end  
 
always #10 clock = ~clock;
always #100 data = !data;

endmodule

Maybe your problem is caused by something else in your UVM Environment.

In reply to chr_sue:

Thanks for the reply!
If I comment the 1st line @ (vItf.data) than the 2nd trigger works normal.

Moitor module just gets the interface object from config_db and in run_phase starts tracking the interface signals( which are triggering correctly as can be seen in the attached screanshoot)