0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何高效替换Soft IP中的标准cell

ruikundianzi 来源:IC的世界 2023-11-09 10:07 次阅读

我们在购买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   )
);
endmodule
Soft 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
endmodule
Case3:特殊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

    文章

    5308

    浏览量

    119975
  • 接口
    +关注

    关注

    33

    文章

    8486

    浏览量

    150804
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109970
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131339

原文标题:如何高效替换Soft IP中的标准cell

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [原创]NEMA标准三相异步高效电机

    CSA认证。    NEMA标准高效三相异步高效电机为全封闭自扇冷却式电机,防护等级为IP54。本系列电机采用B设计,F级绝缘,使用系数1.15
    发表于 09-16 14:30

    Matlab的cell数组的问题

    我把一串数存在cell(1,10)每个cell单元是一个3*2的矩阵我想把每个3*2的矩阵的第一行的两个数取出来放到一个10*2的矩阵
    发表于 02-01 15:15

    Megwizard与Qsys PCIE IP的区别

    新手求助~1.Megwizard与Qsys中都有IP_Compiler for PCIE,请问两者的区别是什么?2.Megwizardsoft ip for PCIE是免费的吗?3
    发表于 07-27 11:05

    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.要如何解决呢

    : xilinx.com:ip:axi_vdma:6.2 ERROR: [Common 17-39] 'create_bd_cell' failed due to earlier errors. while
    发表于 10-06 22:22

    Small Cell是什么?Small Cell的核心技术包括哪些?

    Small Cell是什么?Small Cell的核心技术包括哪些?
    发表于 05-24 06:11

    cell 延迟计算基础

    Delay Calculation Basic1)cell delay 和 interconnect delay2)仅考虑cell delay时,cell的delay由库的模型,根据
    发表于 07-08 17:06

    5 Cell to 10 Cell Li Protecto

    The DS2726 provides full charge and discharge protectionfor 5- to 10-cell lithium-ion (Li+) battery
    发表于 11-25 13:46 18次下载

    什么是Cell

    什么是Cell  英文缩写: Cell 中文译名: 信元 分  类: 解  释: 在异步转移模式(ATM)传送信息时,信息
    发表于 02-22 17:30 3697次阅读

    什么是In-cell及On-cell

    In-cell及On-cell的概念、原理、难点及技术实现。
    发表于 02-06 11:18 1.4w次阅读

    in-cell panel_In-Cell触摸屏原理

    in-cell 将触摸面板功能与液晶面板一体化。包括In-cell方法和On-cell方法。In-cell是指将触摸面板功能嵌入到液晶像素
    发表于 09-06 17:13 4358次阅读
    in-<b class='flag-5'>cell</b> panel_In-<b class='flag-5'>Cell</b>触摸屏原理

    IP 数据表: 1.8V Standard Cell for TSMC 28nm HPC+

    IP 数据表: 1.8V Standard Cell for TSMC 28nm HPC+
    发表于 03-14 19:21 0次下载
    <b class='flag-5'>IP</b> 数据表: 1.8V Standard <b class='flag-5'>Cell</b> for TSMC 28nm HPC+

    IP 数据表: 3.0V Standard Cell for TSMC 40nm LP

    IP 数据表: 3.0V Standard Cell for TSMC 40nm LP
    发表于 03-14 19:22 3次下载
    <b class='flag-5'>IP</b> 数据表: 3.0V Standard <b class='flag-5'>Cell</b> for TSMC 40nm LP

    IP 数据表: 1.8V Standard Cell for TSMC 28nm HPC+

    IP 数据表: 1.8V Standard Cell for TSMC 28nm HPC+
    发表于 07-05 19:47 0次下载
    <b class='flag-5'>IP</b> 数据表: 1.8V Standard <b class='flag-5'>Cell</b> for TSMC 28nm HPC+

    IP 数据表: 3.0V Standard Cell for TSMC 40nm LP

    IP 数据表: 3.0V Standard Cell for TSMC 40nm LP
    发表于 07-05 19:47 0次下载
    <b class='flag-5'>IP</b> 数据表: 3.0V Standard <b class='flag-5'>Cell</b> for TSMC 40nm LP

    Standard cell是怎么应用到我们的后端设计的呢?

    Standard cell标准单元,或者简称cell,可以说是数字芯片后端最基本的概念之一了,甚至可能没有接触过后端的同学也有所耳闻?
    的头像 发表于 12-04 11:44 915次阅读