本帖最后由 UT发布 于 2025-4-8 11:07 编辑
软件版本:TD_5.6.4_Release_97693 操作系统:WIN11 64bit 硬件平台:适用安路(Anlogic)FPGA 1概述FPGA开发中对设计的代码功能进行必要的仿真可以提高研发效率,详尽的测试条件更能让一些设计隐患提前发现,所以代码的仿真在FPGA开发中非常重要,对于初学者一定不能只满足于表象的功能实现,而应该严谨的对自己编写的代码进行充分仿真验证,之后上板验证。 在进行本实验前,请提前安装好modelsim。本实验所实用的modelsim版本为modelsim-win64-10.6d-se。
2仿真库的编译以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。执行编译命令。 3使用modelsim仿真验证
3.1 方法一使用modelsim创建仿真工程本文实验在前一个demo的基础上完整。仍以第二章创建的工程为例,提供testbench(文件名为pll_test_tb.v,一般存放在\uisrc\02_sim路径下)代码如下:
- `timescale 1ns / 100ps
-
- module pll_test_tb( );
-
- reg I_sysclk;
- wire [1:0] O_up_led;
-
- pll_test u_pll_test(
- .I_sysclk(I_sysclk),
- .O_up_led(O_up_led)
- );
-
- initial begin
- I_sysclk = 1'b0;
- end
-
- always #20 I_sysclk=~I_sysclk;
-
- endmodule
复制代码
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库文件。 6.在 work 库中选择 testbench 文件进行仿真,如果想仿真后,在模块列表中查看各信号参数或波形的变化情况,可将“Enable optimization”前面的勾去掉,否则,Modelsim 会将信号参数优化掉,导致信号列表为空。 (如果波形窗口没有出来,单击View->Wave调用出来,其他窗口没有出来的也能通过这里设置)
点击u_pll_test,选择需要观察到波形窗口的信号
注:此处pll_lock信号无法正常输出,与TD版本有关,在新版本中该问题能够解决。该问题仅在仿真时出现,不影响正常编译。 3.2 方法二使用直接编辑仿真文件仿真除了第一种方法,对于有一定经验的工程师可以使用第二种更加便捷的方法。
cmd.do文件可以直接在modelsim控制台中执行,其中D:/ModelSim_SE/anlogic/eg4d就是我们前面编译好的仿真库 - ## part 1: create lib
- vlib work
- vmap work work
-
- ## part 2: load rtl
- vlog -timescale 1ps/1ps -f compile.f
-
- ## part 3: sim
- vsim -L D:/ModelSim_SE/anlogic/eg4d -gui -novopt work.pll_test_tb
- #vsim -voptargs=+acc work.pll_test_tb
-
- ## part 4: add wave
- #do wave.do
- add wave *
-
- ## part 5: show ui
- view wave
- view structure
- view signals
-
- ## part 6: run sim
- #run -all
- run 1000ns
复制代码
compile.f 设置编译文件的路径,一般只要对compile.f进行修改,本工程只用到了3个文件(../表示追溯到上一个文件夹) - ../01_rtl/pll_test.v
- ../02_sim/pll_test_tb.v
- ../../al_ip/mypll.v
复制代码
把cmd.do和compile.f复制到uisrc/02_sim路径
之后的仿真和前面的方法一样。 3.3 方法三使用TD联合仿真
3.3.1 仿真参数设置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。
lib 指定仿真的库文件 没有默认值,需手动指定路径 runtime 指定仿真运行的时间 1000 ns resolution 指定仿真的时间精度 1 ps 3.2.2 仿真文件do文件设置对于向执行什么级别的仿真,就执行对应的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 这一步,如下图
如点击 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,并且修改,确保所有的程序文件路径都正确设置如下图所示。
3.2.3 启动modelsim仿真
输入 do fpga_prj_behavioral_sim.do 执行仿真
|