一直看到各种文献中说有三种仿真。综合前仿真(也叫功能仿真、行为仿真)、综合后仿真和布局布线仿真(后仿真)。但是实际开发中,我从来没用过行为仿真,概念上一直觉得混乱。今天特意查了下,记录下来以备遗忘。
行为仿真确实几乎实际中没有被用过。它是编译之前对用户设计的电路进行逻辑功能验证,主要针对基于原理框图的设计,不针对使用HDL代码的设计。因为该仿真是在编译之前实施的。该仿真也不是FPGA开发的必要流程,实际上我在ASIC开发中,也没见谁编译之前搞仿真,也没见过基于原理框图的设计。
综合后仿真,可以仿真到RTL级别,但是不带有布线的延时信息。这个时候的仿真,所有的触发器值得跳变都跟时钟延是对齐的。也不存在建立保持时间的问题。
布局布线后的仿真,到了这个级别的仿真,才能给出建立保持时间是否满足。但是通常,这个级别的仿真太慢,所以用得也很少。对于FPGA开发,布局布线之后一般也就做一个静态时序分析,没必要做仿真。对于ASIC开发,后仿是肯定要做的,这个很重要,不然很多时序问题检查不出来。
所以实际的开发步骤中,省略了不少标准开发流程的一些东西。下图是FPGA的标准开发流程,划上红线的是实际开发中不会用到的。