91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

ruikundianzi ? 來(lái)源:IP與SoC設(shè)計(jì) ? 作者:IP與SoC設(shè)計(jì) ? 2022-11-03 15:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我是一名數(shù)字前端IP設(shè)計(jì)工程師,方向?yàn)?a href="http://m.makelele.cn/v/tag/1301/" target="_blank">通信芯片IP設(shè)計(jì),我的主要工作就是“翻譯”算法代碼。

經(jīng)典的ASIC開發(fā)流程主要有:

以算法設(shè)計(jì)為主導(dǎo)

算法C代碼手工轉(zhuǎn)換為RTL

RTL與算法C代碼生成的測(cè)試向量對(duì)比進(jìn)行驗(yàn)證

依賴FPGA做大量實(shí)時(shí)、現(xiàn)場(chǎng)測(cè)試

適合通信信號(hào)處理,音視頻處理或圖像處理等產(chǎn)品

我的工作主要就是將算法C代碼手工轉(zhuǎn)換為RTL,尤其是通信芯片的設(shè)計(jì),算法主要是將浮點(diǎn)運(yùn)算近似成定點(diǎn)運(yùn)算,定點(diǎn)的精度決定了系統(tǒng)的性能,所以一種開發(fā)模式就是,用C平臺(tái)生成的case數(shù)據(jù)和RTL仿真的數(shù)據(jù)進(jìn)行對(duì)比,保證定點(diǎn)化后的仿真性能。

所以對(duì)于單個(gè)計(jì)算模塊的開發(fā)來(lái)說(shuō),可以說(shuō)就是體力活了,算法的計(jì)算過(guò)程已經(jīng)擺在那里,單就是純翻譯。

然而再?gòu)?fù)雜的算法,在設(shè)計(jì)工程師的眼里,也就是一堆數(shù)學(xué)公式,算法設(shè)計(jì)者也應(yīng)該盡量做簡(jiǎn)單的算法實(shí)現(xiàn),比如除法,求冪次方、開平方等復(fù)雜運(yùn)算到了設(shè)計(jì)工程師這里都已經(jīng)轉(zhuǎn)化成了簡(jiǎn)單的乘法和加法運(yùn)算。更復(fù)雜的就是累加、累乘(我所能接觸到的)。

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

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

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

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

對(duì)于通信算法中,矩陣運(yùn)算也是比較常見的,復(fù)雜矩陣的運(yùn)算是最耗費(fèi)資源的,矩陣運(yùn)算的拆解也需要很多技巧,比如矩陣的乘法是A的第一行乘以B的第一列,累加得到第一個(gè)元素,這部分的運(yùn)算電路可以復(fù)用流水起來(lái)做。一個(gè)矩陣需要拆解合并成數(shù)個(gè)小矩陣,想要保持并行,用寄存器存儲(chǔ),就會(huì)消耗的資源多。存在RAM中就是串行流水做會(huì)消耗的時(shí)間長(zhǎng),所以這都需要在模塊架構(gòu)設(shè)計(jì)階段去計(jì)算處理時(shí)間和評(píng)估消耗資源、折中是否采?。═rade off)。

這種大型矩陣運(yùn)算動(dòng)輒幾百上千bit的寄存器輸出,連線選擇運(yùn)算,可能會(huì)造成后端congestion問(wèn)題,所以方案設(shè)計(jì)的重要性又體現(xiàn)出來(lái)了。組合邏輯的運(yùn)算,如果路徑過(guò)長(zhǎng),時(shí)序會(huì)出現(xiàn)問(wèn)題,插寄存器的位置也非常重要,消耗的寄存器的數(shù)量也是不同的,甚至可以通過(guò)手動(dòng)retimming,找個(gè)寄存器把打拍的位置換一下,消耗的資源還是相同的。

對(duì)于芯片的功耗前端能做的就是,去加一些時(shí)鐘門控,模塊不用時(shí)候可以關(guān)掉,組合邏輯計(jì)算單元不用的時(shí)候避免翻轉(zhuǎn),乘法器的使能信號(hào)的控制,避免無(wú)效翻轉(zhuǎn),數(shù)據(jù)通路寄存器帶著使能打拍,工具也會(huì)自動(dòng)插時(shí)鐘門控,這些就和算法沒(méi)關(guān)系了。

至于算法,當(dāng)然不同領(lǐng)域的相關(guān)知識(shí)不同,雖然設(shè)計(jì)方法是完全類似的,但是在一個(gè)領(lǐng)域深扎,成為這個(gè)領(lǐng)域的專業(yè)的人,可以更好的理解算法到硬件的實(shí)現(xiàn)。

IP設(shè)計(jì)工程師經(jīng)常調(diào)侃自己是算法“翻譯官”,雖然也沒(méi)什么問(wèn)題,但是自嘲歸自嘲,如果感興趣的話,還是應(yīng)該去想著如何更好的做好自己的設(shè)計(jì),做好芯片。即使是“翻譯官”也是一個(gè)十分有價(jià)值的“翻譯官”。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98064
  • Verilog
    +關(guān)注

    關(guān)注

    30

    文章

    1374

    瀏覽量

    114529

原文標(biāo)題:如何將算法“翻譯”成Verilog?

文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問(wèn)如何將文件從 PC 傳輸?shù)?visionfive2?

    如何將文件從 PC 傳輸?shù)?visionfive2?
    發(fā)表于 02-03 07:49

    "網(wǎng)關(guān)”頂流!PROFINET轉(zhuǎn)CC-LINK,汽車產(chǎn)線的“翻譯官”出圈記

    "網(wǎng)關(guān)”頂流!PROFINET轉(zhuǎn)CC-LINK,汽車產(chǎn)線的“翻譯官”出圈記 現(xiàn)代化汽車制造工廠內(nèi)部,機(jī)器人手臂在進(jìn)行精密焊接作業(yè) 在汽車制造的精密戰(zhàn)場(chǎng)上,西門子與三菱的PLC系統(tǒng)如同來(lái)自不同國(guó)
    的頭像 發(fā)表于 11-26 16:08 ?305次閱讀
    &quot;網(wǎng)關(guān)”<b class='flag-5'>成</b>頂流!PROFINET轉(zhuǎn)CC-LINK,汽車產(chǎn)線的“<b class='flag-5'>翻譯</b>官”出圈記

    如何將某個(gè)函數(shù)或變量放在固定的地址 ?

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

    復(fù)雜的軟件算法硬件IP核的實(shí)現(xiàn)

    Compiler)算法編譯轉(zhuǎn)化為可綜合的 Verilog 文本,進(jìn)而通過(guò) FPGA 在硬件上實(shí)現(xiàn)算法。 1.C to Hardware 技術(shù)簡(jiǎn)介 AltiumDesign
    發(fā)表于 10-30 07:02

    AES加解密算法邏輯實(shí)現(xiàn)及其在蜂鳥E203SoC上的應(yīng)用介紹

    這次分享我們會(huì)簡(jiǎn)要介紹AES加解密算法的邏輯實(shí)現(xiàn),以及如何將AES算法做成硬件協(xié)處理器集成在蜂鳥E203 SoC上。 AES算法介紹 AES算法
    發(fā)表于 10-29 07:29

    N9H2x如何將視頻轉(zhuǎn)換為 AVI 文件?

    N9H2x如何將視頻轉(zhuǎn)換為 AVI 文件?
    發(fā)表于 09-01 08:05

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?

    如何將GCC項(xiàng)目導(dǎo)入NuEclipse?
    發(fā)表于 09-01 07:04

    請(qǐng)問(wèn)如何將ISP寫入Nuvoton 8051 MCU系列?

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

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

    在通信網(wǎng)絡(luò)這個(gè)精密運(yùn)轉(zhuǎn)的數(shù)字生命體中,電力如同流淌的血液。而廣州郵科通信專為行業(yè)定制的12V直流輸入逆變器,則扮演著至關(guān)重要的“能量翻譯官”角色——它精準(zhǔn)高效地通信系統(tǒng)中無(wú)處不在的12V直流電“翻譯
    的頭像 發(fā)表于 06-27 15:51 ?1557次閱讀

    如何將K230 image轉(zhuǎn)成jpg?

    如何將K230image轉(zhuǎn)成jpg,我想獲取圖片,傳回我自己的系統(tǒng) 你好,可以使用img.to_jpeg()來(lái)對(duì)其進(jìn)行壓縮。
    發(fā)表于 06-12 06:41

    技術(shù)分享 | 迅為RK3568開發(fā)板如何將 Linux 板卡虛擬U盤

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

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    的語(yǔ)句)。Verilog HDL編譯系統(tǒng)通常先對(duì)這些特殊的命令進(jìn)行“預(yù)處理”,然后預(yù)處理的結(jié)果和源程序一起在進(jìn)行通常的編譯處理。
    的頭像 發(fā)表于 03-27 13:30 ?1438次閱讀
    FPGA <b class='flag-5'>Verilog</b> HDL語(yǔ)法之編譯預(yù)處理

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

    我正在根據(jù)您名為 USBDM_SWD_SER_JS16CWJ_V3_1 的文件制作一個(gè) USBDM。 現(xiàn)在,我遇到了一個(gè)問(wèn)題,我不知道如何將 firware 安裝到使用 MC9S08JS16CWJ
    發(fā)表于 03-24 07:46

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語(yǔ)言,用于從算法級(jí)、門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模?,F(xiàn)實(shí)生活中多用于專用集成電路
    的頭像 發(fā)表于 03-17 15:17 ?4300次閱讀
    一文詳解<b class='flag-5'>Verilog</b> HDL

    如何將Linux安裝包快速轉(zhuǎn)成玲瓏包

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