导读
阻塞赋值,操作符为“=
”,“阻塞”是指在进程语句(initial 和 always) 中,当前的赋值语句会阻断其后语句的正常执行,也就是说后面的语句必须等到当前的赋值语句执行完毕才能执行。而且阻塞赋值可以看成是一步完成的,即:计算等号右边的值并同时赋给左边变量。
非阻塞赋值,操作符为“<=
”,“非阻塞”是指在进程语句(initial 和 always)中,当前的赋值语句不会阻断其后语句的正常执行。
verilog编写代码的8个原则
- (1) 时序电路建模时,用非阻塞赋值。
- (2) 锁存器电路建模时,用非阻塞赋值。
- (3) 用always块建立组合逻辑模型时,用阻塞赋值。
- (4) 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。
- (5) 在同一个always块中不要既用非阻塞赋值又用阻塞赋值。
- (6) 不要在一个以上的always块中为同一个变量赋值。
- (7) 用$strobe系统任务来显示用非阻塞赋值的变量值。
- (8) 在赋值时不要使用#0延时。