ARM的memory Compiler总结

Memory的结构

ASIC中用到的memory一般是通过memory compiler生成的,生成一个mirco最终放到芯片的版图上。

生成的memory结构如下图所示:

 可以看到每个bit是独立的一个小矩形块,矩形块的行数是r,列数是m,r*m即为ram的深度。例如,一个字宽4bit、字长1024的ram,其r*m即为1024.

其中m代表Multiplexer,一般取值4/8/16/32. 在ram字宽、字长确定的情况下,m的值决定了整个ram micro的形状。例如,m从4变为16,则每个bit的小矩形块的列数就从4变为16,总深度不变的情况下,行数会变成原来的1/4,小矩形块会变得更宽、更矮,整个ram micro的形状也会变得更宽、更矮。

 

上述是举例的最简单的single-bank情形,实际往往是多个bank的,如下图这样。但上述结论是一致的。

 

Memory Compiler的使用

ARM的memory compiler大家一般都用过,下面主要分析部分容易混淆的细节。

1、MUX值

MUX值就是上节提到的Multiplexer width,又称地址低位译码尺寸,深度要求是Muliplexer width的倍数。

2、尺寸限制 

为了加快读写,RAM阵列一般分为多个bank和slice,若是两个bank,两个slice,所以地址必须是(Muliplexer width * 4)的倍数

记住以下结论:

  • 字长*字宽=行数*列数
  • 行数=字长/MUX
  • 列数=字宽*MUX
  • MUX越大,行数越少,列数越多,micro尺寸越矮、越宽

补充说明:

    最近用到TSMC 28nm的compiler工具,它生成的mem尺寸刚好跟SMIC 40nm的尺寸相反,即字长对应了列数、字宽对应了行数。所以,使用不同厂家提供的工具时,要注意区别。但是上述结论都是统一的。

 

ARM的ram compiler支持的RAM array的尺寸是有限的,最大能生成256行和320列的array(UG里面说的是Rmax=512,Cmax=576,但实际并不是这样)

那么,

MAX Number of words = MAX Number of rows * Muliplexer width = 256 * Muliplexer width

例如,Muliplexer width=4时,最大字数为256*4=1024

MAX Number of bits = MAX Number of columns / Muliplexer width = 320 / Muliplexer width

例如,Muliplexer width=8时,最大字宽为320/8=40

 

  • 22
    点赞
  • 193
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值