For the upcoming SV standard, issue 02583: passing static ref arg to fork-join_any/none

Will nets still be explicitly forbidden for these kinds of ref static arguments?

In addition, how is this considered?
monitor (IRQ[i])
Eg, if I have code of this sort:

task automatic monitor (ref static sig);
fork 
...
join_none
endtask
var logic [3:0] IRQ; // driven from module
task automatic test ();
	for (int i = 0; i < 4; i++)
		monitor (IRQ[i]);
endtask

Is ‘i’ to be considered an automatic variable and therefore cause IRQ[i] to be disallowed? Not sure how IRQ[i] would work.

Thanks!
Noah

In reply to nachumk:

Yes, only variables, not nets can be passed by reference.

A select of a packed array/struct is not a variable. Selects of unacked arrays/structs are considered a “variable”

If you had

var logic IRQ[4]; // driven from module
task automatic test ();
	for (int i = 0; i < 4; i++)
		monitor (IRQ[i]);
endtask

That would work. ‘i’ gets evaluated as the task gets called, it’s lifetime is not relevant.