In reply to sriram.seshagiri:
Class methods and loop variable declarations are the only places where variable lifetimes are implicitly automatic by default. The variable i is covered by both these rules. The lifetime of eq_pa is not automatic, it’s dynamically allocated when constructing the class object. But there is still only one instance of it shared among all threads.
The call stack from the function hiarb_hifis_req() has nothing to do with this issue. You would see the same problem changing the $display inside the fork/join_none to
$display(“New EQ PAR : %0x\n”, eq_pa);.
There are no race conditions here—everything is deterministic. The key point is that variables with automatic lifetimes get created upon each entry into a scope and persist until all nested scopes exit. Those nested scopes created by the fork/join_none don’t even start until after the for-loop terminates.