FPGA开发中对设计的代码功能进行必要的仿真可以提高研发效率,详尽的测试条件更能让一些设计隐患提前发现,所以代码的仿真在FPGA开发中非常重要,对于初学者一定不能只满足于表象的功能实现,而应该严谨的对自己编写的代码进行充分仿真验证,之后上板验证。
在进行本实验前,请提前安装好modelsim。本实验所实用的modelsim版本为modelsim-win64-10.6d-se。
实验目的:
1:掌握modelsim如何编译TD的FPGA库
2:掌握modelsim如何仿真安路
3:掌握TD软件如何设置modelsim仿真
4:掌握从TD调用modelsim的仿真方法
以EG4D为例,TD软件自带有仿真模型,并可在modelsim进行编译,步骤如下:
1:在 modelsim 的安装目录下,新建文件夹,如:anlogic
2:启动 modelsim,选择 file → change directory 将路径转到 anlogic 文件夹下
3:在anlogic文件夹下新建文件夹,如:src,以存放TD的仿真模型源文件,并将TD安装路径下的sim目录下的所有文件复制过来。
4:在 modelsim 的 file → new → library 下新建名为 eg4d 的库
5:打开 compile → compile,弹出compile souce files对话框,library中选择刚建立的eg4d,查找范围选择 src 下的所有文件(芯片型号为EG4D,所以此处勾选al、common和eg文件夹中的所有文件)。勾选 compile selected files together,单击一个文件,按住ctrl+a全选,之后单击Compile。执行编译命令。
编译成功后单击Done
本文实验在前一个demo的基础上完整。仍以第二章创建的工程为例,提供testbench(文件名为pll_test_tb.v,一般存放在\uisrc\02_sim路径下)代码如下:
1:在 modelsim 中,点击 file → new → project,新建 project,如:sim_prj
2:可点击 add existing file 添加设计文件,也可点击 Create New File 创建新的设计文件,并将其添加到工程。
3:可以连续多次把需要仿真的文件都添加进来。若未将文件一次性添加完,则在Project工作区空白处右击,选择Add to Project进行添加。
4:点击进行编译,编译成功后,源文件的状态将会由“?”变成“✔”
补充:若仿真时碰到关于glbl的问题,请在testbench中引用Anlogic的glbl模块。
5:点击 simulate → start simulation,首先在Libraries选项卡中添加我们编译好的eg4d库文件。
点击Add,下拉选择eg4d库文件。
6.在 work 库中选择 testbench 文件进行仿真,如果想仿真后,在模块列表中查看各信号参数或波形的变化情况,可将“Enable optimization”前面的勾去掉,否则,Modelsim 会将信号参数优化掉,导致信号列表为空。
点击OK进行仿真
(如果波形窗口没有出来,单击View->Wave调用出来,其他窗口没有出来的也能通过这里设置)
点击u_pll_test,选择需要观察到波形窗口的信号
右击,把信号添加到波形窗口
设置单步仿真10us
注:此处pll_lock信号无法正常输出,与TD版本有关,在新版本中该问题能够解决。该问题仅在仿真时出现,不影响正常编译。
除了第一种方法,对于有一定经验的工程师可以使用第二种更加便捷的方法。
首先看下本工程路径下提供了2个模板文件
cmd.do文件可以直接在modelsim控制台中执行,其中D:/ModelSim_SE/anlogic/eg4d就是我们前面编译好的仿真库
compile.f 设置编译文件的路径,一般只要对compile.f进行修改,本工程只用到了3个文件(../表示追溯到上一个文件夹)
把cmd.do和compile.f复制到uisrc/02_sim路径
打开modelsim并且设置路径
选择路径
在控制台输入do cmd.do
可以看到波形完成加载
TD 支持用户使用第三方工具(如 Synopsys VCS、 Mentor Graphics Modelsim 等)来进行功能验证和时序验证。TD 提供仿真所需的功能和时序模型。
在进行TD联合调试前,请根据本实验前面内容完成仿真库的编译。
以下介绍在TD软件中生成供Modelsim 仿真所需文件的流程。
1:在运行 HDL2Bit Flow 前,先设置相关参数。
2:Optimize RTL,设置 rtl_sim_model ON。
3:Optimize Gate,设置 map_sim_modle 和 gate_sim_model ON。
4:Optimize Routing,设置 set phy_sim_model ON。
5:Timing Option 设置 sdf ON。
6:设置 Modelsim 仿真相关参数
lib 指定仿真的库文件 没有默认值,需手动指定路径
runtime 指定仿真运行的时间 1000 ns
resolution 指定仿真的时间精度 1 ps
1:运行 HDL2Bit Flow
对于向执行什么级别的仿真,就执行对应的HDL2Bit Flow
当 HDL2Bit Flow 运行至 Read Design 这一步时,可执行 Behavioral Simulation;
当 HDL2Bit Flow 运行至 Optimize RTL 这一步时,可执行 Post-RTL Simulation;
当 HDL2Bit Flow 运行至 Optimize Gate 这一步时,可执行 Post-Gate Simulation;
当 HDL2Bit Flow 运行至 Optimize Routing 这一步时,可执行 Post-Route Simulation。
以执行Behavioral Simulation仿真来说,只要执行Read Design 这一步,如下图
2:定义 testbench 文件
如点击 tools->Simulation 则会弹出如下对话框,可以添加一个已经存在的
testbench 文件可以新建一个 tb 或者添加一个已经编写好的 tb 仿真文件,这里我们添加已经编写好的。
点击 OK 后,将会在工程目录下生成 fpga_prj_behavioral_sim.do\ fpga_prj_gate_sim.v\ fpga_prj_map_sim.v\
fpga_prj_rtl_sim.do\ fpga_prj_rtl_sim.v 并在 TD 界面打开 fpga_prj_behavioral_sim.do 文件。
打开 fpga_prj_phy_sim.do 或者 fpga_prj_rtl_sim.do,并且修改,确保所有的程序文件路径都正确设置如下图所示。
1:改变路径
设置到工程路径下的 simulation 路径
路径切换成功
在控制台输入 ls 查看路径下的文件
输入 do fpga_prj_behavioral_sim.do 执行仿真
欢迎光临 UISRC工程师开源站 (https://www.uisrc.com/) | Powered by Discuz! X3.5 |