Skip to main content
QUICK REVIEW

[论文解读] Benchmarking Large Language Models for Automated Verilog RTL Code Generation

Shailja Thakur, Baleegh Ahmad|arXiv (Cornell University)|Dec 13, 2022
Software Testing and Debugging Techniques被引用 10
一句话总结

该论文对微调后的大型语言模型(LLMs)在自动生成Verilog RTL代码方面的表现进行了基准测试,采用的是从GitHub和Verilog教科书整理的精选数据集。微调显著提升了语法正确性(总体达到25.9%)和功能正确性,其中CodeGen-16B模型在功能正确性方面甚至优于商业模型Codex(均为6.5%),证明了针对硬件描述语言进行领域特定微调的价值。

ABSTRACT

Automating hardware design could obviate a significant amount of human error from the engineering process and lead to fewer errors. Verilog is a popular hardware description language to model and design digital systems, thus generating Verilog code is a critical first step. Emerging large language models (LLMs) are able to write high-quality code in other programming languages. In this paper, we characterize the ability of LLMs to generate useful Verilog. For this, we fine-tune pre-trained LLMs on Verilog datasets collected from GitHub and Verilog textbooks. We construct an evaluation framework comprising test-benches for functional analysis and a flow to test the syntax of Verilog code generated in response to problems of varying difficulty. Our findings show that across our problem scenarios, the fine-tuning results in LLMs more capable of producing syntactically correct code (25.9% overall). Further, when analyzing functional correctness, a fine-tuned open-source CodeGen LLM can outperform the state-of-the-art commercial Codex LLM (6.5% overall). Training/evaluation scripts and LLM checkpoints are available: https://github.com/shailja-thakur/VGen.

研究动机与目标

  • 评估大型语言模型(LLMs)从自然语言规范生成语法正确且功能正确的Verilog代码的能力。
  • 解决用于训练和评估LLMs的大型、高质量Verilog数据集缺乏的问题。
  • 设计一个综合评估框架,包含测试平台和编译检查,以衡量在不同难度问题上的功能正确性。
  • 比较微调后开源与商业LLMs在领域特定Verilog语料上的性能表现。
  • 研究模型规模和训练数据构成对代码生成质量的影响。

提出的方法

  • 通过聚合开源GitHub仓库和数字化的Verilog教科书PDF,构建了一个大规模的Verilog训练语料库,并经过严格预处理,提取出干净的代码片段。
  • 在精选的Verilog数据集上对五种预训练LLMs(参数量从345M到16B不等)进行微调,使其专用于RTL代码生成。
  • 设计了一套20个多样化的Verilog编程问题,难度逐步递增,每个问题均配有功能测试平台以验证正确性。
  • 实施多阶段评估流程:在不同温度和束搜索设置下生成代码,随后通过Verilog编译进行语法检查,并通过测试平台执行进行功能验证。
  • 使用Pass@n指标评估每条提示生成多个完成结果时的功能正确性,其中n=10为主要评估设置。
  • 开展消融研究,评估训练数据构成的影响,比较仅使用GitHub数据与使用GitHub+教科书数据训练的模型。

实验结果

研究问题

  • RQ1微调后的LLMs能否从自然语言描述中生成语法正确且可综合的Verilog代码?
  • RQ2模型规模(如345M至16B参数)如何影响生成的Verilog代码质量?
  • RQ3在领域特定的Verilog数据上进行微调,是否能提升功能正确性,相比使用预训练模型?
  • RQ4训练数据构成(如GitHub与教科书)如何影响模型的泛化能力和性能表现?
  • RQ5当在Verilog特定数据上进行充分微调时,开源LLMs能否超越商业模型Codex?

主要发现

  • 在精选的Verilog语料库上微调LLMs,使生成代码的整体语法正确性提升至25.9%,而预训练模型仅达到11.9%。
  • 微调后的CodeGen-16B模型在所有测试场景中实现了41.9%的功能正确性,优于未微调的code-davinci-002模型(35.4%的功能正确性)。
  • 表现最佳的模型(CodeGen-16B FT)在每条提示生成10个完成结果时,有6.5%的问题通过了所有测试平台,显著优于Codex在功能正确性方面的表现。
  • 在GitHub与教科书Verilog数据组合上进行微调,相比仅使用GitHub数据,Pass@10提升了1.4个百分点,表明多样化、高质量训练数据的价值。
  • 尽管性能表现强劲,但部分复杂问题(如LFSR、移位/循环移位)仍具挑战性,仅0–1/540个完成结果通过测试,表明在推理和表达式构建方面仍存在局限。
  • 提示工程和测试平台设计显著影响评估结果,模糊的问题描述(如复位类型)会导致模型输出不一致和测试失败。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。