很多芯片在設計之初,就已經考慮如何增加代碼的復用性,盡量減少工作量,降低錯誤概率。 增加復用性的幾個場景:
不同項目之間的代碼復用性
不同工藝之間的代碼復用性
同一個模塊例化多份,分別工作在不同模式下
同一個項目不同環境(RTL驗證,FPGA demo 驗證)之間的代碼復用性
本章節將簡單談談幾種增加代碼復用性的方法。
1、基礎模塊IP化
在各家ASIC/FPGA項目的代碼目錄中,我們經常能看到各類小的基礎模塊,例如各類跨時鐘模塊、各類調度仲裁模塊、各類RAM讀寫模塊、各類總線接口模塊等等。它們可能命名為share_ip_*或base_ip_*或cmn_ip_*,又或者其他名稱,幾乎每個設計者都需要用到這些基礎模塊。 我們在需要實現其相關功能時,只需要例化模塊即可,簡單高效,有降低了bug概率。
2、模塊參數化
在進行模塊設計時,我們需要盡量保證模塊參數化,盡量避免使用立即數(例如10’d0)。 被參數化的信號可能是數據位寬,用戶數量或者其他類型的信號。
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、宏定義區分代碼分支
ASIC項目的代碼一般至少有兩個版本:ASIC版本和驗證版本(FPGA/加速器)。部分公司還會同時出兩個系列的芯片,ASIC系列和FPGA系列。因此我們通常需要通過宏定義區分不同的代碼分支和參數
`ifdef FOR_ASIC_DESIGN //ASIC logic //參數定義 `else //其他分支邏輯 //參數定義 `endif
`ifdef FOR_ASIC_DESIGN generate genvar i; for ( i=0; i
4、使用參數選擇代碼分支
在同一個宏定義分支下(例如同在ASIC或者FPGA項目),我們可能需要獎模塊例化多份,以支持如下場景:
Case1:同一個模塊,工作在同的模式下,為了節約資源,只需要保留對應模式的代碼邏輯。 Case2:同一個模塊,其支持的功能數量不同,所需要的RAM等資源也不相同,需要例化不同規格的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的用戶側接口大概率是不一樣的,為了避免因為IP替換導致的大量代碼修改,可以在設計之處就考慮將IP接口隔離。例如通過2類接口轉換模塊(控制類和數據類),將所需要的控制信號和數據流信號轉換成通用的內部信號,這樣無論怎么替換IP,都只需要修改少量代碼。
? ? ? ? ? ? ? ? ?6、std cell 隔離
我們通常會將std cell外包一層或者多層代碼,這樣就能將工藝與設計代碼盡量分離。
常見的有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
審核編輯:劉清
-
FPGA
+關注
關注
1629文章
21736瀏覽量
603419 -
加速器
+關注
關注
2文章
799瀏覽量
37874 -
芯片設計
+關注
關注
15文章
1019瀏覽量
54897 -
RTL
+關注
關注
1文章
385瀏覽量
59790 -
ASIC芯片
+關注
關注
2文章
91瀏覽量
23770
原文標題:增加設計復用性的6種方法
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論