大模型变革EDA的三种方式

随着现代集成电路复杂程度的不断提升,硬件工程师需要在从设计到制造的完整工作流程中投入更多精力。该工作流程涉及大量迭代过程,不仅耗费大量人力,还容易出现差错。因此,业界迫切需要更高效的电子设计自动化(EDA)解决方案,以加快硬件开发速度。

近年来,大型语言模型(LLM)在语境理解、逻辑推理和生成能力方面取得了显著进步。由于硬件设计和中间脚本可通过文本形式呈现,将 LLM 集成到 EDA 中为简化乃至自动化整个工作流程提供了极具前景的机遇。基于此,本文全面综述了 LLM 在 EDA 中的应用,重点探讨其能力、局限性及未来机遇。

文中介绍了三个案例研究及其展望,以展示 LLM 在硬件设计、测试和优化方面的能力。最后,本文强调了未来的发展方向与挑战,旨在进一步挖掘 LLM 在打造下一代 EDA 中的潜力,为有意将先进人工智能技术应用于 EDA 领域的研究人员提供有价值的参考。

引言

电子设计自动化(EDA)涵盖了从逻辑设计到制造的完整工作流程,在提升硬件性能和缩短开发周期方面发挥着关键作用。通用人工智能(AGI)的出现为重塑 EDA 的未来带来了革命性变革。通过利用大型语言模型(LLM)等技术,能够从海量历史数据中学习模式并获得启发,为 EDA 工作流程提供更高效、更智能的解决方案。由于电路可通过硬件描述语言(HDL)表示,且脚本本身具有文本属性,这些特点与 LLM 的能力高度契合,为减轻 EDA 工作流程中人力密集型任务的负担创造了新机遇。

近期研究表明,将 LLM 应用于 EDA 领域,极有可能将设计师与工具之间的互动模式从被动辅助转变为主动智能体模式,使其能够自主执行特定任务。图 1 展示了 LLM 在芯片设计流程中的应用,包括规格优化、硬件生成等任务。站在下一代 EDA 的前沿,LLM 的出现被视为一项变革性进展,它不仅能提高硬件开发效率、推动创新,还有可能从根本上重新定义电子系统的设计、验证与制造方式。

500

尽管 LLM 为 EDA 工作流程带来诸多益处,但只有当它们能取得突破性进展以应对硬件设计的复杂性时,才会被广泛采用。目前的方法在集成设计综合方面仍存在不足,往往忽视了逻辑与其物理实现之间的相互依赖关系。要实现这一目标,需要让这些多模态技术共存并相互作用,确保各设计阶段之间的平稳过渡,而这一过程仍面临巨大挑战。本文全面综述了 LLM 如何塑造下一代 EDA,为推进人工智能与 EDA 的融合提供清晰见解,并评估这种融合究竟是真正的突破,还是被高估的未来趋势。

本文的结构安排如下:第二节全面探讨 LLM 在 EDA 领域的最新应用现状;第三节研究 LLM 在硬件设计与测试中的应用;第四节阐述 LLM 辅助硬件设计方法的演进,从微调模型到结构化提示框架;第五节介绍如何利用带有智能提示的 LLM 自动生成系统级测试程序;第六节探讨 LLM 在 EDA 应用中的未来前景与挑战,强调其在这一快速发展领域中的局限性与机遇;第七节对全文进行总结。

LLM 在 EDA 领域的应用现状

硬件设计通常始于设计规格,随后由经验丰富的工程师将其编写为硬件描述语言(HDL:hardware description languages)代码。在现代硬件开发中,高级综合(HLS:high-level synthesis)技术可将 C/C++/SystemC 语言转换为寄存器传输级(RTL)代码,而 Chisel 等硬件构造语言则通过高层抽象生成参数化 RTL 代码。这两种方法都显著提高了设计的灵活性和效率。RTL 代码生成后,需通过静态分析与验证确保其正确性,随后进行逻辑综合,得到经过功耗、性能与面积(PPA)优化的门级网表,最后通过物理设计形成可制造的布局。尽管取得了这些进展,该过程仍容易出错、耗时较长,且对人力存在高度依赖。

近年来,LLM 在语境理解和逻辑推理方面展现出卓越能力,使其能够在 EDA 的各类任务中为工程师提供辅助,覆盖从高层设计规格到低层物理实现的全流程。在前端硬件设计领域,Chip-Chat借助 GPT-4 完成了 8 位微处理器的完整 HDL 流片,并通过分层提示技术优化复杂设计;GPT4AIGChip通过解耦硬件模块并融入便于 LLM 处理的模板以实现迭代优化,从而自动化人工智能加速器的开发流程;VRank 和 VFocus则利用 LLM 的概率特性生成多个 Verilog 候选方案,根据仿真输出对其进行聚类,依据一致性排序后筛选出最优设计。

在高级综合(HLS)领域,LLM 驱动的硬件设计前沿研究进一步推进。C2HLSC 利用 LLM,结合工具引导反馈和分层分解技术,将 C 程序迭代转换为兼容 HLS 的版本;HLS-Repair 则采用融合检索增强生成(Retrieval-Augmented Generation)和优化策略的 LLM,将 C 代码转换为经过优化的 HLS-C 代码,在减少人力投入的同时提升综合质量。

硬件测试用于验证生成硬件的功能行为。AutoBench 和 CorrectBench利用 LLM 构建混合测试平台和自测试系统,并通过自校正循环对其进行后续改进。系统级测试(SLT:System-Level Test)能够检测早期测试中遗漏的缺陷,但目前仍高度依赖人工操作。为缓解这一问题,研究人员采用带有结构化思维链(Structural Chain of Thought)提示的 LLM,在现场可编程门阵列(FPGA)上的超标量乱序执行 RISC-V 处理器中自动生成可最大化功耗的 C 代码,从而在高活动量或高温度环境下实现缺陷检测。

硬件验证通过断言检查确保设计的正确性。AssertLLM通过提取结构和映射信号,从完整规格中生成断言;AutoSVA则采用带有形式化验证反馈的迭代框架,对 LLM 生成的断言进行优化完善。

通过逻辑综合,RTL 设计会被转换为经过优化的门级表示。LLSM 提出了一种 LLM 增强型逻辑综合模型,该模型能够直接从 RTL 代码中提取信息,融合思维链提示、文本 - 电路混合嵌入技术以及面向与非图(AIG)的定制加速库,从而提升综合效率与质量。

物理实现将综合设计转化为可制造的版图。MCP4EDA 提供了一个 LLM 驱动的框架,该框架通过自然语言控制 RTL 到 GDSII 的流程,并使用 PPA 指标进行迭代脚本优化。LayoutCopilot提出了一个 LLM 驱动的多智能体框架,将自然语言转换为可执行脚本命令,用于交互式模拟版图设计。

大型语言模型辅助的设计与测试平台生成

高级综合(HLS)以 C/C++ 等计算机编程语言作为输入,可自动输出 Verilog 等硬件描述语言(HDL)代码。然而,将常规 C/C++ 程序转换为可被 HLS 工具综合的 HLS 兼容版本(HLS-C),往往需要投入大量人力。例如,由于硬件无法处理无界数据结构,工程师需手动重写动态内存分配相关代码。

近年来,如图 2 所示,有研究提出了一种大型语言模型(LLM)辅助的 HLS 程序修复框架,用于解决 C/C++ 代码中的此类不兼容问题,该框架包含四个阶段:

(1)预处理阶段:利用 HLS 工具对原始 C/C++ 程序进行编译,返回实际存在的部分错误。由于 HLS 编译器可能无法一次性检测出所有错误,因此需借助 LLM 检测其他潜在错误。

(2)基于检索增强生成(RAG)的修复阶段:检索增强生成(RAG)技术通过检索器整合专业知识,提升 LLM 的能力。在 LLM 的提示词中融入从外部库检索到的修正模板,可有效引导 LLM 实现 C 程序的精准修复。

(3)等价性验证阶段:将修复后的 C 程序综合为对应的寄存器传输级(RTL)代码后,通过 C-RTL 协同仿真验证二者的功能等价性。

(4)功耗 - 性能 - 面积(PPA)优化阶段:收集修复后的 HLS-C 程序进行进一步优化,LLM 通过调整编译指示(pragma),对存在性能瓶颈的代码段进行优化。

500

尽管上述框架能将常规 C/C++ 程序转换为 HLS 兼容版本,但这些 HLS-C 程序及最终部署在现场可编程门阵列(FPGA)上的电路,与原始中央处理器(CPU)执行结果相比,仍可能存在行为差异。这些差异源于修复和综合过程中所做的假设。例如,FPGA 部署中自定义的位宽可能导致数据溢出;而流水线并行(#pragma HLS pipeline)由于数据依赖或反馈路径的存在,可能产生与 CPU 顺序执行结果不一致的输出。为应对这一挑战,有研究提出了一种 LLM 辅助的 HLS 行为差异测试框架。

如图 3 所示,该框架的流程如下:首先,在 LLM 辅助下,通过移除不支持的 C/C++ 语法,将原始 C/C++ 测试平台适配为 HLS 兼容的测试平台(1),确保其可被 HLS 工具成功编译;随后,采用反向切片技术识别关键变量(2),并由 LLM 对这些变量进行插桩,以实现谱图监测(3);将收集到的谱图输入测试输入生成模块,该模块结合动态变异与基于 LLM 的推理链生成测试输入(4);最后,采用冗余过滤方法跳过重复的硬件仿真(5)。

500

这两种 LLM 辅助框架分别针对 HLS 中的程序修复和行为差异测试,有望提升设计、调试与优化的效率。展望未来,目标是实现从高层描述到优化后 RTL 代码的精准自动化转换,其性能达到甚至超越专业工程师编写的 RTL 设计水平,最终构建无缝的端到端设计流程。

面向硬件设计的大型语言模型:机遇与挑战

2020 年,研究人员首次探索将 LLM 应用于硬件设计,提出了基于 GPT-2 微调的模型 DAVE 。该模型采用简单的教科书式 Verilog 问题进行训练,这些问题通常被视为新手级难度。DAVE 在解决类似定义的简单问题时表现出色,但在处理更复杂的设计或更开放的任务时则面临显著困难。

为解决该模型的不足,研究人员提出了名为 VeriGen 的新型模型家族。这是一组包含 5 个微调模型的集合,其中性能最强的模型基于 CodeGen 模型家族微调而成。训练数据不仅涵盖多本教科书的内容,还包括来自 GitHub 的大量开源 Verilog 代码。在模型规模远小于 OpenAI 的 ChatGPT-3.5 和 GPT-4 的情况下,这些 CodeGen 衍生模型的性能优于 ChatGPT-3.5,且与 GPT-4 相当。此后,众多针对 Verilog 优化的 LLM 相继问世,每类模型都试图通过独特方式提升性能或降低计算成本,例如 RTLCoder、VerilogEval和 CodeV。

然而,这些微调模型均属于传统的 “自动补全式” LLM。2022 年 ChatGPT 发布后,开发重心大幅转向基于指令微调模型的 “对话式” LLM 应用。这类模型不再仅仅预测用户可能需要的下一组令牌(token),而是等待用户完整表达意图后,提供全面的响应。在 Chip-Chat 研究中,研究者采用 OpenAI 的通用知识对话模型 ChatGPT-4,协助设计并完整生成一种新型累加器架构指令集(ISA)的 Verilog 代码 —— 该 ISA 专为 TinyTapeout 平台的高空间约束流片场景设计。ChatGPT 不仅助力制定 ISA 规格,还生成了 100% 的 Verilog 代码及用于测试的 Python 汇编器。该设计最终成功流片,并验证其功能完全符合预期,成为首个由人工智能完整编写硬件代码的流片设计。

但 Chip-Chat 的设计过程缺乏结构化,且依赖经验丰富的硬件设计师指导开发。这些问题推动了更结构化的 LLM 生成 Verilog 框架的研发,同时利用 LLM 生成测试平台,验证 Verilog 代码是否符合预期功能。为实现这一目标,研究采用了严格的对话式提示方法:首先要求 LLM 生成设计方案,然后请求其为该设计生成测试平台,最后使用 Icarus Verilog 工具通过测试平台验证功能。为减少模糊的人工反馈,设计编译与仿真的输出结果会被反馈给 LLM,以修复出现的问题;仅当某一错误多次无法被 LLM 修正时,才引入人工反馈。该框架基于当时最先进的 ChatGPT-3.5 和 ChatGPT-4 模型,所生成的 8 个基准设计相对简单。测试结果显示,该技术具有应用前景 —— 在 ChatGPT-4 上运行的测试中,有一半完全无需人工反馈;但同时也发现显著问题:生成的测试平台缺乏足够的测试覆盖率。

在结构化反馈驱动设计流程取得部分成功后,研究人员意识到,LLM 应用于硬件设计的下一步关键是完全脱离人工干预,实现全流程自动化。由此诞生了 AutoChip—— 这是一款基于 LLM 和开源 EDA 工具的全自动 Verilog 设计工具,可生成完整的设计方案,其框架如图 4 所示。

500

鉴于此前测试平台质量不足的问题,AutoChip 要求用户输入高质量测试平台作为初始条件,该测试平台需能反馈设计错误。为评估 AutoChip 框架的能力,研究采用了 VerilogEval 基准测试集,该测试集包含提示词和格式规范的测试平台,适用于此类评估场景。除了对设计方案进行迭代优化外,AutoChip 还引入了树搜索功能:首先收集 k 个候选响应,利用 EDA 工具和测试平台对其进行评估并排序,最终选取最优响应作为反馈结果。排序依据是设计测试平台中测试用例的通过率。

树搜索设计的提出源于一项观察:若 LLM 在设计初期出现严重错误,其后续修正的可能性远低于初始设计接近正确的情况。设计方案会迭代优化至树深度 d,最终输出最成功的响应结果。

研究人员采用四款最先进的商用 LLM 对 AutoChip 进行评估,发现当时性能最强的模型 GPT-4o,是唯一一款通过反馈机制(而非生成大量候选响应)显著提升性能的模型。这一现象可能表明,大多数 LLM 在 EDA 工具错误信息的理解与修复方面缺乏训练 —— 仅最先进的模型能够正确利用反馈信息进行优化。

在 AutoChip 之后,类似的自动化技术及基于该技术的设计方案不断涌现。例如,文献提出了 CL-Verilog 模型 —— 这是一款基于 Code Llama 微调的 Verilog 生成模型,同时还提出了一套设计框架。该框架以小型模块为构建单元,通过分层方式构建设计方案,能够生成更贴近实际应用场景的设计(如密码学加速器)。

当大型语言模型测试芯片:

面向系统级测试程序自动化的语言模型

过去十年间,系统级测试(SLT)已成为集成电路制造流程中的关键环节。在 SLT 中,被测器件(DUT)会被置于模拟其真实应用场景的环境中 。例如,计划用于智能手机的片上系统(SoC)会被安装在模拟真实智能手机的电路板上。测试人员在 DUT 上运行现成软件,观察是否出现错误或崩溃;测试套件则由测试工程师根据经验和现场反馈手动编写。继续以智能手机 SoC 为例:测试时会先启动安卓系统,若启动成功,再进行使用各类应用、拨打电话、流媒体播放等操作。若最终未出现意外错误或崩溃,该 DUT 便会交付给客户。在 SLT 中,我们将 DUT 视为 “黑盒”,因为外部主体(如集成商)也可能与它交互。

SLT 的目标是通过运行额外的路径和事务,检测结构测试未发现的缺陷。然而,部分缺陷需要满足特定的非功能条件(如功耗或温度)才能被检测到,这类缺陷被称为 “边际缺陷”。手动编写能够控制这些非功能属性的高级代码极具挑战性,尤其是在对 DUT 缺乏深入了解的情况下。

自动生成 C 语言等高级语言代码同样难度很大。现有方法虽能可靠生成控制非功能属性的汇编代码,但有观点认为,这类代码片段在真实软件中极少出现 —— 而 SLT 的目标之一正是模拟终端用户环境。大型语言模型(LLM)通过两种方式缓解这一难题:一是简化 C 代码生成过程;二是由于 LLM 经过真实应用场景训练,更有可能生成高质量代码。

我们提出了一种方法(见图 5),用于生成 C 代码,目标是最大化超标量乱序执行 RISC-V 处理器(名为 BOOM)在现场可编程门阵列(FPGA)上运行时的功耗。我们通过 FPGA 测量生成 C 代码的功耗,有关测量设置的更多细节可参考,需注意的是,我们已对该设置进行了部分改进。

500

初始阶段,我们提供一组手写程序作为示例。随后从候选代码库中随机选取 n 个示例生成提示词,并将其输入 LLM。生成的代码响应会通过微架构模拟器或功耗测量进行评估:若代码无法编译或引发意外异常,评分则设为 0。根据评估结果,新代码片段要么被加入候选代码库,要么被丢弃。之后我们会检查是否满足停止条件(如代码片段数量、时间限制或用户手动停止)。若未停止,则根据评估结果调整 LLM 的 “温度” 参数,然后重复上述循环。

我们的方法采用 “结构化思维链”(SCoT)提示技术,以提升输出代码质量。SCoT 的核心思路是:首先让 LLM 生成它认为符合需求的伪代码;然后在第二个提示词中,利用生成的伪代码要求 LLM 生成规范的 C 代码,同时提示伪代码中可能存在错误。我们提供的示例中还包含代码片段的功耗数据,帮助 LLM 判断哪些示例更优、哪些应避免。

我们使用的 LLM 是参数规模为 340 亿的 Code Llama “指令型” 模型,该模型经某外部公司进一步微调 —— 训练数据包含 8 万个问答对和额外 15 亿个令牌。与原生模型相比,微调后的模型性能显著提升。

我们还实现了 “温度” 自适应机制,以引导 LLM 生成更优的代码片段:较低的温度使 LLM 更专注于优化候选代码库中的示例(利用已有知识),较高的温度则让 LLM 生成更多样化的代码片段(探索新可能性)。这一思路借鉴了模拟退火算法。温度调整遵循动态策略,该策略取决于生成代码片段的评分及其与候选代码库中其他片段的莱文斯坦距离(Levenshtein distance)。引入莱文斯坦距离是为了确保候选代码库的多样性,否则 LLM 会收敛到高度相似的代码片段,陷入局部最优。更多细节可参考。

我们的优化循环运行了 24 小时,生成了 2021 个代码片段,其中最优片段的功耗为 5.042 瓦。此外,我们还运行了遗传编程(GP)算法 39 小时,得到了一个功耗为 5.682 瓦的片段。运行时间差异的原因在于:24 小时后,GP 仍能找到更优结果,而此前多项实验表明,基于 LLM 的方法在 24 小时后几乎不再有显著改进。我们认为,0.640 瓦的功耗差异源于多个因素,包括编译器本身、传递给编译器的标志、LLM 本身(或其微调过程)以及所使用的编程语言。尽管存在局限性,但基于 LLM 的方法仍具有应用前景 —— 尤其是考虑到 GP 生成的代码片段在真实场景中并无对应版本。不过,未来仍需深入研究这些局限性,探索是否有进一步改进的空间。

未来方向与挑战

尽管大型语言模型(LLM)在电子设计自动化(EDA)领域已取得显著进展,但该领域仍处于早期阶段。将 LLM 融入 EDA 既面临诸多挑战,也蕴含大量机遇。

如图 6 所示,我们设想构建一个基于 LLM 的智能代理,它不仅能增强 EDA 工作流程,更能从根本上重塑该流程。传统 AI4EDA 方法往往忽视不同阶段电路设计的复杂性,而该智能代理会将自然语言规格、硬件描述语言(HDL)设计以及多模态数据(如原理图、网表、物理布局)整合为统一表示形式。这使得智能代理能更深入地理解设计意图,并实现各类 EDA 工具的无缝集成。通过捕捉逻辑与物理实现之间的相互依赖关系,该代理可支持全流程综合、完全自动化,并为整个 EDA 工作流程提供可泛化的解决方案。在此,我们提出几个可进一步探索的方向,以推动 LLM 在 EDA 领域的发展。

500

弥合语义鸿沟:尽管电路设计各阶段存在多模态表示,但底层功能始终保持一致。从规格到芯片(specification-to-silicon)的流程要求在自然语言规格、高层描述(如 Python/C/C++)、RTL 设计和物理实现之间准确映射功能行为。在传统工作流程中,由于高层抽象与硬件实现之间始终存在语义鸿沟,这一映射过程既耗时又容易出错。弥合这一鸿沟仍是 EDA 领域的长期挑战。通过开发先进的特征提取与对齐技术,并结合 LLM 驱动的语义分析,有望弥合语义鸿沟,实现更集成、更全面、更高效的硬件设计方法。

迈向专家级高级综合(HLS):尽管 HLS 支持在更高抽象层级用 C/C++ 进行高效硬件设计,但其传统编译流水线生成的结果质量(QoR)往往不及人工编写的 HDL。这一性能差距源于三方面:C/C++ 中硬件语义的不精确性、逻辑设计与物理实现之间有限的协同优化能力,以及 HLS 编译器与资深硬件工程师之间的专业知识差距。我们设想构建一个 LLM 增强型 HLS 代理,它通过学习最优配对的 HLS-HDL 代码库、带注释的硬件指令、综合报告和布局后反馈,内化专家级硬件设计启发式知识。通过集成闭环 QoR 预测与迭代优化,这种 LLM 引导的 HLS 代理有望逐步接近(在某些情况下甚至超越)专家编写的 HDL,弥合下一代 HLS 与资深 HDL 设计之间的性能差距。

高层引导的 RTL 调试:由于高质量 HDL 数据集有限且硬件约束具有细粒度特性,LLM 生成的 HDL 设计仍容易存在功能错误。手动调试耗时费力,且高度依赖仿真和详尽的波形检查。相比之下,LLM 在生成 Python 或 C/C++ 等语言的无时序行为模型方面准确率较高。利用这一优势,LLM 可从自然语言生成功能等价的高层描述,进而与 RTL 仿真进行跨层级对比。这种验证方法以可靠的高层执行为参考,有效弥补了 HDL 生成过程中的易错问题。

面向加速器生成的智能内核提取:在传统 HLS 工作流程中,识别并提取计算密集型内核以生成加速器是一个依赖专家且耗时的过程。对于具有复杂控制流或不规则内存访问的设计,生成高性能加速器的难度更大。此外,CPU 与加速器之间低效的数据传输可能会抵消硬件加速带来的性能提升。一个 LLM 驱动的代理可将内核检测、PPA 优化和迭代优化整合为闭环流程,在加快开发速度的同时提升设计质量。

隐私与安全:工程师可能会依赖云端 LLM 自动生成硬件解决方案,这可能导致敏感数据面临隐私泄露或知识产权被盗的风险。此外,恶意代码或硬件木马也可能通过云平台植入生成的硬件设计中。将 LLM 部署在本地服务器,并结合与云端模型的隐私感知交互 [47],有助于保护敏感数据。

EDA工具的无缝集成:现代EDA工作流程涵盖从设计规范到物理实现的整个过程,需要多种模式来全面捕捉设计意图。文本描述逻辑关系,而图像则展现结构复杂性,使大型语言模型能够解读复杂的电路设计。然而,不一致的格式、接口和工作流程仍然阻碍着EDA工具的无缝集成。统一多模态表示可以使高层逻辑与底层实现保持一致。实时反馈和全面的结果分析也可以集成到系统中,从而迭代优化生成的硬件设计。这样的智能系统不仅能够增强现有EDA工具的功能,还能彻底革新EDA技术,开启智能、全自动硬件设计的新时代。

结论

将大型语言模型(LLM)集成到EDA工作流程中,为探索更广泛的自动硬件设计方法开辟了新的可能性,并有望重塑电路设计范式。下一代基于LLM的EDA工具能够捕捉大规模电路的复杂特性,从而实现更精确、更创新的设计策略,不仅能够降低硬件开发成本,还能缩短产品上市时间。尽管LLM存在幻觉、硬件设计本身的复杂性以及数据隐私等挑战,但LLM在EDA领域的应用仍然具有巨大的变革潜力,将引领更高效、更智能的硬件开发,并最终重塑EDA的未来。

感谢本文作者:

500

站务

全部专栏