引言
在 FPGAer/ICer 的实际项目中,仿真无疑占了大量的时间。对于仿真工具,有人更倾向于使用 Vivado、ModelSim、QuestaSim 这些编译 - 仿真 - 看波形一体化的工具,也有人更倾向于 VCS(编译仿真)、Verdi 和 DVE(看波形)这些独立功能的工具。两者各有优劣。
前者工具链简单易上手,甚至 Vivado 除了编译、仿真和看波形以外还能实现综合、布局布线等功能,可谓神器。但是前者也有明显的缺点,比如说综合、编译、仿真速度很慢。
而后者工具链较为复杂,编译和看波形为独立的工具。如果在做 ASIC 项目中,后者会更加方便和专业。首先,VCS 编译和仿真速度极快,效率极高,能够大量节约仿真时间(仿真速度:FPGA>VCS>ModelSim/QuestaSim>Vivado)。而 Verdi 查看波形也十分方便,支持信号追溯等功能。
综上所述,为了提高开发效率,下面将以一个简单的 ALU 的工程来展示如何在 Linux 下使用 VCS 和 Verdi 进行逻辑仿真。此部分只涉及前仿,后仿涉及 DC 等综合工具。
一、软件介绍
1. VCS
VCS(Verilog Compiled Simulator)是 Synopsys 公司开发的一款高性能仿真工具,它采用编译型仿真技术,将 Verilog/SystemVerilog 代码编译成优化的 C 代码,再编译成可执行文件,从而实现高速仿真。虽然 VCS 本身不直接提供图形化调试界面,但它可以与 Synopsys 的其他工具(如 Verdi)集成,实现高效的调试和波形查看。
同时,VCS 提供了丰富的编译和仿真选项,可以根据设计需求进行灵活配置。VCS 提供了丰富的覆盖率分析选项,包括行覆盖率、条件覆盖率、状态机覆盖率和翻转覆盖率等,有助于 Verifier 全面评估测试的充分性。
为什么 VCS 会更快?因为 VCS 采用了编译型仿真。相较于解释型仿真(传统模式),其优点在于仿真速度极快、内存使用效率高、支持大规模设计以及优化程度高,但是编译时间较长、调试较为复杂并且修改代码需要重新编译。
2. DVE
DVE(Design Verification Environment)是由 Synopsys 公司开发的一款强大的硬件设计验证工具,主要用于协助工程师分析和调试仿真结果。DVE 是集成在了 VCS 中。
3. Verdi
Verdi 是 Synopsys 提供的一款强大的自动化电子设计自动化(EDA)工具,主要用于功能验证和调试。Verdi 综合了多种调试功能,如波形查看、信号追踪、时序分析和覆盖规划等,为设计验证工程师提供了一个全面的环境进行设计错误的识别和修正。Verdi 是比 DVE 更强大的调试平台,尤其在协议分析、性能分析和根本原因分析(RCA)方面表现出色。
Verdi 工具集包括以下几个组件:
- Waveform Viewer (波形查看器):图形化展示波形数据,支持对仿真数据进行深入分析。
- Signal Spy (信号监视器):实时监测设计中的信号变化,用于调试。
- Time Analysis (时序分析):分析设计中时序问题,帮助识别时序违规。
- Coverage (覆盖率分析器):分析验证的覆盖面,确保测试充分。
- Data Mining (数据挖掘):利用高级算法来发现设计中的潜在问题。
二、VCS 的使用
值得注意的是 VCS 本身不提供图形化界面,因此只能通过 terminal 来运行。
1. VCS 的编译流程
VCS 采用两阶段编译模式,提供灵活性和高性能。
RTL 源码—>vlogan 前端编译—>生成数据库文件—>vcs 后端编译—>生成 simv 可执行文件—>./simv 仿真执行—>生成波形和日志
因此,VCS 也提供了两种编译方式,分别为一步编译(推荐用于简单项目),两步编译(推荐用于复杂项目)。
# 一步编译 vcs [编译选项] [源文件] -o [输出文件名]
# 两步编译 vlogan [编译选项] [源文件] # 前端编译
# vcs [链接选项] [顶层模块] -o [输出文件名] # 后端编译
该文以一步编译模式为主。


