🏗️ 数字设计流程概述 —— 从代码到芯片的奇妙旅程

作为一名芯片验证工程师,我们每天的工作都是围绕着“设计”展开的。我们编写测试平台,运行仿真,找 bug,但设计本身是如何从 RTL 代码一步步变成真正的芯片的呢?理解这个流程,能让你更好地把握验证的目标,知道哪些地方容易出问题。今天,我们就来走一遍数字设计的完整流程,就像一次从蓝图到建筑的旅程。


1. 整个流程概览:你的设计是如何“炼成”的?

想象一下你要盖一栋楼:

  • RTL 设计:建筑师画出蓝图(描述功能,比如哪里是客厅、哪里是卧室)。
  • 仿真:用计算机模拟一下,看看楼盖起来后光线好不好,布局合不合理。
  • 综合:把蓝图变成详细的施工图纸,标明用多少砖、多少钢筋(具体到门级电路)。
  • 时序分析:检查施工图的结构强度,看看楼能不能抗住预期的压力(时钟频率)。
  • 物理设计:最后工人按照图纸真正施工,变成实体的楼(芯片制造)。

整个流程中,验证就像监理,在每个阶段都要检查是否满足要求。今天我们先走一遍设计流程的前半部分——RTL 到综合。


2. 阶段 1:RTL 设计 —— 你的“建筑蓝图”

RTL(寄存器传输级) 是设计的起点。你用 Verilog 或 VHDL 描述数据如何在寄存器之间流动,以及如何处理这些数据。你写的代码并不是门电路,而是行为描述

举个例子

always @(posedge clk) begin
    if (reset)
        count <= 0;
    else
        count <= count + 1;
end

这段代码描述了一个计数器:每个时钟上升沿,如果复位则清零,否则加 1。你并没有指定这个加法是用哪种加法器实现——可以是简单的波纹进位加法器,也可以是超前进位加法器。RTL 只关心功能,不关心具体实现。

作为验证工程师,你需要在 RTL 阶段就介入,确保设计功能正确。你的 testbench 就是对这份蓝图的早期验证。


3. 阶段 2:仿真 —— 在计算机里“试运行”

在真正去“盖楼”之前,我们要用计算机模拟一下设计的行为,这就是仿真。你写一个 testbench,给设计施加激励,观察输出是否和预期一致。

常用工具:Icarus Verilog、Verilator(开源),ModelSim、VCS(商业)。

输出:波形文件(vcd)或 log 文件。

为什么重要:这是捕获逻辑错误的最佳时机。比如你写错了计数器的条件,或者状态机少了一个状态,仿真能直接看到。

验证工程师的视角:仿真贯穿整个流程。在 RTL 阶段,我们做功能仿真;综合后,我们还要做门级仿真,确保门级网表功能与 RTL 一致。


4. 阶段 3:综合 —— 把蓝图变成施工图

综合是设计流程中最神奇的一步:它将 RTL 行为描述转化为具体的门级网表,即由与门、或门、非门、触发器等标准单元组成的结构描述。

综合的过程包括几个子步骤:

4.1 解析与展开

工具先解析你的 RTL 代码,理解其中的层次结构、参数等。比如你的计数器代码,工具会识别出有一个加法器和一个寄存器。

4.2 优化

工具会根据你设定的约束(比如时钟频率、面积、功耗)对设计进行优化。同样是加法,它可能选择速度快的超前进位加法器,也可能选择面积小的波纹进位加法器。

4.3 技术映射

这一步将优化后的逻辑映射到目标工艺库中的标准单元。比如,你用的工艺库是 TSMC 65nm,工具就会从库里挑选出合适的门电路来实现你的逻辑。

输出:一个门级网表文件(依然是 Verilog 格式),但里面的元件都是标准单元,比如 AND2X1DFFQX1 等。

开源工具:Yosys 是目前最常用的开源综合工具,可以配合 PDK 使用。


5. 阶段 4:时序分析 —— 楼盖好了,能抗几级地震?

门级网表有了,但还需要检查它能不能在你想要的时钟频率下正常工作。这就轮到静态时序分析(STA) 登场了。

STA 检查电路中所有路径的延迟,确保:

  • 建立时间:数据必须在时钟沿之前稳定到达,否则寄存器可能采样到错误值。
  • 保持时间:数据在时钟沿之后必须保持稳定一段时间,否则可能被冲掉。

STA 工具会计算每条路径的延迟,考虑到:

  • 门延迟:每个标准单元本身的延迟。
  • 互连线延迟:信号在导线上的传输时间(随着工艺尺寸减小,互连线延迟占比越来越大)。
  • 时钟偏斜:时钟信号到达不同寄存器的时刻可能略有差异。

如果发现建立时间或保持时间违例,就需要修改 RTL 或调整综合约束。

开源工具:OpenSTA 可以执行静态时序分析。


6. 开源 vs 商业 EDA 工具:你能用什么?

传统上,EDA 工具由三大巨头(Synopsys、Cadence、Mentor)垄断,价格昂贵。但近年来开源工具发展迅猛,大大降低了芯片设计的门槛。

商业工具

  • 成熟、稳定、优化好,支持各种先进工艺。
  • 但价格昂贵,适合大公司。

开源工具

  • Yosys:综合工具,功能强大,支持多种输出格式。
  • OpenSTA:时序分析工具。
  • OpenROAD:集成从综合到布局布线的完整流程。
  • 优点:免费、透明、可定制,适合学习和小型项目。

对于学习来说,开源工具完全够用,而且能让你更深入地理解工具内部原理。


7. Skywater 130nm PDK —— 开源硬件的“工业革命”

PDK(工艺设计套件)是连接设计与制造的桥梁,它包含了:

  • 标准单元库(各种门电路的物理实现)
  • I/O 库
  • 存储器编译器
  • 设计规则文件
  • SPICE 模型

过去,PDK 都是严格保密的,学生和爱好者根本无法接触到真正的制造工艺。但 2020 年,Google 与 Skywater 合作发布了首个开源 PDK——Skywater 130nm。

为什么是 130nm

  • 虽然不如手机芯片的 5nm 先进,但 130nm 仍是成熟工艺,广泛用于 MCU、汽车电子、IoT 等领域。
  • 对于学习来说,130nm 足够复杂,能让你体验完整的设计挑战,又不会过于复杂。
  • 有了开源 PDK,你可以:
    • 在大学课程中学习真实的设计流程。
    • 自己设计芯片并提交制造(如 Google 的 ChipIgnite 计划)。
    • 研究 EDA 算法,用真实数据测试。

8. 验证工程师与设计流程的关系

作为验证工程师,你并不直接做综合或布局布线,但你需要深刻理解这个流程:

  • RTL 仿真:你的主战场,确保功能正确。
  • 综合后仿真:有时综合会引入意想不到的错误(比如工具优化过度),你需要跑门级仿真来验证。
  • 时序分析报告:如果设计有 setup/hold 违例,你可能需要调整测试用例来暴露问题,或者与设计人员沟通修改 RTL。
  • 理解 PDK:知道标准单元的特性有助于你设计更合理的测试。

总之,设计流程是你验证的对象,理解它,你才能更好地验证它。


总结

从 RTL 到硅片的旅程,就像从蓝图到实体的建筑过程。每个阶段都有特定的目标和工具,而验证贯穿始终。现在,借助开源工具和 Skywater PDK,任何人都可以在自己的电脑上体验这个完整的流程。作为验证工程师,掌握这些知识会让你更有全局视野,写出更高效的测试。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐