CraftRTL: High-quality Synthetic Data Generation for Verilog Code Models with Correct-by-Construction Non-Textual Representations and Targeted Code Repair

📄 arXiv: 2409.12993v2 📥 PDF

作者: Mingjie Liu, Yun-Da Tsai, Wenfei Zhou, Haoxing Ren

分类: cs.AR, cs.CL

发布日期: 2024-09-19 (更新: 2025-02-06)


💡 一句话要点

CraftRTL:通过构造正确的非文本表示和有针对性的代码修复,为Verilog代码模型生成高质量合成数据

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

关键词: Verilog代码生成 合成数据生成 非文本表示 代码修复 大型语言模型

📋 核心要点

  1. 现有方法在Verilog代码生成中,难以有效处理卡诺图、状态转换图和波形等非文本表示。
  2. CraftRTL通过构造正确的非文本表示数据,并结合针对性代码修复数据,提升模型对Verilog代码的理解和生成能力。
  3. 实验结果表明,CraftRTL微调的Starcoder2-15B在多个Verilog代码生成基准测试中显著优于现有最佳方法。

📝 摘要(中文)

尽管大型语言模型在代码生成方面取得了显著进展,但在硬件描述语言(如Verilog)方面仍然存在挑战。本文首先分析了在Verilog编码上微调的LLM,使用了先前方法生成的合成数据。我们发现了两个主要问题:难以处理非文本表示(卡诺图、状态转换图和波形)以及模型在训练过程中随机犯“小”错误导致的大量变异性。为了解决这些限制,我们通过创建针对非文本表示的构造正确的数据来增强数据管理。此外,我们引入了一个自动化框架,该框架从各种模型检查点生成错误报告,并将这些错误注入到开源代码中,以创建有针对性的代码修复数据。我们微调的Starcoder2-15B在VerilogEval-Machine、VerilogEval-Human和RTLLM上的pass@1指标上,分别优于先前的最先进结果3.8%、10.9%和6.6%。

🔬 方法详解

问题定义:现有基于大型语言模型的Verilog代码生成方法,在处理非文本表示(如卡诺图、状态转换图和波形)时存在困难,导致模型难以准确理解和生成Verilog代码。此外,模型在训练过程中容易出现随机的“小”错误,导致训练过程不稳定,影响最终性能。

核心思路:CraftRTL的核心思路是,通过高质量的合成数据来提升模型对Verilog代码的理解和生成能力。具体而言,CraftRTL采用两种策略:一是生成“构造正确”的非文本表示数据,确保模型能够学习到正确的映射关系;二是构建针对性的代码修复数据,让模型学习如何纠正常见的Verilog代码错误。

技术框架:CraftRTL包含两个主要模块:非文本表示数据生成模块和针对性代码修复数据生成模块。非文本表示数据生成模块负责生成包含卡诺图、状态转换图和波形等非文本表示的Verilog代码数据。针对性代码修复数据生成模块首先从不同模型检查点生成错误报告,然后将这些错误注入到开源Verilog代码中,从而创建包含错误和正确代码对的数据。

关键创新:CraftRTL的关键创新在于,它提出了一种系统性的方法来生成高质量的合成数据,从而提升大型语言模型在Verilog代码生成方面的性能。与以往方法相比,CraftRTL更加注重数据的质量和多样性,通过构造正确的非文本表示数据和针对性的代码修复数据,有效解决了现有方法的局限性。

关键设计:在非文本表示数据生成方面,CraftRTL采用了一种基于规则的方法,确保生成的数据在语义上是正确的。在针对性代码修复数据生成方面,CraftRTL使用自动化框架从不同模型检查点生成错误报告,并使用这些报告来注入错误,从而确保生成的数据能够反映模型在实际应用中可能遇到的错误类型。具体的参数设置、损失函数和网络结构等细节信息在论文中未明确给出,属于未知信息。

🖼️ 关键图片

fig_0
fig_1
fig_2

📊 实验亮点

CraftRTL微调的Starcoder2-15B模型在VerilogEval-Machine、VerilogEval-Human和RTLLM三个基准测试上的pass@1指标分别达到了最佳性能,相比之前的最佳结果分别提升了3.8%、10.9%和6.6%。这些结果表明,CraftRTL能够有效提升大型语言模型在Verilog代码生成方面的性能。

🎯 应用场景

CraftRTL的研究成果可应用于自动化硬件设计、Verilog代码生成和验证等领域。通过提升Verilog代码生成模型的性能,可以降低硬件设计的成本和时间,提高硬件设计的效率和质量。此外,该方法还可以用于辅助硬件工程师进行代码审查和错误修复。

📄 摘要(原文)

Despite the significant progress made in code generation with large language models, challenges persist, especially with hardware description languages such as Verilog. This paper first presents an analysis of fine-tuned LLMs on Verilog coding, with synthetic data from prior methods. We identify two main issues: difficulties in handling non-textual representations (Karnaugh maps, state-transition diagrams and waveforms) and significant variability during training with models randomly making "minor" mistakes. To address these limitations, we enhance data curation by creating correct-by-construction data targeting non-textual representations. Additionally, we introduce an automated framework that generates error reports from various model checkpoints and injects these errors into open-source code to create targeted code repair data. Our fine-tuned Starcoder2-15B outperforms prior state-of-the-art results by 3.8%, 10.9%, 6.6% for pass@1 on VerilogEval-Machine, VerilogEval-Human, and RTLLM.