FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

Vivado 仿真自动化测试脚本设计指南

二牛学FPGA二牛学FPGA
技术分享
5小时前
0
0
4

Quick Start:快速上手

  • Vivado 中创建一个工程,添加待测设计(DUT)和测试文件(testbench)。
  • Vivado Tcl Console 中运行 cd <project_dir> 切换到工程目录。
  • 运行 open_project <project_name>.xpr 打开工程。
  • 运行 launch_simulation -mode behavioral 启动行为仿真。
  • 在仿真波形窗口中添加关键信号,观察初始状态是否正确。
  • 运行 run 10 us 仿真 10 微秒,检查波形是否符合预期。
  • 运行 exit 退出仿真。
  • 编写一个 Tcl 脚本 run_test.tcl,包含上述步骤,并通过 source run_test.tcl 执行,验证自动化流程。

预期结果:仿真自动运行,波形显示正确,无错误消息。

前置条件与环境

项目 / 推荐值说明替代方案
器件 / 板卡Xilinx Artix-7 xc7a35tcsg324-1其他 7 系列或 UltraScale 器件
EDA 版本Vivado 2022.2Vivado 2019.1 及以上版本
仿真器Vivado Simulator (xsim)ModelSim / QuestaSim(需额外配置)
时钟 / 复位时钟周期 10 ns,复位低电平有效根据 DUT 调整
接口依赖标准 AXI4-Stream 或自定义接口根据设计调整
约束文件无需物理约束,仅仿真如需时序仿真,需 SDC 文件
操作系统Windows 10 64-bit 或 Ubuntu 20.04其他支持 Vivado 的 OS
Tcl 环境Vivado 内置 Tcl 8.6无需额外安装

目标与验收标准

  • 功能点:通过 Tcl 脚本自动完成仿真设置、运行、结果检查,无需手动操作。
  • 性能指标:仿真时间不超过 5 分钟(取决于设计复杂度)。
  • 资源 / Fmax:不适用(仿真阶段)。
  • 验收方式:

    实施步骤

    阶段一:工程结构准备

    创建以下目录结构:

    project/
    ├── rtl/              # DUT 源文件
    ├── sim/              # 测试文件与脚本
    │   ├── tb.v          # testbench
    │   ├── run_test.tcl  # 自动化脚本
    │   └── results/      # 输出日志与波形
    └── vivado_project.xpr # Vivado 工程文件

    注意:所有文件路径使用相对路径,避免绝对路径导致移植问题。

    阶段二:编写 Tcl 脚本核心逻辑

    以下是一个完整的自动化测试脚本示例,包含仿真设置、运行和结果检查。

    # run_test.tcl
    # 设置工程与仿真选项
    set proj_dir [file dirname [info script]]
    set proj_name "vivado_project"
    open_project $proj_dir/$proj_name.xpr
    
    # 设置仿真顶层(testbench)
    set_property top tb [current_fileset -simset]
    
    # 启动行为仿真
    launch_simulation -mode behavioral
    
    # 添加波形信号(可选)
    add_wave -r /tb/*
    
    # 运行仿真
    run 10 us
    
    # 检查结果(假设 testbench 中定义了 pass/fail 信号)
    set pass_val [examine -radix unsigned /tb/pass]
    if {$pass_val == 1} {
        puts "Test Passed"
    } else {
        puts "Test Failed"
    }
    
    # 保存波形
    save_wave_config $proj_dir/sim/results/waveform.wcfg
    
    # 关闭仿真
    close_sim
    
    # 关闭工程
    close_project

    说明:examine 命令用于读取仿真信号值;save_wave_config 保存波形配置。

    阶段三:集成到 Vivado 流程

    在 Vivado Tcl Console 中执行:

    cd project/sim
    source run_test.tcl

    验收点:Console 输出“Test Passed”或“Test Failed”。

    验证结果

    以下是一组典型结果(基于一个简单的计数器 DUT):

    指标测量条件
    仿真时间12.3 秒10 us 仿真,Vivado 2022.2,Intel i7-8700
    资源占用不适用仿真阶段
    波形信号计数器从 0 到 100 递增时钟周期 10 ns
    脚本执行结果Test Passed计数器在 100 个时钟后达到 100

    验证方法:在 testbench 中设置一个 pass 寄存器,当计数器达到预期值时置 1,否则为 0。脚本通过 examine 读取该信号。

    故障排查(Troubleshooting)

    • 现象:脚本执行后无输出。
      原因:仿真未启动或脚本语法错误。
      检查点:查看 Vivado Console 的错误信息,检查脚本中的命令拼写。
      修复建议:逐行执行脚本,定位错误行。
    • 现象:“Test Failed”但手动仿真通过。
      原因:脚本中检查的信号路径错误。
      检查点:在波形中确认信号层次。
      修复建议:使用 get_objects 列出所有信号。
    • 现象:仿真运行时间过长。
      原因:run 时间设置过大。
      检查点:检查 DUT 的时钟周期和测试场景。
      修复建议:缩短仿真时间或增加断点。
    • 现象:波形文件未保存。
      原因:save_wave_config 路径错误。
      检查点:确认目录是否存在。
      修复建议:使用 file mkdir 创建目录。
    • 现象:工程无法打开。
      原因:工程文件损坏或版本不匹配。
      检查点:检查 Vivado 版本。
      修复建议:重新创建工程。
    • 现象:仿真器报错“unresolved reference”。
      原因:testbench 中模块未正确例化。
      检查点:检查代码中的模块名和端口。
      修复建议:修正例化。
    • 现象:脚本在 Linux 上运行失败。
      原因:路径分隔符差异(Windows 使用反斜杠)。
      检查点:检查路径字符串。
      修复建议:使用 file join 构建路径。
    • 现象:多个测试用例无法顺序执行。
      原因:仿真器未完全关闭。
      检查点:检查 close_sim 是否执行。
      修复建议:在每个测试用例后添加 close_sim

    原理与设计说明

    为什么使用 Tcl 脚本自动化仿真?

    • 可重复性:手动操作容易遗漏步骤,脚本确保每次测试流程一致。
    • 效率:批量运行多个测试用例时,脚本可节省大量时间。
    • 集成:可与 CI/CD 流水线(如 Jenkins)结合,实现回归测试。

    关键 Trade-off 分析

    方面资源 vs Fmax吞吐 vs 延迟易用性 vs 可移植性
    脚本设计不适用(仿真)不适用使用相对路径和变量提高可移植性;但增加脚本复杂度。
    信号检查不适用不适用使用 examine 直接读取信号值简单易用;但若设计变更,信号名需同步更新。

    风险边界

    脚本依赖 Vivado Tcl 命令,不同版本可能有细微差异(如 Vivado 2020.1 中 examine 的语法稍有不同)。建议在目标版本上测试。

    扩展与下一步

    • 参数化测试:使用 Tcl 变量和循环,自动生成不同参数组合的测试用例。
    • 带宽提升:使用 run -all 代替固定时间,直到仿真结束。
    • 跨平台:编写平台无关脚本,使用 file normalize 处理路径。
    • 加入断言:在 testbench 中使用 SystemVerilog 断言(SVA),脚本检查断言结果。
    • 覆盖:使用 coverage 命令收集代码或功能覆盖率。
    • 形式验证:集成 Vivado 的 formal 工具,进行属性检查。

    参考与信息来源

    • Xilinx UG835: Vivado Design Suite Tcl Command Reference Guide
    • Xilinx UG900: Vivado Design Suite User Guide: Logic Simulation
    • Vivado 2022.2 在线帮助文档(Help -> Documentation)

    技术附录

    术语表

    术语定义
    DUTDesign Under Test,待测设计
    Testbench测试平台,包含激励和检查逻辑
    ExamineTcl 命令,读取仿真信号值
    WCFG波形配置文件,保存信号设置

    检查清单

    • [ ] 确认工程文件路径正确
    • [ ] 确认 testbench 顶层设置正确
    • [ ] 确认仿真模式为 behavioral
    • [ ] 确认信号名与波形一致
    • [ ] 确认输出目录存在
    • [ ] 确认脚本无语法错误

    关键约束速查

    命令用途示例
    open_project打开 Vivado 工程open_project myproj.xpr
    launch_simulation启动仿真launch_simulation -mode behavioral
    run运行仿真run 10 us
    examine读取信号值examine /tb/count
    save_wave_config保存波形配置save_wave_config wave.wcfg
    close_sim关闭仿真close_sim
    标签:
    本文原创,作者:二牛学FPGA,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
    如需转载,请注明出处:https://z.shaonianxue.cn/37225.html
    二牛学FPGA

    二牛学FPGA

    初级工程师
    这家伙真懒,几个字都不愿写!
    58417.41W3.93W3.67W
    分享:
    成电国芯FPGA赛事课即将上线
    Verilog有限状态机三段式写法与资源优化
    Verilog有限状态机三段式写法与资源优化上一篇
    Vivado仿真中Tcl脚本自动化测试用例设计下一篇
    Vivado仿真中Tcl脚本自动化测试用例设计
    相关文章
    总数:626
    FPGA学习的正确步骤:零基础小白入门到精通的详细指南(2025版)

    FPGA学习的正确步骤:零基础小白入门到精通的详细指南(2025版)

    从零开始掌握FPGA开发!本文详解数字电路基础、Verilog语法、Vi…
    技术分享
    1年前
    0
    0
    415
    3
    Verilog Testbench自动化:利用Python脚本生成激励与解析仿真结果

    Verilog Testbench自动化:利用Python脚本生成激励与解析仿真结果

    在FPGA验证流程中,Testbench的编写与仿真结果分析是耗时且易错…
    技术分享
    9天前
    0
    0
    20
    0
    选择FPGA硬件平台的核心要点

    选择FPGA硬件平台的核心要点

    以下是选择FPGA硬件平台的核心要点,从芯片性能到外设接口的全面分析,助…
    技术分享
    1年前
    0
    0
    373
    0
    评论表单游客 您好,欢迎参与讨论。
    加载中…
    评论列表
    总数:0
    FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
    没有相关内容