RISCV_picorv32_fpga/rtl/DE0-NANO/guidelines.md

853 B

Verilog Guidelines:

These are some guidlines extracted from: Verilog Nonblocking Assignments With Delays, Myths & Mysteries http://www.sunburst-design.com/papers/CummingsSNUG2002Boston_NBAwithDelays.pdf

  • 1 When modeling sequential logic, use nonblocking assignments.

  • 2 When modeling latches, use nonblocking assignments.

  • 3 When modeling combinational logic with an always block, use blocking assignments.

  • 4 When modeling both sequential and combinational logic within the same always block, use nonblocking assignments.

  • 5 Do not mix blocking and nonblocking assignments in the same always block.

  • 6 Do not make assignments to the same variable from more than one always block.

  • 7 Use $strobe to display values that have been assigned using nonblocking assignments.

  • 8 Do not make assignments using #0 delays.