简单聊聊大模型在最近IC设计过程中的几个使用场景
1. 使用AI生成标准模块脚本
使用大模型产生能够生成CRC代码的脚本crc_gen.py,脚本能够支持多种多项式,支持输入位宽可变,输出CRC结果为固定位宽。期望crc_gen.py生成的CRC代码如下图。

1.1 使用心得
调用的大模型是deepseek-v4-pro,模型分析过程大致是靠谱的,但是产生的脚本不靠谱,产生的CRC代码存在错误,需要反复调试,存在风险。
2. 使用AI读取接口信号表格产生block IO和结构体
在进行方案设计时,我们常常会将模块接口信号以及相关的定义说明填写到表格中,当完成方案评审(包含信号评审对齐)后就可以直接写代码了,此时采用大模块读取表格直接提取表格内存,产出模块接口代码和接口相关结构体定义会特别方便。

大模块生成的接口信号和结构体定义如下:
Thrift // ============================================================== // AA-BB 接口结构体与参数定义 // 生成时间:2025-12-20 // 适用场景:PCIe 主机请求接口,AA为发起端,BB为接收端 // ==============================================================
// -------------------------- // 位宽参数宏定义 // 可根据项目实际需求修改配置 // -------------------------- `ifndef PCIE_HOSTID_WDTH `define PCIE_HOSTID_WDTH3 // PCIe HostID 位宽,默认3bit `endif
`ifndef PCIE_FUNCID_WDTH `define PCIE_FUNCID_WDTH14 // PCIe FuncID 位宽,默认14bit `endif
`ifndef PCIE_ADDR_WDTH `define PCIE_ADDR_WDTH 64 // PCIe 地址位宽,默认64bit `endif
// -------------------------- // 请求信息打包结构体 // 对应表格中的 aa2bb_req_info 复合信号 // -------------------------- typedef struct packed { logic [`PCIE_HOSTID_WDTH-1:0]hostid; // 请求对应的HostID logic [`PCIE_FUNCID_WDTH-1:0]funcid; // 请求对应的FuncID logic [`PCIE_ADDR_WDTH-1:0] addr; // 请求目标地址 } aa2bb_req_info_s; |
模块AA接口信号
Java // ============================================================== // 模块AA:PCIe 请求发起端 // 功能:向模块BB发送主机请求,输出请求有效信号与请求信息 // 生成时间:2025-12-20 // ==============================================================
`include "aa_bb_interface.svh"
module module_aa ( // 全局时钟与复位 inputwire clk, inputwire rst_n,
// AA→BB 接口信号 output reg aa2bb_req_vld, output aa2bb_req_info_s aa2bb_req_info
// 可在此处添加模块AA的其他业务接口 );
endmodule |
模块BB接口信号
C++ // ============================================================== // 模块BB:PCIe 请求接收端 // 功能:接收模块AA发送的主机请求,解析请求信息并执行对应操作 // 生成时间:2025-12-20 // ==============================================================
`include "aa_bb_interface.svh"
module module_bb ( // 全局时钟与复位 inputwire clk, inputwire rst_n,
// AA→BB 接口信号 inputwire aa2bb_req_vld, inputaa2bb_req_info_s aa2bb_req_info
// 可在此处添加模块BB的其他业务接口 );
endmodule |
结构体定义
Thrift // ============================================================== // AA-BB 接口结构体与参数定义 // 生成时间:2025-12-20 // 适用场景:PCIe 主机请求接口,AA为发起端,BB为接收端 // ==============================================================
// -------------------------- // 位宽参数宏定义 // 可根据项目实际需求修改配置 // -------------------------- `ifndef PCIE_HOSTID_WDTH `define PCIE_HOSTID_WDTH3 // PCIe HostID 位宽,默认3bit `endif
`ifndef PCIE_FUNCID_WDTH `define PCIE_FUNCID_WDTH14 // PCIe FuncID 位宽,默认14bit `endif
`ifndef PCIE_ADDR_WDTH `define PCIE_ADDR_WDTH 64 // PCIe 地址位宽,默认64bit `endif
// -------------------------- // 请求信息打包结构体 // 对应表格中的 aa2bb_req_info 复合信号 // -------------------------- typedef struct packed { logic [`PCIE_HOSTID_WDTH-1:0]hostid; // 请求对应的HostID logic [`PCIE_FUNCID_WDTH-1:0]funcid; // 请求对应的FuncID logic [`PCIE_ADDR_WDTH-1:0] addr; // 请求目标地址 } aa2bb_req_info_s; |
2.1 使用心得
几乎任意一个主流国产大模型都能100%完成,只要信号命名遵守项目规则,极少会出现错误。
3. 使用AI读取文档整理出细节点
可以使用大模型读取完整的PCIe协议,并且从协议中找到问题答案,并且让大模型给出参考原文用于人工校对。
案例提问:读取当前目录文档NCB-PCI_Express_Base_6.3.pdf,给出结论PF的bme信号是否控制VF的dma读写 ?

AI解答:如下

3.1 使用心得
部分大模型会胡编乱造,在我使用过程中,豆包和千问的部分版本都出现过此问题。协议原文没有的语句也会胡诌。目前我在Claude code经常调用deepseek-v4-pro,整体是挺靠谱的。最关键的一点:一定要根据协议原文校对答案。
扫码报名参会,现场签到有礼 + 抽奖福利,席位有限,先到先得!