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

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

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

談?wù)剮追N芯片設(shè)計增加代碼復(fù)用性的方法

sanyue7758 ? 來源:IC的世界 ? 2023-09-12 09:55 ? 次閱讀

很多芯片在設(shè)計之初,就已經(jīng)考慮如何增加代碼的復(fù)用性,盡量減少工作量,降低錯誤概率。 增加復(fù)用性的幾個場景:

不同項目之間的代碼復(fù)用性

不同工藝之間的代碼復(fù)用性

同一個模塊例化多份,分別工作在不同模式下

同一個項目不同環(huán)境(RTL驗證,FPGA demo 驗證)之間的代碼復(fù)用性

本章節(jié)將簡單談?wù)剮追N增加代碼復(fù)用性的方法。

1、基礎(chǔ)模塊IP化

在各家ASIC/FPGA項目的代碼目錄中,我們經(jīng)常能看到各類小的基礎(chǔ)模塊,例如各類跨時鐘模塊、各類調(diào)度仲裁模塊、各類RAM讀寫模塊、各類總線接口模塊等等。它們可能命名為share_ip_*或base_ip_*或cmn_ip_*,又或者其他名稱,幾乎每個設(shè)計者都需要用到這些基礎(chǔ)模塊。 我們在需要實現(xiàn)其相關(guān)功能時,只需要例化模塊即可,簡單高效,有降低了bug概率。

2、模塊參數(shù)

在進行模塊設(shè)計時,我們需要盡量保證模塊參數(shù)化,盡量避免使用立即數(shù)(例如10’d0)。 被參數(shù)化的信號可能是數(shù)據(jù)位寬,用戶數(shù)量或者其他類型的信號。

module  ip_bus_sync #( // 
    parameter   DATA_WDTH                       =       16                                      ,   //
    parameter   INI_VALUE                       =       {DATA_WDTH{1'b0}}                           //
)(
    input                                               i_src_clk                               ,   //
    input                                               i_src_rst_n                             ,   //
    input               [DATA_WDTH-1:0]                 i_src_din                               ,   //
    input                                               i_dst_clk                               ,   //
    input                                               i_dst_rst_n                             ,   //
    output  reg         [DATA_WDTH-1:0]                 o_dst_dout                                  // 


);




//邏輯代碼


endmodule

3、宏定義區(qū)分代碼分支

ASIC項目的代碼一般至少有兩個版本:ASIC版本和驗證版本(FPGA/加速器)。部分公司還會同時出兩個系列的芯片,ASIC系列和FPGA系列。因此我們通常需要通過宏定義區(qū)分不同的代碼分支和參數(shù)

`ifdef FOR_ASIC_DESIGN
  //ASIC  logic
  //參數(shù)定義
`else
  //其他分支邏輯
  //參數(shù)定義
`endif
`ifdef FOR_ASIC_DESIGN




generate
genvar  i;


for ( i=0; i
        

4、使用參數(shù)選擇代碼分支

在同一個宏定義分支下(例如同在ASIC或者FPGA項目),我們可能需要獎模塊例化多份,以支持如下場景:

Case1:同一個模塊,工作在同的模式下,為了節(jié)約資源,只需要保留對應(yīng)模式的代碼邏輯。 Case2:同一個模塊,其支持的功能數(shù)量不同,所需要的RAM等資源也不相同,需要例化不同規(guī)格的RAM。

module xxxxx
#(
    parameter   FUNCTION_MODE   =       `MULTI_FUNCTION             
)
(
   //各類IO信號
) ;




generate


if (FUNCTION_MODE==`MULTI_FUNCTION) begin:MULTI_FUNCTION_CODE


     //多function 邏輯  


end


else begin:SINGLE_FUNCTION_CODE


    // 單function 邏輯


end


end
endgenerate

5、IP接口隔離

不同Vendor的IP的用戶側(cè)接口大概率是不一樣的,為了避免因為IP替換導(dǎo)致的大量代碼修改,可以在設(shè)計之處就考慮將IP接口隔離。例如通過2類接口轉(zhuǎn)換模塊(控制類和數(shù)據(jù)類),將所需要的控制信號和數(shù)據(jù)流信號轉(zhuǎn)換成通用的內(nèi)部信號,這樣無論怎么替換IP,都只需要修改少量代碼。

4c118826-5090-11ee-a25d-92fbcf53809c.png ? ? ? ? ? ? ? ? ?

6、std cell 隔離

我們通常會將std cell外包一層或者多層代碼,這樣就能將工藝與設(shè)計代碼盡量分離。

常見的有bit同步器,ram,clk-gating,clk mux等模塊。如下是單bit同步器的案例。

module  ip_bit_sync #( parameter      DATA_WDTH = 1    // bit width)(in

put  wire                     i_dst_clk,   // destination clockinput  wire [(DATA_WDTH-1):0]   i_src_din,   // data inputoutput wire [(DATA_WDTH-1):0]   o_dst_dout   // data output);`ifdef FOR_ASIC_DESIGNgenerategenvar  i;for ( i=0; i





審核編輯:劉清

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

    關(guān)注

    1629

    文章

    21753

    瀏覽量

    604183
  • 加速器
    +關(guān)注

    關(guān)注

    2

    文章

    802

    瀏覽量

    37928
  • 芯片設(shè)計
    +關(guān)注

    關(guān)注

    15

    文章

    1023

    瀏覽量

    54931
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59849
  • ASIC芯片
    +關(guān)注

    關(guān)注

    2

    文章

    92

    瀏覽量

    23801

原文標題:增加設(shè)計復(fù)用性的6種方法

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于可測設(shè)計的雷達數(shù)字處理芯片的實現(xiàn)

    本文采用基于掃描路徑法的可測設(shè)計技術(shù),對一款約750萬門級雷達芯片的實際電路進行可測設(shè)計。在設(shè)計中通過使用時鐘復(fù)用技術(shù)、時鐘電路處理技術(shù)以及IP隔離技術(shù)等
    的頭像 發(fā)表于 12-11 10:04 ?2452次閱讀
    基于可測<b class='flag-5'>性</b>設(shè)計的雷達數(shù)字處理<b class='flag-5'>芯片</b>的實現(xiàn)

    電磁兼容整改的幾種方法

    電磁兼容整改的幾種方法
    發(fā)表于 08-12 10:34

    電磁兼容主要的幾種整改方法

    首先,要根據(jù)實際情況對產(chǎn)品進行診斷,分析其干擾源所在及其相互干擾的途徑和方式。再根據(jù)分析結(jié)果,有針對的進行整改。一般來說主要的整改方法有如下幾種。 1 減弱干擾源 在找到干擾源的基礎(chǔ)上,可對干擾源
    發(fā)表于 05-30 08:06

    物聯(lián)網(wǎng)技術(shù)中幾種典型芯片NB-IOT的測試方法

    高速數(shù)字設(shè)計和測試綜述高質(zhì)量的信號生成電源完整測試物聯(lián)網(wǎng)技術(shù)中幾種典型芯片NB-IOT的測試方法
    發(fā)表于 01-12 07:15

    代碼優(yōu)化的目的是什么?具體方法包括哪幾種?

    代碼優(yōu)化的目的是什么?具體方法包括哪幾種?代碼優(yōu)化工作有什么創(chuàng)新點?
    發(fā)表于 06-03 06:17

    你知道可測試設(shè)計方法有哪幾種

    可掃描觸發(fā)器的作用有哪些?標準IEEE測試訪問方法主要有哪些應(yīng)用領(lǐng)域?可測試設(shè)計方法有哪幾種?分別有哪些優(yōu)點?
    發(fā)表于 08-09 07:23

    代碼如何復(fù)用

    工程。背景需求做任何事情都要有目標,朝著目標去前進。本文關(guān)注的目標如下:1. 代碼如何復(fù)用,達到多項目復(fù)用的目的2. 如何滿足多項目復(fù)用的前提下...
    發(fā)表于 08-11 07:26

    芯片分析的幾種方法與步驟

    半導(dǎo)體器件芯片分析的幾種方法與步驟。分析手段一般包括:c-sam,x-ray,sem掃描電鏡,EMMI微光顯微鏡等。
    發(fā)表于 05-02 15:36 ?1w次閱讀

    電磁兼容整改的幾種方法

    電磁兼容整改的幾種方法,這些方法不僅節(jié)約成本,而且是最有效的整改方法
    發(fā)表于 10-28 14:56 ?9次下載

    Linux的內(nèi)核級代碼復(fù)用攻擊檢測

    內(nèi)核級代碼復(fù)用攻擊,提出了一種基于細粒度控制流完整(CFD的檢測方法.首先根據(jù)代碼復(fù)用攻擊原理
    發(fā)表于 12-27 15:14 ?0次下載

    一種新穎的復(fù)用代碼精確快速溯源方法

    提出了一種新穎的復(fù)用代碼精確快速溯源方法。該方法以函數(shù)為單位,基于simhash與倒排索引技術(shù),能在海量代碼中快速溯源相似函數(shù)。首先基于si
    發(fā)表于 01-31 14:23 ?0次下載
    一種新穎的<b class='flag-5'>復(fù)用</b><b class='flag-5'>代碼</b>精確快速溯源<b class='flag-5'>方法</b>

    談?wù)?/b>STM32Fxx系列單片機引腳的復(fù)用功能資料下載

    電子發(fā)燒友網(wǎng)為你提供談?wù)?/b>STM32Fxx系列單片機引腳的復(fù)用功能資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-13 08:46 ?15次下載
    <b class='flag-5'>談?wù)?/b>STM32Fxx系列單片機引腳的<b class='flag-5'>復(fù)用</b>功能資料下載

    嵌入式代碼的可移植和可復(fù)用

    可移植與我們平時所說的跨平臺能力比較相近,而軟件復(fù)用則是一種通過已有軟件子件來構(gòu)建新產(chǎn)品軟件的能力。
    的頭像 發(fā)表于 11-10 09:06 ?1340次閱讀

    AN021 測量MCU代碼運行時間的幾種方法

    AN021 測量MCU代碼運行時間的幾種方法
    發(fā)表于 02-27 18:23 ?0次下載
    AN021 測量MCU<b class='flag-5'>代碼</b>運行時間的<b class='flag-5'>幾種方法</b>

    探討篇(三):代碼復(fù)用的智慧 - 提升架構(gòu)的效率與可維護

    的案例,介紹幾種分布式架構(gòu)中管理代碼復(fù)用的技術(shù)。包括代碼復(fù)制、共享代碼庫(jar包)、共享服務(wù)
    的頭像 發(fā)表于 12-27 15:58 ?240次閱讀
    探討篇(三):<b class='flag-5'>代碼</b><b class='flag-5'>復(fù)用</b>的智慧 - 提升架構(gòu)的效率與可維護<b class='flag-5'>性</b>