#0 is just part of the syntax use to define the output skew. i.e, which time-slot to execute the nonblocking assignment. #0 means the re-NBA region of the current time slot corresponding to the clocking event.
thanks for providing inputs. Could you please clarify the below too.
if clocking block outputs are driven with blocking statements are they executed in inactive region. if clocking block output are driven with non blocking statements are they executed in re-NBA region. why we need to execute them in re-NBA region instead of NBA region.
Clocking block outputs can only be written by clocking block drive statements. If the drive statement is in thread started in a module/interface, it executes in the active region (i.e. the RHS expression of the drive statement executes in the active region). If in a thread started by a program block, it executes in the re-active region. Regardless, of which region the drive statement executes in, the LHS clocking output variable gets updated in the reactive region.