今天在此总结下关于为什么sram中有个min\_period的check。
min\_pulse\_width
首先,min\_pulse\_width, 是检查时序逻辑中clock信号的高电平与低电平的宽度是否超过了规定的最窄宽度。
对于这个check,是不能够忽略的。理论上必须fix。但是由于在signoff是会加一些derating,uncertainty, 以及各种corner,因为存在一定的margin,所以,如果有违例,但是芯片回来却没有问题,也不必惊讶,那是因为这些违例尚在margin的覆盖范围之内。
强烈建议不要带着mpw违例进行signoff,而如果必须如此,需谨慎评估风险。
min\_period
既然有了min\_pulse\_width, 为什么对于sram,还有个min\_period的check?
这个要从sram的原理说起。
六管sram bitcell
对于一个常见的六管sram为例。
那么,对于这个bitcell的读取过程如下:
假定存储的内容为1, 即在Q处的电平为高. 读周期之初,两根位线预充值为逻辑1, 随后字线WL充高电平,使得两个访问控制晶体管M5与M6通路。第二步是保存在Q的值传递给位线BL在它预充的电位,而泻掉(BL非)预充的值,这是通过M1与M5的通路直接连到低电平使其值为逻辑0 (即Q的高电平使得晶体管M1通路). 在位线BL一侧,晶体管M4与M6通路,把位线连接到VDD所代表的逻辑1 (M4作为P沟道场效应管,由于栅极加了(Q非)的低电平而M4通路). 如果存储的内容为0, 相反的电路状态将会使(BL非)为1而BL为0. 只需要(BL非)与BL有一个很小的电位差,读取的放大电路将会辨识出哪根位线是1哪根是0. 敏感度越高,读取速度越快。
简单来说,SRAM在读取之前需要对BL BLB进行预充电(precharge), 然后打开WL,然后BL,BLB才是被送入sense amp进行比较。
再来看时序图。
时序图
当sram读取之后,BL/BLB需要再次重新进行预充电,以便进行下一次读取。
那么这个min period,就是SRAM本身的delay(CLK->RD)再加上BL/BLB预充电的时间。
因此回到最初的问题。
为什么sram有个min\_period的check。
答案是为了给sram的bitline进行预充电留足时间。
鸣谢
感谢群中好友陈锋, Antenna的解答。
附件
SRAM的操作
SRAM的基本单元有3种状态:standby (电路处于空闲), reading (读)与writing (修改内容). SRAM的读或写模式必须分别具有"readability"(可读)与"write stability"(写稳定).
Standby
如果字线(Word Line)没有被选为高电平, 那么作为控制用的M5与M6两个晶体管处于断路,把基本单元与位线隔离。
由M1 – M4组成的两个反相器继续保持其状态,只要保持与高、低电平的连接。
Reading
假定存储的内容为1, 即在Q处的电平为高. 读周期之初,两根位线预充值为逻辑1, 随后字线WL充高电平,使得两个访问控制晶体管M5与M6通路。
第二步是保存在Q的值传递给位线BL在它预充的电位,而泻掉(BL非)预充的值,这是通过M1与M5的通路直接连到低电平使其值为逻辑0 (即Q的高电平使得晶体管M1通路).
在位线BL一侧,晶体管M4与M6通路,把位线连接到VDD所代表的逻辑1 (M4作为P沟道场效应管,由于栅极加了(Q非)的低电平而M4通路).
如果存储的内容为0, 相反的电路状态将会使(BL非)为1而BL为0.
只需要(BL非)与BL有一个很小的电位差,读取的放大电路将会辨识出哪根位线是1哪根是0.
敏感度越高,读取速度越快。
Writing
写周期之初,把要写入的状态加载到位线。
如果要写入0,则设置(BL非)为1且BL为0。
随后字线WL加载为高电平,位线的状态被载入SRAM的基本单元。
这是通过位线输入驱动(的晶体管)被设计为比基本单元(的晶体管)更为强壮,使得位线状态可以覆盖基本单元交叉耦合的反相器的以前的状态!
附:STA教程分享
作者:白山头
来源:https://mp.weixin.qq.com/s/2r...
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。