news 2026/4/19 12:13:59

告别命令行恐惧:用Makefile一键搞定VCS+Verdi联合仿真(附完整脚本)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别命令行恐惧:用Makefile一键搞定VCS+Verdi联合仿真(附完整脚本)

告别命令行恐惧:用Makefile一键搞定VCS+Verdi联合仿真(附完整脚本)

在数字电路设计和验证的日常工作中,仿真环节往往是最耗时且重复性最高的部分。每次代码修改后,工程师都需要重新输入一长串复杂的命令行参数,这不仅容易出错,还严重分散了设计思考的注意力。想象一下这样的场景:你正在调试一个复杂的状态机,每次修改测试用例后都要手动输入vcs -full64 -debug_all -kdb -lca -f file.f,然后等待编译完成再启动Verdi加载波形——这种重复劳动一天可能要重复几十次。

这就是为什么我们需要自动化。一个精心编写的Makefile可以把这个过程简化为简单的make all命令,让工程师专注于设计本身而不是工具链操作。本文将带你从零开始构建一个完整的自动化仿真流程,涵盖VCS编译、Verdi波形查看以及常见问题的解决方案。

1. 环境准备与基础配置

1.1 工具链检查

在开始之前,确保你的系统已经安装了以下工具:

  • VCS(Version 2020.03或更高)
  • Verdi(Version 2019或更高)
  • GNU Make(Version 4.0或更高)

可以通过以下命令验证安装情况:

vcs -id verdi -version make -v

1.2 环境变量配置

将以下内容添加到你的~/.bashrc~/.zshrc文件中:

export VCS_HOME=/path/to/vcs/installation export VERDI_HOME=/path/to/verdi/installation export PATH=$VCS_HOME/bin:$VERDI_HOME/bin:$PATH

注意:路径需要替换为你实际的安装目录,修改后执行source ~/.bashrc使配置生效。

2. Makefile核心结构解析

2.1 基本框架构建

一个完整的仿真Makefile通常包含以下目标:

all: compile run verdi compile: vcs -full64 -debug_all -kdb -lca -f file.f run: ./simv -ucli -do "run -all; quit" verdi: verdi -f file.f -ssf novas.fsdb &

2.2 关键参数详解

参数作用描述
-full64强制使用64位模式编译
-debug_all生成所有调试信息,包括波形和信号追踪
-kdb生成Verdi专用的KDB数据库
-lca启用Limited Customer Availability特性(KDB所需)
-f file.f指定包含所有Verilog文件列表的.f文件
-ucli启用User Command Line Interface模式

2.3 文件列表管理

创建file.f文件管理所有设计文件,例如:

counter.v counter_tb.v

提示:使用相对路径时确保Makefile执行目录正确,或者使用绝对路径避免问题。

3. 高级功能实现

3.1 自动化波形加载

解决Verdi波形NF(No Waveform)问题的完整方案:

run: ./simv -ucli -do "run -all; dump -file novas.fsdb -type fsdb -ports -all; quit"

对应的testbench中需要添加:

initial begin $fsdbDumpfile("novas.fsdb"); $fsdbDumpvars(0, top_module); // 其他测试代码 end

3.2 增量编译优化

添加-Mupdate参数实现增量编译,大幅提升迭代速度:

compile: vcs -full64 -debug_all -kdb -lca -Mupdate -f file.f

3.3 多目标支持

扩展Makefile支持不同仿真场景:

DEBUG_OPTS = -debug_all KDB_OPTS = -kdb -lca normal: compile_normal run debug: compile_debug run compile_normal: vcs -full64 $(KDB_OPTS) -f file.f compile_debug: vcs -full64 $(DEBUG_OPTS) $(KDB_OPTS) -f file.f

4. 完整脚本模板与使用指南

4.1 终极Makefile模板

# 用户可配置区域 DESIGN_FILES = file.f TOP_MODULE = tb_top FSDB_FILE = novas.fsdb # 工具路径 VCS = vcs -full64 VERDI = verdi # 编译选项 COMP_OPTS = -kdb -lca -debug_access+all RUN_OPTS = -ucli -do "run -all; dump -file $(FSDB_FILE) -type fsdb -ports -all; quit" # 主目标 all: clean compile run verdi compile: $(VCS) $(COMP_OPTS) -f $(DESIGN_FILES) -top $(TOP_MODULE) run: ./simv $(RUN_OPTS) verdi: $(VERDI) -f $(DESIGN_FILES) -ssf $(FSDB_FILE) & clean: rm -rf csrc simv* *.fsdb *.log *.vpd *.key *.bak *.log *.rc *.conf .PHONY: all compile run verdi clean

4.2 典型工作流程

  1. 将设计文件列表写入file.f
  2. 在终端执行:
    make all
  3. 等待自动完成:
    • VCS编译
    • 仿真运行
    • Verdi波形加载

4.3 常见问题排查

问题1:Verdi波形显示NF

  • 确保testbench中有$fsdbDumpvars调用
  • 检查Makefile中-do脚本包含dump命令

问题2:增量编译不生效

  • 确认使用-Mupdate参数
  • 检查文件修改时间是否更新

问题3:KDB生成失败

  • 验证-kdb -lca参数存在
  • 检查VCS版本是否支持LCA特性

在实际项目中使用这个自动化流程后,仿真迭代时间可以缩短40%以上,更重要的是,它让工程师从重复劳动中解放出来,专注于真正的设计验证工作。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 12:07:36

OpenUtau完整指南:免费开源虚拟歌手编辑器的实用功能解析

OpenUtau完整指南:免费开源虚拟歌手编辑器的实用功能解析 【免费下载链接】OpenUtau Open singing synthesis platform / Open source UTAU successor 项目地址: https://gitcode.com/gh_mirrors/op/OpenUtau OpenUtau是一款专为UTAU社区设计的免费开源编辑器…

作者头像 李华
网站建设 2026/4/19 12:07:31

把 system conversion 讲透, 一条从 SAP ERP 走向 SAP S/4HANA 的保留式转型路径

先把结论放在前面 我通常会把 SAP S/4HANA 的 system conversion 理解成这样一种转型方式, 它不是重新从零搭一套新系统, 而是在现有 SAP ERP 系统的基础上, 按照一条受控的技术路径, 做一次接近 1:1 的转换, 把原来的系统转成 SAP S/4HANA。这条路径会尽量保留我们已经积累下…

作者头像 李华
网站建设 2026/4/19 12:03:27

从情报工具到企业大脑:拆解Palantir的Gotham与Foundry双平台实战应用

从情报工具到企业大脑:拆解Palantir的Gotham与Foundry双平台实战应用 当空客工程师在Foundry平台上用3天时间完成原本需要3个月的飞机零部件供应链优化模型时,当英国石油的地质学家通过Gotham将钻井数据实时转化为可视化决策看板时,这些场景正…

作者头像 李华