一、常规算法模块的开发流程

日常芯片开发工作中,挺多看工作是把C语言转verilog。例如ISP的代码,都很先由算法进行C model的开发,验证完性能后,输出算法原理文档和c代码;数字设计接手,把C语言转换为verilog代码。

这其中C代码,不同于通常的C仿真,通常是考虑数据在运算过程中的位宽——这就需要在C代码的处理过程中,注意有效位宽的控制。

添加图片注释,不超过 140 字(可选)

二、转变思路,思考能如何能用AI加速RTL的开发

关于算法代码转verilog,我见过的最早的商业尝试是MATLAB。因为在MATLAB里面验证算法,是很常见的方式;进而,它也推出了m语言或者simulink转verilog(主要用于FPGA)的方式。但是生成的代码面积或者效率还是乏善可陈。但是,还是一个很大的尝试。后来,MATLAB还支持生成UVM验证环境。

但是开发ASIC,通常对于PPA是有比较苛刻的要求的。通常都是要有经验丰富的数字设计人员来完成C model(或者其他语言)转verilog的工作。但是,团队人员的经验和数量,也限制了RTL的开发效率。

如果使用AI,最佳的方式应该是本地部署,自己调优。但是这个见效慢,对于小公司或者个人来说,除了硬件成本高,学习成为、维护成本都比较高。

对于还是AI菜鸟的我,就想先用网页版的AI大模型看看能不能实现我的思路,等有一定的可行性,再考虑上本地部署。

之前用AI,都还是习惯于命令式的,例如:帮我做XX;帮我把XX转换为YY。

这种情况得到的结果,通常AI理解的肯定不如一个经验丰富的数字设计好;而且公司产品一些常用的设计方法,AI也无从知晓。

然后,就想到,是不是让AI教我,如何深度定制C转verilog的行为,让它更懂我。下面是基于这个思路,和多个AI提问后,结果的融合。

三、如何深度定制AI的行为

书回正题,怎么利用现有的大模型(非本地部署,等有条件了,再尝试本地部署)。

其实,我也不知道怎么能让AI帮我把C转换为verilog,那我先问问它们。

输入提示词:

我是一名芯片开发工程师,我能让你帮我把C语言代码翻译为verilog吗? 我之前已经有比较多的c转verilog的代码,如何能让你按照我的工作习惯进行转换?

得到的回答:

1、提供样本,用于让AI学习规则和开发习惯。

2、提供额外的规则文档,深度定制verilog的编写方式。

关于样本

准备阶段,需要喂给AI的代码对(c-verilog)的样本:

这些文档是用来描述转换规则的。建议准备3到5对转换结果。

这些样本中,AI可以学习到命名规范(例如C的函数名与verilog的module名的转换关系);接口映射规则‘状态机编码风格;for循环的展开规则。因此,这些样本,最好也有这些信息。

代码对的示例(C),含for循环:

// C示例 (sum_array.c) 
int sum(int arr[4]) { int s = 0; for(int i=0; i<4; i++) s += arr[i]; return s; 
}
代码对的示例(verilog):
// 对应Verilog(按你的风格)
module sum_array (input clk,input [31:0] arr [0:3],output reg [31:0] sum_out
);
always @(posedge clk) beginsum_out <= arr[0] + arr[1] + arr[2] + arr[3];  // 循环展开
end
endmodule

关于规则文档

除了样本,还可以提交结构化的规则文档——描述你的一些习惯,深度定制:

例如:

- 接口命名:输入加`_i`后缀,输出加`_o`

- 状态机:用三段式FSM,状态名全大写(如`IDLE`, `CALC`)

- 位宽声明:显式写出`[MSB:0]`而非`[MSB-1:0]`

- 时序逻辑:非阻塞赋值统一用`<=`

- 组合逻辑:用`assign`或`always@(*)`,避免`wire/reg`混用

四、进一步的优化

  • 局部优化或者修改:可以针对不满意的地方,提出改进要求。之前对AI生成的python代码进行过局部的微调,还比较可控——例如,要求某个函数的返回值类型、函数的调用方式从循环改为递归等等。

  • 增量转换:例如仅修改变化的代码段

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92455.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92455.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92455.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis分布式锁详解:原理、实现与实战案例

目录 1. 什么是分布式锁&#xff1f; 分布式锁的核心要求 2. 基于Redis的分布式锁实现方案 &#xff08;1&#xff09;基础方案&#xff1a;SETNX EXPIRE &#xff08;2&#xff09;优化方案&#xff1a;SET NX PX&#xff08;原子性加锁&#xff09; &#xff08;3&…

【能碳建设1】用AI+开源打造物联网+能碳管理+交易SaaS系统的最短路径实施指南

摘要 本指南为技术小白设计,目标是在最短时间内利用AI工具与开源系统,独立完成一套物联网平台 + 能碳管理平台 + 碳交易系统的SaaS最小可用版本(MVP),并可后续扩展。流程分为目标定义、技术选型、环境搭建、核心功能开发、SaaS化、多租户、上线运维等环节,按天推进,每步…

CVPR中深度学习新范式:通用性、鲁棒性与多模态的创新突破

来gongzhonghao【图灵学术计算机论文辅导】&#xff0c;快速拿捏更多计算机SCI/CCF发文资讯&#xff5e;分享一个深度学习领域正在迅速升温的前沿方向&#xff1a;通用性与鲁棒性的深度神经网络架构创新。随着大模型在视觉、文本乃至多模态任务中的广泛应用&#xff0c;体现出深…

Vue3 学习教程,从入门到精通,Vue 3 + Tailwind CSS 全面知识点与案例详解(31)

Vue 3 Tailwind CSS 全面知识点与案例详解一、Vue 3 核心语法知识点 1. Vue 3 基础 创建 Vue 3 项目 使用 Vite 创建项目&#xff1a;npm create vuelatest # 选择需要的特性&#xff08;如 TypeScript、Vue Router&#xff09;响应式数据 使用 ref 和 reactive&#xff1a;im…

Android中RecyclerView基本使用

一、RecyclerView 核心概念1. 基本组件关系2. 核心组件作用Adapter&#xff1a;数据与视图的桥梁LayoutManager&#xff1a;控制布局方式&#xff08;线性/网格/瀑布流&#xff09;ViewHolder&#xff1a;缓存视图组件ItemDecoration&#xff1a;添加分割线等装饰ItemAnimator&…

A100用transformers推理gpt-oss

A100本地用transformers推理gpt-oss GPT-oss试用 gpt-oss有两个原生配置是目前&#xff08;2025-8-8&#xff09;Ampere系列显卡不支持的&#xff0c;分别是默认的MXFP4量化&#xff0c;以及Flash-attn V3。tranformers推理是比较慢的&#xff0c;可以用于研究模型本身&#x…

虚拟手机号工具使用

背景&#xff1a;注册部分国外应用时需要国外手机号验证&#xff0c;例如在注册cursor时需要国外手机号 解决&#xff1a;使用虚拟手机号网页进行验证 https://temp-number.com/ 选择自己需要的国家 选择一个手机号 复制手机号到自己的app注册页面 并发送消息&#xff0c;然后…

【线程池】压测确定线程池合适的参数

【线程池】压测确定线程池合适的参数【一】案例说明【二】明确线程池核心参数及优化目标【1】线程池核心参数&#xff08;需压测验证的关键参数&#xff09;【2】优化目标【三】压测前准备【1】环境搭建【2】线程池初始配置&#xff08;基于经验值&#xff09;【3】压测工具与监…

GPT OSS 双模型上线,百度百舸全面支持快速部署

GPT OSS 是 OpenAI 推出的重量级开放模型&#xff0c;专为强推理能力、智能体任务及多样化开发场景设计&#xff0c;标志着大模型在开放性与实用性上的重要突破。该系列包含两款高性能模型&#xff1a;参数规模为 117B 的 GPT‑OSS‑120B 和 21B 的 GPT‑OSS‑20B。二者皆采用 …

C++高频知识点(十七)

文章目录81. 你对智能指针的了解82. 一元、二元仿函数的区别和使用背景一元仿函数二元仿函数83. 描述Linux下文件删除的原理84. 什么是菱形继承&#xff1f;有什么问题&#xff0c;怎么解决&#xff1f;解决菱形继承问题85. IO多路复用是什么&#xff1f;selectpollepollselect…

如何优雅的使用进行参数校验

在spring里面有一个注解 Validated可以在方法的入参里面这样写//方法 getActivityFlag(RequestBody Validated QueryActivityDto queryActivityDto) //参数详情NotBlank(message "userId不能为空")private String userId;NotNull(message "storeId不能为空&q…

Java学习第一百一十部分——CI/CD

目录 一、前言简介 二、基本信息 三、优势价值 四、核心流程 五、技术栈&#xff08;工具矩阵&#xff09; 六、最佳实践 七、与DevOps关系 八、挑战对策 九、使用建议 十、总结归纳 一、前言简介 CI/CD 的本质是&#xff1a;通过自动化流水线&#xff0c;实现代码从提…

关于 Cocoapods 使用

一、Podfile & .podspec 文件 1、Podfile 1.1. 什么是 pod 简单来说&#xff0c;一个 pod 就是 xcode 里面的一个 dependency&#xff1a; Anyway&#xff0c;pod 就是第三方库的意思。一个 pod 就是指一个第三方库。 1.2. Podfile 有什么用 Podfile 可以理解为就是…

编程速递:2025 年巴西 Embarcadero 会议,期待您的到来

每个英雄都有一段充满奋斗的旅程&#xff0c;这段旅程引领他走向荣耀&#xff0c;而开发者英雄的旅程是2025年巴西Embarcadero大会的重点&#xff0c;以庆祝Delphi成立30周年。网站现已上线巴西Embarcadero在世界上最受期待的Delphi发展英雄会议召开前90天&#xff0c;推出了Em…

DevOps简单教程应用

文章目录概念一、环境准备二、gitlab配置三、.gitlab-ci.yml文件配置概念 Devops是一个概念&#xff0c;就是边开发边测试&#xff0c;能够大大提升开发效率&#xff0c;本文使用pycharmgitlab实现一个简单的DevOps流程 一、环境准备 需要一个测试环境&#xff0c;模拟部署&…

华为流程管理体系构建与落地 之—— 业务流程规划【附全文阅读】

这部分内容聚焦华为业务流程管理&#xff0c;详细阐述了流程规划、设计、运营、评估与优化的具体方法和内容&#xff0c;为企业构建和完善流程管理体系提供了全面的指导。流程规划分类方法&#xff1a;介绍 POS、OES、OMS 等分类法&#xff0c;如 POS 法按规划、运营、支持划分…

Android 项目:画图白板APP开发(零)——功能介绍(笔锋,分页,缩放,多指,硬件加速等)

一、前言 本系列将全面的介绍一些有关Android 画图方面的知识。笔触功能包括&#xff1a;颜色、粗细、透明度、笔锋、橡皮&#xff1b;绘图功能包括&#xff1a;分页、缩放、多指、撤销恢复、笔画加速。别看功能这么多&#xff0c;简单的部分会花较少篇幅介绍&#xff0c;着重会…

香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频

演示视频 香橙派RK3588部署千问大模型Qwen2-VL-2B推理视频一、场景假设 视频输入为一条网络流&#xff0c;利用大模型对视频中的图像帧进行推理。由于大模型推理耗时长&#xff0c;无法对每帧都进行推理&#xff0c;因此采用跳帧推理的方式&#xff1a;当推理完一帧后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序&#xff1a;使用恒定的额外空间来产生输出就地排序只是在原数组空间进行排序处理&#xff0c;也就是输入的数组和得到的数组是同一个2.内部排序和外部排序&#xff1a;待排序数据可以一次性载入到内存中为内部排序&#xff0c;反之数据量过大就是外…

Webpack 核心配置与最佳实践指南

Webpack 是现代前端工程化的核心工具,理解其配置原理和优化技巧对开发效率至关重要。 一、Webpack 基础架构 1、核心概念关系图 2、核心概念详解 概念 作用 示例配置 Entry 应用入口起点 entry: ‘./src/index.js’ Output 编译结果输出位置 output.path: path.resolve(__d…