淺嘗AI輔助C轉Verilog方法

一、常規算法模塊的開發流程

日常芯片開發工作中,挺多看工作是把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…