1186 字
6 分钟
- 次浏览
数字系统实验报告最好能回到源码和波形
读前导览

整理 Verilog 数字系统实验时,源码、Vivado 工程、仿真脚本、波形图和报告应放在一起,便于日后复查。

正文
1186 字
阅读
6 分钟
结构
7 节

数字系统实验很容易做成一次性作业:代码能跑,报告能交,PDF 导出来就结束。

但只留一份 PDF 有个问题:几周后再回头看,很难知道当时的波形是怎么生成的,哪份源码对应哪张图,上板现象和仿真结果是不是来自同一个版本。

所以我后来会把报告、源码和波形放在同一个仓库里,避免下次翻查时只剩一份 PDF。

报告之外要留下什么#

我希望一个数字系统实验仓库至少保留五类东西:

  • Verilog 源码。
  • Vivado 工程入口和约束文件。
  • testbench 与 xsim 仿真脚本。
  • 报告中使用的波形 PNG 和实验图片。
  • Markdown 报告和源码附录。

这样整理后,报告里的每个结论都能回到某个文件:电路行为来自源码,波形来自仿真脚本,硬件现象来自上板记录。

别把缓存当成果#

Vivado 工程会生成大量中间目录,比如综合、实现、仿真缓存和临时数据库。这些东西很占空间,也很容易让仓库变得不可维护。

更稳的范围是:

保留:源码、约束、工程入口、脚本、报告、报告图片
丢弃:runs/cache/hw/xsim 临时目录、wdb/vcd/dcp/bit 等可再生成文件

这件事除了节省空间,也能让仓库表达“哪些内容以后还要维护”。缓存可以重新生成,源码和验证记录才是以后还会用到的东西。

仿真要能批处理#

如果每次都靠 Vivado GUI 点按钮,实验可以完成,但复查成本很高。

我更喜欢把仿真流程压成固定步骤:

  1. 收集设计文件和 testbench。
  2. 编译 Verilog。
  3. elaboration 生成仿真快照。
  4. 运行 xsim。
  5. 检查日志里是否有 ERROR 和正常结束标记。
  6. 导出 WDB、VCD 或报告用 PNG。

这个流程别求完全自动化到无人参与,但至少应该让“怎么重跑波形”变成可复制的命令,而不是只存在于记忆里。

报告图片也要有来源#

实验报告里最常见的断点是图片。

一张波形图贴进报告后,如果原始仿真输出、脚本和对应源码没有保留,后面很难判断它是否还能代表当前代码。

比较好的做法是把报告图片放在固定目录,并在报告里只引用这些相对稳定的图片。需要重新生成时,脚本输出到临时目录,确认无误后再替换报告用图片。

这样图片就不再像随手截的图,后面还能追到当时是怎么跑出来的。

综合工程要解释选择关系#

多个实验共用一块 FPGA 开发板时,顶层集成很容易乱。

比如把组合逻辑、流水灯、抢答器、交通灯、秒表、VGA、呼吸灯等实验接到同一套外设上,就必须明确写出选择信号和外设复用关系。否则,报告读者只能看到一堆模块例化,看不出当前到底是哪一路在驱动 LED、数码管或 VGA。

我更喜欢在 README 和报告里写清楚:

  • 哪些实验放进综合顶层。
  • 哪些实验保留为独立工程或纯仿真。
  • 选择信号如何映射到实验。
  • 同一时间是否只允许一个实验有效。

这类说明看起来像文档细节,实际上能减少很多上板误判。

学到的事#

做数字系统实验时,代码正确只是第一层。后面还会训练这些事:

  • 组合逻辑和时序逻辑的行为差别。
  • 同步复位和异步复位的波形差别。
  • 状态机编码、分频节拍和输出译码的关系。
  • VGA 时序对参数范围的敏感性。
  • PWM 占空比如何变成人眼看到的亮度变化。
  • 顶层集成时如何避免多个模块同时驱动同一外设。

这些经验如果只留在 PDF 里,会很快变成静态结论;如果连同源码、脚本和波形一起保留,就能变成之后复习和复用的材料。

报告最好能重跑#

实验报告如果整理得好,后面还能当作回看工程的入口。

对 Verilog 这类课程来说,比较理想的形态是:源码说明电路,testbench 说明验证,脚本说明重跑方法,波形说明结果,报告说明你从结果里学到了什么。

PDF 好看当然可以,但我更想留下的是下次还能重跑、还能看懂的东西。

数字系统实验报告最好能回到源码和波形
https://blog.sunmmyapi.xyz/posts/verilog-lab-report-as-reproducible-repo/
作者
Sun
发布于
2026-05-29
许可协议
CC BY-NC-SA 4.0

继续读

相关内容