VeriCoder: Enhancing LLM-Based RTL Code Generation through Functional Correctness Validation

📄 arXiv: 2504.15659v2 📥 PDF

作者: Anjiang Wei, Huanmi Tan, Tarun Suresh, Daniel Mendoza, Thiago S. F. X. Teixeira, Ke Wang, Caroline Trippel, Alex Aiken

分类: cs.AR, cs.AI, cs.CL, cs.LG, cs.SE

发布日期: 2025-04-22 (更新: 2025-08-24)

🔗 代码/项目: GITHUB


💡 一句话要点

VERICODER:通过功能正确性验证增强基于LLM的RTL代码生成

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: RTL代码生成 大型语言模型 功能正确性验证 单元测试生成 反馈式细化

📋 核心要点

  1. 现有RTL代码生成数据集侧重于句法有效性,缺乏功能正确性验证,导致生成的代码可能无法实现预期功能。
  2. VERICODER通过结合单元测试生成和反馈式细化,构建了一个功能正确性验证的RTL代码生成数据集。
  3. VERICODER在VerilogEval和RTLLM上实现了最先进的功能正确性指标,相对增益分别高达71.7%和27.4%。

📝 摘要(中文)

大型语言模型(LLM)的最新进展激发了将其应用于电子设计自动化(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 公开获取。

🔬 方法详解

问题定义:论文旨在解决基于LLM的RTL代码生成中功能正确性不足的问题。现有方法主要关注代码的语法正确性,而忽略了生成的RTL代码是否真正实现了自然语言描述的功能。这导致训练数据集中存在大量语法正确但功能错误的样本,从而影响了模型的性能。

核心思路:论文的核心思路是构建一个功能正确性验证的RTL代码生成数据集,并在此基础上对LLM进行微调。通过确保训练数据集中每个样本的功能正确性,可以显著提高模型生成功能正确的RTL代码的能力。

技术框架:VERICODER的技术框架主要包括以下几个阶段:1) 使用自然语言描述和初始RTL设计,提示教师模型(GPT-4o-mini)生成单元测试;2) 使用生成的单元测试对RTL设计进行仿真;3) 根据仿真结果,教师模型迭代地修改RTL设计,直到所有测试都通过;4) 如果需要,教师模型还会更新测试,以确保它们符合自然语言规范。最终,数据集中的每个样本都包含自然语言描述、RTL实现和通过的测试。

关键创新:论文的关键创新在于提出了一种新颖的反馈式细化方法,用于构建功能正确性验证的RTL代码生成数据集。该方法通过迭代地生成单元测试、仿真RTL设计和修改RTL设计,确保数据集中的每个样本都经过功能验证。

关键设计:论文的关键设计包括:1) 使用GPT-4o-mini作为教师模型,负责生成单元测试和修改RTL设计;2) 迭代细化的过程,确保RTL设计和单元测试都符合自然语言规范;3) 构建包含125,777个功能验证样本的大规模数据集。

🖼️ 关键图片

fig_0

📊 实验亮点

VERICODER在VerilogEval和RTLLM数据集上进行了评估,结果表明,在功能正确性方面,VERICODER优于现有方法,相对增益分别高达71.7%和27.4%。消融研究进一步验证了功能正确性验证数据集的重要性,表明在此类数据集上训练的模型性能显著优于在未经功能验证的数据集上训练的模型。

🎯 应用场景

该研究成果可应用于自动化RTL代码生成,加速硬件设计流程,降低设计成本。通过提高RTL代码生成的功能正确性,可以减少验证工作量,缩短产品上市时间。此外,该方法还可以推广到其他代码生成任务,例如软件代码生成。

📄 摘要(原文)

Recent advances in Large Language Models (LLMs) have sparked growing interest in applying them to Electronic Design Automation (EDA) tasks, particularly Register Transfer Level (RTL) code generation. While several RTL datasets have been introduced, most focus on syntactic validity rather than functional validation with tests, leading to training examples that compile but may not implement the intended behavior. We present VERICODER, a model for RTL code generation fine-tuned on a dataset validated for functional correctness. This fine-tuning dataset is constructed using a novel methodology that combines unit test generation with feedback-directed refinement. Given a natural language specification and an initial RTL design, we prompt a teacher model (GPT-4o-mini) to generate unit tests and iteratively revise the RTL design based on its simulation results using the generated tests. If necessary, the teacher model also updates the tests to ensure they comply with the natural language specification. As a result of this process, every example in our dataset is functionally validated, consisting of a natural language description, an RTL implementation, and passing tests. Fine-tuned on this dataset of 125,777 examples, VERICODER achieves state-of-the-art metrics in functional correctness on VerilogEval and RTLLM, with relative gains of up to 71.7% and 27.4%, respectively. An ablation study further shows that models trained on our functionally validated dataset outperform those trained on functionally non-validated datasets, underscoring the importance of high-quality datasets in RTL code generation. Our code, data, and models are publicly available at https://github.com/Anjiang-Wei/VeriCoder