国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將算法“翻譯”成Verilog?

ruikundianzi ? 來源:IP與SoC設計 ? 作者:IP與SoC設計 ? 2022-11-03 15:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我是一名數字前端IP設計工程師,方向為通信芯片IP設計,我的主要工作就是“翻譯”算法代碼。

經典的ASIC開發流程主要有:

以算法設計為主導

算法C代碼手工轉換為RTL

RTL與算法C代碼生成的測試向量對比進行驗證

依賴FPGA做大量實時、現場測試

適合通信信號處理,音視頻處理或圖像處理等產品

我的工作主要就是將算法C代碼手工轉換為RTL,尤其是通信芯片的設計,算法主要是將浮點運算近似成定點運算,定點的精度決定了系統的性能,所以一種開發模式就是,用C平臺生成的case數據和RTL仿真的數據進行對比,保證定點化后的仿真性能。

所以對于單個計算模塊的開發來說,可以說就是體力活了,算法的計算過程已經擺在那里,單就是純翻譯。

然而再復雜的算法,在設計工程師的眼里,也就是一堆數學公式,算法設計者也應該盡量做簡單的算法實現,比如除法,求冪次方、開平方等復雜運算到了設計工程師這里都已經轉化成了簡單的乘法和加法運算。更復雜的就是累加、累乘(我所能接觸到的)。

做芯片第一應該關注的是芯片的PPA(Performance, Power, Area),如何設計的出更高性能的電路,占用更少的資源/面積,更低的功耗。這才是我們的專業知識。

通過學習算法代碼和文檔以及協議,了解算法的計算意圖。然后進行數據通路的分析,整體的數據流走向。哪些需要計算的數據可以用寄存器存儲,哪些數據需要用RAM存儲。模塊的劃分可拆解,哪些計算單元是功能類似的,可以做成一個小IP,乘法器同時使用的最大數量,是否能在整個大模塊中分時復用。

算法的設計中沒有時序的概念,也沒有計算時間的長短。需要設計工程師去整理整個模塊的計算流水,流水線排的時間長,需要的計算邏輯就越少,反之,面積越大。面積與速度互換思想,貫穿始終。現成乘法器的數量有限,是否能加上幾個乘法器而獲得模塊整體運算速度提高30%的收益,都需要去折中(Trade off)考慮。

排好計算流水,控制通路,一般都使用狀態機去做,當然,狀態機怎么設計算法可不會教你。整個模塊與更高層模塊的交互,接口控制時序需要討論確定。數據通路可能還需要用到RAM/Regfile去緩存中間數據的結果,RAM/Regfile的讀寫地址控制也是常見設計。數據通路的運算,是主要消耗資源的部分,所以一個好的詳細設計方案非常重要,同樣的設計,別人可以用比你小30%的面積和少30%的時間來實現。這可能就是設計工程師真正的價值體現之處。

對于通信算法中,矩陣運算也是比較常見的,復雜矩陣的運算是最耗費資源的,矩陣運算的拆解也需要很多技巧,比如矩陣的乘法是A的第一行乘以B的第一列,累加得到第一個元素,這部分的運算電路可以復用流水起來做。一個矩陣需要拆解合并成數個小矩陣,想要保持并行,用寄存器存儲,就會消耗的資源多。存在RAM中就是串行流水做會消耗的時間長,所以這都需要在模塊架構設計階段去計算處理時間和評估消耗資源、折中是否采取(Trade off)。

這種大型矩陣運算動輒幾百上千bit的寄存器輸出,連線選擇運算,可能會造成后端congestion問題,所以方案設計的重要性又體現出來了。組合邏輯的運算,如果路徑過長,時序會出現問題,插寄存器的位置也非常重要,消耗的寄存器的數量也是不同的,甚至可以通過手動retimming,找個寄存器把打拍的位置換一下,消耗的資源還是相同的。

對于芯片的功耗前端能做的就是,去加一些時鐘門控,模塊不用時候可以關掉,組合邏輯計算單元不用的時候避免翻轉,乘法器的使能信號的控制,避免無效翻轉,數據通路寄存器帶著使能打拍,工具也會自動插時鐘門控,這些就和算法沒關系了。

至于算法,當然不同領域的相關知識不同,雖然設計方法是完全類似的,但是在一個領域深扎,成為這個領域的專業的人,可以更好的理解算法到硬件的實現。

IP設計工程師經常調侃自己是算法“翻譯官”,雖然也沒什么問題,但是自嘲歸自嘲,如果感興趣的話,還是應該去想著如何更好的做好自己的設計,做好芯片。即使是“翻譯官”也是一個十分有價值的“翻譯官”。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4784

    瀏覽量

    98038
  • Verilog
    +關注

    關注

    30

    文章

    1374

    瀏覽量

    114520

原文標題:如何將算法“翻譯”成Verilog?

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    請問如何將文件從 PC 傳輸到 visionfive2?

    如何將文件從 PC 傳輸到 visionfive2?
    發表于 02-03 07:49

    "網關”頂流!PROFINET轉CC-LINK,汽車產線的“翻譯官”出圈記

    "網關”頂流!PROFINET轉CC-LINK,汽車產線的“翻譯官”出圈記 現代化汽車制造工廠內部,機器人手臂在進行精密焊接作業 在汽車制造的精密戰場上,西門子與三菱的PLC系統如同來自不同國
    的頭像 發表于 11-26 16:08 ?296次閱讀
    &quot;網關”<b class='flag-5'>成</b>頂流!PROFINET轉CC-LINK,汽車產線的“<b class='flag-5'>翻譯</b>官”出圈記

    如何將某個函數或變量放在固定的地址 ?

    如題,如何將某個函數或者變量放在固定的地址?類似于__attribute__( at(絕對地址) ),用的nucleistudio ide, __attribute__( at(絕對地址) )出現警告 at屬性被忽視,有類似的屬性嗎?
    發表于 11-07 06:07

    復雜的軟件算法硬件IP核的實現

    Compiler)算法編譯轉化為可綜合的 Verilog 文本,進而通過 FPGA 在硬件上實現算法。 1.C to Hardware 技術簡介 AltiumDesign
    發表于 10-30 07:02

    AES加解密算法邏輯實現及其在蜂鳥E203SoC上的應用介紹

    這次分享我們會簡要介紹AES加解密算法的邏輯實現,以及如何將AES算法做成硬件協處理器集成在蜂鳥E203 SoC上。 AES算法介紹 AES算法
    發表于 10-29 07:29

    N9H2x如何將視頻轉換為 AVI 文件?

    N9H2x如何將視頻轉換為 AVI 文件?
    發表于 09-01 08:05

    如何將GCC項目導入NuEclipse?

    如何將GCC項目導入NuEclipse?
    發表于 09-01 07:04

    請問如何將ISP寫入Nuvoton 8051 MCU系列?

    如何將ISP寫入Nuvoton 8051 MCU系列?
    發表于 08-18 07:34

    廣州郵科通信逆變器:12V直流輸入的“能量翻譯官”,讓通信永不斷線

    在通信網絡這個精密運轉的數字生命體中,電力如同流淌的血液。而廣州郵科通信專為行業定制的12V直流輸入逆變器,則扮演著至關重要的“能量翻譯官”角色——它精準高效地通信系統中無處不在的12V直流電“翻譯
    的頭像 發表于 06-27 15:51 ?1552次閱讀

    如何將K230 image轉成jpg?

    如何將K230image轉成jpg,我想獲取圖片,傳回我自己的系統 你好,可以使用img.to_jpeg()來對其進行壓縮。
    發表于 06-12 06:41

    技術分享 | 迅為RK3568開發板如何將 Linux 板卡虛擬U盤

    技術分享 | 迅為RK3568開發板如何將 Linux 板卡虛擬U盤
    的頭像 發表于 06-04 10:57 ?1115次閱讀
    技術分享 | 迅為RK3568開發板<b class='flag-5'>如何將</b> Linux 板卡虛擬<b class='flag-5'>成</b>U盤

    FPGA Verilog HDL語法之編譯預處理

    的語句)。Verilog HDL編譯系統通常先對這些特殊的命令進行“預處理”,然后預處理的結果和源程序一起在進行通常的編譯處理。
    的頭像 發表于 03-27 13:30 ?1434次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語法之編譯預處理

    如何將firware安裝到使用MC9S08JS16CWJ的新USBDM中?

    我正在根據您名為 USBDM_SWD_SER_JS16CWJ_V3_1 的文件制作一個 USBDM。 現在,我遇到了一個問題,我不知道如何將 firware 安裝到使用 MC9S08JS16CWJ
    發表于 03-24 07:46

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語言,用于從算法級、門級到開關級的多種抽象設計層次的數字系統建模。現實生活中多用于專用集成電路
    的頭像 發表于 03-17 15:17 ?4291次閱讀
    一文詳解<b class='flag-5'>Verilog</b> HDL

    如何將Linux安裝包快速轉成玲瓏包

    本篇將以 motrix 為例為大家展示如何將 Linux 安裝包快速轉成玲瓏包。
    的頭像 發表于 03-12 16:01 ?1660次閱讀
    <b class='flag-5'>如何將</b>Linux安裝包快速轉成玲瓏包