Important Coding Guidelines with Nonblocking Assignments -------------------------------------------------------- From Clifford E. Cummings paper: Verilog Nonblocking Assignments With Delays, Myths & Mysteries. http://www.sunburst-design.com/papers/CummingsSNUG2002Boston_NBAwithDelays.pdf Guideline #1: When modeling sequential logic, use nonblocking assignments. Guideline #2: When modeling latches, use nonblocking assignments. Guideline #3: When modeling combinational logic with an always block, use blocking assignments. Guideline #4: When modeling both sequential and combinational logic within the same always block, use nonblocking assignments. Guideline #5: Do not mix blocking and nonblocking assignments in the same always block. Guideline #6: Do not make assignments to the same variable from more than one always block. Guideline #7: Use $strobe to display values that have been assigned using nonblocking assignments. Guideline #8: Do not make assignments using #0 delays.