我們?cè)谫?gòu)買soft IP的時(shí)候,vendor提供的是通用的verilog/system verilog的代碼,而在不同的項(xiàng)目中,我們采用的工藝不一樣,因此所需的memory 和同步cell不一樣。通用的soft IP是如何便捷的替換memory和標(biāo)準(zhǔn)std cell的呢?
case0:小規(guī)模的afifo/fifo和ram 會(huì)用寄存器搭建的方式實(shí)現(xiàn)
小規(guī)模的afifo/fifo和ram使用寄存器搭建,不需要替換。
不同IP對(duì)資源的敏感度不一樣,因此多大規(guī)模的fifo/ram能夠使用reg實(shí)現(xiàn)依賴于IP的類型和應(yīng)用場(chǎng)景。例如在高速以太I(xiàn)P和PCIe中,8x16 的fifo就屬于小規(guī)模,如果例化次數(shù)比較少,使用寄存器搭建是可以接受的。
case1:大規(guī)模的ram 在外部實(shí)現(xiàn),IP 會(huì)透露出讀寫接口
例如在IP的頂層io上會(huì)出現(xiàn)類似如下接口:
wclk/wr/wdata/waddr
rclk/rd/rdata/raddr
case2:底層2級(jí)/3級(jí)同步器手動(dòng)替換
Soft IP 內(nèi)部如果存在跨時(shí)鐘設(shè)計(jì),通常會(huì)使用2級(jí)/3級(jí)同步器,soft ip如何沒有提供便捷的替換方式,則需要使用者手動(dòng)替換,例如soft IP代碼多次調(diào)用2級(jí)同步器模塊soft_ip_synchronizer.v。
為了使用工藝匹配的2級(jí)同步器cell,需要新建一個(gè)soft_ip_synchronizer.v,在filelist中將路徑指向新建的soft_ip_synchronizer.v,新soft_ip_synchronizer.v接口與soft IP使用的接口保持一致,且在soft_ip_synchronizer.v中調(diào)用項(xiàng)目使用的base_ip_bit_sync.v, base_ip_bit_sync調(diào)用了制造工藝匹配的同步器cell。
新建的soft_ip_synchronizer.v
`include "soft_ip_constant_h.v" //----------------------------------------------------------------------------- // Block of two synchronisation flip-flops module soft_ip_synchronizer #( parameter FIELD_SIZE = 1 // Field Size in bits ) ( input wire clk , input wire [FIELD_SIZE-1:0] data_in , output wire [FIELD_SIZE-1:0] data_out ); base_ip_bit_sync #( .DATA_WDTH ( FIELD_SIZE ) ) u_data_bit_sync ( .i_dst_clk ( clk ) , .i_din ( data_in ) , .o_dout ( data_out ) ); endmoduleSoft ip的soft_ip_synchronizer.v(被替換)
// Description: Clock Domain Resynchronizer basic elements `include "soft_ip_constant_h.v" module soft_ip_synchronizer #( parameter FIELD_SIZE = 1 // Field Size in bits ) ( input wire clk , input wire [FIELD_SIZE-1:0] data_in , output reg [FIELD_SIZE-1:0] data_out ); reg [FIELD_SIZE-1:0] data_in_r; always @(posedge clk) begin data_in_r <= data_in ; data_out <= data_in_r ; end endmoduleCase3:特殊cell通過define重新指定: Soft IP 內(nèi)部如果存在clk gate模塊,clk mux,多級(jí)同步器等特殊定制的cell時(shí),通常需要替換成工藝對(duì)應(yīng)的cell,部分soft IP支持define方式指定cell 如下所示:
1:Soft IP所有的Verilog/system Verilog文件都調(diào)用了SOFT_IP.defines.v 在module之前`include "SOFT_IP.defines.v",見SOFT_IP_SPECIAL_SYNC2R.v文件,且在例化2級(jí)同步器時(shí)使用了調(diào)用define名稱SOFT_IP_SDFFYRPQ2D的方式: `SOFT_IP_SDFFYRPQ2D SYNC ( .CK(CK), .D(D), .R (R), .SI(1'b0), .SE(1'b0), .Q(Q) );
2:新建一個(gè)SOFT_IP.defines.v文件,通過define指定cell SOFT_IP.defines.v
// Uncomment to enable Tech Library Cells instantiations in // the special function modules (_SPECIAL). `define SOFT_IP_USE_LIBRARY_CELLS //Default Special Library Cells `defineSOFT_IP_SDFFYRPQ2DSDFFYRPQ2D_**//Std cell名稱SOFT_IP_SPECIAL_SYNC2R.v
`include "SOFT_IP.defines.v" `timescale 1ns/10ps module SOFT_IP_SPECIAL_SYNC2R ( CK , // Synchronizing clock R , // Input asynchronous reset signal - POSITIVE active D , // Input asynchronous data signal Q // Synchronized output data signal ); input CK ; input R ; input D ; output Q ; //----------------------------------------------------------------------------- // Instantiation of the library synchronizer cell //----------------------------------------------------------------------------- `ifdef SOFT_IP_USE_LIBRARY_CELLS `SOFT_IP_SDFFYRPQ2D SYNC ( .CK(CK), .D(D), .R (R), .SI(1'b0), .SE(1'b0), .Q(Q) ); `endif //----------------------------------------------------------------------------- // RTL code for the synchronizer //----------------------------------------------------------------------------- `ifndef SOFT_IP_USE_LIBRARY_CELLS reg SYNC1, SYNC2; always @(posedge CK or posedge R ) if (R == 1'b1) SYNC1 <= 1'b0; else SYNC1 <= D ; always @(posedge CK or posedge R ) if (R == 1'b1) SYNC2 <= 1'b0; else SYNC2 <= SYNC1; assign Q = SYNC2; `endif endmodule //----------------------------------------------------------------------------- // End of logic //-----------------------------------------------------------------------------
審核編輯:湯梓紅
-
寄存器
+關(guān)注
關(guān)注
31文章
5268瀏覽量
119646 -
接口
+關(guān)注
關(guān)注
33文章
8355瀏覽量
150517 -
Verilog
+關(guān)注
關(guān)注
28文章
1335瀏覽量
109847 -
時(shí)鐘
+關(guān)注
關(guān)注
10文章
1700瀏覽量
131182
原文標(biāo)題:如何高效替換Soft IP中的標(biāo)準(zhǔn)cell
文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論