SRAM基础结构
SRAM是静态随机存取存储器。我们常用的memory就是SRAM。
常见的SRAM的基础单元是六管结构(六T结构)(六个晶体管组成bit cell,多个bit cell组成memory array)。如图中的M1、M2、M3、M4、M5、M6。SRAM中的每一bit数据存储在由4个场效应管(M1,M2,M3,M4)构成的两个交叉耦合的反相器中。另外两个场效应管(M5,M6)是存储基本单元到用于读写的位线(Bit Line)的控制开关。另外字线WL是控制bit cell的读入和写出的通路的。
具体结构简化示意如下:
SRAM的基本工作原理
SRAM的基本单元有3种状态:standby(电路处于空闲),reading(读)和writing(写)。
SRAM不与外界交互时,WL字线置0,M5和M6都是NMOS管,此时都断开;由M1、M2、M3、M4组成的锁存器电路接续保持原来的电路状态。
写入数据稳定后,WL字线置1,M5和M6打开,假设预存的是数据1,此时内部的锁存器开始通过M5和M6向外部放电。
由于单元管的尺寸很小,而位线通过单元管放电的速度很慢,为了提高读出速度,只要在位线上建立起一定的电压差就可以了,而不必等到一边位线下降到低电平。通过列译码器控制的列开关,把选中的单元位线读出的微小信号差送到公共数据线,再通过公共数据线送到差分放大器,把微小的信号差放大为合格的高低电平,最后通过缓冲器转换成单端信号输出。
写周期之开始前,要写入的数据load到位线上。如果要写入1,则设置^BL为0且BL为1。随后字线WL加载为高电平,位线的状态被传递到SRAM的bit cell。一般M1和M5两个晶体管会选用驱动能力更强的晶体管,以便使得BL上的信号可以覆盖6T结构中两个反相器之前的状态。SRAM的bit cell经常会做成阵列结构,多个存储单元共用一根字线WL。
SRAM的常见接口
一个可操作控制的SRAM通常具有丰富的接口控制,如下是一个T家的常见SRAM接口示意图。
可以看到这里的接口控制管脚,远远多于简单的memory array的控制需求,具体每一个管脚的配置用途详见下表。
SRAM接口部分参考自如下链接,作者“艾思芯片设计”:
https://blog.csdn.net/i_chip_backend/article/details/121662466
1、根据design spec或data-flow决定,根据mem读写逻辑的位置,对称性,IO等因素来决定;
2、考虑macro和位置固定的cell的连接关系,例如某些特殊的cell会bound在IO附近;
3、在先进工艺中对poly的方向、poly的间距以及每个竖列的poly数量有要求;因此memory的orientation等会有限制。
4、一般会在memory四周加一些placement halo,应该是主要是担心外部standard cell和macro本身的物理DRC规则检查不一致,规避潜在DRC;另外应该就是不要让standard cell靠macro太近从而抢占routing source和供电电流。
5、一般会在memory四周加一些routing blockage,因为memory的IO pin非常多,需要较多绕线资源;
6、使macro以外的空间尽可能四方开阔;
7、Memory之间是否需要留space:如果channel间想摆放cell,要确保memory之间有对应的power srap,否则会导致rail floating。留大了浪费面积,留小了导致绕线资源不足,rail floating等问题;
8、有的soc会对memory进行串链操作,例如SD链,从而节省功耗,这些链路会用到always-on BUFFER,需要留足channel空间以便相关cell能放的进去。
9、Channel中尽可能不要摆放寄存器,一是引起绕线问题;二是clock latency会很长,影响cts优化;三是后期如果有IR drop等问题,修复起来周围的绕线资源比较有限;