AI能帮你优化路径,但它不会替你理解每一次优化背后的物理代价

首发于公众号「如是有为」 · 查看原文

AI能帮你优化路径,但它不会替你理解每一次优化背后的物理代价

昨天晚上,群里又热闹了。

有人丢了一张截图:

“某某EDA工具更新了,支持AI优化了。”

下面很快跟了一串回复。

“赶紧学,不然要被淘汰。” “以后不会AI EDA,是不是数字IC没饭吃了?” “有没有课程推荐?” “我这边刚好有个训练营,限时优惠。”

味道太熟悉了。

每隔一段时间,芯片工程师的焦虑就会被准时唤醒一次。以前是先进工艺,后来是Chiplet,再后来是国产替代,现在轮到了AI EDA。

焦虑本身不是问题。

做芯片的人,不可能完全不焦虑。工具在变,工艺在变,客户需求在变,项目周期在压缩,老板还希望你“又快又稳又省面积”。

但问题是,焦虑很容易被人利用。

尤其是那种叙事:

“不会这个工具,你就落后了。” “学会这个AI EDA,薪资直接上一个台阶。” “未来工程师拼的就是谁会用工具。”

听上去很对。

但它故意省略了中间最重要的一段:

工具能帮你更快得到一个结果,但它不会替你理解这个结果为什么成立,更不会替你判断这个结果牺牲了什么。

一、EDA工具不是魔法,它只是把物理约束包装得更高级了

很多人聊EDA,聊到最后就变成了“哪个按钮更智能”“哪个流程更自动”“哪个工具收敛更快”。

这些当然重要。

没有EDA工具,今天的复杂芯片根本做不出来。综合、仿真、形式验证、静态时序分析、布局布线、功耗分析、IR drop分析、信号完整性检查,每一个环节都离不开工具。

AI加入之后,很多流程确实会发生变化。

比如它可能更快地帮你找关键路径,更聪明地给出优化建议,更自动地调参数,更高效地探索PPA,也就是功耗、性能、面积之间的平衡。

但我们必须记住一件事:

EDA工具再强,也没有改变芯片的底层物理。

数字芯片里的“快”和“慢”,最后不是一个抽象概念,而是电荷能不能按时充到该有的电压。

一个信号从寄存器出来,不是瞬间飞到下一个寄存器。

它要经过标准单元,要经过金属连线,要驱动后级负载电容,要受到电源电压、温度、工艺角、线长、串扰、时钟偏斜的影响。

所谓路径延迟,翻译成人话就是:

这一路上的电压翻转,来不来得及在下一个时钟边沿前稳定下来。

所以,setup violation不是工具报告里一行红字那么简单。

它底层的意思是:

这条路径上的某些节点,在物理世界里,真的没有足够时间完成电荷转移。

你以为你修的是RTL。 其实你修的是电容、电阻、电流和时间。

二、一个负slack,背后不是一句“优化一下”那么简单

很多工程师第一次看STA报告,最容易被这个东西吓到:

slack = data_arrival_time - data_required_time
     = (launch_clock_path + data_path) 
       - (capture_clock_path - setup_time)

当然,不同工具里公式表达可能略有差异,但核心逻辑很简单:

数据到达得太晚,或者要求到达得太早,slack就会变差。

工具会告诉你哪条路径违例,AI辅助工具甚至可能继续告诉你:

换大驱动cell。 插buffer。 重构逻辑。 调整placement。 使用低阈值单元。 增加pipeline。

这些建议有用吗?

当然有用。

但真正的问题是:

每一个修复动作,背后都有物理代价。

比如换大驱动cell。

表面上看,是把一个驱动能力弱的单元换成更强的单元。 底层看,是把晶体管尺寸做大,降低等效导通电阻,提高充放电能力,让后级负载电容更快翻转。

听起来很好。

但代价呢?

面积变大。 输入电容变大。 上一级负载变重。 动态功耗增加。 局部拥塞可能变严重。 有时候你把这一段救活了,反而把前一级拖慢了。

再比如插buffer。

表面上看,是工具在长线上插了几个缓冲器。 底层看,是把一根很难驱动的长RC线拆成几段,让每一级承担更合理的负载。

但buffer不是免费的。

它有延迟,有面积,有功耗,也会占布线资源。插得不好,关键路径没救回来,局部拥塞先被你搞出来了。

再比如用低阈值单元。

速度确实快,因为晶体管更容易导通。 但漏电会上去。对于一些低功耗芯片,尤其是长时间待机、温度范围又宽的应用,这种“快”不是白送的。

所以我一直觉得,EDA报告里的delay,本质上是晶体管、金属线、电容、电阻、电源和温度一起给你的账单。

AI EDA可以帮你更快找一个解。

但它不会替你决定:

这个解牺牲的是功耗,还是面积? 牺牲的是时序裕量,还是可布线性? 牺牲的是芯片内部指标,还是客户系统里的响应速度?

这才是工程师真正要懂的东西。

三、在编码器芯片里,多打一拍从来不是免费的

我自己长期做编码器、位置传感、伺服控制相关芯片,对这一点感受特别深。

在很多普通数字设计里,遇到一条很长的组合路径,一个常见办法就是加pipeline。

路径太长,那就切开。 一级逻辑变两级。 setup压力下降。 频率上去了。 工具报告变绿了。

从EDA角度看,这很合理。

但在编码器芯片里,这件事没有那么轻松。

因为角度链路不是普通数据通路,它最后输出的是“位置”。而位置一旦进入伺服系统,就不是一个寄存器里的数字,而是控制环路里的反馈量。

一条典型的位置传感链路,大概是这样:

磁/光/电感式传感信号
→ 模拟前端
→ ADC采样
→ offset/gain校准
→ sin/cos归一化
→ atan或CORDIC角度解算
→ 插值细分
→ 数字滤波
→ 速度估计
→ ABZ / SPI / BiSS-C 等接口输出

你看这条链路,每一级都可能有逻辑。

如果你为了追求频率,在CORDIC后面加一拍,在滤波前面加一拍,在接口输出前再加一拍,从STA报告看,可能非常舒服。

但系统层面的问题来了:

这几拍延迟加起来,高速旋转时角度反馈会不会明显滞后? 速度估计用的是哪个时间点的角度? SPI读到的角度值,和ABZ边沿代表的是不是同一个采样时刻? 滤波器为了压噪声引入的群延迟,伺服驱动器能不能接受? 客户现场看到的不是你的timing report,而是电机高速运行时那一点点“发飘”的手感。

这就是编码器芯片很有意思的地方。

在RTL里,多打一拍只是一个寄存器。 在EDA里,多打一拍是路径被切短了。 在系统里,多打一拍可能就是位置反馈晚了一点。

而位置反馈的延迟,在高速运动时会变成角度滞后:

角度误差 ≈ 角速度 × 延迟时间

速度越高,同样的链路延迟,对应的角度滞后越明显。

所以编码器芯片里不能简单说:

“时序不够就加pipeline。”

你要问:

这条链路允许多少总延迟? 这个延迟对伺服环路相位裕量有没有影响? 滤波降噪和响应速度怎么取舍? 接口输出的数据是否保持时间一致性? 客户系统到底更怕噪声,还是更怕延迟?

这些问题,EDA工具不会替你判断。

工具看到的是path。 工程师要看到的是系统。

四、AI能帮你修路径,但它不知道这条路径连着一台正在转的电机

这句话听起来有点夸张,但我觉得很真实。

AI EDA可以看到时序路径。 它可以看到cell delay、net delay、fanout、slew、load。 它可以基于历史数据和优化算法,给你一个更好的实现方案。

但它不知道你这条路径背后是什么业务意义。

它不知道这条路径是角度解算主链路,还是低速配置寄存器。 它不知道这条路径加一拍之后,客户系统里的速度环会不会变钝。 它不知道某个滤波参数改了之后,噪声是下去了,但响应是不是慢了。 它不知道一个现场工程师面对客户时,为什么会盯着示波器上一点点抖动看半天。

这不是说AI EDA没价值。

恰恰相反,未来它会非常有价值。

它会把很多重复性的调参、搜索、局部优化工作做得更快。它会让工程师从大量机械劳动里释放出来。

但释放出来之后,你要去干什么?

不是去制造新的焦虑。 而是去理解更底层的东西。

理解为什么这条路径慢。 理解为什么这个cell换大以后前级反而变差。 理解为什么物理距离一拉长,综合阶段看起来很安全的路径,到了布局布线后就崩了。 理解为什么同样一条数字链路,在编码器芯片里会变成角度延迟、速度噪声和伺服手感。

这才是AI工具越强,工程师越应该补上的能力。

因为工具越自动,越容易让人忘记:

自动优化,不等于自动正确。

五、真正值得焦虑的,不是工具更新,而是你看不懂工具为什么这么做

我不反对学习新工具。

一个芯片工程师,如果完全不关心工具变化,那也不现实。新的流程、新的AI辅助能力、新的PPA优化方法,该了解就要了解,该试就要试。

但学习工具的正确姿势,不应该是:

“别人说这个很火,所以我赶紧报个课。”

而应该是:

“这个工具到底帮我优化了什么? 它的优化动作对应什么物理含义? 它改善了哪个指标,又牺牲了哪个指标? 这个结果放到我的芯片系统里,是不是仍然成立?”

比如它帮你修了setup violation,你就不能只看slack从负数变成正数。

你还要看:

面积有没有上去? 功耗有没有变差? hold有没有被引爆? 拥塞有没有加重? IR drop有没有恶化? 低温高速角和高温低压角是否都过? 这条路径加pipeline之后,系统延迟是否还能接受?

这些问题,不性感。

它们不像“AI EDA革命”那么适合做标题。 也不像“学完月薪三万”那么容易刺激转发。

但这些问题,才是真正做芯片的人每天要面对的东西。

一个工具新功能发布了,你当然可以关注。 但你不必一看到“支持AI”三个字就觉得自己要被淘汰。

真正会被淘汰的,不是暂时没用上某个新按钮的人。

而是永远只会点按钮,却不知道按钮背后发生了什么的人。

六、工具负责报红,工程师负责判断红得有没有道理

最后再说回焦虑。

焦虑是一种信号,不是一种行动指令。

你看到新EDA工具发布,心里紧一下,很正常。说明你还在乎自己的成长,还知道这个行业在往前走。

但焦虑不能直接变成付费冲动。

尤其不要被那种简单粗暴的叙事牵着走:

“不会某某工具,就没有未来。” “学会AI EDA,就能弯道超车。” “传统芯片工程师马上没用了。”

这种话听上去很刺激,但它通常把最难的部分省略了。

芯片工程师真正的护城河,从来不是记住某个菜单在哪,也不是会背几条命令。

而是你看到一条违例时,知道它为什么出现。 看到一个优化结果时,知道它牺牲了什么。 看到一条角度链路时,知道它最后会影响客户系统里的什么感受。 看到一份漂亮报告时,仍然愿意多问一句:它在真实PVT、真实版图、真实应用场景下还成立吗?

EDA工具会一直更新。

AI会继续进入芯片设计流程。

但只要芯片还运行在真实物理世界里,电容就不会因为PPT变小,电阻也不会因为课程海报消失,时钟边沿更不会因为营销文案多等你几百皮秒。

工具会变。 流程会变。 按钮会变。

但底层的电荷、电流、延迟、噪声、功耗、面积和系统权衡,不会因为一个新版本发布就消失。

所以,新EDA工具又发布了,你的焦虑也准时来了。

但别急着慌。

先把一条真实路径看懂。 把一个真实违例修清楚。 把一次真实系统延迟算明白。

踏实做完这些的人,才是真的不慌。

AI能帮你优化路径,但它不会替你理解每一次优化背后的物理代价

应作如是观
公众号「如是有为」二维码

关注公众号「如是有为」

微信扫一扫,新文章先在公众号发出。