modelsim 自动化 独立仿真vivado ip核工程

本文介绍了如何在Xilinx的Vivado环境下实现独立于Vivado的自动化仿真,通过详细步骤和配置修改,使得在使用modelsim进行FPGA仿真时能大幅提高效率,特别适用于复杂的图像算法仿真。作者分享了从启动行为仿真到修改配置文件的全过程,并提供了相关软件版本和资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.简述

自动化的独立仿真提高FPGA的仿真效率,加快FPGA开发。初学时使用Altera的FPGA,独立仿真带ip核的工程时,还能自己添加IP核的仿真文件实现。但是后来转到xilinx,好像没有办法独立仿真,只能和vivado联合仿真,这效率太低,特别是仿真复杂的图像算法时,人都要都疯了。不过。我细致研究下了,可以实现自动化仿真,还是独立仿,真香!

2.准备

下面只是参考,实际按自己实际来做。

1)vivado2019.1+modelsim2019.2。想要安装包 :

xilinx vivado 百度云分享 vitis vivado 2019.2 2019.1 2018.3 2018.2 2017.4 (包含license)
modelsim 仿真软件 百度云分享 modelsim se 10.7 10.6d 10.6c 10.5 10.4

2)modelsim 编译好vivado的库。还没有编译的,请看我另一篇博客: vivado2018.3 与modelsim联合仿真

3) 准备好工程,包括testbench和测试工程

在这里插入图片描述

4)修改设置,

在这里插入图片描述


在这里插入图片描述

3.启动行为仿真

1)从vivado启动

在这里插入图片描述

2)vivado自动在工程目录下生成下面的目录和文件,红框中就是我们需要改的

在这里插入图片描述

3)修改tb_sim_wave.do文件,把模块信号添加到波形显示

在这里插入图片描述

4)修改tb_sim_simulate.do文件,这个文件我只修改了仿真时间。可以看出这个do文件调用了tb_sim.udo,这个文件应该可以用户自己添加,具体我现在也不知道,明白了以后再来分享。

在这里插入图片描述

5)修改修改tb_sim_compile.do文件,这个文件最后一行时 quit ,把这行注释掉或者删除,添加 do tb_sim_simulate.do 命令。

在这里插入图片描述

6)在modelsim 命令框输入 do tb_sim_compile.do ,就可以独立并且自动化仿真了。

在这里插入图片描述

7)以后就可以直接双击simulate.bat文件启动modelsim,这儿要记得输入 do tb_sim_compile.do 这个命令,而不是 do tb_sim_simulate.do。

在这里插入图片描述

8).bat文件无法启动modelsim问题请看:

modelsim自动化仿真 运行.bat闪退问题

4.总结

这个是自己摸索出来的,有问题或者有更好的建议希望多多交流!!!

### 如何在 ModelSim 中添加 Vivado IP 核 为了成功地将来自 VivadoIP 核集成到 ModelSim 进行仿真,需遵循一系列特定的操作步骤来确保两者之间的兼容性和正确设置。 #### 准备工作 确保已安装并配置好 VivadoModelSim 工具环境。对于 FPGA 设计而言,通常会有一个典型的设计流程[^1],其中涉及多个阶段的工作,包括但限于综合、实现以及最终的比特流生成前的功能验证。 #### 创建和导出 IP 核 当利用 Vivado 开发工具创建所需的 IP 核时,比如 DDR3 控制器或任意类型的 RAM 模块,可以通过 Out-of-Context (OOC) 方式提前对其进行单独编译与优化[^3]。一旦完成了 IP 核的设计及其 OOC 综合过程,则可将其导出以便后续用于其他项目或是同平台上的测试环境中。 #### 导入至 ModelSim 并建立连接 为了让 ModelSim 能够识别由 Vivado 所产生的 IP 核文件,在启动 ModelSim 后应按照以下方法操作: - **设定库路径**:通过 `vlib` 命令新建一个目标存储位置,并运用 `vmap` 将其映射给指定名称的空间;这一步骤是为了让 ModelSim 知道去哪里查找新加入的组件。 ```bash vlib work vmap my_ip_lib ./path/to/ip_library/ ``` - **编译 Verilog 文件**:采用 `vlog` 或者针对 VHDL 使用相应的命令加载从 Vivado 获取来的源代码及任何关联的支持文档。注意要特别处理那些作为黑箱模块存在的部分,它们可能需要实际的内容解析而是仅声明接口定义即可。 ```bash vlog -work my_ip_lib path_to_verilog_files/*.v ``` - **实例化顶层实体**:编写一段简单的测试程序用来调用所导入的 IP 核。这里可以参照官方提供的模板来进行修改调整以适应具体的实验需求。例如,如果是在 Verilog 下面则可能是这样的形式: ```verilog module tb_top; reg clk, rst_n; initial begin $dumpfile("wave.vcd"); $dumpvars(0, tb_top); // Reset sequence rst_n = 0; @(posedge clk); #2 rst_n = 1; // Add your test vectors here // Finish simulation after some time #1000 $finish; end always #5 clk = ~clk; // Instantiate the IP core with appropriate parameters blk_mem_gen_0 uut ( .clka(clk), .ena(1'b1), .wea(1'b0), .addra({addr_width{1'b0}}), // Replace addr_width accordingly .dina('b0), .douta() ); endmodule ``` 上述过程中提到的某些参数如地址宽度 (`addr_width`) 需依据实际情况替换为具体数值。此外,由于直接运行 Vivado 内置仿真的效率较低且存在资源占用过高的风险[^2],因此推荐使用这种方式借助外部更高效的模拟器执行更为复杂的场景分析。 #### 测试与调试 最后便是运行整个工程并对结果进行评估。如果有错误发生,可以根据报错提示逐步排查直至解决问题为止。在整个开发周期里断迭代改进直至满足预期功能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值