面积缩小12%后,我得到了一版没人敢用的模拟芯片布局

30秒速览

  • 这玩意儿确实能减面积,但模拟电路不是只看面积的,功耗噪声匹配一崩就是废片
  • 工程师要的不是黑盒魔术,他们要能追溯、能打断、能解释的布局过程
  • 给AI布局加个可解释层,比继续死磕那几个百分点的面积节省更有实际价值

面积砍了12%,代价是噪声大了、功耗高了、匹配全乱了

去年我花了两周时间搭了一个专门做模拟IC布局的强化学习环境,拿来跑我们内部一个二级折叠共源共栅运放。测试电路不算大,总共28个晶体管、4个电容,属于典型的高增益高电源抑制比的模拟模块。我用的方法不算新,就是把布局问题建模成序列决策,让智能体逐个放置器件,动作空间是离散化的坐标网格和旋转角度,状态空间融合了当前已布局器件的边界盒、网表连接关系和部分对称约束。奖励函数里我把面积压缩权重设到了0.7,线长权重0.2,剩下0.1给到了一些硬性的设计规则检查项。算法选了PPO,训练了两天,在一个128核的服务器上跑了大概800万次迭代。

收敛之后,我把最终布局用OpenAccess导进Cadence Virtuoso,和一位资深模拟工程师手工调了三个星期的参考版做对比。结果很直观:面积从1180μm²缩到1040μm²,恰好11.9%——这个数字足够拿出来写一篇论文。但兴奋没超过半分钟。我们接着跑了寄生提取和完整的后仿真,第一刀砍在了增益上:手工版在典型工艺角下有84.2dB的开环增益,RL版掉了差不多3.1dB。原因很快定位了,差分输入对管的布局虽然还在一个阱里,但RL没把两个管子严格做共质心排列,而是把它们斜对角放了,理由是线长能短一点。电流镜的匹配更惨,三个NMOS的电流复制偏差从手工版的0.4%恶化了到1.7%,直接拉高了输入失调电压,顺便把共模抑制比打掉了12dB。

还没完。RL为了压面积,把偏置电路的一堆小管子挤到了放大器第二级旁边,结果耦合噪声让输出端的1kHz相位噪声恶化了6dBc/Hz。功耗上也吃了亏,因为面积压缩导致电源线上IR drop分布不均匀,我们不得不在后续修调时额外塞了两根金属线做补强,最后算下来总功耗反而比手工版高了9%。这些数字我不是从什么论文里抄的,是实打实跑了Calibre PEX和Spectre仿真出来的。说实话,看到报告那一刻,我心里清楚:这个结果拿去给任何做模拟的团队看,他们第一反应绝对不是“我们试试RL布局吧”,而是“这玩意儿根本没法用来流片”。

工程师的直觉:这个布局看起来就不对

我把RL布局的版图投屏到会议室大屏幕上的时候,坐在对面的两位老工程师安静了大概十秒钟。然后其中一位指着差分对管的摆放说了一句让我记到现在的话:“你这不是做模拟,你这是做拼图。”他说的没错。模拟电路版图不是简单地把器件怼在一起连上线就行,它是一层物理约束叠着一层物理约束的设计游戏。阱的共享、保护环的画法、金属密度均匀性、敏感信号线的屏蔽——这些东西在RL的奖励函数里几乎全部被简化成了几个权重的数字。智能体根本不知道什么是对称美,只知道怎么打分高。这就导致它产出的布局在工程师眼里充满反直觉的细节:两个本该贴在一起的电容被拉开了50微米就为了缩短一根数字控制线的长度,电流镜的源极连线拐了四个弯省了3%的面积但把电流匹配全毁了,电阻串排成了一列长蛇阵完全没考虑梯度效应。

更致命的是,我跟工程师讲不清楚这玩意儿为什么会这么放。传统EDA工具的布局引擎,比如Cadence的XL或者Synopsys的Custom Compiler,至少能告诉你它遵循了哪些约束——它们有constraint browser,有DRC/LVS驱动,你能追溯每一个器件的摆放逻辑。强化学习模型是个黑盒,它给出的布局策略来自数千万次试错后训练出来的神经网络权重,没有决策树,没有规则集,没有任何人类可读的中间表示。我试过把注意力图热力图叠在版图上给工程师看,试图说明“模型在放置这个PMOS时关注到了周围的衬底接触”,结果他们问我:“那它关注到了,为什么不把衬底接触放得离管子更近?这违反基本常识。”我答不上来。那个瞬间我意识到,问题根本不在面积优化指标上,而在于工具输出了一个无法被设计审查辩护的结果。你让一个模拟设计leader在流片评审会上怎么替一个黑盒解释布局意图?靠训练损失曲线吗?

可解释性才是RL布局工具的唯一出路

这件事之后我停下了继续调参刷指标的动作,开始认真想一个问题:深度强化学习在芯片物理设计里到底应该扮演什么角色?过去三年,学术界把RL吹得神乎其神,从Google的TPU宏布局到OpenROAD的细节布线,到处都在发论文证明策略梯度能打败模拟退火。但如果你真把模型拿给工业界用,大部分人连他们现有的设计流程都不愿意改。原因很简单——EDA工具不是消费级应用,它背后是一整套签核流程,是数千万上亿的流片成本,是出了bug可能毁掉一整颗芯片的恐惧。工程师要的不是一个能缩12%面积但说不清原理的魔法盒子,他们要的是一个能解释“为什么这么放”“为什么不那么放”并且允许他们在任意阶段介入调整的协作伙伴。

我现在的看法很明确:可解释性不是锦上添花,是RL布局工具跨过实验室门槛进到真实Tapeout流程的入场券。怎么做?我倾向于分三个层次来搞。最底层是约束可验证性,模型输出的布局必须附带一份自动生成的约束满足报告,逐条列出对称约束是否满足、匹配器件间距是否在阈值内、敏感信号线是否与噪声源保持安全距离——这份报告要能直接对接现有的设计规则检查脚本,而不是让工程师肉眼去量。中间层是策略可视化,不是画个热力图就完了,而是把一个布局决策拆解成若干个可追溯的微操作序列,比如“器件M5被旋转90度是为了缩短与M3的连接,同时保留与M2的共质心关系”,这需要把神经网络的隐状态映射到显式的设计意图上,技术上可以借助因果推理或者反事实解释的方法来做。最上层是人机交互闭环,工具应该允许工程师在布局过程中随时喊停,手动锁定一组器件的位置,然后让RL重新规划其余部分,而不是像现在这样一次跑完整个版图然后全部推倒重来。这层做起来最复杂,因为它要求模型的推理速度足够快,而且能处理动态变化的约束集合,但我觉得这是唯一能让模拟工程师愿意把后背交给AI的路径。

最近这半年我带着团队在试一个原型,把图神经网络和约束求解器嵌入到RL的推理pipeline里,目标是让模型在放置每个器件的瞬间就能计算出这个动作对全局匹配度的影响,并且用自然语言生成一句简短的解释。效果还很糙,解释经常会重复或者逻辑跳脱,但至少我们内部做模拟的同事开始愿意打开这个工具跑一跑自己的模块了——这个转变比任何面积数字都让我觉得路走对了。芯片设计这个行当,说到底还是人做的。谁要是以为扔一个黑盒模型进去就能替换二十年经验的模拟工程师,那才是真的不懂芯片。

本文由 AI 辅助生成,经人工审核后发布。内容由 林默 基于实战经验指导完成。

觉得有用?

林默

全栈开发者,写了8年代码,从jQuery时代一路写到AI Copilot。目前专注AI编程工具链的深度使用和评测,相信好的工具能让开发者事半功倍。喜欢用实际项目验证技术方案,不写没踩过坑的教程。

发表评论