3. 设计源文件签核

设计源文件签核是 Quartus 工程交付前最关键的一道“内容闸门”。综合、布局布线、时序收敛都建立在源文件正确的前提上,一旦源文件本身存在语法歧义、IP 参数错配或版本错乱,后续所有验证结果都失去意义。本节围绕三类源文件(Verilog、VHDL、SystemVerilog)、IP 核配置、版本一致性三条主线,说明如何逐项检查并落到签核表上。

一、源文件检查:先看“能不能综合”,再看“是不是想要的电路”

源文件检查分两个层次。第一层是语法与可综合性检查:在 Quartus 中通过 Analysis & Synthesis 阶段即可暴露大部分问题,重点关注编译报告中的 Error 与 Critical Warning。常见问题包括:Verilog 中位宽不匹配导致的隐式截断、VHDL 中未指定范围的 integer 参与综合、SystemVerilog 中 logic 被多驱动、以及 always 块内混用阻塞与非阻塞赋值。例如下面这段代码在仿真中可能“看起来正常”,但综合会给出锁存器推断警告:

always @(*) begin
    if (sel)
        y = a;      // sel 为 0 时 y 无赋值 → 推断 latch
end

第二层是设计意图检查:位宽、复位极性、时钟域、参数默认值是否与设计规格一致。建议在签核时对每个模块核对三项:端口列表与顶层例化是否一致、参数(parameter/generic)默认值是否与规格书相符、是否存在未使用的信号或悬空端口。对于 SystemVerilog,还需确认 interface、struct、package 等构造是否被 Quartus 版本支持——不同版本对 SV 子集的支持范围不同,这是签核中容易被忽略的兼容性风险。

二、IP 核配置确认:参数即功能

Quartus 工程中的 IP(如 PLL、FIFO、RAM、DSP、PCIe 硬核)通常以 .qip 或 .ip 文件形式存在,其配置参数直接决定硬件行为。签核时不能只看“IP 已生成”,而要逐项核对参数。以 PLL 为例,需要确认输入参考时钟频率、目标输出频率、相位偏移、占空比、锁定信号是否引出;以 FIFO 为例,需要确认位宽、深度、读写时钟关系(同步/异步)、almost-full/almost-empty 阈值。这些参数一旦与规格不符,综合能通过,但板级行为会偏离预期。

IP 配置确认的实用做法是:打开 IP 参数编辑器,将关键参数与设计规格逐条对照,并把参数值记录到签核表中。同时确认 IP 生成文件(如 pll_0002.v)已被正确加入工程文件列表,避免“参数改了但工程仍引用旧文件”的情况。

三、源文件版本一致性核对

版本不一致是交付阶段的高频问题,典型表现有三种:一是本地修改未提交,签核用的源文件与版本库不一致;二是同一模块存在多个副本(如 top.v 与 top_backup.v),工程误引用了旧副本;三是 IP 生成文件与 IP 配置文件版本不匹配。核对方法建议采用“文件清单 + 校验值”双轨制:导出工程实际参与编译的文件列表,与版本库中对应版本的文件列表比对;对关键源文件计算哈希值(如 SHA-256),确认签核对象与冻结版本完全一致。

建议在签核前执行一次“干净编译”:删除 db/、incremental_db/ 等中间目录后重新全编译,确保签核结论基于真实源文件而非缓存结果。

四、签核表填写

签核表是上述检查的书面固化。它不需要复杂,但字段必须能追溯到具体对象和结论。下表给出一个可直接使用的示例结构,字段可根据项目规模增减。

检查项 对象/文件 检查内容 结论 备注/证据
源文件语法与可综合性 top.v, uart_rx.v 无 Error,Critical Warning 已确认 通过 编译报告 synth.rpt
端口与参数一致性 top.v 例化 vs 子模块 端口位宽、方向、参数默认值一致 通过 —
IP 参数确认 pll_0002.ip 输入 50 MHz,输出 100 MHz/25 MHz,锁定信号引出 通过 IP 参数截图
版本一致性 全部 .v/.svhd 与版本库 tag v1.0 哈希一致 通过 SHA-256 清单
SV 兼容性 pkg_def.sv 所用构造在当前 Quartus 版本支持范围内 通过 —

填写时注意两点:结论栏只写“通过/不通过/待确认”,不要写模糊描述;备注栏必须能指向可复查的证据(报告文件、截图、哈希清单)。签核人、日期、版本号应一并记录,使签核表本身成为可追溯的交付物。

设计源文件签核:三条检查主线与签核出口 ① 源文件检查 • Verilog / VHDL / SV 语法 • 可综合性(latch/多驱动) • 端口位宽、方向、参数默认值 • SV 构造与 Quartus 版本兼容 ② IP 核配置确认 • PLL:输入/输出频率、相位 • FIFO:位宽、深度、时钟域 • RAM/DSP:模式与流水级 • .qip/.ip 已加入工程文件列表 ③ 版本一致性核对 • 编译文件清单 vs 版本库 • 关键源文件 SHA-256 比对 • 排除多副本/旧副本误引用 • IP 生成文件与配置版本匹配 三项检查全部通过 → 进入签核表填写 签核表(示例字段) 检查项 对象/文件 检查内容 结论 证据/备注 语法与可综合性 top.v 等 无 Error 通过 synth.rpt IP 参数确认 pll_0002.ip 50→100/25 MHz 通过 参数截图 签核人 / 日期 / 版本号 一并记录,形成可追溯交付物

把三条主线与签核表串起来,源文件签核就不再是“走形式”。它输出的不仅是一张表,更是一份可追溯、可复查、可冻结的设计基线,为后续综合、时序收敛和板级验证提供可信起点。