The most common use of fork/join_none
in SystemVerilog is when you want to spawn a dynamic number of parallel threads. In a testbench, each thread could represent a single device on a bus.
initial
begin
N = $urandom_range(1,10);
for( int j = 1; j <= N; ++j )
fork
automatic int k = j; // local copy, k, for each value of j
start_a_thread(k);
join_none
end