这一篇在干嘛?
在动手敲第一条仿真命令之前,先把「地图」看清楚:QuestaSim 是什么、它的官方文档藏在哪里、设计为什么会被自动优化,以及最核心的几种仿真流程长什么样。这一篇不写代码,但后面的每一篇都建立在它讲的概念上。
QuestaSim 是什么
Questa SIM 是 Mentor Graphics(现西门子 EDA)推出的验证与仿真工具,支持 VHDL、Verilog、SystemVerilog、SystemC 以及混合语言设计。对于用安路 TD 做 FPGA 的同学来说,它最常用的角色是:在综合、布局布线之前跑行为级仿真(验证 RTL 逻辑对不对),以及在布线之后配合仿真模型跑后仿真(验证时序和网表)。
一个对我们很友好的设定:Questa SIM 自带的教程里,大多数实验都同时提供 Verilog 和 VHDL 两个版本的设计文件,所以不管你手上是哪种语言的 license,都能跟着做。两种版本无法完全一致的地方(比如行号、语法细节),教程会分别给出对应语言的说明——照着自己用的语言那一份走就行。
官方文档去哪找
Questa SIM 的文档同时提供 PDF 和 HTML 两种格式,入口都在软件的 Help 菜单里。完整清单如下:
Table 1-1. Documentation List
| Document | Format | How to get it |
| Installation & Licensing Guide | Help > PDF Bookcase | |
| HTML and PDF | Help > InfoHub | |
| Quick Guide (command and feature quick-reference) | Help > PDF Bookcase and Help > InfoHub | |
| Tutorial | Help > PDF Bookcase | |
| HTML and PDF | Help > InfoHub | |
| User's Manual | Help > PDF Bookcase | |
| HTML and PDF | Help > InfoHub | |
| Command Reference Manual | Help > PDF Bookcase | |
| HTML and PDF | Help > InfoHub | |
| Graphical User Interface (GUI) Reference Manual | Help > PDF Bookcase | |
| HTML and PDF | Help > InfoHub | |
| Foreign Language Interface Manual | Help > PDF Bookcase | |
| HTML | Help > InfoHub | |
| OVL Checkers Manager User's Guide | Help > PDF Bookcase | |
| HTML | Help > InfoHub | |
| Power Aware Simulation User's Manual | Help > PDF Bookcase | |
| HTML | Help > InfoHub | |
| Command Help | ASCII | type help [command name] at the prompt in the Transcript pane |
| Error message help | ASCII | type veroor at the Transcript or shell prompt |
| Tcl Man Pages (Tcl manual) | HTML | select Help > Tcl Man Pages, or find contents.htm in \modeltech\docs\tcl_help_html |
| Technotes | HTML | available from the support site |
日常最实用的两条
记不住命令参数时,直接在 Transcript 窗口的提示符后输入
help [command name](把命令名填进方括号),就能看到该命令的帮助;遇到报错想查含义,用verror加错误码查询即可。PDF 文档需要 Adobe Acrobat Reader 才能打开,Adobe 官网 www.adobe.com 可免费下载。
如果需要更进一步的官方支持(软件增强、技术支持、在线服务),Mentor Graphics 通过 SupportNet 站点提供:http://supportnet.mentor.com/about/ 。在有效维护期内,你可以搜索成千上万条技术方案、查阅文档或在线提交 Service Request;没有账号可以在 http://supportnet.mentor.com/user/register.cfm 注册;各客户支持中心的联系方式见 http://supportnet.mentor.com/contacts/supportcenters/ 。
建议的阅读顺序
别被上面那张表吓到——初学者真正常用的其实只有三份:Tutorial(入门操作,本系列文章的蓝本)、Quick Guide(命令速查)和 User’s Manual(遇到具体问题时按章节查阅)。Reference Manual 等你开始写仿真脚本、需要查参数细节时再翻不迟。
开始之前:留给你的自由度
教程有意把一些细节留给你自己决定:怎么建目录、怎么复制文件、怎么在操作系统里执行程序。如果你是在 Questa SIM 的 GUI 里操作,那么所有平台的界面都是一致的,不用担心平台差异——这是初学者最省心的路径。
做法建议:每个实验单独建一个空目录,把用到的设计文件从安装目录的 examples 下拷进去,所有库文件和仿真产物都会生成在这个目录里,做完直接整目录删除,不留垃圾。这个习惯在后面两篇的实操里会一直沿用。
动手前必须懂的概念:设计优化(vopt)
在讲仿真流程之前,有一个概念绕不开:设计优化。
默认情况下,QuestaSim 会对所有设计自动执行优化,目的是把仿真速度提到最高——某些 Verilog 设计相比不优化能快 10 倍。但天下没有免费的午餐:全局优化可能影响你能观察到的仿真结果,某些信号和进程可能变得不可见。
这就带来一个权衡:
- 想跑得快 → 保持默认优化;
- 想在调试时看到更多内部信号 → 需要把特定模块的优化去掉。
执行全局优化的工具叫 vopt。什么时候该关哪部分优化,User’s Manual 里「Optimizing Designs with vopt」一章有完整讨论,命令语法细节则查 Reference Manual 里的 vopt 条目。
新手最常见的困惑
「我明明写了这个信号,为什么 Wave 窗口里找不到?」——十有八九不是你写错了,而是 vopt 优化把它优化掉了。先想到优化这层,再回去查代码,能少走很多弯路。
基本仿真流程(Basic Simulation Flow)
QuestaSim 里所有设计都要编译进一个库。最典型的一次仿真按下面四步走:
-
创建工作库(Creating the Working Library) 通常第一步是创建一个叫
work的工作库——work是编译器的默认库名,编译出来的设计单元默认都放进这里。可以把它理解为「你自己设计的编译产物的家」。 -
编译设计(Compiling Your Design) 建好库之后,把设计单元编译进去。QuestaSim 的库格式在所有支持的平台上是兼容的,也就是说编译一次之后,换平台仿真不需要重新编译。
-
加载仿真器并运行(Loading the Simulator and Running) 设计编译完后,对 Verilog 设计指定一个顶层模块(top-level module),对 VHDL 设计指定一个 configuration 或 entity/architecture 对,就可以启动仿真器加载设计。加载成功后仿真时间归零,执行 run 命令开始仿真。
-
调试结果(Debugging Your Results) 如果结果和预期不符,就进入 QuestaSim 的调试环境去定位问题——这是整个流程里最花时间、也最能体现工具价值的环节。
整体流程如下图所示:
Figure 2-1. Basic Simulation Flow - Overview Lab

对应到 FPGA 语境
这套「建库 → 编译 → 加载 → 运行」的逻辑和你在安路 TD 里综合、布线的思路类似:源码不会直接被仿真,而是先编译成中间产物(库里的设计单元),仿真器加载的是编译产物。理解了 work 库,后面手动敲
vlib/vlog就不陌生了。
工程流程(Project Flow)
**工程(Project)**是一种组织机制,用来收纳正在设计或测试中的 HDL 设计。虽然 QuestaSim 不强制你用工程,但工程能明显降低和工具打交道的成本,尤其适合整理文件、指定仿真设置。
工程流程的步骤如下图:
Figure 2-2. Project Flow

和基本流程相比,有两个关键区别:
- 不用手动建工作库——工程流程会自动帮你创建;
- 工程是持久的——只要你不显式关闭它,每次启动 QuestaSim 它都会自动打开。
对初学者来说,这意味着用工程可以少记一条建库命令,也不容易因为「忘了建库」而卡在第一步。
多库流程(Multiple Library Flow)
QuestaSim 里的「库」有两种用法:
- 本地工作库(working library):存放你自己设计的编译版本,内容会随着你改代码、重新编译而变化;
- 资源库(resource library):通常是静态的,作为设计的「零件仓库」。你可以自己建资源库,也可能拿到别人给的——比如另一个设计团队或第三方(芯片厂商)提供的库。
编译时你要指定用到哪些资源库,并且要规定它们的搜索顺序。一个常见的组合是:门级设计和 testbench 编译进工作库,而设计引用的门级单元模型放在另一个独立的资源库里。
多库仿真的基本步骤如下图:
Figure 2-3. Multiple Library Flow

如果你用的是工程方式,上图第一步可以替换成两个动作:创建工程、把 testbench 加入工程。也就是说,工程和多库是可以叠加使用的。
后面能学到的调试工具
QuestaSim 提供了大量调试和分析工具,教程后续课程会覆盖其中若干:
- 使用工程
- 多库协同仿真
- SystemC 仿真
- 设置断点、单步执行源代码
- 查看波形、测量时间
- 探索设计的「物理」连接关系
- 查看与初始化存储器
- 用 Waveform Editor 生成激励
- 分析仿真性能
- 测试代码覆盖率
- 波形对比
- 用 PSL 断言调试
- SystemVerilog 断言与 cover 指令
- SystemVerilog DPI
- 仿真自动化
不必现在全都记住,知道「这些事情 QuestaSim 都能干」就够了——后面的文章会挑其中最常用的逐个上手。
小结
- QuestaSim 支持 VHDL / Verilog / SystemVerilog / SystemC 及混合语言,Verilog、VHDL 版本的教程实验都有配套设计。
- 文档入口在 Help 菜单(PDF Bookcase / InfoHub),命令帮助用
help,错误码用verror查。 - 默认的全局优化由 vopt 完成,提速明显但可能隐藏信号与进程,调试时按需关闭。
- 三种流程一张图记牢:基本流程(手动建 work 库)、工程流程(自动建库、工程持久)、多库流程(工作库 + 资源库)。
- 下一篇我们就沿着基本流程实操:从建 work 库开始,把一个计数器设计完整仿真跑通。
- 给自己一个小目标:读完下一篇后,不看文章也能默写出「建库 → 编译 → 优化 → 加载 → 运行」五个环节各自对应的命令。
自测
自测
- QuestaSim 默认的工作库名字是什么?它的作用是什么?
- 设计优化由哪个工具完成?它带来什么好处,又有什么副作用?
- 加载仿真器时,Verilog 设计和 VHDL 设计分别需要指定什么?
- 工程流程和基本仿真流程相比,有哪两个重要区别?
- 工作库和资源库有什么不同?举一个两者配合使用的典型场景。