利用 ChatGPT-4o 自动化 RTL 设计流程

简介

这个 idea 是我在痛苦的 debugging 的过程中突发奇想,能不能直接利用 ChatGPT-4o 模型自动生成对应功能的 RTL 文件,自动编译生成 wave 文件。于是,我通过测试一个简单的 full adder 电路设计,发现这个流程是完全可以跑通的,因此记录如下。

操作步骤

第一步

ChatGPT-4o 对话框输入以下内容: You should be a Linux terminal, the version is CentOS Linux 7, and Icarus Verilog is installed. I'll type the command and you'll reply with what the terminal should display. I want you to only echo terminal output within a unique block of code, and nothing else. Don't write explanations. Do not type commands unless I instruct you to do. When I need to tell you something in English, I put the text in side curly braces {like this}. My first command is pwd.

返回内容一般为:

第二步

ChatGPT-4o 对话框输入以下内容: mkdir verification; cd verification

第三步

ChatGPT-4o 对话框输入以下内容,确认已经安装 Icarus Verilog: iverilog --version

返回内容一般为:

第四步

ChatGPT-4o 对话框输入以下内容,生成所描述的"adder.v"文件: {In the cuurent folder, create a file named "adder.v". The content of this file is to implement a full adder in verilog HDL language. This full adder has three inputs and two outputs. The three inputs are two data inputs with a bit width of 4 bits, and a carry input from the lower bit. The two outputs are the data result with a bit width of 4 bits and a carry result.}

返回内容一般为,这步可能具体代码不同,但实现功能应一致:

ini 复制代码
module full_adder(
    input [3:0] A,
    input [3:0] B,
    input Cin,
    output [3:0] Sum,
    output Cout
);

    wire [4:0] temp_result;

    // Perform addition including the carry input
    assign temp_result = A + B + Cin;

    // Assign the sum and carry outputs
    assign Sum = temp_result[3:0];
    assign Cout = temp_result[4];

endmodule

第五步

ChatGPT-4o 对话框输入以下内容,生成所描述的"top_adder.v"文件: {In the current folder, create a file called "top_addr.v". The content of this file is to use the verilog HDL language to implement a top layer to verify the full adder just generated above. In this testbench, it is necessary to instantiate the design of the full adder. The testbench needs to contain the statement to generate the vcd wave file.}

返回内容为:

ini 复制代码
`timescale 1ns/1ps

module top_addr;

    reg [3:0] A;
    reg [3:0] B;
    reg Cin;
    wire [3:0] Sum;
    wire Cout;

    // Instantiate the full_adder module
    full_adder uut (
        .A(A),
        .B(B),
        .Cin(Cin),
        .Sum(Sum),
        .Cout(Cout)
    );

    initial begin
        $dumpfile("waveform.vcd"); // Generate VCD file
        $dumpvars(0, top_addr);

        // Test cases
        A = 4'b0001; B = 4'b0010; Cin = 1'b0; #10;
        A = 4'b0101; B = 4'b0110; Cin = 1'b1; #10;
        A = 4'b1111; B = 4'b0001; Cin = 1'b0; #10;
        A = 4'b1001; B = 4'b1001; Cin = 1'b1; #10;

        $finish;
    end

endmodule

第六步

ChatGPT-4o 对话框输入以下内容,生成所描述的"Makefile"文件: {Under the current folder, create a file named "Makefile", where the commands include compile. The compile command will use iverilog to compile the "adder.v" file and the "top_adder.v" file you wrote, and generate a wave file named "wave".}

返回内容为:

makefile 复制代码
compile:
	iverilog -o wave adder.v top_addr.v

第七步

ChatGPT-4o 对话框输入以下内容:make compile

返回内容为:

第八步

ChatGPT-4o 对话框输入以下内容:vvp -n wave -lxt2

返回内容为:

第九步

ChatGPT-4o 对话框输入以下内容:{download waveform.vcd for me}

由于 ChatGPT 是对话形式的界面,目前还没测试直接生成波形图,所以把波形文件下载了下来。

返回内容为:

最后在自己的系统里,利用 GtkWave 成功生成了波形图,yeah !!

注意

第一,安装的软件不能是 VCS,Verdi 这类闭源软件,所以我选择了 Icarus Verilog;第二,我这里没让 ChatGPT 写太复杂的 verilog HDL 代码,可能相对复杂的代码需要 debug 一下,这也可以交给 ChatGPT 做(我猜的),后面真正的全自动流程化 RTL 设计还要再打磨一下,但至少这次把流程跑通了,yeah !!!

相关推荐
2401_841495647 小时前
【语音识别】混合高斯模型
人工智能·python·算法·机器学习·语音识别·gmm·混合高斯模型
乌恩大侠7 小时前
英伟达开源了其 Aerial 软件,以加速 AI 原生 6G 的发展。
人工智能·开源
杭州杭州杭州8 小时前
深度学习(1)---基础概念扫盲
人工智能·深度学习
金智维科技官方8 小时前
破解流程内耗,金智维流程自动化平台如何激活企业效率?
人工智能·ai·自动化·数字化
私域实战笔记8 小时前
SCRM平台对比推荐:以企业微信私域运营需求为核心的参考
大数据·人工智能·企业微信·scrm·企业微信scrm
格林威8 小时前
AOI在FPC制造领域的检测应用
人工智能·数码相机·计算机视觉·目标跟踪·视觉检测·制造
utmhikari8 小时前
【GitHub探索】代码开发AI辅助工具trae-agent
人工智能·ai·大模型·llm·github·agent·trae
IT_陈寒9 小时前
Python数据处理速度慢?5行代码让你的Pandas提速300% 🚀
前端·人工智能·后端
NewCarRen9 小时前
基于健康指标的自动驾驶全系统运行时安全分析方法
人工智能·安全·自动驾驶·预期功能安全
初心丨哈士奇9 小时前
前端Vibe Coding探索:Cursor+MCP打造沉浸式开发流(使用MCP与Cursor Rules让Vibe Coding更快速与精准)
前端·人工智能