OriGen:Enhancing RTL Code Generation with Code-to-Code Augmentation and Self-Reflection
<|reference_start|>OriGen:Enhancing RTL Code Generation with Code-to-Code Augmentation and Self-Reflection: Recent studies have demonstrated the significant potential of Large Language Models (LLMs) in generating Register Transfer Level (RTL) code, with notable advancements showcased by commercial models such as GPT-4 and Claude3-Opus. However, these proprietary LLMs often raise concerns regarding privacy and security. While open-source LLMs offer solutions to these concerns, they typically underperform commercial models in RTL code generation tasks, primarily due to the scarcity of high-quality open-source RTL datasets. To address this challenge, we introduce OriGen , a fully open-source framework that incorporates self-reflection capabilities and a novel dataset augmentation methodology for generating high-quality, large-scale RTL code. Our approach employs a code-tocode augmentation technique to enhance the quality of open-source RTL code datasets. Furthermore, OriGen can rectify syntactic errors through a self-reflection process that leverages compiler feedback. Experimental results demonstrate that OriGen significantly outperforms other open-source alternatives in RTL code generation. It surpasses the previous best-performing open-source LLM by 12.8% and even exceeds GPT-4 Turbo in the pass@1 metric on the VerilogEval-Human benchmark. Moreover, OriGen exhibits superior capabilities in self-reflection and error correction, outperforming GPT-4 by 19.9% on a benchmark designed to evaluate self-reflection capabilities.<|reference_end|>
@article{cui2024origen:enhancing,
    title={OriGen:Enhancing RTL Code Generation with Code-to-Code Augmentation and
  Self-Reflection},
    author={Fan Cui, Chenyang Yin, Kexing Zhou, Youwei Xiao, Guangyu Sun, Qiang
  Xu, Qipeng Guo, Demin Song, Dahua Lin, Xingcheng Zhang and Yun (Eric) Liang},
    journal={arXiv preprint arXiv:2407.16237},
    year={2024},
    archivePrefix={arXiv},
    eprint={2407.16237},
    primaryClass={cs.AR cs.AI cs.LG}
}