3. AI芯片设计流程:从规格定义到流片
说实话,AI芯片的设计流程,跟传统数字芯片有七分像,但又有三分很不一样的地方。我做了十几年芯片,从28nm一路做到5nm,最大的感受就是——AI芯片的迭代速度太快了,流程里的坑也特别多。
今天我就把整个流程拆开来讲。从你拿到一个需求,到最终把GDS送出去流片,中间到底要经历哪些阶段。每个阶段我会结合自己踩过的坑,给你一些实在的建议。
3.1 整体流程概览
先给你一张总图,把整个流程串起来。你心里有个谱,后面我们再一个一个拆。
整个流程,我习惯把它分成两大块:前端设计和后端设计。前端负责把想法变成代码,后端负责把代码变成版图。中间还有验证和测试贯穿始终。
3.2 前端设计阶段
前端设计,说白了就是「把脑子里的架构变成RTL代码」。这个阶段我踩过的坑最多,因为AI芯片的架构太灵活了,很容易写着写着就跑偏。
3.2.1 规格定义
这一步决定了芯片的「灵魂」。你想想看,如果规格定义错了,后面所有的工作都是白费。
规格定义要回答几个核心问题:
- 算力目标:多少TOPS?INT8还是FP16?
- 功耗预算:板级散热能撑多少瓦?
- 存储层次:SRAM多大?HBM还是DDR?
- 接口协议:PCIe Gen几?有没有CXL?
3.2.2 架构设计与RTL编码
架构设计阶段,你要把规格拆成具体的微架构。比如MAC阵列多大、数据流怎么走、有没有稀疏计算支持。
RTL编码阶段,就是用Verilog或SystemVerilog把这些架构描述出来。这里我有个建议:
- AI芯片的RTL,尽量参数化写。因为后面很可能要调整MAC阵列大小或者数据位宽。
- 控制通路和数据通路分开写。我见过有人把控制逻辑和数据通路混在一起,后期调试简直噩梦。
- 多写断言(assertion)。AI芯片的状态机特别复杂,断言能帮你提前发现很多边界问题。
3.2.3 前端验证
前端验证,是AI芯片设计里最耗时的环节。没有之一。
为什么?因为AI芯片的验证空间太大了。一个卷积层可能有几十种配置,再加上各种数据精度、各种激活函数,组合起来是个天文数字。
我常用的验证策略:
| 验证层级 | 方法 | 覆盖目标 |
|---|---|---|
| 单元级 | 定向测试 + UVM | 单个模块功能正确 |
| 子系统级 | 随机约束测试 | 模块间交互 |
| 芯片级 | C模型比对 + 形式验证 | 全芯片一致性 |
| 软件协同 | 跑真实AI模型 | ResNet/YOLO等实际性能 |
3.3 后端设计阶段
后端设计,就是把RTL代码变成真正的物理版图。这个阶段,AI芯片和传统芯片最大的区别在于——面积大、功耗高、时钟复杂。
3.3.1 逻辑综合
逻辑综合,就是把RTL代码映射到工艺库里的标准单元。AI芯片的MAC阵列通常有几千个乘法器,综合的时候要特别注意:
- 乘法器是用组合逻辑还是流水线实现?
- 综合策略选面积优先还是速度优先?
我个人习惯,MAC阵列用流水线实现,虽然面积大一点,但时序好收敛。综合的时候,我会先跑一版面积优先的,看看能不能满足时序;不行再换速度优先。
3.3.2 布局布线与时钟树
布局布线,就是把标准单元摆到芯片上,然后用金属线连起来。AI芯片的布局有个特点:MAC阵列通常要摆成一个规整的矩形,这样数据流才顺畅。
时钟树综合(CTS)是后端设计里最头疼的环节。AI芯片的时钟域特别多,每个MAC阵列可能都有自己的时钟门控。我建议:
- 时钟树尽量平衡,skew控制在50ps以内。
- 时钟门控要分层做,不要一个门控控制太多寄存器。
- 建立时间(setup) slack > 0
- 保持时间(hold) slack > 0
- 最大转换时间(max_transition) < 0.5ns
- 最大电容(max_capacitance) 满足工艺库约束
3.3.3 物理验证与STA
物理验证,就是检查版图有没有违反工艺规则。DRC(设计规则检查)和LVS(版图与原理图一致性检查)是必做的。
静态时序分析(STA),说白了就是检查你的芯片能不能跑在目标频率上。我刚开始做设计时总觉得这步可有可无,直到有一次流片回来芯片死活上不了高频……嗯,从那以后我再也不敢跳过STA了。
AI芯片的STA,要特别注意多角多模分析。因为AI芯片的工作模式很多,比如训练模式、推理模式、低功耗模式,每种模式的时序约束都不一样。
3.4 DFT与测试
DFT(可测试性设计),是AI芯片里容易被忽视但极其重要的环节。你想想看,一个芯片几百亿个晶体管,如果出厂后发现有制造缺陷,怎么定位问题?
DFT主要做三件事:
- 扫描链(Scan Chain):把寄存器连成链,方便测试向量灌入。
- 存储器内建自测试(MBIST):SRAM和寄存器堆的自测试。
- 自动测试向量生成(ATPG):生成测试向量,覆盖制造缺陷。
3.5 流片前的最终检查
流片(Tapeout)前,我会做一次全面的「签核检查」。这里列一个checklist,你可以直接拿去用:
| 检查项 | 具体内容 | 状态 |
|---|---|---|
| 功能验证 | 所有测试用例通过,覆盖率达标 | ✅ |
| 时序签核 | 所有PVT角标下setup/hold满足 | ✅ |
| 功耗分析 | 动态功耗+静态功耗在预算内 | ✅ |
| 物理验证 | DRC/LVS/ANT全部clean | ✅ |
| DFT | 扫描链测试通过,ATPG覆盖率>95% | ✅ |
| IR Drop | 电源网络压降<5% | ✅ |
| EM/IR | 电迁移分析通过 | ✅ |
全部打勾之后,我才会在流片确认单上签字。这一步,千万别急。我见过有人为了赶流片窗口,跳过了一些检查项,结果芯片回来不能用,损失几千万。