2、SRAM基础:存储单元结构与读写时序概览
各位同学,今天我们聊聊SRAM。说实话,SRAM是芯片设计里最基础也最容易被忽视的模块。我刚开始做数字后端时,总觉得SRAM不就是个存储嘛,能有多复杂?直到有一次项目里SRAM的读时序出了问题,整个芯片在低温下频繁报错,我才意识到——嗯,这东西真不能小看。
2.1 6T存储单元:SRAM的“细胞”
SRAM的存储单元,业内标准是6个晶体管构成,简称6T单元。为什么是6个?说白了,就是两个CMOS反相器交叉耦合,再加上两个访问管。
我画个简图帮你理解:
你看这个结构: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