2、SRAM基础:存储单元结构与读写时序概览

各位同学,今天我们聊聊SRAM。说实话,SRAM是芯片设计里最基础也最容易被忽视的模块。我刚开始做数字后端时,总觉得SRAM不就是个存储嘛,能有多复杂?直到有一次项目里SRAM的读时序出了问题,整个芯片在低温下频繁报错,我才意识到——嗯,这东西真不能小看。

2.1 6T存储单元:SRAM的“细胞”

SRAM的存储单元,业内标准是6个晶体管构成,简称6T单元。为什么是6个?说白了,就是两个CMOS反相器交叉耦合,再加上两个访问管。

我画个简图帮你理解:

6T SRAM存储单元结构 WL(字线) BL BLB M5 M6 M1 M2 M3 M4 Q QB VDD VDD GND GND 访问管 (NMOS) 上拉管 (PMOS) 下拉管 (NMOS)

你看这个结构:M1和M2组成一个反相器,M3和M4组成另一个。两个反相器头尾相接,形成锁存器。M5和M6是访问管,负责连接存储节点和位线。

这里有个关键点——为什么不用4个晶体管?我遇到过有人问这个问题。其实4T单元也有,但漏电太大,静态功耗扛不住。6T的优势在于:交叉耦合结构天然稳定,只要不断电,数据就不会丢。

核心要点:6T单元的本质是「正反馈锁存」。Q和QB永远互为反相,要么Q=1、QB=0,要么Q=0、QB=1。没有第三种状态。

2.2 SRAM读写原理:字线、位线怎么配合

理解了单元结构,读写操作就顺理成章了。说白了,就是字线控制「开门」,位线负责「传数据」。

读操作

读数据时,先把BL和BLB预充到VDD/2(或者VDD,看设计)。然后拉高WL,M5和M6导通。假设存储的是Q=1、QB=0:

  • BL通过M5连接到Q(高电平),BL基本不变
  • BLB通过M6连接到QB(低电平),BLB被下拉

读出放大器检测到BL和BLB之间的电压差,就能判断出存储的是1还是0。

我的经验:读操作最怕的是「读破坏」。如果BLB下拉太快,可能把QB从0拉到1,导致存储数据翻转。我曾在65nm工艺下遇到过这个问题,后来通过调整M5/M6的尺寸比解决了。记住:访问管不能太强,否则会破坏存储节点。

写操作

写操作刚好相反。你要写什么值,就把BL和BLB强行拉到对应电平。比如写1:BL=1、BLB=0。然后拉高WL,强信号通过M5/M6灌入存储节点,强制翻转锁存器的状态。

为什么会这样?因为写操作时,位线的驱动能力远大于存储单元内部的反相器。你想想看,外部写驱动器的尺寸是单元晶体管的几十倍,硬拉也能把状态拉过来。

注意:写操作有个「写入裕度」的概念。如果写驱动不够强,或者WL脉冲太窄,可能写不进去。我建议在仿真时至少留20%的裕度。

2.3 SRAM时序参数概览:这些数字你得记住

好了,原理讲完,咱们看看时序参数。这部分是时序分析的核心,也是流片前最容易出问题的地方。

参数 符号 说明 典型值(65nm)
地址建立时间 tAS 地址在时钟沿前必须稳定的时间 0.5~1.0 ns
地址保持时间 tAH 地址在时钟沿后必须保持的时间 0.2~0.5 ns
时钟到输出时间 tCO 时钟沿到数据输出的延迟 1.0~2.0 ns
写脉冲宽度 tWP 写使能信号有效的最小宽度 1.5~2.5 ns
数据建立时间 tDS 写数据在写使能结束前必须稳定的时间 0.3~0.6 ns
数据保持时间 tDH 写数据在写使能结束后必须保持的时间 0.2~0.4 ns
读周期时间 tRC 连续读操作的最小间隔 2.0~3.0 ns
写周期时间 tWC 连续写操作的最小间隔 2.0~3.0 ns

这些参数里,我最想强调两个:

第一,tCO(时钟到输出时间)。 这个参数直接决定了你的读路径能不能满足建立时间。我曾经在一个项目中,SRAM的tCO比datasheet大了0.3ns,结果后端时序收敛不了,最后不得不降频。所以拿到SRAM模型后,第一件事就是看tCO的min/max值。

第二,tWP(写脉冲宽度)。 这个参数容易被忽略。如果写使能信号太窄,数据根本写不进去。我建议在写时序检查时,把tWP的margin留到30%以上。

避坑指南:我曾经在28nm工艺下遇到一个SRAM的hold time问题。地址信号在时钟沿后变化太快,导致读出了错误数据。后来在地址路径上加了两个buffer才解决。记住:SRAM的hold time要求往往比普通寄存器更严格。

2.4 时序参数之间的关联

这些参数不是孤立的。举个例子:

  • 读操作:tRC ≥ tCO + 下一级寄存器的建立时间 + 路径延迟
  • 写操作:tWC ≥ tWP + tDS + 时钟偏斜

说白了,时序分析就是算一笔账——数据从哪出发,经过什么路径,什么时候到达,能不能在规定时间内稳定下来。

我个人习惯在做时序分析时,先把SRAM的timing arc画出来。就是每个输入到每个输出的延迟路径,标清楚是上升沿触发还是下降沿触发。这样后面做STA时,一眼就能看出哪条路径可能出问题。

好了,SRAM的基础就讲到这里。记住6T单元的结构、读写原理、以及那几个关键的时序参数。下一节我们会深入SRAM的读时序,看看地址、时钟、数据之间到底怎么配合。


公众号:蓝海资料掘金营,微信deep3321