ARM的memory Compiler总结

Memory的结构

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

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

ARM的memory Compiler总结_第1张图片

 可以看到每个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的,如下图这样。但上述结论是一致的。

ARM的memory Compiler总结_第2张图片

 

Memory Compiler的使用

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

1、MUX值

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

ARM的memory Compiler总结_第3张图片

2、尺寸限制 

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

ARM的memory Compiler总结_第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

ARM的memory Compiler总结_第5张图片

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

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

ARM的memory Compiler总结_第6张图片

 

你可能感兴趣的:(SoC设计)