Veloris.
返回索引
工具环境 2026-02-12

Vivado 联合 ModelSim 仿真配置:编译库设置 + syntax error 排查实录

6 分钟
2.0k words

Vivado 联合 ModelSim 仿真配置:编译库设置 + syntax error 排查实录

前置条件:已安装 Vivado 和 ModelSim,且版本兼容|适用系统:Windows 10/11(64-bit)|预计耗时:编译库 10~30 分钟 + 配置 10 分钟|最后更新:2026-02-12


写在前面

Vivado 自带的 Vivado Simulator 对于简单设计足够用,但在以下场景中,你可能需要切换到 ModelSim 做仿真:

  • 项目规模较大,需要更快的仿真速度
  • 需要更强大的波形调试功能
  • 团队/公司统一使用 ModelSim 作为仿真工具
  • 跟随的教程要求使用 ModelSim

要让 Vivado 和 ModelSim “联动”起来,核心工作就是编译仿真库——把 Vivado 的 IP 核和原语库编译成 ModelSim 能识别的格式。这个过程不复杂,但有几个容易踩坑的地方。

💡 工程师手记我在配置 Vivado 2018.3 联合 ModelSim 仿真时,编译库反复报 syntax error,前后折腾了两个 ModelSim 版本才搞定。最后发现问题出在版本兼容性和一个很隐蔽的 modelsim.ini 缓存文件上。下面会详细记录这个排查过程,希望能帮你少走弯路。

(建议替换为你自己的真实经历,读者会更有共鸣)


一、前置检查

在开始配置之前,请确认:

  • Vivado 已安装并能正常启动(参考 Vivado 安装指南
  • ModelSim 已安装且 License 配置正确(参考 ModelSim 安装指南
  • 版本兼容:Vivado 和 ModelSim 的版本必须匹配,查阅 UG973 兼容性文档
  • 环境变量正确Path 中包含 ModelSim 的 win64 目录,且没有其他版本的残留路径

⚠️ 版本兼容是最关键的前置条件。版本不匹配会导致编译库报错,具体见下方 踩坑实录


二、配置联合仿真——三步完成

Step 1:在 Vivado 中编译仿真库(Compile Simulation Libraries)

这一步是把 Vivado 的 IP 核和器件原语编译成 ModelSim 能识别的库文件。

  1. 打开 Vivado,点击菜单栏 「Tools」「Compile Simulation Libraries…」
  2. 在弹出的对话框中进行以下设置:
设置项填写内容
Simulator选择 ModelSim
Simulator Executable PathModelSim 安装路径下的 win64 目录,如 D:\ModelSim\win64
Compiled Library Location编译库输出路径(建议放在 ModelSim 安装目录下),如 D:\ModelSim\vivado_simlib
Families按需选择你的器件系列(如 7 Series),或选 All
Language建议选 All(Verilog + VHDL)
  1. 点击 「Compile」 开始编译

⏳ 编译过程需要 10~30 分钟(取决于选择的器件系列数量和电脑性能),期间会看到编译日志在滚动。

💬 你可能会问:编译完怎么知道成功了? 编译完成后,Vivado 的 Tcl Console 会显示编译结果摘要。如果只有 Warnings(警告)没有 Errors(错误),就算编译成功。少量警告是正常的,可以忽略。如果出现 Errors,请参考下方踩坑实录

Step 2:在 Vivado 中设置仿真工具为 ModelSim

  1. 打开你的 Vivado 工程
  2. 点击左侧 Flow Navigator「SIMULATION」「Simulation Settings」
  3. 在设置窗口中:
    • Target Simulator:选择 ModelSim Simulator
    • Compiled Library Location:指向 Step 1 中设置的编译库路径
  4. 点击 「OK」 保存

Step 3:运行仿真

  1. 在 Flow Navigator 中点击 「Run Simulation」「Run Behavioral Simulation」
  2. Vivado 会自动调用 ModelSim 打开仿真界面
  3. 在 ModelSim 中查看波形、调试设计

💡 如果 ModelSim 没有自动启动,检查 Step 2 中的设置是否正确,以及 Path 环境变量是否包含 ModelSim 的可执行文件路径。


三、注意事项

3.1 版本兼容性

Vivado 和 ModelSim 的版本必须匹配。AMD 官方在 UG973 中列出了兼容性列表:

🔗 UG973 - 兼容的第三方工具

⚠️ 官方推荐的版本不一定是实际最好用的版本。比如 Vivado 2018.3 官方推荐 ModelSim 10.6c,但实测编译库会报错。详见下方踩坑实录。

3.2 环境变量

  • 系统 Path 中必须包含 ModelSim 的 win64 目录
  • 如果你装过多个版本的 ModelSim,一定要确保 Path 中只有当前使用版本的路径,把旧版本的路径删掉
  • 环境变量 MGLS_LICENSE_FILE 必须指向正确的 License 文件

详细的环境变量配置方法参考 ModelSim 安装指南

3.3 modelsim.ini 缓存问题

⚠️ 这是一个很隐蔽的坑

C:\Users\<用户名>\AppData\Roaming\Xilinx\Vivado 路径下有一个 modelsim.ini 文件。这个文件不会随着你重装 ModelSim 而自动更新。如果你从旧版本升级到新版本,这个缓存文件可能仍然指向旧版本的配置,导致编译库行为异常。

建议:每次更换 ModelSim 版本后,手动检查或删除该路径下的 modelsim.ini 文件,让 Vivado 重新生成。


四、★ 踩坑实录:syntax error in protected region

以下是配置 Vivado 2018.3 + ModelSim 联合仿真时的真实排查记录。

问题现象

使用 Vivado 2018.3 编译仿真库时,编译结束后报错:

==============================================================================
Library 'xsdbs_v1_0_2' compilation error(s)
==============================================================================
Model Technology ModelSim SE-64 vlog 10.4 Compiler 2014.12 Dec  3 2014
Start time: 13:40:49 on Apr 13,2025
vlog -64 "+incdir+C:\Users\RyanG\AppData\Roaming\Xilinx\Vivado\.cxl.ip/incl" 
  -work xsdbs_v1_0_2 
  -f D:\ModelSim\modelsim10.4\vivado_2018_simlib/xsdbs_v1_0_2/.cxl.verilog.xsdbs_v1_0_2.xsdbs_v1_0_2.nt64.cmf 
** Error: ...\xsdbs_v1_0_vl_rfs.v(64): syntax error in protected region.

End time: 13:40:50 on Apr 13,2025, Elapsed time: 0:00:01
Errors: 2, Warnings: 0

报错关键词syntax error in protected region

排查过程

尝试 1:更换 ModelSim 版本(10.6c → 10.4)

Vivado 2018.3 官方手册建议的 ModelSim 版本是 10.6c。实测报错后,尝试换用 ModelSim 10.4,结果编译库报错更多,关键词还是 syntax error in protected region

结论:10.4 版本更不兼容,排除此方案。

尝试 2:检查环境变量

逐一排查环境变量:

  • Path 中已正确添加 ModelSim 的 win64 路径
  • ✅ 已清除旧版本 ModelSim 的 Path 残留
  • MGLS_LICENSE_FILE 指向正确

结论:环境变量没有问题。

尝试 3:检查 modelsim.ini 缓存

发现一个隐蔽问题

C:\Users\<用户名>\AppData\Roaming\Xilinx\Vivado 路径下的 modelsim.ini 文件,在卸载 ModelSim 10.4 并安装 ModelSim 2020.4 之后,该文件的内容仍然是旧版本的,没有随新版本安装而更新。

另外注意:该路径下的 modelsim.ini 与 Vivado 编译 lib 库后的库路径中的 modelsim.ini 内容一致,但与 ModelSim 安装目录下的 modelsim.ini 内容不一致

最终解决方案

更换为 ModelSim 2020.4,重新编译仿真库。

结果:编译成功,无 Error,仅有少量可忽略的 Warning。

踩坑总结

版本组合编译结果
Vivado 2018.3 + ModelSim 10.4❌ 大量 syntax error
Vivado 2018.3 + ModelSim 10.6c(官方推荐)❌ syntax error in protected region
Vivado 2018.3 + ModelSim 2020.4✅ 编译成功,仅 Warning

关键教训

  1. 官方推荐的版本不一定好用,实测才是金标准
  2. 更换 ModelSim 版本后,一定要检查 AppData 下的 modelsim.ini 缓存文件是否更新
  3. 环境变量中的 旧版本路径残留是另一个常见陷阱

五、常见问题 FAQ

Q1:编译库时间太长怎么办?

编译库时在 Families 选项中只选择你实际用到的器件系列,而不是 All。比如你只用 Zynq-7000,选 7 Series 就够了。

Q2:每次新建工程都要重新编译库吗?

不需要。仿真库编译一次后,所有工程都可以共用。只要 Vivado 或 ModelSim 版本不变,就不需要重新编译。

Q3:Vivado 调用 ModelSim 时报 “ModelSim not found”?

  1. 确认 ModelSim 的 win64 目录已添加到系统 Path
  2. 确认 Simulation Settings 中的 Simulator Executable Path 填写正确
  3. 重启 Vivado 后重试

Q4:简单仿真有没有更轻量的方案?

如果你的设计不复杂,可以直接使用 Vivado Simulator——Vivado 自带的仿真器,无需额外安装和配置,在 Simulation Settings 中选 “Vivado Simulator” 即可。


六、总结与下一步

核心回顾

步骤要点
前置检查版本兼容(查 UG973)、环境变量正确、License 有效
编译仿真库Tools → Compile Simulation Libraries,选对 Simulator 路径和输出路径
设置仿真工具Simulation Settings → Target Simulator 选 ModelSim
排查要点版本兼容性 > 环境变量 > modelsim.ini 缓存

下一步

联合仿真配置好了,你可以:


参考资料


声明:本文为原创内容,踩坑记录基于 Vivado 2018.3 + ModelSim 实际排查经历。不同版本组合的表现可能不同,请以实际测试为准。

End of file.