为尽量避免在综合布局布线后的仿真中出现冒险竞争现象,在编写Verilog代码时必须牢记以下8个原则:
1,时序电路建模时,用非阻塞赋值。
2,锁存器电路建模时,用非阻塞赋值。
3,用always块建立组合逻辑模型时,用阻塞赋值。
4,在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
5,在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
6,不要在一个以上的always块中为同一个变量赋值。(新手几乎都会犯的错误,Vivado在综合时会报critical warning: multiple-driver)
7,用$strobe系统任务来显示用非阻塞赋值的变量值。
8,在赋值时不要使用 #0 延迟。
参考《Verilog数字系统设计教程 第四版 夏宇闻》