跳至内容
DC验证流程

DC验证流程

DC验证流程

做数字IC设计,DC综合后的验证通常被称为门级仿真 (Gate-Level Simulation, GLS) 或 ​后仿真 (Post-Sim)

它的目的是验证 DC 生成的“网表”是否与你原来的 RTL 功能一致,以及时序是否满足要求。

在这个虚拟机里,你主要使用 VCS (负责跑仿真) 和 Verdi (负责看波形)。以下是手把手的操作流程:

第一步:准备文件 (在 DC 中生成)

在 DC (Design Compiler) 中综合完成后,你必须保存两个关键文件,否则无法进行后续验证:

  1. 门级网表 (.v): 这是把你的代码变成了用 TSMC 库里的 AND, OR, XOR 门连接的电路。
  2. 标准延时文件 (.sdf): (可选,做带时序的后仿需要) 包含了每个门的真实延迟信息。

第二步:修改 Testbench (测试平台)

你需要对原来的 Testbench 做一点点修改,让它能加载延迟文件(如果你只做逻辑验证,不关心延迟,可以跳过 initial 块里的代码)。

打开你的 tb_adder_32.v,加入以下内容:

Verilog

module tb_adder_32;
    // ... 你的信号定义 ...

    // 实例化你的设计 (注意:这里实例化的是 DC 生成的网表模块名)
    adder_32 u_adder_32 ( ... ); 

    initial begin
        // 【关键】加载波形记录功能 (为了给 Verdi 看)
        $fsdbDumpfile("adder_post_sim.fsdb");
        $fsdbDumpvars(0, tb_adder_32);

        // 【关键】反标 SDF 延迟文件 (如果要看真实延迟)
        // 第一个参数是sdf文件路径,第二个是Testbench里例化的DUT名字
        $sdf_annotate("adder_32.sdf", u_adder_32); 
    end
    
    // ... 你的测试激励 ...
endmodule

第三步:运行 VCS 仿真 (核心步骤)

这是最关键的一步。你需要告诉 VCS:我要仿真网表、我的 Testbench、以及​厂家给的门电路仿真模型

在终端中输入以下命令(假设你在当前目录下):

Bash

vcs -R -full64 -debug_access+all \
    tb_adder_32.v \
    adder_32_netlist.v \
    -v /你的库文件路径/verilog/tsmc13.v \
    +neg_tchk +maxdelays

命令详解 (必须看):

  • -R: 编译后立即运行。
  • -full64: 使用 64 位模式。
  • -debug_access+all​: 开启调试模式,​否则无法生成 fsdb 波形给 Verdi 看
  • tb_adder_32.v: 你的测试平台。
  • adder_32_netlist.v: DC 吐出来的网表。
  • -v /.../verilog/tsmc13.v​: 这是最重要的! 网表里全是 XOR2X1​ 这种名字,VCS 不认识,必须指向你截图里的那个 tsmc13.v 文件,它里面定义了这些门的逻辑行为。
  • +neg_tchk: 后仿常见选项,防止因负的时间检查导致仿真报错。

第四步:使用 Verdi 查看波形

如果 VCS 运行成功,你会看到终端打印出仿真时间,并且目录下会生成一个 adder_post_sim.fsdb 文件。

现在打开 Verdi 来看波形和电路图:

方法 1:直接加载波形

Bash

verdi -ssf adder_post_sim.fsdb &

方法 2:加载设计和波形 (推荐,可以看门级电路图)

Bash

verdi -sv tb_adder_32.v adder_32_netlist.v -v /你的库文件路径/verilog/tsmc13.v -ssf adder_post_sim.fsdb &

打开后:

  1. g 键(Get Signals)把信号拉出来。
  2. 你会发现波形不再是完美的方形,信号变化会有微小的​延迟(如果你加载了 SDF),这就是后仿真的意义!
  3. 你可以双击代码窗口里的模块,查看 DC 综合出来的真实门电路连接图(不再是 RTL 代码,而是 Schematic)。

总结

  1. DC -> 吐出 netlist.v​ 和 .sdf
  2. Testbench -> 加 $sdf_annotate​ 和 $fsdbDump
  3. VCS -> 编译 TB + Netlist + tsmc13.v
  4. Verdi -> 看 .fsdb 波形。