In reply to srbeeram:
In discrete event simulation, a time-slot is when the current time is the same vale. “Discrete” means that time is not a continuous value. Time jumps to the next slot when there is nothing left to so in the current time-slot. How big that time jump is depends on when the next scheduled event is. You could go from 10ns to 100ns without stepping through all the times in-inbetween.
Within a particular time-slot, there may be multiple event regions. And just like with time-slots, if there is nothing scheduled for a particular region, that region gets skipped.
However, within a time–slot, it’s possible for the event region to repeat, as with this code. events in a region can schedule events in earlier or later regions.
always @(posdedge clk)
en <= 1;
always @(posedge en)
req <=1;
It does not matter in which region clk1, @(posedge clk) executes in the active region. Then en gets scheduled to be updated in the NBA region. When the current active region has no more events, all the NBA region events execute, which schedules the next active region event for @(posedge en). Then that schedules another NBA region event.
See this link for more detail.