VLSI Concept · RTL
Blocking vs Non-blocking Assignments
= updates immediately. <= updates at the end of the time step.
Blocking assignments (=) execute sequentially and immediately — used for combinational logic. Non-blocking assignments (<=) schedule the update to happen at the end of the current time step, so every right-hand side is evaluated using old values before any register updates — used for sequential (clocked) logic. Mixing them up is one of the most common sources of simulation-vs-synthesis mismatches.