Hi,
I replaced ref arguments in task to inout and used fork join on arguments. But not working(the changes of inout signals are not taken into account).
//++++++++++++++ INTERFACE++++++++++++++++++++++++++++
interface abc_interface;
//in simulation below signals asserts and de-asserts 5 times. This is standard interface given by other IP. So cant change its structure(cant change logic to wire… etc )
logic temp1;
logic temp2;
logic temp3;
endinterface
//+++++++++++++++++++ MONITOR PARENT+++++++++++++++++++++++++++++++++++++++++
class master extends uvm_monitor;
//task check_signals(ref input a, ref input b);// as ref is not used in fork join i replaced this with below line
task check_signals(inout a, inout b);
forever begin
fork
begin
@(posedge a);
end
begin
@(posedge b);
end
join_any
if(a&&b != 1)
uvm_error(get_full_name , $psprintf("both signals not asserted at same time")) else
uvm_info(get_full_name, $psprintf(“both signals asserted at same time”), UVM_LOW)//I was supposed to get 5 times this message: but not getting atleast once.
end
endtask
endclass
//+++++++++++++++++ MONITOR CHILD++++++++++++++++
class student extends master;
virtual abc_interface abc_intf_h;
task run_phase(uvm_phase phase)
fork
check_signals(abc_intf_h.temp1 , abc_intf_h.temp2);
check_signals (abc_intf_h.temp2 , abc_intf_h.temp3);
join
endtask
endclass