在FPGA开发过程中,通常我们会做两步仿真,功能仿真(前仿真)和时序仿真(后仿真),其实在这两步中间还有一种门级仿真,不过通常这一步会忽略,将其放到时序仿真过程中完成,那么这三种仿真各自完成了什么功能呢?
l 功能仿真:这一步仿真的目的主要是检查设计的功能是否正确,比如计数器,只会去关注计数器能不能正常计数,而不会去考虑计数器增加时其与时钟信号之间的延时(其实这是在波形中看到的是它们之间的延时为0)。
l 门级仿真:这步是在综合完成后做的,我们都知道综合是将硬件描述语言等方法描述的电路逻辑转换成门级互连的电路结构。信号在各个门之间传递时总会有延时,这步仿真在考虑了这种延时的情况下检查电路是否还能如预期那样工作。这种延时就是我们平时说的门级延时。
l 时序仿真:这步是在布局布线后做的。布局布线后,电路就被映射到了实际的器件中,这步主要是考虑加入线延时后电路是否还能如期工作。
从上面可以看出,门级仿真和时序仿真检查的都是延时对电路功能的影响,所有通常才会将这两步放到一起完成。下面就介绍如果使用Modelsim完成这两步仿真。
功能仿真
功能仿真需要的输入文件有:
1. 设计文件(通常是Verilog或VHDL描述的文件)。
2. 激励文件,即testbench。
3. 仿真模型(库),这个得视情况而定,Verilog和VHDL的要求并不同,而且还需要根据设计中调用的器件供应商提供的模块而定,比如FIFO。
下面以对50MHz进行8分频的程序为例说明如何进行功能仿真。
1. 启动Modelsim,建立工程。选择File->New->Project。在Project Name栏中填写工程名字(最好和顶层文件名字一致)。ProjectLocation是工作目录,就是对应的将我们的工程相关文件放置到哪一个文件系统中的文件夹内。DefaultLibaray Name保留默认的work即可
2. 往工程添加文件。工程建立后,选择Add Existing File,根据提示将前面所说的设计文件和激励文件都加入工程中。如果需要添加仿真库(比如我们使用了厂商提供的PLL、DRAM等IP核),那么我们还需要添加仿真库,仿真库描述了Megafunction和LPM模块的功能与时序特性,注意一点:仿真库是由厂商提供的,比如Altera的仿真库就放置在Quartus软件的安装目录下。
3. 这步可能不需要。添加仿真库的方法有多种。下面以Altera器件为例说明。其一,从<Altera_install_dir>\quratus\eda\sim_lib目录下将所涉及的Altera仿真库的Verilo-g或VHDL文件拷贝到工程目录下,并将它们添加到工程中。其二,可以将预编译好的仿真库导入到工程中,这里可以选择File->New->Library命令,在弹出的Crea-te a NewLibrary对话框中选择a map to an existing library;也可以选择File->i-mport->Library将已经编译好的仿真库导入到指定目录。
4. 编译文件。选择Compile->Compile All,有错则修改错误,重复该步骤。
5. 启动仿真器并加载顶层设计。选择Simulate->Start Simulate命令,弹出仿真对话框,在design选项卡中选择顶层实体(通常是测试激励)和仿真分辨率,在Library选项卡中加入所需仿真库(如果有的话)。
6. 打开Wave窗口并添加信号。选择View->Wave命令打开波形窗口,并从信号列表窗口中加载要观察的信号到波形窗口(右键添加或者直接拖进去)。
7. 运行仿真。选择Simulate->Run->Run All,随后便会在Wave窗口中看到波形,观察它是否为我们需要的逻辑。
8. 退出仿真。选择Simulate->End Simulate即可以退出仿真。
时序仿真
时序仿真需要的输入文件有:
l 综合布局布线生成的网表文件
l 测试激励文件
l 元件库
l 具有时延信息的标准时延文件(.sdf或.sdo文件),门级仿真不需要这个文件
下面说明具体的仿真步骤。
1. 首先需要使用Quartus软件生成我们所需要的网表文件和标准时延文件。在Quartus中建立工程后,导入我们的设计文件,然后选择Assignments->Settings->Simulation。在ToolName中选择ModelSim,其它保持默认即可。然后编译工程,可以在Quartus工程目录下看到后缀为.vo(网表文件)和.sdo(标准时延文件)的文件。
2. 随后按照功能仿真中步骤建立ModelSim工程,将第一步中生成的网表文件加入到ModelSim工程中。注意在时序仿真中我们可以不要原始的设计文件,而用网表文件代替它。
3. 建立元件库。注意时序仿真是一定需要元件库的,这个库由器件厂商提供,Quartus的位于<Quartus安装目录>/11.0/quartus/eda/sim_lib/cycloneiv_atom.v文件(以cycloneiv系列器件为例说明)。
4. 在Start Simulation对话框中,在Library选项卡中加入需要的元件库,在SDF选项卡中加入时延文件,其它的不变。
5. 剩下的步骤按功能仿真中的完成就可。