modelsim编译vivado仿真库报错解析

本文记录了在使用Modelsim编译Vivado仿真库时遇到的问题及其解决方案。关键点包括:检查环境变量,避免特定变量导致的版本冲突;确保Modelsim和Vivado版本匹配,如vivado2018.2与modelsim10.7的兼容性;以及当出现加载dll错误时,注释modelsim.ini中的Veriuser=novas_fli.dll条目。通过这些步骤,可以成功解决编译和仿真中的错误。

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

modelsim编译vivado仿真库报错解析

modelsim编译vivado一直报错,搞了两天,换了无数modelsim和vivado版本,血的教训,特此记录!

编译仿真库注意点:

  1. 检查环境变量,一定不要不要不要千万不要有 有以下变量,否则编译库时会忽略你选择编译的modelsim版本,默认选这里设置的版本去编译。实测不设置该环境变量可以正常仿真在这里插入图片描述

  2. Modelsim和vivado有版本匹配问题,版本不匹配就会编译失败。
    vivado2018.2与modelsim10.7匹配 ==> 我用的这个,测试OK
    vivado2017.4与modelsim10.6匹配,

  3. 编译0 error,仿真modelsim会报以下错误
    Loading D:/soft_inst/modelsim_se_64_10.7/win64/novas_fli.dllError: (vsim-3193) Load of “D:/soft_inst/modelsim_se_64_10.7/win64/novas_fli.dll” failed: Bad DLL format.Error:(suppressible):(vsim-PLI-3002)Failed to load PLI object file “D:/soft_inst/modelsim_se_64_10.7/win64/novas_fli.dll”. 在这里插入图片描述
    解决方案:找到编译库文件所在的文件夹中生成的modelsim.ini文件,需要将Veriuser = novas_fli.dll注释掉。(分号为注释符)
    在这里插入图片描述在这里插入图片描述
    以上。

### 如何在ModelSim中正确配置并调用Vivado提供的仿真库以进行联合仿真 #### 1. Vivado仿真库编译 为了实现VivadoModelSim之间的联合仿真,首先需要确保Vivado中的设计文件被成功编译ModelSim支持的仿真库中。这一步通常涉及以下几个操作: - **创建仿真库目录** 在ModelSim环境中,需先手动或者通过脚本创建用于存储Vivado仿真库的目标目录。例如,可以通过命令 `vlib work` 创建名为 `work` 的工作库。 - **指定目标路径** 设置好目标路径之后,运行Vivado提供的编译脚本来生成仿真所需的库文件。此过程可通过执行以下命令完成: ```bash xsim -i -dir ./simulation/ -tclbatch compile.tcl ``` 这里的 `-tclbatch` 参数指向一个TCL脚本,该脚本定义了具体的编译逻辑[^4]。 #### 2. ModelSim环境准备 一旦仿真库构建完毕,下一步是在ModelSim内部加载这些库资源以便后续使用。 - **启动ModelSim GUI模式** 打开ModelSim应用程序界面后,进入菜单栏选项 “File -> Change Directory”,将当前工作区切换至先前由Vivado生成的仿真库所在位置。 - **映射仿真库** 利用ModelSim内置指令 `vmap` 来建立本地命名空间同实际物理地址间的关联关系。典型语法如下所示: ```tcl vmap my_lib_path /path/to/vivado/simulation/library/ ``` #### 3. 加载项目源码及时序约束 为了让ModelSim能够理解整个FPGA项目的结构及其行为特性,还需要导入原始RTL代码以及任何必要的综合后产生的时序数据。 - **添加HDL文件** 将所有的Verilog/VHDL描述加入工程管理窗口下对应的类别节点里去。右键单击“Design Libraries”下的某个特定库名(比如刚才提到过的my_lib),选择“Add Files...”。 - **应用时间参数** 如果存在SDF (Standard Delay Format) 文件,则同样应该将其附加给顶层实体实例化部分,从而反映精确延迟效果[^5]。 #### 4. 编写测试激励程序 编写恰当的Testbench模块对于验证电路功能至关重要。它负责提供输入信号序列,并捕获输出响应供分析之用。 ```verilog module tb_example; reg clk; wire out_signal; initial begin $dumpfile("waveform.vcd"); $dumpvars(0, uut); // Clock generation logic here... end endmodule ``` 上述片段展示了基本框架的一部分——初始化阶段设置了波形转储机制;而完整的周期性脉冲发生器则省略未展示出来[^2]。 #### 5. 启动仿真进程 当一切准备工作就绪以后,便可以从ModelSim界面上选取相应的Simulation子项来触发正式运算活动。“Run All Time”按钮允许一次性跑完全程模拟直至结束条件达成为止。 --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ethan_WC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值