实际底层的RAM尺寸到底是多少呢?就是32x119吗?

电子说

1.3w人已加入

描述

在ASIC设计中,我们使用FIFO或者RAM的时候经常会用到校验位,例如奇偶校验或者ECC(海明码)校验,当然,也有可能不使用任何校验位。那么我们需要一个深度为32,数据位宽为119bit的ram(cfg_32x119_ram_wrapper),那么实际底层的ram尺寸到底是多少呢?就是32x119 吗?大概率不是。   

1.一个ram wrapper可能是拼接而成的

RAM的位宽和深度不是任意的,是根据设计人员的需求,然后由工具产生相应的ram。我们需要的是32x119的ram,实际分配给设计人员的可能是两个32x64的ram,深度和宽度都可能存在冗余。Ram的产生通常有两种方式,由设计人员或者中端人员提供ram信息列表。至少包含如下信息:Memory生成工具会根据实际需要的位宽,深度,读写时钟频率才进行决策,产生相应的Memory。

RAM_NAME RAM_TYPE DEPTH WIDTH ECC/PARITY Wclk_freq Rdclk_req
afifo_16x72_wrapper 1r1w 16 72 1 1200 1000

一颗大的ram可能是有多个小的ram拼接起来的。在布局布线时,多个小的方形的ram大概率会比长条形状的ram更容易摆放(不绝对)。

         FIFO存储

2.ram/fifo 校验位需要额外的数据位宽   

FIFO存储

如图所示为1r1w的ram为例,cfg_32x119_ram_wrapper为verilog代码直接调用层次的ram_wrapper,表示了一个深度为32,数据位宽为119bit的ram。ram_asic.v为真实的ram IP。其中119bit的数据位宽紧张ECC计算需要7bit的校验位,因此物理IP最少需要126bit的ram IP。通常memory产生工具会更具时钟频率,深度位宽等因素对ram进行切分,因此本例中,使用了2个32x64的ram ip。

在data_in写入ram_asic模块之前,会经过ecc_gen模块,产生7bit的ecc校验位,随着数据一同写入ram_asic,其中data_in[63:0]写入第一个ram_asic,{2’b0,ecc_in[6:0],data_in[118:64]}写入第二个ram_asic。从ram_asic读出的数据会经过ecc_out模块经过ecc校验,输出校验后的data_out[118:0]和2bit的ecc_err_out告警。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分