Hotdry.
hardware-design

纯硅4K门电路设计:逻辑综合、时序约束与面积优化的工程实践

在约4000个逻辑门的极端约束下,探讨无CPU/内存的纯门电路设计,分析触发器面积成本、算法生成替代查找表、以及时序收敛的工程化参数。

在数字电路设计的边缘地带,存在着一种极端的工程实践:仅用约 4000 个逻辑门,在无 CPU、无内存、无 ROM/RAM 的约束下,实现完整的 VGA 视频输出与音频合成的专用计算单元。这种纯硅门电路设计不仅是对硬件工程师的极限挑战,更是对逻辑综合、时序约束与面积优化技术的深度检验。

极端约束下的设计环境

Tiny Tapeout 8 项目提供了一个约 4000 个逻辑门的 ASIC 设计空间,基于开源的 Skywater 130nm 工艺设计套件(PDK)。与传统的 FPGA 设计不同,ASIC 设计面临着一系列根本性的约束差异:

  1. 触发器成本高昂:在 FPGA 中,每个查找表(LUT)通常附带一个触发器,寄存器几乎是 "免费" 的。但在 ASIC 中,触发器是面积最昂贵的单元之一,每个状态位都需要付出真实的硅面积代价。

  2. 无初始化保证:FPGA 允许使用 initial 语句,寄存器通常初始化为零。ASIC 中的触发器在电源开启时具有随机初始值,必须设计显式的复位逻辑。

  3. 组合逻辑深度:FPGA 设计中习惯进行大量流水线化,但在 ASIC 中,更深的组合逻辑层配合更少的触发器往往能获得更好的面积效率。

Andy Sloane 在 Tiny Tapeout 8 上实现的演示设计最终使用了 3374 个标准单元,其中包含 293 个触发器,几乎填满了可用的硅面积。这种极端约束迫使设计者重新思考每一个设计决策。

触发器面积成本与状态最小化策略

在 4000 个逻辑门的预算中,触发器占据了不成比例的面积成本。以 Skywater 130nm 标准单元库为例,一个典型的触发器单元可能占用相当于 4-6 个基本逻辑门的面积。这意味着 293 个触发器就可能消耗掉约 1200-1800 个逻辑门的等效面积,占总预算的 30-45%。

状态最小化的工程参数

  1. 位级优化:每个状态位都需要仔细评估其必要性。例如,在设计正弦波生成器时,通过将高分辨率正弦向量(14 位)压缩为低分辨率版本(11 位),节省了 6 个触发器。

  2. 算法状态替代:用算法生成替代状态存储。如正弦波不是通过查找表生成,而是使用 Minsky 在 HAKMEM 149 中描述的旋转向量算法:

    // 每帧更新的高分辨率正弦/余弦
    wire signed [14:0] acos1 = a_cos - (a_sin >>> 6);
    wire signed [14:0] asin1 = a_sin + (acos1 >>> 6);
    
  3. 数据模式利用:利用数据的重复模式减少逻辑复杂度。当字符宽度为 2 的幂次方时,重复的字符(如 "TT08" 中的第二个 'T')几乎不增加额外的逻辑门。

算法生成替代查找表的技术实现

在无 ROM/RAM 的约束下,传统的数据存储方式不再适用。逻辑综合工具(如 Yosys)将大型查找表转换为标准单元的逻辑网络,这一过程对数据模式极其敏感。

数据编码的工程化方法

  1. 算法复杂度优先:与其最小化数据存储大小,不如最小化数据的算法复杂度。重复的 2 的幂次方模式对综合工具来说是 "免费" 的,只有变化需要额外的逻辑。

  2. 逻辑模式匹配:综合工具会寻找地址与数据之间的模式关系。例如,编码 "TT08" 可以表示为:

    a1 == 0 -> 'T'
    a1 == 1 && a0 == 0 -> '0'
    a1 == 1 && a0 == 1 -> '8'
    

    这种表示方式比完整的查找表更节省逻辑资源。

  3. 音乐合成的算法化:在音频合成中,采用 ABAC 模式的结构化音乐,使得逻辑综合能够发现大量冗余。每个乐器的音符表不是存储为原始数据,而是编码为逻辑函数。

时序约束与收敛的工程实践

在 48MHz 时钟频率下,时序约束变得极其严格。Skywater 130nm 工艺在典型条件下的最大时钟频率约为 50MHz,这意味着设计必须在接近工艺极限的情况下工作。

时序收敛的关键参数

  1. 组合逻辑深度控制:在关键路径上,组合逻辑深度需要限制在 5-7 级门延迟以内。对于 48MHz 时钟(20.83ns 周期),考虑布线延迟后,组合逻辑延迟应控制在 15ns 以内。

  2. 时序驱动的综合:使用 Yosys 的abc命令配合时序约束:

    synth -top top_module
    abc -liberty sky130_fd_sc_hd__tt_025C_1v80.lib
    

    需要设置适当的时钟约束和输入 / 输出延迟。

  3. 静态时序分析检查点

    • 建立时间(setup time):在时钟边沿前数据必须稳定的时间
    • 保持时间(hold time):在时钟边沿后数据必须保持稳定的时间
    • 时钟偏斜(clock skew):时钟到达不同触发器的时间差异

面积优化的具体技术

在接近面积极限的情况下,每一个逻辑门的节省都至关重要。

面积优化技术清单

  1. 资源共享:多个功能模块共享相同的计算单元。例如,正弦波生成器同时用于文本滚动和背景效果。

  2. 位宽优化:仔细分析每个信号的动态范围,使用最小必要的位宽。从 14 位缩减到 11 位可以节省 9 个触发器。

  3. 常数传播:综合工具能够识别常数输入并进行优化。将常数硬编码到逻辑中而不是作为输入信号。

  4. 逻辑重构:重新组织布尔表达式以减少门数。例如,使用卡诺图或 Espresso 算法进行逻辑最小化。

  5. 选择适当的标准单元:Skywater PDK 提供多种驱动强度的单元。在非关键路径上使用最小驱动强度的单元可以节省面积。

验证与测试策略

在 ASIC 设计中,一旦制造完成就无法修改,因此验证必须极其严格。

验证流程参数

  1. 功能仿真:使用 Verilator 进行周期精确的仿真,生成测试向量并验证输出。

  2. 形式验证:使用等价性检查确保综合后的网表与 RTL 设计功能一致。

  3. 门级仿真:在综合后的网表上进行仿真,考虑实际的延迟和时序。

  4. 静态时序分析:使用 OpenSTA 进行多角点分析,覆盖工艺、电压、温度的变化。

  5. 功耗分析:估计动态和静态功耗,确保在预算范围内。

工程实践中的教训与反思

从实际项目中获得的经验教训对未来的设计具有重要指导意义:

  1. 视频模式选择:使用非标准的 1220x480 视频模式是一个错误。大多数测试者使用 LCD 显示器,而非标准的时序会导致明显的混叠和抖动伪影。

  2. 音频与视频同步:让音频使用独立于视频的时钟(48MHz/1024 = 46875Hz)导致音乐同步效果无法正确工作。更好的选择是将音频采样率与 VGA 水平频率(31.5kHz)同步。

  3. 时序松弛的代价:为了减少面积而放松时序约束(从 48MHz 降到 45MHz)导致在实际硬件上需要降频运行。

  4. 布线拥塞:即使所有逻辑单元都能放入可用面积,密集的布线也可能导致布线失败。需要预留 10-15% 的面积余量用于布线。

可落地的设计检查清单

对于计划进行类似纯门电路设计的工程师,以下检查清单提供了具体的可操作参数:

  1. 面积预算分配

    • 触发器:不超过总面积的 40%
    • 组合逻辑:50-60%
    • 布线预留:10-15%
  2. 时序约束设置

    • 时钟频率:目标频率的 80% 作为初始约束
    • 输入延迟:时钟周期的 20%
    • 输出延迟:时钟周期的 25%
  3. 验证覆盖率目标

    • 代码覆盖率:>95%
    • 功能覆盖率:>90%
    • 断言覆盖率:>85%
  4. 功耗预算

    • 动态功耗:基于开关活动率估算
    • 静态功耗:基于单元数量和泄漏电流
  5. 测试点插入

    • 扫描链覆盖率:>95%
    • 测试点间距:每 50-100 个逻辑门一个测试点

结语

纯硅 4K 门电路设计代表了硬件工程的极限挑战。在这种极端约束下,每一个设计决策都需要在面积、时序和功能之间进行精细的权衡。通过算法生成替代存储、最小化状态位、精心设计的时序约束和严格的验证流程,工程师可以在有限的硅面积内实现令人惊讶的复杂功能。

这种设计方法不仅适用于演示场景,其核心原则 —— 资源意识设计、算法优化和严格的工程约束 —— 对于物联网设备、边缘计算和低功耗嵌入式系统都具有重要的参考价值。在硬件设计日益复杂的今天,回归最基本的门电路设计原则,反而能带来最深刻的工程洞察。

资料来源

  1. Andy Sloane, "Pure Silicon Demo Coding: No CPU, No Memory, Just 4k Gates" (https://a1k0n.net/2025/12/19/tiny-tapeout-demo.html)
  2. Tiny Tapeout, "FPGA to ASIC Design Differences" (https://tinytapeout.com/hdl/fpga_vs_asic/)
查看归档