Disabling processes from within a function

In reply to ce_2015:
I don’t see the rror you quoted.
See Edit code - EDA Playground
The Ending Thread 1 does not occur


module top; 
  event an_event;
 
initial begin
   myfunction();
   #5ns;
   ->an_event;
  $display("@ %t an_event", $realtime); 
   #100ns;
end
 
function void myfunction();
   fork
      begin : THREAD_1
        $display("Thread_1 start"); 
         #10ns;
         $display("Ending Thread 1");
      end   : THREAD_1
      begin : THREAD_2
         wait(an_event.triggered);
        $display("Thread_2 start"); 
        //  wait(an_event.triggered);
         disable THREAD_1;
        $display("End Thread_2 start"); 
      end   : THREAD_2
   join_none
endfunction
endmodule 
// ---------------------SIM results
Thread_1 start
@                    5 an_event
Thread_2 start
End Thread_2 start
 

Ben Cohen
http://www.systemverilog.us/ ben@systemverilog.us
For training, consulting, services: contact Home - My cvcblr


  1. Verification Horizons - March 2018 Issue | Verification Academy
  2. SVA: Package for dynamic and range delays and repeats | Verification Academy
  3. SVA in a UVM Class-based Environment
    SVA in a UVM Class-based Environment | Verification Horizons | Verification Academy