Thanks Dave. I used loopback from NBA to Active region to eliminate the race condition.
The following works
task automatic stable_a( ref int a_ip );
bit change_;
process p1;
fork
begin:T1
p1 = process::self();
@(a_ip);
change_++;
end
begin:T2
event evnt;
#5ns;
->>evnt;
wait( evnt.triggered); // Unblocks in loopback from NBA to Active
p1.kill();
end
join
if( !change_ )
$display("T:%0t Input arg. unchanged",$time); // Should observe this for +define+M1
else
$display("T:%0t Input arg. changed",$time); // Should observe this for +define+M2 / +define+M3
endtask