VLSI Training in Ahmedabad | UVM Training in Gujarat – Indeeksha Digital Pvt. Ltd.

Verilog Event Scheduler

May 20, 2025

You might think non-blocking assignments run in parallel — surprise! Thanks to the scheduler, they politely wait their turn and execute in sequence, giving the illusion of parallelism.
Ever wondered why $display, $strobe, and $monitor show different values at the same simulation time in Verilog?
The answer lies in the unsung hero of simulation: the Event Scheduler.
Let’s decode it — region by region 

 Active Region – The First Responder
 Executes blocking assignments (=), if, case, and $display
 RHS of non-blocking assignments (<=) also evaluated here
Pro Tip: Runs in the order written — but doesn’t update NBAs yet!

 Inactive Region – The #0 Delay Slot
 Executes zero-delay #0 statements
 Comes right after active region but before any NBA updates
Pro Tip: Use with caution — can lead to race conditions if overused

 NBA Region – The Safe Updater
 Applies non-blocking assignments (<=)
 Captures values early, updates them later
Pro Tip: Ensures parallel, race-free register transfers

 Postponed Region – The Observer
 Handles $monitor, $strobe, and assertions
 Runs after all updates — shows final signal values
Pro Tip: Use for clean, stable output and debugging

This was the core of my recent Verilog deep-dive — from concepts to code to waveform output.
Slides attached for a closer look.

If you found these tools helpful, feel free to share this knowledge with as many students and professionals as possible.
Always open to feedback or ideas to expand this tool further!

Ready to expand your knowledge in VLSI, SV, UVM, and semiconductor trends?
To explore more insights and updates, kindly click on the link below and become a part of our group — INDEEKSHA INNOVATIVE SEMIFORCE.

Join INDEEKSHA INNOVATIVE SEMIFORCE today! Click the link below and be part of the movement.

https://www.linkedin.com/groups/10068204/

Whatsapp Call Email Inquiry