日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 芯片

IC設計思維:增加復用性的6種方法

來源: 責編: 時間:2023-09-11 22:35:12 323觀看
導讀 很多芯片在設計之初,就已經(jīng)考慮如何增加代碼的復用性,盡量減少工作量,降低錯誤概率。增加復用性的幾個場景:不同項目之間的代碼復用性不同工藝之間的代碼復用性同一個模塊例化多份,分別工作在不同模式下同一個項目不同環(huán)
很多芯片在設計之初,就已經(jīng)考慮如何增加代碼的復用性,盡量減少工作量,降低錯誤概率。
增加復用性的幾個場景:
    • 不同項目之間的代碼復用性
    • 不同工藝之間的代碼復用性
    • 同一個模塊例化多份,分別工作在不同模式下
    • 同一個項目不同環(huán)境(RTL驗證,F(xiàn)PGA demo 驗證)之間的代碼復用性
本章節(jié)將簡單談談幾種增加代碼復用性的方法。

1、基礎模塊IP化Nsp28資訊網(wǎng)——每日最新資訊28at.com

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

2、模塊參數(shù)化Nsp28資訊網(wǎng)——每日最新資訊28at.com

在進行模塊設計時,我們需要盡量保證模塊參數(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ū)分代碼分支Nsp28資訊網(wǎng)——每日最新資訊28at.com

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

generategenvar i;
for ( i=0; i<DATA_WDTH; i=i+1 )begin : SDFFY2D_INST
SDFFY_*CELL_TYPE* SDFFY2D //此處CELL_TYPE指的是具體的器件型號( .CK (i_dst_clk),.D (i_src_din[i] ),.Q (o_dst_dout[i]),.SI (1'b0 ), //DFT 輸入信號,由DFT工程師在網(wǎng)表中完成連線.SE (1'b0 ) //DFT 使能信號,由DFT工程師在網(wǎng)表中完成連線);
endendgenerate
`else
reg [(DATA_WDTH-1):0] din_d0; //reg [(DATA_WDTH-1):0] din_d1; //
assign o_dst_dout = din_d1;
always @( posedge i_dst_clk ) begindin_d0 <= i_src_din;din_d1 <= din_d0;end
`endif

4、使用參數(shù)選擇代碼分支Nsp28資訊網(wǎng)——每日最新資訊28at.com

在同一個宏定義分支下(例如同在ASIC或者FPGA項目),我們可能需要獎模塊例化多份,以支持如下場景:Nsp28資訊網(wǎng)——每日最新資訊28at.com

Case1:同一個模塊,工作在同的模式下,為了節(jié)約資源,只需要保留對應模式的代碼邏輯。
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
endendgenerate

5、IP接口隔離Nsp28資訊網(wǎng)——每日最新資訊28at.com

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

6、std cell 隔離Nsp28資訊網(wǎng)——每日最新資訊28at.com

我們通常會將std cell外包一層或者多層代碼,這樣就能將工藝與設計代碼盡量分離。Nsp28資訊網(wǎng)——每日最新資訊28at.com

常見的有bit同步器,ram,clk-gating,clk mux等模塊。如下是單bit同步器的案例。
module  ip_bit_sync #( parameter      DATA_WDTH = 1    // bit width)(input  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<DATA_WDTH; i=i+1 )begin : SDFFY2D_INSTSDFFY_*CELL_TYPE*  SDFFY2D   //此處CELL_TYPE指的是具體的器件型號(    .CK   (i_dst_clk),.D    (i_src_din[i] ),.Q    (o_dst_dout[i]),.SI   (1'b0     ),   //DFT 輸入信號,由DFT工程師在網(wǎng)表中完成連線.SE   (1'b0     )    //DFT 使能信號,由DFT工程師在網(wǎng)表中完成連線);endendgenerate`elsereg  [(DATA_WDTH-1):0]   din_d0;       //reg  [(DATA_WDTH-1):0]   din_d1;       //assign o_dst_dout = din_d1;always @( posedge i_dst_clk ) begindin_d0  <= i_src_din;din_d1  <= din_d0;end`endifendmodule


這個技術研討會不要錯過!Nsp28資訊網(wǎng)——每日最新資訊28at.com

時間:2023年9月26日 9:00~18:00Nsp28資訊網(wǎng)——每日最新資訊28at.com

地點:深圳灣萬怡酒店4樓大宴會廳Nsp28資訊網(wǎng)——每日最新資訊28at.com

(免費參會、免費午餐、參會贏好禮)Nsp28資訊網(wǎng)——每日最新資訊28at.com

Nsp28資訊網(wǎng)——每日最新資訊28at.com


Nsp28資訊網(wǎng)——每日最新資訊28at.com

icspec【芯片求購】https://www.icspec.com/inquiry/index/1/0

本文鏈接:http://www.www897cc.com/showinfo-27-9402-0.htmlIC設計思維:增加復用性的6種方法

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 纖薄高顏值,商旅輕出行,瑞亨65W超薄氮化鎵充電器評測

下一篇: 用于太空應用的抗輻射電路設計與優(yōu)化

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 灵石县| 舞阳县| 建湖县| 红安县| 丹巴县| 尚义县| 庆城县| 尉犁县| 辉县市| 大安市| 合阳县| 涟水县| 永登县| 洛阳市| 隆德县| 垦利县| 察雅县| 嘉荫县| 蒙阴县| 醴陵市| 剑川县| 岚皋县| 新营市| 岳普湖县| 乡宁县| 双鸭山市| 延寿县| 海兴县| 通道| 贵港市| 定远县| 诸暨市| 星座| 通州区| 澄迈县| 石台县| 松潘县| 清流县| 若尔盖县| 南宫市| 商丘市|