VeriCoder:通过功能正确性验证增强基于大语言模型的RTL代码生成

摘要

        大语言模型(LLMs)的最新进展引发了人们将其应用于电子设计自动化(EDA)任务,特别是寄存器传输级(RTL)代码生成的日益浓厚的兴趣。虽然已经引入了多个RTL数据集,但大多数侧重于语法有效性而非基于测试的功能验证,导致训练示例虽然可以编译,但可能无法实现预期行为。我们提出了VeriCoder,这是一个在经功能正确性验证的数据集上进行微调的RTL代码生成模型。该微调数据集是使用一种新颖方法构建的,该方法将单元测试生成与基于反馈的优化相结合。给定一个自然语言规范和初始的RTL设计,我们提示一个教师模型(GPT-4o-mini)生成单元测试,并根据使用生成测试进行仿真得到的结果迭代地修改RTL设计。如果需要,教师模型还会更新测试,以确保其符合自然语言规范。通过这一过程,我们数据集中的每个示例都经过了功能验证,包含自然语言描述、RTL实现和通过的测试。VeriCoder在此包含125,777个示例的数据集上进行了微调,在VerilogEval和RTLLM基准测试的功能正确性指标上达到了最先进的水平,相对增益分别高达71.7%和27.4%。一项消融研究进一步表明,在我们经过功能验证的数据集上训练的模型,其表现优于在未经功能验证的数据集上训练的模型,突显了高质量数据集在RTL代码生成中的重要性。我们的代码、数据和模型已在 https://github.com/Anjiang-Wei/VeriCoder 公开。

关键词: RTL,代码生成,大语言模型。

I. 引言

        大语言模型(LLMs)在自然语言处理任务中展现出了卓越的性能,激发了人们将其能力广泛应用于各种电子设计自动化(EDA)问题的日益浓厚的兴趣 [1, 2, 3, 4]。近期的探索包括利用LLMs进行代码生成 [5, 6, 7, 8, 9, 10, 11, 12]、架构设计 [13, 14, 15]、验证 [16, 17]、工具辅助 [18, 19] 以及调试 [1, 20]。在本工作中,我们专注于从自然语言规范生成寄存器传输级(RTL)代码。自动化RTL代码生成有潜力显著提高硬件设计生产力,减少复杂设计任务中的人工投入,使其成为一个及时且具有影响力的研究领域。

        开发用于RTL代码生成的开源轻量级模型对于推动研究和部署至关重要。GPT-4o和Claude 3.7等专有模型限制了定制性且缺乏透明度,使其不适合深入分析和学术探索。它们还引发了隐私和安全问题,尤其是在处理可能包含敏感知识产权的RTL设计时。相比之下,可以在本地运行的轻量级模型提供了一种安全且保护隐私的替代方案,使硬件工程师能够将AI直接集成到其设计流程中。然而,现有的开源模型在RTL任务上表现仍然不佳,这主要归因于其训练语料库中缺乏高质量、经过功能验证的RTL数据集 [21, 22]。虽然训练算法已较为成熟,但进展受到缺乏具备功能正确性验证的开源数据集的制约。

        构建此类数据集的一个关键挑战在于创建大规模、高质量的训练数据,这些数据需将自然语言规范与RTL实现配对。尽管已有从开源存储库挖掘RTL代码的努力 [23, 24, 25, 26],但收集到的大部分数据缺乏验证,并且可能不符合其预期功能。为解决此问题,近期的工作转向利用LLMs——或是提示它们从基于关键字的规范合成RTL设计 [6, 7],或是利用它们重写现有的RTL代码并生成匹配的规范 [8, 24, 26]。在这两种情况下,通常使用语法检查器来过滤不可编译的代码或提供迭代优化的反馈,但这些技术仍然无法验证功能正确性。

        据我们所知,所有这些先前的工作 [6, 7, 8, 24, 26] 都只专注于确保语法正确性,而忽略了功能正确性。结果,许多数据集示例可以成功编译,但可能没有实现其自然语言规范中描述的行为。语法正确性与功能正确性之间的区别对模型评估和实际部署具有重要意义。虽然功能正确的代码本质上满足语法约束,但仅语法正确并不能保证功能正确。这种差距在RTLLM基准测试 [10] 报告的结果中很明显,GPT-4o获得了100.0%的高语法准确率,但在功能正确性方面仅达到69.0%。最终,在实际应用中,真正重要的是功能正确性,而非语法有效性。

        在本工作中,我们引入了VeriCoder,这是一个在高质量数据集上进行微调的RTL代码生成模型,该数据集包含125,777个经过功能正确性验证的示例¹。为构建此数据集,我们开发了一种新颖的流程,该流程将单元测试生成与由教师LLM(GPT-4o-mini)指导的基于反馈的优化相结合。给定一个自然语言规范和初始的RTL实现,教师模型首先生成一个单元测试。如果RTL代码仿真失败,模型会根据观察到的错误信息迭代地修改设计。当需要时,也会更新单元测试以更好地反映规范描述的预期功能。此过程将持续进行,直到设计通过仿真或达到重试次数限制。最终的微调数据集包含125,777个经过验证的三元组:一个自然语言规范、一个正确的RTL设计和一个自检查单元测试。

        ¹ 虽然功能正确性不能完全保证,但我们手动审查了100个随机抽样的示例,发现92%的生成RTL代码正确地匹配了相应的自然语言描述。

        我们使用我们整理的数据集对Qwen2.5-14B-Instruct进行微调得到VeriCoder,并在两个已建立的RTL代码生成基准测试:VerilogEval [9] 和RTLLM [10] 上对其进行了评估。VeriCoder取得了新的最优性能,在pass@k指标上相对于先前最好的微调模型OriGen [8] 实现了高达71.7%和27.4%的相对增益。

        我们进行了一项消融研究,证明在相同的基础模型和训练设置下,在我们经过功能验证的数据集上训练的模型优于在未经验证的数据上训练的模型。这些结果突显了高质量、经过功能验证的数据集对于RTL代码生成的重要性。

我们的贡献如下:

  • 我们引入了VeriCoder,这是一个在经功能正确性验证的数据集上进行微调的RTL代码生成模型。在VerilogEval和RTLLM基准测试上,VeriCoder在开源微调模型中达到了最优性能,相对于先前最佳模型的pass@k相对增益分别高达71.7%和27.4%。

  • 我们开发了一个数据集增强流程,该流程将单元测试生成与由教师LLM指导的基于反馈的优化相结合。据我们所知,这产生了迄今为止最大的具有功能验证的微调数据集,包含125,777个经过验证的自然语言规范、RTL设计和通过的测试所组成的三元组。

  • 我们进行了一项消融研究,表明在数据集构建过程中进行功能验证可以提高模型性能,强调了使用高质量的功能验证数据集对于RTL代码生成的重要性。

Figure 1: LLM-guided dataset augmentation overview.

 

II. 背景与相关工作

II-A 语言建模与微调

        大语言模型(LLMs)是经过训练以执行语言建模任务的深度神经网络,该任务旨在让模型学会预测序列中的下一个标记。形式化地说,给定一个标记序列 x = (x₁, x₂, …, x_T),训练目标是最大化对数似然:

ℒ_LM = ∑{t=1}^{T} log P(x_t | x{<t}; θ),   (1)

        其中,θ 表示模型参数,x_{<t} = (x₁, …, x_{t-1}) 表示上下文标记。这种自回归目标使得模型能够生成连贯的文本,并捕捉跨领域的长期依赖关系。

LLMs的训练通常分为两个阶段:

  • 预训练:模型在大量多样化的语料库(如网络数据、书籍、源代码)上进行训练,以获取广泛的知识和语言理解能力。此阶段成本高昂,每个模型通常只进行一次。

  • 后训练:使用规模较小、经过筛选的数据集,将预训练模型适配到特定任务上。此阶段包括监督微调(SFT),即模型在特定任务的输入-输出配对数据上进行训练。

        由于从头开始对大模型进行后训练资源消耗巨大,研究人员开发了参数高效的微调方法。其中一种广泛应用的方法是低秩适应(LoRA)[28]。LoRA并非更新每个线性层中的完整权重矩阵 W ∈ ℝ^{d×k},而是冻结原始权重,并引入一个可训练的低秩更新:

W' = W + ΔW = W + AB,   (2)

        其中 A ∈ ℝ^{d×r}, B ∈ ℝ^{r×k},且 r ≪ min(d, k)。在训练期间,仅更新 A 和 B,而 W 保持不变。该技术减少了适配过程中的内存和计算开销,使得在计算资源有限的情况下,将大型LLMs专门用于特定领域应用(例如RTL生成)成为可能。

II-B RTL代码生成相关工作

        开源RTL代码生成的进展受限于缺乏大规模、高质量的数据集。为缓解此问题,近期的研究工作聚焦于自动化的数据挖掘与增强技术,以丰富现有的RTL示例语料库。表一对比了构建微调数据集的不同策略。

挖掘开源RTL设计 是构建数据集的常用策略。VeriGen [26] 使用自动化语法检查,将从GitHub和教科书中搜集的Verilog模块编译为结构化语料库。BetterV [24] 从互联网收集Verilog模块,然后根据编码风格和语法有效性对设计进行筛选。CraftRTL [29] 则利用非文本代码表示来增强微调数据,将源自中间模型检查点的合成错误注入到开源Verilog代码中。其他工作 [8, 30, 31] 也采用了类似的方法来获取和预处理RTL代码。

另一类工作 则利用商用LLM进行合成数据生成。RTLCoder [6] 提示GPT-3.5使用领域关键词来生成任务描述和对应的RTL代码,并丢弃任何无法编译的输出。OriGen [8] 更进一步,在两阶段的代码到代码流程中使用了Claude 3.5:首先将挖掘的RTL代码转换为自然语言规范,然后在编译器指导下根据这些规范重新生成代码,结合了真实世界示例和合成生成的优点。ChipGPT [27] 则将Verilog的抽象语法树(AST)转换为自然语言规范。

        尽管表一所列的大部分现有工作都确保了语法有效性,但它们均未提供功能正确性的证据。由于在数据集构建过程中缺乏全面的单元测试或基于仿真的反馈,在这些语料库上微调的模型可能会生成能编译但仍无法满足预期自然语言规范的代码。

        近期的一项工作 OpenLLM-RTL [32] 探索了利用LLM生成断言的想法,构建了一个包含7k个示例的功能验证数据集。虽然我们的工作与OpenLLM-RTL共享通过改进微调数据集中的功能正确性这一目标,但我们采用了一种不同的方法,即通过生成单元测试进行验证。我们的最终数据集包含超过125,777个示例,是迄今为止规模最大的功能验证RTL数据集。

        除了数据收集与合成技术,还有一些研究工作探索了其他方法来提升RTL代码生成的质量。ScaleRTL [33] 强调通过生成中间追踪和利用迭代自我反思进行测试时计算来实现推理。DeepRTL [34] 采用了由多级自然语言摘要指导的课程学习。VeriSeek [35] 应用了强化学习,其反馈来源于LLM输出与参考设计之间在AST级别的相似性。AutoVCoder [36] 结合了检索增强生成(RAG),为模型动态提供相关的Verilog代码片段。CodeV [37] 则将生成能力扩展到如"中间填充"(FIM)等任务。我们的工作采用标准的监督微调,同时聚焦于构建大规模、功能验证的数据集。我们的方法与现有技术是互补且正交的。

III 方法论

III-A 概述

        我们的目标是提升微调数据集的质量,这些数据集由自然语言规范与语法正确的Verilog设计配对组成,正如先前工作 [6, 7, 8, 24, 26] 中所见。这些数据集,包括Origen [8],包含的Verilog设计能通过语法检查,但未经过单元测试验证以确保功能正确性。为克服这一局限,我们引入了一个自动化数据集增强流程,该流程利用一个教师语言模型(例如 GPT-4o-mini),通过迭代优化来验证每个示例。如图1所示,给定一个自然语言规范和初始的RTL设计,教师模型首先生成一个单元测试。如果RTL设计仿真失败,模型会根据错误信息迭代地修改设计。在需要时,它也会更新单元测试以更好地对齐自然语言规范。尽管我们的实验由于规模和质量的考量,主要聚焦于增强Origen数据集,但所提出的方法广泛适用于任何缺乏测试验证的数据集。

        该流程始于原始数据集 D = {(规范, 设计)},其中每个RTL设计旨在实现相应的自然语言规范。然而,由于未提供测试,没有证据表明这些设计表现出预期的功能行为。对于每一对数据,我们提示教师模型GPT-4o-mini为该设计生成一个单元测试。该测试与设计一起被编译和仿真以检查正确性,此处正确性意味着设计通过了仿真测试。

        如果仿真失败,我们提取产生的错误信息,并使用一个优化提示重新调用教师模型。此提示包含规范、当前设计和测试以及错误信息。模型尝试通过最小限度地修改设计、测试或两者来解决失败。此优化过程迭代重复:每个候选版本都重新仿真,循环持续直到设计通过测试或达到最大尝试次数。

        最终输出是一个验证过的数据集 D′ = {(规范, 设计, 测试)},其中每个三元组包含一个自然语言规范、一个Verilog设计和单元测试。一个具体的激励性示例将在第III-B节展示,算法和提示的细节将在第III-C节提供。

III-B 激励性示例

        图2展示了一个直接取自Origen数据集 [8] 的激励性示例,突显了仅依赖语法检查进行验证的数据集的一个关键局限。RTL生成领域先前的工作通常假设语法正确性足以用于微调,而无需通过单元测试验证功能。此示例表明,一个设计可以无错误地编译,但未能实现预期行为。它还说明了我们的方法如何通过测试生成和迭代优化来自动检测并纠正此类问题。

        该示例包括一个自然语言规范(图2(a))、来自原始数据集的有缺陷的RTL设计(图2(b)),以及我们的流程生成的一个已修正设计(图2(c))。该规范描述了一个简单的组合逻辑模块 and3,该模块计算三个单比特输入 ab 和 c 的按位与。

        原始设计虽然在语法上有效,但由于几个语义问题导致功能错误。首先,它在组合逻辑的 always @* 块中误用了非阻塞赋值 (<=),这可能导致反直觉的综合结果。其次,即使是在时序块中使用,设计中的非阻塞赋值序列——y <= a,然后 y <= y & c,最后 y <= y & b——也不能正确地计算 ab 和 c 的按位与并将结果存入 y。具体而言,非阻塞赋值将更新推迟到当前时间步结束时进行,这意味着所有赋值都基于 y 的同一个初始值操作,只有最后的赋值生效。最后,如果将这些非阻塞赋值替换为阻塞赋值,代码将引入一个组合逻辑反馈环路,导致无法稳定。

        这类错误之所以出现,是因为先前数据集(包括Origen [8])中的RTL代码是由教师LLM(如Claude 3.5)合成生成的,并且仅经过语法检查过滤。由于没有仿真或基于测试的验证,影响功能正确性的语义缺陷未被发现。

        我们将自然语言规范和带有缺陷的RTL设计提供给教师模型GPT-4o-mini,提示其使用图4(a)所示的模板(细节见第III-C节)生成一个单元测试。生成的测试如图3所示,该测试将三个输入均设置为1并检查输出y是否如预期地评估为1。当有缺陷的设计(图2(b))与此测试一同进行仿真时,仿真挂起并最终超时。此缺陷是组合逻辑环路的典型例子。always @* 块用于组合逻辑,当其内部读取的任何变量发生变化时触发评估。在本例中,当yab 或 c 任一发生变化时都会触发该块的评估。然而,y 在同一块中既被读取(在RHS上)又被写入(在LHS上)。块被评估时,它会调度一次对y的更新,这导致y变化。这个变化再次触发了块的评估,导致又一次对y的调度更新,如此循环往复。这个环路无限持续,阻止了仿真收敛。

        修正版本将非阻塞赋值替换为单个阻塞赋值 (=),确保y立即更新为 a & b & c 的结果,符合规范要求。此版本通过了教师模型生成的测试,在仿真中表现正确。

        此示例强调了RTL数据集中功能验证的重要性。仅靠语法检查无法捕捉微妙但关键的语义错误。我们的方法通过教师驱动的测试生成和迭代优化,确保了增强数据集中的每个设计不仅是语法有效的,而且通过了单元测试的功能验证。

III-C 算法与提示

        算法1展示了我们将未经验证的RTL数据集转化为功能验证数据集的自动化流程。从一个数据集 D = {(s_i, d_i)} (i=1..N) 开始,其中每个示例包含一个自然语言规范 s_i 和一个对应的RTL设计 d_i(例如来自Origen [8]),目标是生成一个单元测试 t_i 来验证设计的功能正确性。如果设计未能通过测试,则调用一个迭代优化循环,更新设计和测试,直至其通过或达到最大尝试次数 T。我们在实验中设置 T=5。

        该过程由教师模型GPT-4o-mini驱动,该模型对应于算法1中的 LLMInvoke 调用。虽然更强大的模型(如GPT-4o或o3-mini)可能带来更好的性能,但鉴于数据集规模庞大(Origen中有217,462个示例)以及重复调用OpenAI模型API的高成本,我们在实践中使用了GPT-4o-mini。

        该过程首先使用测试生成模板(图4(a))以及自然语言规范和其初始RTL设计(例如图2(a)和图2(b))来提示教师模型。然后,模型产生一个候选单元测试(例如图3),该测试旨在检查设计在仿真下是否满足预期功能。

        使用标准的Verilog工具对设计和测试进行编译和仿真。如果测试失败(例如由于超时、输出错误或其他运行时错误),我们构建一个优化提示(图4(b)),该提示包含规范、失败的设计和测试以及仿真错误信息(对应于算法1中的 err 变量)。然后将此提示传递给教师模型,模型尝试通过修改设计、测试或两者来修复问题。

        优化过程重复进行,直到更新后的设计通过仿真或达到最大尝试次数 T。一旦设计成功通过测试,已验证的三元组 (s_i, d_i, t_i) 就被添加到输出数据集 D′ 中。

        此策略能够系统性地检测和纠正仅靠语法检查无法识别的微妙RTL缺陷。通过将基于LLM的测试生成和迭代优化集成到数据集构建流程中,我们产生的数据集不仅是语法有效的,而且通过仿真进行了功能验证。

        尽管无法保证在所有可能输入下的功能正确性,但单元测试的包含使得我们的增强数据集比仅依赖语法检查的先前方法实质上更加鲁棒。我们认为这是朝着为RTL生成构建更高质量微调数据集迈出的实用且可扩展的一步。为评估质量,我们手动审查了100个随机抽样的示例,发现92%的生成RTL代码正确地匹配了相应的自然语言描述。

IV 实验设置

IV-A 数据集

        遵循第III章描述的方法,我们构建了一个包含125,777个示例的微调数据集。每个示例包括一个自然语言规范、一个对应的RTL设计以及相关的单元测试。表II总结了关键统计数据:规范平均包含247个单词(范围116-549),RTL实现平均有35行代码(范围5-225),单元测试平均55行(范围6-197)。我们使用此数据集中规范-解决方案配对来训练我们的模型VeriCoder。

TABLE II: Dataset statistics: total number of examples and length distributions for natural language specifications, RTL implementations, and unit tests in the VeriCoder dataset.

IV-B LoRA微调设置

        遵循LLM微调的标准实践,我们使用低秩适应(LoRA,如第II-A节所述)对Qwen2.5-14B-Instruct的基础模型进行微调,对Transformer中的所有线性投影层应用秩为16、缩放因子为32的配置。训练进行3个周期,批次大小为40。我们采用恒定的学习率1×10⁻⁵,配合线性衰减调度器和0.05的热身比例。优化器使用权重衰减1×10⁻⁴,并应用梯度裁剪,最大范数为1。

TABLE III: RTL code generation performance across models. To ensure a fair comparison, we use the same input prompts and apply identical post-processing scripts, running inference with model weights released by prior work.

IV-C 基准测试与评估指标

        遵循先前工作 [7, 8] 建立的评估协议,我们在VerilogEval [9] 和RTLLM [10] 上进行基准测试。对于VerilogEval,我们报告标准的Pass@k指标(k∈{1,5,10}),该指标估计在前k个生成的程序中至少有一个通过所有测试用例的期望概率。其定义如下:

Pass@k = 𝔼[1 - (n-c 选 k)/(n 选 k)]

        其中n是生成程序的总数,c是正确的程序数。所有测试用例均由设计基准测试的专家手工创建。在所有评估中,我们设置n=10。对于RTLLM,我们使用Pass@5报告语法正确性和功能正确性。此评估设置与先前工作 [8] 所用的一致。

IV-D 用于评估的模型

        我们评估两组模型。第一组是仅经过预训练的基础模型,包括OpenAI的最新发布(o4-mini、o3-mini、GPT-4o、GPT-4o-mini)、谷歌的Gemini 2.0 Flash、深度求索的R1和DeepSeek-Coder-7B-v1.5(先前工作[8]使用的基础模型)、Meta的LLaMA2-7B模型以及阿里巴巴的Qwen2.5-14B-Instruct(我们微调的基础模型)。第二组包括先前工作中发布权重的微调模型:OriGen [8]、RTLCoder [6] 和 ChipGPT [27]。

        为确保公平比较,我们在所有模型中使用相同的输入提示词和后处理脚本。对于先前工作发布的模型,我们不采用它们特定于模型的提示词[8]或推理流程[27, 6]。相反,我们应用一个统一的评估脚本,唯一变量是被测试的模型。这种标准化至关重要,因为输入格式和后处理都会显著影响性能。通过控制这些因素,我们隔离了模型能力,实现了公平比较。

V 结果

V-A 主要评估结果

表III展示了结果。我们的主要发现如下:
与先前工作的比较
        VeriCoder在两个RTL代码生成基准测试中取得了最优结果,优于所有先前发布的开源微调模型。在VerilogEval-Machine上,VeriCoder达到55.7%的pass@1准确率,相比先前最佳模型OriGen提升了19.8个百分点。在VerilogEval-Human上,达到38.3%,超过OriGen 16.0个百分点。在所有评估的k-shot设置(k=1,5,10)下,VeriCoder在Human部分始终保持领先。在RTLLM基准测试上,VeriCoder取得79.3%的语法正确率和48.3%的功能正确率,分别超过了OriGen的51.7%和37.9%。总之,VeriCoder在pass@k准确率上实现了相对于先前最优模型高达71.7%(VerilogEval)和27.4%(RTLLM)的相对改进。

        为了更好地理解ChipGPT [27] 相对较低的性能,我们详细检查了其输出。我们发现其生成的RTL设计经常包含偏离给定规范的模块头,显示出遵循精确指令的困难。此外,其基础模型LLaMA2-7B表现更差,表明底层预训练模型在指令遵循能力上的局限限制了微调变体的有效性。为公平起见,我们不应用任何试图修复语法或头文件问题的、模型特定的自定义后处理脚本。相反,我们对所有模型使用标准化的评估脚本,按原样提取Verilog代码以确保一致性。
我们微调的有效性
        以Qwen2.5-14B-Instruct作为基础模型,VeriCoder在VerilogEval上带来了显著的增益。在VerilogEval-Machine部分,pass@1提升了7.6%,pass@5提升了4.0%,pass@10提升了2.1%,VerilogEval-Human部分也反映了相同的趋势。在RTLLM上,功能pass@5比其基础模型高7%。具体而言,VeriCoder在Eval-Machine的pass@5和pass@10指标以及RTLLM上,甚至略微超过了其中一个商业模型谷歌的Gemini-2.0-flash。这些结果共同表明,我们的微调过程和验证数据集显著提升了RTL生成中的pass@k指标和语义正确性。
模型差距依然存在
        尽管观察到了改进,但VeriCoder与最强大的大模型之间仍存在显著的性能差距。例如,o3-mini在VerilogEval Pass@1上达到66.4%,而VeriCoder为55.7%。深度求索R1在人工评分的Pass@5上达到69.1%,而VeriCoder为49.2%。GPT-4o等商业LLM达到完美的100.0%语法(VCS)有效性和69.0%的功能正确性,而VeriCoder分别为79.3%和48.3%。尽管存在性能差距,开源轻量级模型提供了引人注目的优势。它们提供透明度,允许本地部署,并确保知识产权保护——这些能力对于安全、可定制性以及集成到现有工具链至关重要的RTL设计工作流尤为重要。

V-B 数据集消融研究

TABLE IV: We performed fine-tuning on the same base model using a functionally validated dataset and the functionally unvalidated dataset [8]. We report Pass@5 metrics for all models on two benchmarks.

        为评估数据集质量对RTL代码生成的影响,我们使用相同的基础模型Qwen2.5-14B-Instruct,在两个数据集上进行消融研究:(1)来自先前工作 [8] 的未经验证的OriGen数据集,以及(2)我们新整理、经过功能验证的数据集。所有因素,包括数据集大小、微调超参数、训练程序和评估设置,都保持恒定以确保公平比较。

        在所有指标上,我们都观察到随着数据集质量提高,性能有持续的改进。在VerilogEval基准测试(包含Machine和Human子集)上,基础模型达到46.8%的Pass@5。在未经验证数据集上微调将性能提升至53.5%,而我们的验证数据集进一步将其提升至55.8%。对于RTLLM语法正确性,趋势相似:基础模型为69.0%,未经验证版本为75.9%,在验证数据上训练后达到79.3%。功能正确性提升更为显著,从41.4%(基础)升至44.8%(未经验证),最终达到48.3%(验证)。

        这些结果表明,功能验证数据比现有的未经验证数据提供了更有效的监督。这也突显了数据集质量对于为RTL代码生成微调LLMs的重要性。

V-C 未验证数据集的测试通过率

        我们通过评估先前工作发布的微调数据集相对于我们由教师模型GPT-4o-mini生成的合成单元测试的通过率,来检查其质量。对于每个语料库,我们随机采样1,000个Verilog实现,并应用第III章描述的测试生成和优化流程。然后,我们针对原始设计运行相应的单元测试,并测量成功通过生成测试的原始设计比例。如表V所示,RTLCoder数据集 [6] 中只有24.4%的示例通过了我们的功能测试,而OriGen [8] 达到53.5%。

        OriGen更高的通过率与其在表III中更强的代码生成结果相符,暗示了数据集有效性与下游性能之间的正相关。这些发现突显了将功能正确性验证纳入微调数据集整理对于改进RTL代码生成的潜在价值。

TABLE V: Test passing rates (%) of datasets released by prior work on a randomly sampled set of 1000 examples.

VI 讨论与未来工作

        虽然VeriCoder结合了单元测试生成与反馈驱动的优化,改进了生成RTL代码的功能正确性,但它并不能完全保证正确性。合成测试用例可能无法捕捉所有可能的边界情况。为应对这一挑战,未来工作应探索将形式化验证技术集成到数据集构建流程中,以严格确保生成代码的正确性。近期进展已展示了将自然语言指令转换为形式化规范 [38, 16] 以及在基于LLM的代码生成过程中强制执行形式化约束 [39] 方面的有前景成果。

        此外,包括VeriCoder在内的大多数现有方法都聚焦于小规模RTL生成。然而,实际的硬件开发通常涉及大型、仓库级的代码库,具有复杂的跨文件依赖关系和对长上下文的考量 [40, 41, 42]。近期工作已开始通过将微调与检索增强的RTL代码生成相结合 [43, 44] 等技术来应对这些挑战。将VeriCoder的单元测试生成和反馈驱动的优化组件扩展到仓库规模,将使LLMs能够处理更多现实世界的RTL任务。

        再者,强化学习(RL)提供了一个强大的框架,可以超越仅通过监督微调所能实现的性能,进一步优化大语言模型。近期研究通过结合测试用例结果、编译器诊断和形式化验证结果 [45, 46, 32] 等多种形式的反馈,展示了RL在增强基于LLM的代码生成方面的有效性。基于此进展,未来工作可以研究将RL技术应用于VeriCoder数据集,利用伴随的测试用例作为反馈信号,迭代地提高RTL代码生成质量。

VII 结论

        大语言模型(LLMs)的最新进展为电子设计自动化(EDA)开启了新的可能性,特别是在RTL代码生成方面。然而,大多数现有数据集强调语法有效性而忽略功能正确性,这限制了微调模型的效果。我们引入了VeriCoder,这是一个在包含125,000个示例、经过功能正确性验证的数据集上微调的模型。该数据集使用由教师LLM指导的反馈驱动优化流程构建,该流程生成并迭代更新RTL设计和单元测试,直到设计通过仿真。最终的数据集由经过功能验证的三元组组成,包含自然语言规范、RTL实现和通过的测试。在此数据集上微调后,VeriCoder在两个已建立的RTL基准测试上取得了最优结果,在VerilogEval和RTLLM上分别实现了高达71.7%和27.4%的相对改进。消融研究证实了功能验证对模型性能的影响,突显了高质量训练数据的重要性。未来工作可探索形式化验证和强化学习,以进一步推动AI辅助硬件设计的发展。

致谢

        我们感谢Samantha Archer, Yao Hsiao, Mohammad Rahmani Fadiheh 和 Subhasish Mitra 的讨论。本工作部分得到了谷歌研究奖的支持。

References

    [1]

M. Liu, T.-D. Ene, R. Kirby, C. Cheng, N. Pinckney, R. Liang, J. Alben, H. Anand, S. Banerjee, I. Bayraktaroglu et al., “Chipnemo: Domain-adapted llms for chip design,” arXiv preprint arXiv:2311.00176, 2023.
[2]
L. Chen, Y. Chen, Z. Chu, W. Fang, T.-Y. Ho, R. Huang, Y. Huang, S. Khan, M. Li, X. Li et al., “The dawn of ai-native eda: Opportunities and challenges of large circuit models,” arXiv preprint arXiv:2403.07257, 2024.
[3]
R. Zhong, X. Du, S. Kai, Z. Tang, S. Xu, H.-L. Zhen, J. Hao, Q. Xu, M. Yuan, and J. Yan, “Llm4eda: Emerging progress in large language models for electronic design automation,” arXiv preprint arXiv:2401.12224, 2023.
[4]
Z. He and B. Yu, “Large language models for eda: Future or mirage?” in Proceedings of the 2024 International Symposium on Physical Design, 2024, pp. 65–66.
[5]
X. Yao, Y. Wang, X. Li, Y. Lian, R. Chen, L. Chen, M. Yuan, H. Xu, and B. Yu, “Rtlrewriter: Methodologies for large models aided rtl code optimization,” in Proceedings of the 43rd IEEE/ACM International Conference on Computer-Aided Design, 2024, pp. 1–7.
[6]
S. Liu, W. Fang, Y. Lu, J. Wang, Q. Zhang, H. Zhang, and Z. Xie, “Rtlcoder: Fully open-source and efficient llm-assisted rtl code generation technique,” IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2024.
[7]
S. Liu, W. Fang, Y. Lu, Q. Zhang, H. Zhang, and Z. Xie, “Rtlcoder: Outperforming gpt-3.5 in design rtl generation with our open-source dataset and lightweight solution,” in 2024 IEEE LLM Aided Design Workshop (LAD). IEEE, 2024, pp. 1–5.
[8]
F. Cui, C. Yin, K. Zhou, Y. Xiao, G. Sun, Q. Xu, Q. Guo, D. Song, D. Lin, X. Zhang et al., “Origen: Enhancing rtl code generation with code-to-code augmentation and self-reflection,” arXiv preprint arXiv:2407.16237, 2024.
[9]
M. Liu, N. Pinckney, B. Khailany, and H. Ren, “Verilogeval: Evaluating large language models for verilog code generation,” in 2023 IEEE/ACM International Conference on Computer Aided Design (ICCAD). IEEE, 2023, pp. 1–8.
[10]
Y. Lu, S. Liu, Q. Zhang, and Z. Xie, “Rtllm: An open-source benchmark for design rtl generation with large language model,” in 2024 29th Asia and South Pacific Design Automation Conference (ASP-DAC). IEEE, 2024, pp. 722–727.
[11]
Y. Tsai, M. Liu, and H. Ren, “Rtlfixer: Automatically fixing rtl syntax errors with large language model,” in Proceedings of the 61st ACM/IEEE Design Automation Conference, 2024, pp. 1–6.
[12]
Y. Liao, T. Adegbija, and R. Lysecky, “Are llms any good for high-level synthesis?” in Proceedings of the 43rd IEEE/ACM International Conference on Computer-Aided Design, 2024, pp. 1–8.
[13]
Y. Fu, Y. Zhang, Z. Yu, S. Li, Z. Ye, C. Li, C. Wan, and Y. C. Lin, “Gpt4aigchip: Towards next-generation ai accelerator design automation via large language models,” in 2023 IEEE/ACM International Conference on Computer Aided Design (ICCAD). IEEE, 2023, pp. 1–9.
[14]
Z. Yan, Y. Qin, X. S. Hu, and Y. Shi, “On the viability of using llms for sw/hw co-design: An example in designing cim dnn accelerators,” in 2023 IEEE 36th International System-on-Chip Conference (SOCC). IEEE, 2023, pp. 1–6.
[15]
Z. Liang, J. Cheng, R. Yang, H. Ren, Z. Song, D. Wu, X. Qian, T. Li, and Y. Shi, “Unleashing the potential of llms for quantum computing: A study in quantum architecture design,” arXiv preprint arXiv:2307.08191, 2023.
[16]
M. Cosler, C. Hahn, D. Mendoza, F. Schmitt, and C. Trippel, “nl2spec: Interactively translating unstructured natural language to temporal logics with large language models,” in International Conference on Computer Aided Verification. Springer, 2023, pp. 383–396.
[17]
C. Sun, C. Hahn, and C. Trippel, “Towards improving verification productivity with circuit-aware translation of natural language to systemverilog assertions,” in First International Workshop on Deep Learning-aided Verification, 2023.
[18]
H. Wu, Z. He, X. Zhang, X. Yao, S. Zheng, H. Zheng, and B. Yu, “Chateda: A large language model powered autonomous agent for eda,” IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2024.
[19]
Z. Xiao, X. He, H. Wu, B. Yu, and Y. Guo, “Eda-copilot: A rag-powered intelligent assistant for eda tools,” ACM Transactions on Design Automation of Electronic Systems, 2025.
[20]
K. Xu, J. Sun, Y. Hu, X. Fang, W. Shan, X. Wang, and Z. Jiang, “Meic: Re-thinking rtl debug automation using llms,” in Proceedings of the 43rd IEEE/ACM International Conference on Computer-Aided Design, 2024, pp. 1–9.
[21]
R. Li, L. B. Allal, Y. Zi, N. Muennighoff, D. Kocetkov, C. Mou, M. Marone, C. Akiki, J. Li, J. Chim et al., “Starcoder: may the source be with you!” arXiv preprint arXiv:2305.06161, 2023.
[22]
A. Lozhkov, R. Li, L. B. Allal, F. Cassano, J. Lamy-Poirier, N. Tazi, A. Tang, D. Pykhtar, J. Liu, Y. Wei et al., “Starcoder 2 and the stack v2: The next generation,” arXiv preprint arXiv:2402.19173, 2024.
[23]
E. Dehaerne, B. Dey, S. Halder, and S. De Gendt, “A deep learning framework for verilog autocompletion towards design and verification automation,” arXiv preprint arXiv:2304.13840, 2023.
[24]
Z. Pei, H.-L. Zhen, M. Yuan, Y. Huang, and B. Yu, “Betterv: Controlled verilog generation with discriminative guidance,” arXiv preprint arXiv:2402.03375, 2024.
[25]
S. Thakur, B. Ahmad, Z. Fan, H. Pearce, B. Tan, R. Karri, B. Dolan-Gavitt, and S. Garg, “Benchmarking large language models for automated verilog rtl code generation,” in 2023 Design, Automation & Test in Europe Conference & Exhibition (DATE). IEEE, 2023, pp. 1–6.
[26]
S. Thakur, B. Ahmad, H. Pearce, B. Tan, B. Dolan-Gavitt, R. Karri, and S. Garg, “Verigen: A large language model for verilog code generation,” ACM Transactions on Design Automation of Electronic Systems, vol. 29, no. 3, pp. 1–31, 2024.
[27]
K. Chang, K. Wang, N. Yang, Y. Wang, D. Jin, W. Zhu, Z. Chen, C. Li, H. Yan, Y. Zhou et al., “Data is all you need: Finetuning llms for chip design via an automated design-data augmentation framework,” in Proceedings of the 61st ACM/IEEE Design Automation Conference, 2024, pp. 1–6.
[28]
E. J. Hu, Y. Shen, P. Wallis, Z. Allen-Zhu, Y. Li, S. Wang, L. Wang, W. Chen et al., “Lora: Low-rank adaptation of large language models.” ICLR, vol. 1, no. 2, p. 3, 2022.
[29]
M. Liu, Y.-D. Tsai, W. Zhou, and H. Ren, “Craftrtl: High-quality synthetic data generation for verilog code models with correct-by-construction non-textual representations and targeted code repair,” ArXiv, vol. abs/2409.12993, 2024. [Online]. Available: https://api.semanticscholar.org/CorpusID:272770433
[30]
Y. Zhang, Z. Yu, Y. Fu, C. Wan, and Y. C. Lin, “Mg-verilog: Multi-grained dataset towards enhanced llm-assisted verilog generation,” in 2024 IEEE LLM Aided Design Workshop (LAD). IEEE, 2024, pp. 1–5.
[31]
E. Goh, M. Xiang, I. Wey, T. H. Teo et al., “From english to asic: Hardware implementation with large language model,” arXiv preprint arXiv:2403.07039, 2024.
[32]
S. Liu, Y. Lu, W. Fang, M. Li, and Z. Xie, “Openllm-rtl: Open dataset and benchmark for llm-aided design rtl generation,” in Proceedings of the 43rd IEEE/ACM International Conference on Computer-Aided Design, 2024, pp. 1–9.
[33]
C. Deng, Y.-D. Tsai, G.-T. Liu, Z. Yu, and H. Ren, “Scalertl: Scaling llms with reasoning data and test-time compute for accurate rtl code generation,” ArXiv, vol. abs/2506.05566, 2025. [Online]. Available: https://api.semanticscholar.org/CorpusID:279243692
[34]
Y. Liu, C. Xu, Y. Zhou, Z. Li, and Q. Xu, “Deeprtl: Bridging verilog understanding and generation with a unified representation model,” ArXiv, vol. abs/2502.15832, 2025. [Online]. Available: https://api.semanticscholar.org/CorpusID:276574886
[35]
N. Wang, B. Yao, J. Zhou, X. Wang, Z. Jiang, and N. Guan, “Large language model for verilog generation with golden code feedback,” ArXiv, vol. abs/2407.18271, 2024. [Online]. Available: https://api.semanticscholar.org/CorpusID:271516462
[36]
M. Gao, J. Zhao, Z. Lin, W. Ding, X. Hou, Y. Feng, C. Li, and M. Guo, “Autovcoder: A systematic framework for automated verilog code generation using llms,” 2024 IEEE 42nd International Conference on Computer Design (ICCD), pp. 162–169, 2024. [Online]. Available: https://api.semanticscholar.org/CorpusID:271516210
[37]
Y. Zhao, D. Huang, C. Li, P. Jin, Z. Nan, T. Ma, L. Qi, Y. Pan, Z. Zhang, R. Zhang, X. Zhang, Z. Du, Q. Guo, X. Hu, and Y. Chen, “Codev: Empowering llms with hdl generation through multi-level summarization,” 2024. [Online]. Available: https://api.semanticscholar.org/CorpusID:271212791
[38]
D. Mendoza, C. Hahn, and C. Trippel, “Translating natural language to temporal logics with large language models and model checkers,” in 2024 Formal Methods in Computer-Aided Design (FMCAD), 2024, pp. 1–11.
[39]
P. Aggarwal, B. Parno, and S. Welleck, “Alphaverus: Bootstrapping formally verified code generation through self-improving translation and treefinement,” arXiv preprint arXiv:2412.06176, 2024.
[40]
C. E. Jimenez, J. Yang, A. Wettig, S. Yao, K. Pei, O. Press, and K. Narasimhan, “Swe-bench: Can language models resolve real-world github issues?” arXiv preprint arXiv:2310.06770, 2023.
[41]
T. Suresh, R. G. Reddy, Y. Xu, Z. Nussbaum, A. Mulyar, B. Duderstadt, and H. Ji, “Cornstack: High-quality contrastive data for better code retrieval and reranking,” in The Thirteenth International Conference on Learning Representations, 2025.
[42]
N. Jain, M. Shetty, T. Zhang, K. Han, K. Sen, and I. Stoica, “R2e: Turning any github repository into a programming agent environment,” in ICML, 2024.
[43]
P. Wu, N. Guo, J. Lv, X. Xiao, and X. Ye, “Rtlrepocoder: Repository-level rtl code completion through the combination of fine-tuning and retrieval augmentation,” arXiv preprint arXiv:2504.08862, 2025.
[44]
Z. Li, C. Xu, Z. Shi, Z. Peng, Y. Liu, Y. Zhou, L. Zhou, C. Ma, J. Zhong, X. Wang et al., “Deepcircuitx: A comprehensive repository-level dataset for rtl code understanding, generation, and ppa analysis,” arXiv preprint arXiv:2502.18297, 2025.
[45]
N. Wang, B. Yao, J. Zhou, X. Wang, Z. Jiang, and N. Guan, “Large language model for verilog generation with golden code feedback,” arXiv preprint arXiv:2407.18271, 2024.
[46]
J. Wang, Z. Zhang, Y. He, Y. Song, T. Shi, Y. Li, H. Xu, K. Wu, G. Qian, Q. Chen et al., “Enhancing code llms with reinforcement learning in code generation,” arXiv preprint arXiv:2412.20367, 2024. 
https://arxiv.org/html/2504.15659v2

 

 

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐