Skip to content

本工程是使用LLM生成RTL代码实验的留档

Notifications You must be signed in to change notification settings

battt77/LLM_For_RTL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

05809ee · Jan 21, 2025

History

4 Commits
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025
Jan 21, 2025

Repository files navigation

LLM_For_RTL

工程简介:

​ 本工程旨在给LLM输入合适的promt,通过调教,让LLM能够根据用户需求生成正确功能的RTL代码,包含三个目标:

  • 小目标:将简单电路的算法模型转换为 RTL 实现,通过手动构建 FFT 和 FIR 电路的算法模型,设计一套标准化流程,并通过适当的训练使大模型能够自动生成电路代码,最终运行测试脚本以验证生成的 RTL 代码与算法模型的输出结果一致性。

  • 中目标:参考“一生一芯”课程的教案及南京大学的 NEMU CPU 仿真器来设计CPU。采用迭代验证方式逐步实现各项功能和指令集,确保每条新加入的指令或功能模块在系统中能够正确集成,并在不影响已有测试的前提下保持系统的稳定性与一致性。

  • **大目标:**大语言模型生成单周期CPU顶层文件,完成CSR部分RTL代码与testbench让LLM生成CSR模块,进一步扩展CPU应用,在CPU上运行RT-thread操作系统和benchmark以及一些演示程序,探索LLM通过SPEC设计规范自动生成简单CPU

​ 基于上述三个目标,本工程以LLM模型算法调教工作为核心,使用正确功能的RTL代码作为学习对象,辅以Testbench结果作为反馈,使LLM模型最终能完成上述三个目标。

​ 本工程留档于Github:https://github.com/battt77/LLM_For_RTL

文件说明:

​ 本工程包含三个代码文件夹,每个代码文件夹都可以作为单独的工程进行使用,具体使用方法请参照文件夹内的使用文档:

  • llm_code:本工程的核心代码,包含了可以正确完成小目标、中目标、大目标的LLM运行代码
  • eval_script_code:包含了在小目标中使用的可以正确反馈FFT和FIR RTL代码运算结果正确性的脚本、FFT和FIR RTL源代码,使用MSE作为误差指标
  • rtl_source_code:包含了在中目标和大目标中使用的CPU RTL源代码

各目标方案和路线

小目标:

项目解析:

  • 构建生成FFT和FIR RTL电路的算法模型,适当的训练使大模型能够自动生成电路代码
  • 运行FFT和FIR RTL电路测试脚本验证生成的 RTL 代码与算法模型的输出结果一致性

项目步骤:

  1. 确定FFT、FIR RTL电路基准代码,基于基准电路代码编写测试基于VCD文件的电路结果评估脚本
  2. 基于确定的FFT、FIR RTL电路基准代码,训练大模型,使用评估脚本测试生成电路结果相对于软件算法结果的一致性

项目路线图:

image-20250120190659831

中目标:

项目解析:

  • 参考“一生一芯”课程的教案及南京大学的 NEMU CPU 仿真器来设计CPU
  • 采用迭代验证方式逐步实现各项功能和指令集

项目步骤:

  1. 完成单周期CPU的各模块的参考模型与Testbench,完成CPU的简单运行时环境使其能进行调试与读取程序
  2. LLM借助testbench与参考模型生成CPU的各模块,通过顶层连接并运行测试程序

项目路线图:

image-20250120190853070

大目标:

项目解析:

  • 大语言模型生成单周期CPU顶层文件,完成CSR部分RTL代码与Testbench让LLM生成CSR模块
  • 在CPU上运行RT-thread操作系统benchmark以及一些演示程序
  • 探索LLM通过SPEC设计规范自动生成简单CPU

项目步骤:

  1. 完成CSR部分的参考模型并搭建上下文切换与异常处理的运行时环境
  2. LLM模型通过与参考模型的对比生成CSR模块与CPU的顶层文件
  3. 设计规范SPEC让LLM自动生成CPU

项目路线图:

image-20250120191141736

About

本工程是使用LLM生成RTL代码实验的留档

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published