1、八条指导性规范
#1:当为时序逻辑建模,使用“非阻塞赋值”。
#2:当为锁存器(latch)建模,使用“非阻塞赋值”。
#3:当用always块为组合逻辑建模,使用“阻塞赋值”
#4:当在同一个always块里面既为组合逻辑又为时序逻辑建模,使用“非阻塞赋值”。
#5:不要在同一个always块里面混合使用“阻塞赋值”和“非阻塞赋值”。
#6:不要在两个或两个以上always块里面对同一个变量进行赋值。
#7:使用$strobe以显示已被“非阻塞赋值”的值。
#8:不要使用#0延迟的赋值。
以上做法的目的:
使得仿真和综合的结果一致。
2、仿真的原理(仿真时间的顺序)
2.1层积事件序列
2.2 仿真顺序图
2.3 简化的仿真顺序图
去掉monitor和strobe这两个系统函数;
3、这个问题牵扯:Verilog的仿真和综合的基本原理,目前接触到的论文也不能够明确的表达其基本原理。
所以,我就按照那8条做就好了,基本原理先不管了。