跳到正文
Semiconductor Engineering 芯片与封装· Zackary Glazewski·· 4 小时前AI 评分28

ChipAgents RCA 如何扩展自主根因分析与回归分诊

Scaling Autonomous Root Cause Analysis For Regression Triage

AI 导读

ChipAgents RCA 将调试视为搜索问题,通过探索高概率路径、多假设执行并对解释给出置信度来完成根因分析。面向回归调试,系统在传统 binning 之外做二次归组来合并同根因失败,并只重跑最小必需的 witness 仿真以开启波形转储,从而减少昂贵计算。当调试占验证工作量 44% 且设计规模持续膨胀时,这种编排式方法让“规模化难 bug”成为可处理的问题。

正文 · AI 翻译

随着半导体设计规模和复杂度的不断增长,调试变得越来越难以扩展。

在今年早些时候的 DVCon 上,Nvidia 的 Stuart Oberman 称首次流片成功正在接近一种“统计上的不可能”。Semiconductor Engineering 引用数据指出,调试占验证工作量的 44%;这一数字发布于 2018 年,远早于当今设计的规模和复杂度。

随着设计变得更大、设计空间不断扩展,工程师需要在包含数百万门电路的系统上工作。如果设计复杂度持续增长,调试就需要一种截然不同的方法。在本文中,我们将解释一种 AI 原生的根因分析(RCA)和回归分诊方法。

调试复杂度沿两个维度扩展

调试工作量的扩展有两个重要维度。

第一个是bug 难度。

有些 bug 需要跨设计层次、长流水线、大波形和多个相互作用的组件进行深入追踪,真正的根因才能显现。

ChipAgents RCA 正是专为这一维度而设计的。 该系统没有把调试当作简单的问答问题,而是将 RCA 视为一个搜索问题。它会探索高概率的追踪路径,在不同假设下进行验证,对得出的解释进行排序,并为工程师提供置信度评分。

以一个真实客户环境中遇到的 bug 为例。

该设计包含一个管理器(manager)与从属器(subordinate)之间的双向串行化接口。在一次事务期间,从属器触发了复位,而管理器仍在复位宽限期之外继续传输一帧数据。

传输数据的一部分恰好包含了与协议起始码相同的值。从属器将该负载误判为新帧的开始,最终导致下游故障。

多个条件必须同时满足:复位需要在事务期间发生,数据需要与起始码相似,且传输需要超出复位宽限期。

这类 bug 正是自主 RCA 尤其有价值的地方,因为识别根因需要推理一长串事件链。

但难度只是一个维度。

第二个是bug 数量。

一次回归可能包含跨多个测试用例和种子的数百次仿真。多个仿真可能同时失败,这些失败可能代表不同的 bug——或者许多看似不同的失败实际上源自同一个根因。

最具挑战性的情况位于这两个维度的交叉点:规模化的困难 bug。

此时问题不再只是找到一个根因。系统必须确定实际存在多少个不同的问题,判断哪些失败是相关的,识别哪些仿真包含调试所需的信息,并高效地在这些问题之间统筹 RCA。

为什么回归分诊是一个统筹调度问题

回归调试带来了截然不同的扩展挑战。

可能存在任意数量、难度各异的 bug。修复一个问题可能会暴露另一个问题。数百次仿真可能正跨不同测试用例和种子运行。

而且每次仿真都会生成数据。

单个调试案例本身可能已经包含海量的日志和波形。在回归测试的规模下,这些数据会在每一个失败的仿真中成倍增长。

简单粗暴的做法是给每个失败都分配一个智能体,在需要更多信息时随时重新运行仿真,为每个失败的测试生成波形,尝试修复,然后再重新运行整个回归测试。

但这样很快就会变得低效。

要让自主回归分诊在商业规模上可行,系统必须尽量减少它所执行的昂贵工作量。

这意味着要有选择性地判断哪些失败确实需要独立调查,哪些仿真确实需要重新运行。

这也意味着底层的 RCA 系统必须高度可靠。如果一个自主系统提出了错误的修复方案,重新运行仿真,再次失败,再尝试另一个假设,并在数十个失败中重复这一过程,计算成本会迅速攀升。

因此,准确性和效率是紧密耦合的。

智能分箱:找出失败背后的 bug

第一步是弄清楚究竟存在多少个不同的 bug。

传统的回归系统已经在使用分箱技术,通常依靠确定性脚本和模式匹配将具有相似特征的失败归为一组。这些方法依然有用。

但还有更进一步的机会。

两个仿真可能产生不同的日志特征,却仍然共享同一个底层根因。因此,一个智能系统应该能够将失败合并到确定性模式匹配无法识别的程度。

ChipAgents RCA Triage 在常规分箱之后增加了一个二次处理环节,用于识别最有可能由共同根因导致的失败。

系统不是把每个失败的仿真都当作独立的调试任务,而是尝试将回归精简为更小的、有意义的一组失败集合。

这为 RCA 系统创造了一个更容易处理的问题。

只重新运行重要的仿真

同样的原则也适用于波形生成。

一种直接的做法是重新运行每个失败的仿真,并为每个仿真转储一份波形。

但这样做成本高昂,而且往往没有必要。

相反,系统可以识别出一 最小见证仿真集合,能够解释每个分箱所代表的失败。

随后,在开启波形转储的情况下重新运行这些见证仿真。

目标不是收集所有可能的调试信息,而是收集解释回归失败所需的最少信息。

这是一个重要的区别,因为回归分诊是一项长周期任务。一次回归可能需要几分钟或几小时来执行。每一个不必要的仿真都会增加成本,并延误最终结果。

从自动分诊到自主解决

分箱和有选择性的波形重跑本身已经是一种自动化形式。

但自动化不必止步于此。

一旦回归被精简为有意义的失败组,并且确定了必要的见证仿真,这些调试包就可以直接交给自主 RCA 处理。

RCA 系统会调查每个分箱的根因,生成潜在的修复方案,并执行验证。

如果验证成功,系统就获得了一个新的信号,表明所提出的修复方案是正确的。结合 RCA 置信度评分和见证仿真的结果,系统可以判断该修复方案是否很可能已准备好进行最终的回归测试。

最后一步是重新运行回归测试,验证这些失败是否真的已被解决。

这就形成了一个端到端的工作流:

回归测试 → 智能分箱 → 见证选择 → 波形重跑 → 自主 RCA → 修复 → 验证 → 最终回归测试。

与其让工程师在通宵回归测试后醒来,发现一堆失败并用例开始手动分诊,不如让回归测试成为自主调试工作流的起点。

等到工程师回来时,系统可能已经解决了其中部分或全部失败。如果仍有一些未解决,工程师可以收到一份报告,说明哪些已被修复、哪些仍需调查。

范式从 开始回归测试分诊 转变为 审查回归测试分诊的结果。

多智能体系统需要在经济上可扩展

还有一个随着这些系统规模扩大而日益重要的挑战:成本。

多智能体系统自然比单个智能体消耗更多资源,因为它们会多次执行智能体原语。这种权衡是有原因的:并行探索可以提升性能和准确性。

但单纯投入更多算力并不是获得更好工程成果的可持续路径。

目标应该是在获得多智能体推理带来的准确性优势的同时,提高 token 和成本效率。

在我们的内部基准测试中,ChipAgents 的多智能体系统在成本与传统单智能体系统相当的情况下,实现了最先进的性能。

这是自主半导体工程的一个重要方向。

随着智能体承担更长周期的工作流,问题将越来越不再局限于智能体能否完成某项任务。

问题变成了系统能否在真实的半导体开发规模上,可靠、高效且经济地完成该任务。

回归测试分诊正是这一转变的一个很好的例子。

自主解决一个疑难 bug 是有价值的。

在整个回归测试中解决疑难 bug,同时智能地决定调查什么、重跑什么、以及在哪里投入算力,才是迈向商业化规模自主调试的下一步。

来源: Semiconductor Engineering 芯片与封装 · semiengineering.com