文章目录
-
- 摘要
- 一、引言
- 二、大语言模型在EDA中的最新应用现状
- [三、 大语言模型辅助的设计与测试平台生成](#三、 大语言模型辅助的设计与测试平台生成)
- 四、大语言模型在硬件设计中的机遇与挑战
- 五、当大语言模型测试芯片:用于系统级测试程序自动化的语言模型
- 六、未来方向与挑战
- [七、 结论](#七、 结论)
- 致谢
原标题:
Large Language Models (LLMs) for Electronic Design Automation (EDA) Special Session Paper 用于电子设计自动化(EDA)的大语言模型(LLMs)专题会议论文
附注:
- 此为论文用AI翻译做的中文版本
- 暂未加入图表
摘要
随着现代集成电路复杂性的不断提升,硬件工程师需要在从设计到制造的完整工作流程中投入更多精力。该流程涉及大量迭代,既耗费人力又容易出错。因此,业界迫切需要更高效的电子设计自动化(EDA)解决方案,以加速硬件开发进程。近年来,大语言模型(LLMs)在上下文理解、逻辑推理和生成能力方面取得了显著进展。由于硬件设计及其中间脚本均可表示为文本形式,将大语言模型引入EDA领域为简化乃至自动化整个工作流程提供了极具前景的机遇。本文全面综述了大语言模型在EDA中的应用,重点探讨其能力、局限性及未来机遇。文中还介绍了三个案例研究及其展望,以展示大语言模型在硬件设计、测试与优化方面的实际能力。最后,本文指出了未来的研究方向与挑战,旨在进一步挖掘大语言模型在塑造下一代EDA技术中的潜力,为有意利用先进人工智能技术推动EDA发展的研究人员提供有价值的参考。
一、引言
电子设计自动化(EDA)涵盖从逻辑设计到制造的完整工作流程,在提升硬件性能和缩短开发周期方面发挥着关键作用。通用人工智能(AGI)的出现正带来革命性变革,有望重塑EDA的未来[1]。通过利用大语言模型(LLMs)等技术,可以从海量历史数据中学习模式并激发洞见,为EDA工作流程提供更高效、更智能的解决方案。由于电路可用硬件描述语言(HDL)表示,而脚本本身即为文本形式,这些特性与大语言模型的能力高度契合,为缓解EDA流程中繁重的人工任务创造了新的机遇[2, 3, 4, 5, 6]。
近期研究表明,将大语言模型应用于EDA具有巨大潜力,可将设计师与工具之间的交互方式从被动辅助转变为主动代理,使其能够自主执行特定任务[8, 9, 10]。图1展示了大语言模型在芯片设计流程中的多种应用场景,包括规格优化、硬件生成等任务。站在下一代EDA的前沿,大语言模型的兴起被视为一项变革性进展,有望显著提升硬件开发效率、促进创新,并有可能从根本上重新定义电子系统的设计、验证与制造方式。
尽管大语言模型为EDA工作流程带来了诸多益处,但只有当其能在应对硬件设计复杂性方面实现突破性进展时,才能被广泛采纳。当前的方法尚难以实现一体化的设计综合,往往忽视了逻辑设计与其物理实现之间的相互依赖关系。要实现这一目标,需使多种模态共存并有效交互,确保各设计阶段之间平滑衔接,而这仍极具挑战性。本文全面综述了大语言模型如何塑造下一代EDA,旨在为推进人工智能与EDA的深度融合提供清晰洞见,并评估这种融合究竟是真正的突破,还是被高估的未来愿景。
本文的组织结构如下:
- 第二部分全面探讨了大语言模型(LLMs)在电子设计自动化(EDA)中的最新应用现状。 第三部分研究了大语言模型在硬件设计与测试中的应用
- 第四部分阐述了大语言模型辅助硬件设计方法的演进历程,从微调模型发展到结构化提示框架。
- 第五部分利用大语言模型结合智能提示,自动生成系统级测试程序
- 第六部分,探讨了大语言模型在EDA中应用的未来前景与挑战,强调了这一快速发展领域中存在的局限性与机遇。
- 第七部分,对全文进行总结
二、大语言模型在EDA中的最新应用现状
硬件设计通常从设计规格开始,然后由经验丰富的工程师将其编写为硬件描述语言(HDL)。在现代硬件开发中,高层次综合(HLS)将C/C++/SystemC转换为RTL,而诸如Chisel这样的硬件构造语言通过高层次抽象生成参数化的RTL [12]。这两种方法都显著提高了设计的灵活性和效率。一旦生成了RTL,静态分析和验证确保其正确性,随后进行逻辑综合以生成功耗、性能和面积(PPA)优化的门级网表,并进行物理设计以生成可制造的布局。尽管取得了这些进展,该过程仍然容易出错、耗时且高度依赖人工努力[13]。
最近,大语言模型展示了在上下文理解和逻辑推理方面的能力,使得它们可以在从高层次设计规格到低层次物理实现的整个EDA任务中辅助工程师[8, 9, 10]。
在前端硬件设计中,Chip-Chat [2] 使用GPT-4完成了一个8位微处理器的完整HDL流片,复杂设计通过分层提示得到增强[3]。GPT4AIGChip [9] 通过解耦硬件模块并引入适合LLM的模板进行迭代优化,实现了AI加速器的自动化开发。VRank和VFocus [14, 15] 利用大语言模型的概率性质生成多个Verilog候选方案,根据仿真输出进行聚类,按一致性排名,并选择最佳设计。
大语言模型驱动的硬件设计前沿进一步体现在高层次综合(HLS)领域。C2HLSC [17] 使用大语言模型迭代地将C程序转化为与HLS兼容的版本,同时提供工具引导反馈和分层分解。HLS-Repair [28] 应用具有检索增强生成和优化策略的大语言模型,将C代码转化为优化后的HLS-C,减少了人工投入的同时提高了综合质量。
硬件测试用于验证生成硬件的功能行为。AutoBench和CorrectBench [18, 19] 使用大语言模型实现了一个混合测试平台和自测系统,之后通过自我修正循环进行改进。系统级测试(SLT)能够检测早期测试遗漏的缺陷[32],但仍然严重依赖于人工[33]。为了缓解这种情况,使用带有结构性思维链提示的大语言模型[38] 自动生成C代码,以最大化FPGA上超标量乱序RISC-V处理器的功耗,从而在高活动或温度下启用缺陷检测。
硬件验证通过断言检查确保设计的正确性。AssertLLM [20] 通过提取结构和映射信号从完整的规格中生成断言。AutoSVA [21] 使用一个包含形式验证反馈的迭代框架来细化大语言模型生成的断言。
通过逻辑综合,RTL设计被转换成优化的门级表示。LLSM [22] 引入了一种大语言模型增强的逻辑综合模型,能够直接从RTL代码中提取信息,整合思维链提示、文本-电路混合嵌入以及针对AIG优化的加速库,以提高综合效率和质量。
物理实现将合成的设计转化为可制造的布局。MCP4EDA [25] 提供了一个通过自然语言控制RTL到GDSII流程的大语言模型驱动框架,并使用PPA指标进行迭代脚本优化。LayoutCopilot [26] 提出了一个大语言模型驱动的多代理框架,将自然语言转换为可执行的脚本命令,用于交互式模拟布局设计。
三、 大语言模型辅助的设计与测试平台生成
高层次综合(HLS)以C/C++等计算机编程语言作为输入,自动输出Verilog等硬件描述语言(HDL)。然而,将常规的C/C++程序转换为可被HLS工具综合的HLS兼容版本(即HLS-C),通常需要大量人工干预[27]。例如,动态内存分配必须由工程师重写,因为硬件无法处理无界数据结构。近期,如图2所示,研究者提出了一种用于HLS的大语言模型(LLM)辅助程序修复框架[28],用以修正C/C++代码中的此类不兼容问题,该框架包含以下四个阶段:
(1)预处理:原始C/C++程序首先由HLS工具编译,并返回若干实际错误。由于HLS编译器可能无法一次性检测出所有错误,因此引入大语言模型来识别其他潜在错误。
(2)基于RAG的修复:检索增强生成(Retriever-Augmented Generation, RAG)通过检索器整合专家知识,从而增强大语言模型的能力。在大语言模型的提示中加入从外部库中检索到的修复模板,能有效引导模型对C程序进行准确修复。
(3)等价性验证:将修复后的C程序综合为对应的RTL代码后,执行C-RTL协同仿真,以验证其功能等价性。
(4)PPA优化:收集已修复的HLS-C程序进行进一步优化。大语言模型通过调整编译指示(pragmas)对存在性能瓶颈的代码段进行优化。
尽管上述框架能够将常规C/C++程序转换为HLS兼容版本,但这些HLS-C程序及其生成的FPGA部署电路仍可能与原始CPU执行结果存在行为差异。这些差异源于修复和综合过程中所做的假设。例如,FPGA部署中使用的定制位宽可能导致溢出;而流水线并行(#pragma HLS pipeline)则可能因数据依赖或反馈路径,导致结果偏离顺序执行的CPU行为。为应对这一挑战,研究者提出了一个大语言模型辅助的HLS行为差异测试框架[30]。如图3所示,该框架首先借助大语言模型将原始C/C++测试平台适配为HLS兼容版本,即移除不支持的C/C++语法(1),使其能被HLS工具成功编译。随后,采用反向切片技术识别关键变量(2),再由大语言模型对这些变量进行插桩,以实现频谱监控(3)。所收集的频谱数据被输入到测试激励生成模块中,该模块结合动态变异与基于大语言模型的推理链(4)。最后,采用冗余过滤方法跳过重复的硬件仿真(5)。
上述两个大语言模型辅助框架分别面向HLS程序修复与行为差异测试,有望显著提升设计、调试与优化的效率。展望未来,目标是实现从高层描述到优化RTL的精准、自动化转换,其性能可媲美甚至超越专家手工编写的RTL设计,最终实现无缝的端到端设计流程。
四、大语言模型在硬件设计中的机遇与挑战
最早探索使用大语言模型(LLM)进行硬件设计的工作始于2020年,当时提出了一种名为DAVE的微调GPT-2模型[39]。DAVE使用教科书风格的简单Verilog问题进行训练,这些问题通常被视为初级水平。该模型在解决类似定义且简单的任务上表现非常成功,但在处理更复杂的设计或更开放的任务时则显著力不从心。
为克服DAVE的不足,研究者提出了一个名为VeriGen的新模型系列[40]。该系列包含五个微调模型,其中性能最强的模型基于CodeGen模型家族进行微调,训练数据既包括多本教材内容,也包含大量来自GitHub的开源Verilog代码。这些CodeGen模型在参数规模远小于OpenAI的ChatGPT-3.5和GPT-4的情况下,性能却优于ChatGPT-3.5,并与GPT-4相当。此后,众多针对Verilog微调的大语言模型相继涌现,各自尝试以不同方式提升性能或降低计算开销,代表性工作包括RTLCoder[41]、VerilogEval[42]和CodeV[43]。
然而,上述所有微调模型本质上仍属于传统的"自动补全式"大语言模型。随着2022年ChatGPT的发布,研究重心大幅转向基于指令微调(instruction-tuned)的"对话式"大语言模型应用。这类模型不再仅仅预测用户可能输入的下一个词元序列,而是等待用户完整表达意图后,再生成完整的回应。
在Chip-Chat[2]中,作者使用了OpenAI推出的通用知识对话模型ChatGPT-4,协助设计并完整生成了一种新型累加器架构指令集(ISA)的Verilog代码,该ISA专为TinyTapeout平台下严格的空间限制而定制。ChatGPT不仅帮助制定了ISA规范,还100%生成了Verilog代码以及用于测试的Python汇编器。该设计最终成功流片并通过验证,完全符合预期功能,成为首个由人工智能完全编写硬件代码并成功流片的设计。
然而,Chip-Chat整体缺乏结构化流程,高度依赖经验丰富的硬件工程师引导开发过程。这一局限促使研究者开发出一种更为结构化的框架:不仅利用大语言模型生成Verilog,还让模型自动生成测试平台(testbench),以验证Verilog是否按预期工作[10]。为此,研究者采用了一种严格的对话式提示方法:首先要求大语言模型生成设计,然后请求其为该设计生成测试平台,最后使用Icarus Verilog通过该测试平台验证功能。
为尽量减少模糊的人工反馈,系统将设计编译和仿真后的输出结果自动反馈给大语言模型,用于修正出现的问题;仅当错误多次未能被自动修复时,才引入人工干预。该框架在当时最先进的ChatGPT-3.5和ChatGPT-4上进行了测试,所选的8个基准设计相对简单。结果显示该方法颇具前景:在ChatGPT-4上运行的一半测试完全无需人工反馈。但同时也发现,生成的测试平台普遍存在测试覆盖率不足的问题。
在上述结构化反馈驱动设计流程取得部分成功后,研究者意识到,下一步的关键是彻底将人类从环路中移除,实现全流程自动化。由此诞生了AutoChip[8]------一个完全自动化的Verilog设计工具,结合大语言模型与开源EDA工具,可端到端生成完整设计。AutoChip的框架如图4所示。
鉴于此前测试平台质量不佳的问题,AutoChip现在要求用户提供一个高质量的测试平台作为输入,用于对设计错误提供反馈。为评估AutoChip框架的能力,研究者采用了VerilogEval基准集,其中包含适用于此类场景的提示和格式良好的测试平台。
除了对设计进行迭代优化外,AutoChip还引入了树搜索(tree-search)机制:系统收集k个候选响应,利用EDA工具和测试平台对其进行评估,对响应进行排序,并选择最优响应用于后续反馈。排序依据是设计测试平台中通过测试用例的百分比。
采用树搜索结构源于一项观察:若大语言模型在设计初期就出现严重错误,则其后续自我修正的成功率远低于初始响应更接近正确答案的情况。这些设计最多迭代至树深度d,最终输出表现最佳的响应。
AutoChip在四个当前最先进的商用大语言模型上进行了评估。结果表明,当时能力最强的模型GPT-4o是唯一一个能显著从反馈机制中获益(相较于仅生成大量候选响应)的模型。这很可能反映出大多数大语言模型在EDA工具错误信息的含义及其修复方法方面缺乏充分训练,只有最强大的模型才能有效利用反馈信息。
在AutoChip之后,类似的高度自动化技术及设计方法陆续出现。例如,文献[3]提出了CL-Verilog模型------一个针对Verilog生成微调的Code Llama模型,并配套提出了一种分层构建设计的框架:通过将小型模块作为构建块,逐层组合,从而生成更贴近实际应用场景(如密码加速器)的现实可行设计。
五、当大语言模型测试芯片:用于系统级测试程序自动化的语言模型
在过去十年中,系统级测试(System-Level Test, SLT)已成为集成电路制造流程中的关键环节。在SLT中,被测器件(Device Under Test, DUT)被置于一个模拟其真实应用场景的环境中[33]。例如,一款计划用于智能手机的片上系统(SoC)会被安装到一块类似真实智能手机的电路板上。随后,在DUT上运行现成的软件,以观察是否出现错误或崩溃;测试套件由测试工程师根据经验及现场反馈手动编写。继续以上述例子说明:我们会尝试启动Android系统,若成功,则进一步使用不同应用程序、拨打电话、播放视频等。如果最终未发生任何意外错误或崩溃,该DUT即可交付客户。在SLT中,我们通常将DUT视为黑盒,因为外部实体(例如系统集成商)也可能与其交互。
SLT的目标是通过执行额外的路径和事务,检测结构化测试未能发现的缺陷。然而,某些缺陷只有在满足特定非功能性条件(如功耗或温度)时才能被检出[32],这类缺陷被称为边际缺陷(marginal defects)。人工编写能够控制这些非功能性属性的高层代码极具挑战性,尤其是在对DUT缺乏深入了解的情况下。
在C等高层语言中自动生成此类代码非常困难。尽管已有方法能可靠地生成控制非功能性属性的汇编代码[34, 35],但可以认为,这类代码片段在真实软件中几乎不会出现;而SLT的一个核心目标正是尽可能逼近终端用户的实际使用环境。大语言模型(LLMs)从两个方面缓解了这一挑战:第一,它们简化了C代码的生成过程;第二,由于其在大量真实世界应用数据上的训练,更有可能生成高质量、贴近实际的代码。
我们提出了一种方法(见图5),旨在生成C代码,以最大化运行在FPGA上的超标量乱序RISC-V处理器(名为BOOM[36])的功耗[37]。我们利用FPGA平台测量所生成C代码的实际功耗。有关测量设置的更多细节可参见文献[34];需指出的是,该设置已进行若干改进。
初始阶段,我们提供一组手写程序作为示例。随后,从候选池中随机选取n个示例,构建提示(prompt)并输入大语言模型。模型的输出响应将通过微架构仿真器或实际功耗测量进行评估。若代码无法编译或引发非预期异常,则评分为零。根据评估结果,新生成的代码片段将被加入候选池或直接丢弃。接着,系统检查是否满足任一终止条件,例如达到预设的代码片段数量、时间上限,或用户手动中止流程。若未终止,则根据当前结果动态调整大语言模型的"温度"(temperature)参数,并重新开始下一轮迭代。
我们的方法采用了"结构化思维链"(Structural Chain of Thought, SCoT)[38]提示策略,以提升输出质量。SCoT的核心思想是:首先让大语言模型生成一段它认为能满足我们所提出要求的伪代码;随后,在第二个提示中,我们利用该伪代码要求模型生成规范的C代码,并提示伪代码中可能存在错误。此外,我们提供的示例中还包含每个代码片段的实际功耗数据,以便大语言模型更清晰地判断哪些示例更优、哪些应避免。
在本研究中,我们使用的是Code Llama模型,其参数量为340亿,并采用"Instruct"版本------该版本由一家外部公司进一步微调,额外融入了8万组问答对以及15亿个词元(tokens)。与原始现成模型相比,该微调版本性能显著更优。
我们还实现了一种温度自适应机制,以进一步引导大语言模型生成更高质量的代码片段。较低的温度使模型更专注于优化候选池中已有的示例(即"利用",exploitation),而较高的温度则鼓励其生成更多样化的代码片段(即"探索",exploration)。这一思路借鉴自模拟退火算法。温度的调整遵循一种动态调度策略,该策略同时考虑所生成片段的评分及其与候选池中其他片段的Levenshtein距离。引入Levenshtein距离是为了强制提升候选池的多样性;否则,大语言模型容易收敛到高度相似的片段,从而陷入局部最优。更多细节见文献[37]。
我们的优化循环运行了24小时,共生成2021个代码片段。本次运行中表现最佳的片段功耗为\qty{5.042}。作为对比,我们还运行了遗传编程(Genetic Programming, GP)方法39小时,找到了一个功耗达\qty{5.682}的片段。运行时间上的差异源于以下事实:在24小时后,GP仍在持续发现更优结果;而多项先前实验表明,基于大语言模型的方法在此之后极少(甚至完全不)产生显著改进。我们认为,二者之间\qty{0.640}的差距源于多种因素,包括编译器本身、传递给编译器的优化标志、大语言模型及其微调方式,以及最终使用的编程语言等。
尽管当前方法仍存在局限性,但基于大语言模型的途径展现出良好前景,尤其是考虑到GP生成的高功耗片段在现实软件中并无对应实例。尽管如此,未来工作仍需深入探究这些局限,以判断是否还有进一步提升的空间。
六、未来方向与挑战
尽管大语言模型(LLMs)在电子设计自动化(EDA)领域已取得显著进展,但该领域仍处于早期阶段。将LLMs集成到EDA流程中既面临诸多挑战,也蕴含巨大机遇。
如图6所示,我们构想了一种由LLM驱动的智能体,其目标不仅是增强、更是从根本上重塑EDA工作流。与传统AI4EDA方法忽视电路设计各阶段复杂性不同,该智能体将自然语言规范、硬件描述语言(HDL)设计以及多模态数据(如原理图、网表和物理版图)融合为统一的表示形式。这种统一表示能够更深入地理解设计意图,并实现各类EDA工具的无缝集成。通过捕捉逻辑设计与物理实现之间的相互依赖关系,该智能体可支持全流程的综合、完全自动化以及可泛化的EDA解决方案。在此,我们提出若干值得深入探索的研究方向,以推动LLMs在EDA中的进一步发展。
- 弥合语义鸿沟: 尽管电路设计各阶段采用多模态表示,其底层功能本质保持一致。从规格到硅片(specification-to-silicon)的流程要求在自然语言规范、高级语言描述(如Python/C/C++)、寄存器传输级(RTL)设计与物理实现之间精确映射功能行为。在传统工作流中,由于高层抽象与硬件实现之间长期存在的语义鸿沟,这一过程既耗时又易出错。弥合该鸿沟仍是EDA社区的一项长期挑战。借助LLM驱动的语义分析,开发先进的特征提取与对齐技术,有望有效缩小语义差距,从而实现更集成、全面且高效的硬件设计方法学。
- 迈向专家级高层次综合(HLS): 虽然HLS通过C/C++等高级语言实现了更高抽象层次的高效硬件设计,但其传统编译流程所达到的结果质量(Quality of Results, 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仿真结果进行跨层级比对。此类验证以可靠的高层执行结果为参考,有效弥补LLM生成HDL过程中可能出现的错误。
- 面向加速器生成的智能核提取: 在传统HLS工作流中,识别并提取计算密集型核心(kernels)用于加速器生成是一个依赖专家经验且耗时的过程。对于具有复杂控制流或非规则内存访问模式的设计,高性能加速器的生成尤为困难。此外,低效的CPU--加速器数据传输可能抵消硬件加速带来的性能增益。一个由LLM驱动的智能体可将核检测、功耗-性能-面积(PPA)优化与迭代精炼整合为闭环流程,在加速开发的同时提升设计质量。
- 隐私与安全: 工程师可能依赖基于云的大语言模型自动生成硬件方案,这可能导致敏感数据面临隐私泄露或知识产权盗窃风险[44, 45]。此外,恶意代码或硬件木马也可能通过云平台被植入生成的硬件设计中[46]。在本地服务器部署LLM,并结合对云模型的隐私感知交互机制[47],有助于保护敏感数据。
- EDA工具的无缝集成: 现代EDA工作流涵盖从设计规范到物理实现的全过程,需融合多种模态以完整捕捉设计意图。文本传达逻辑信息,而视觉元素揭示结构复杂性,使LLM能够解读复杂设计。然而,格式、接口和工作流的不一致性持续阻碍EDA工具的无缝集成。统一多模态表示可将高层逻辑与底层实现对齐。同时,可集成实时反馈与全面评估结果,以迭代优化生成的硬件。这样的智能体不仅将增强现有EDA工具,更将从根本上革新整个EDA范式,开启智能、全自动硬件设计的新时代。
七、 结论
将大语言模型集成到EDA流程中,为探索更广泛的自动化硬件设计流程开辟了新的可能性,具有重新定义电路设计范式的潜力。通过捕捉大规模电路的复杂特征,由LLM驱动的下一代EDA工具能够实现更精准、更创新的设计策略,从而不仅降低硬件开发成本,还能加速产品上市。尽管面临LLM幻觉、硬件设计的内在复杂性以及数据隐私问题等挑战,LLM在EDA中的应用依然代表着一种变革性的机遇,为更高效、更智能的硬件开发铺平了道路,并最终重塑EDA的未来。
致谢
本研究部分得到了爱德万测试的支持,作为斯图加特大学"测试与可靠性智能方法"研究生院(GS-IMTR)的一部分;同时也得到了德国研究基金会(DFG,Deutsche Forschungsgemeinschaft)的支持------项目编号:497488621。