阻塞赋值与非阻塞赋值选择

1.阻塞赋值
●如果多个阻塞赋值语句顺序出现在begin-end语句中,则前面的语句在执行时将完全阻塞后面的语句,直到前面语句的赋值完成以后,才会执行下一表达式。
●赋值操作符是“=”的过程赋值是阻塞性过程赋值。

阻塞赋值与非阻塞赋值选择

2.非阻塞性过程赋值
●如果有多个非阻塞赋值语句顺序出现在begin....end语句中,那么前面语句的执行不会阻塞后面语句的执行。

●寄存器变量<=表达式;

阻塞赋值与非阻塞赋值选择

在编写时牢记这八个要点可以为绝大多数的Verilog用户解决在综合后仿真中出现的90-100%的冒险竞争问题。
1)时序电路建模时,用非阻塞赋值。
2)锁存器电路建模时,用非阻塞赋值。
3)用always块建立组合逻辑模型时,用阻塞赋值。
4)在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
5)在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
6)不要在一个以上的always块中为同一个变量赋值。
7)用$strobe系统任务来显示用非阻塞赋值的变量值
8)在赋值时不要使用#延迟