我們在購買soft IP的時候,vendor提供的是通用的verilog/system verilog的代碼,而在不同的項目中,我們采用的工藝不一樣,因此所需的memory 和同步cell不一樣。通用的soft IP是如何便捷的替換memory和標準std cell的呢?
case0:小規模的afifo/fifo和ram 會用寄存器搭建的方式實現
小規模的afifo/fifo和ram使用寄存器搭建,不需要替換。
不同IP對資源的敏感度不一樣,因此多大規模的fifo/ram能夠使用reg實現依賴于IP的類型和應用場景。例如在高速以太IP和PCIe中,8x16 的fifo就屬于小規模,如果例化次數比較少,使用寄存器搭建是可以接受的。
case1:大規模的ram 在外部實現,IP 會透露出讀寫接口
例如在IP的頂層io上會出現類似如下接口:
wclk/wr/wdata/waddr
rclk/rd/rdata/raddr
case2:底層2級/3級同步器手動替換
Soft IP 內部如果存在跨時鐘設計,通常會使用2級/3級同步器,soft ip如何沒有提供便捷的替換方式,則需要使用者手動替換,例如soft IP代碼多次調用2級同步器模塊soft_ip_synchronizer.v。
為了使用工藝匹配的2級同步器cell,需要新建一個soft_ip_synchronizer.v,在filelist中將路徑指向新建的soft_ip_synchronizer.v,新soft_ip_synchronizer.v接口與soft IP使用的接口保持一致,且在soft_ip_synchronizer.v中調用項目使用的base_ip_bit_sync.v, base_ip_bit_sync調用了制造工藝匹配的同步器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 內部如果存在clk gate模塊,clk mux,多級同步器等特殊定制的cell時,通常需要替換成工藝對應的cell,部分soft IP支持define方式指定cell 如下所示:
1:Soft IP所有的Verilog/system Verilog文件都調用了SOFT_IP.defines.v 在module之前`include "SOFT_IP.defines.v",見SOFT_IP_SPECIAL_SYNC2R.v文件,且在例化2級同步器時使用了調用define名稱SOFT_IP_SDFFYRPQ2D的方式: `SOFT_IP_SDFFYRPQ2D SYNC ( .CK(CK), .D(D), .R (R), .SI(1'b0), .SE(1'b0), .Q(Q) );
2:新建一個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 //-----------------------------------------------------------------------------
審核編輯:湯梓紅
-
寄存器
+關注
關注
31文章
5425瀏覽量
123512 -
接口
+關注
關注
33文章
8961瀏覽量
153275 -
Verilog
+關注
關注
29文章
1366瀏覽量
111912 -
時鐘
+關注
關注
11文章
1886瀏覽量
132892
原文標題:如何高效替換Soft IP中的標準cell
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
[原創]NEMA標準三相異步高效電機
Matlab的cell數組的問題
Megwizard與Qsys中 PCIE IP的區別
IP definition not found for VLNV: xilinx.com:ip:axi_vdma:6.2 ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors.要如何解決呢
cell 延遲計算基礎
in-cell panel_In-Cell觸摸屏原理

IP 數據表: 1.8V Standard Cell for TSMC 28nm HPC+

IP 數據表: 3.0V Standard Cell for TSMC 40nm LP

IP 數據表: 1.8V Standard Cell for TSMC 28nm HPC+

IP 數據表: 3.0V Standard Cell for TSMC 40nm LP

評論