Rome was Not Built in a Single Step: Hierarchical Prompting for LLM-based Chip Design
作者: Andre Nakkab, Sai Qian Zhang, Ramesh Karri, Siddharth Garg
分类: cs.AR, cs.AI
发布日期: 2024-07-23 (更新: 2024-09-09)
备注: Accepted at MLCAD '24. 10 pages, 7 figures, 5 tables
🔗 代码/项目: GITHUB
💡 一句话要点
提出层级提示方法,提升LLM在复杂芯片设计中HDL代码生成能力
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 层级提示 大型语言模型 硬件描述语言 芯片设计 HDL生成
📋 核心要点
- 现有LLM在复杂硬件设计的HDL生成中面临挑战,难以处理大规模和高复杂度的任务。
- 论文提出层级提示技术,将复杂设计分解为多个步骤,利用LLM逐步完成,提升设计效率。
- 实验表明,层级提示方法使小型开源LLM能够生成复杂硬件模块,媲美大型专有模型,并降低成本。
📝 摘要(中文)
大型语言模型(LLMs)在通过硬件描述语言(HDL)生成进行计算机硬件综合方面表现出色。然而,LLM辅助的HDL生成方法在处理复杂任务时面临挑战。本文提出了一套层级提示技术,以促进高效的逐步设计方法,并为该过程开发了一个通用的自动化流程。为了评估这些技术,我们提供了一组具有或不具有架构层级的硬件设计基准。使用这些基准,我们比较了各种开源和专有LLM,包括我们自己微调的Code Llama-Verilog模型。我们的层级方法能够自动生成标准扁平提示方法无法实现的复杂硬件模块的成功设计,从而使较小的开源LLM能够与大型专有模型竞争。层级提示减少了HDL生成时间并节省了LLM成本。我们的实验详细说明了哪些LLM能够胜任哪些应用,以及如何在各种模式下应用层级方法。我们探索了使用自动脚本化的层级提示生成复杂内核的案例研究,包括有史以来第一个无需人工反馈的LLM设计的处理器。用于通过机器编辑进行递归优化(ROME)方法的工具可在https://github.com/ajn313/ROME-LLM找到。
🔬 方法详解
问题定义:现有基于LLM的HDL代码生成方法在处理复杂芯片设计时,由于设计规模大、复杂度高,容易出现生成失败或代码质量不高的问题。传统的“扁平提示”方法难以有效指导LLM完成复杂任务,导致生成时间长、成本高,且对LLM的性能要求较高。
核心思路:论文的核心思路是将复杂的硬件设计任务分解为一系列更小、更易于管理的子任务,并利用层级提示技术引导LLM逐步完成这些子任务。通过自顶向下或自底向上的方式,将整体设计分解为模块,再将模块分解为更小的单元,最终生成完整的HDL代码。这种分而治之的策略降低了单个LLM推理步骤的难度,提高了生成成功率和代码质量。
技术框架:该方法包含一个通用的自动化流程,用于管理层级提示和代码生成过程。首先,根据设计规范将复杂硬件设计分解为多个层级的模块。然后,针对每个模块,使用特定的提示语引导LLM生成相应的HDL代码。这些提示语可以包含模块的功能描述、输入输出接口、时序约束等信息。最后,将生成的代码进行集成和验证,形成完整的硬件设计。该流程支持多种LLM,包括开源和专有模型。
关键创新:该方法最重要的创新点在于引入了层级提示的概念,将复杂设计分解为多个层级,并针对每个层级设计特定的提示语。这种方法能够有效地引导LLM完成复杂任务,降低了对LLM性能的要求,使得小型开源LLM也能胜任复杂硬件设计。此外,该方法还提供了一个通用的自动化流程,方便用户进行层级提示和代码生成。
关键设计:层级划分的粒度是一个关键设计参数,需要根据具体的设计任务进行调整。提示语的设计也至关重要,需要包含足够的信息,以便LLM能够理解设计意图并生成正确的代码。论文还探索了不同的层级提示模式,包括自顶向下和自底向上,并分析了它们在不同场景下的优缺点。此外,论文还对LLM进行了微调,以提高其在HDL代码生成方面的性能。
🖼️ 关键图片
📊 实验亮点
实验结果表明,层级提示方法能够显著提高LLM在复杂硬件设计中的HDL代码生成能力。使用层级提示方法,小型开源LLM(如Code Llama-Verilog)能够生成标准扁平提示方法无法实现的复杂硬件模块,并且能够与大型专有模型(如GPT-4)竞争。此外,层级提示方法还能够减少HDL生成时间并节省LLM成本。论文还展示了使用该方法自动生成复杂内核的案例研究,包括第一个无需人工反馈的LLM设计的处理器。
🎯 应用场景
该研究成果可应用于各种数字电路和芯片设计领域,例如处理器、存储器、通信接口等。通过自动化HDL代码生成,可以显著缩短设计周期,降低设计成本,并提高设计质量。该方法还有助于推动开源硬件的发展,使得更多的人能够参与到芯片设计中来。
📄 摘要(原文)
Large Language Models (LLMs) are effective in computer hardware synthesis via hardware description language (HDL) generation. However, LLM-assisted approaches for HDL generation struggle when handling complex tasks. We introduce a suite of hierarchical prompting techniques which facilitate efficient stepwise design methods, and develop a generalizable automation pipeline for the process. To evaluate these techniques, we present a benchmark set of hardware designs which have solutions with or without architectural hierarchy. Using these benchmarks, we compare various open-source and proprietary LLMs, including our own fine-tuned Code Llama-Verilog model. Our hierarchical methods automatically produce successful designs for complex hardware modules that standard flat prompting methods cannot achieve, allowing smaller open-source LLMs to compete with large proprietary models. Hierarchical prompting reduces HDL generation time and yields savings on LLM costs. Our experiments detail which LLMs are capable of which applications, and how to apply hierarchical methods in various modes. We explore case studies of generating complex cores using automatic scripted hierarchical prompts, including the first-ever LLM-designed processor with no human feedback. Tools for the Recurrent Optimization via Machine Editing (ROME) method can be found at https://github.com/ajn313/ROME-LLM