前言
我们在实际设计中可能会碰到这种情况,如果我们的memory最高只能工作到800Mhz频率,但是我们却让它工作在1Ghz的频率,这时就会出现min period的violation。
一、什么是 min period?
Min period也就是最小时钟周期,是DRV检查的一种。Min period用于检查时钟电路是否达到了预期的工作频率。例如min period1.25代表着到达memory的CLK pin的所有clock需要至少1.25ns周期,如果不满足该条件的话,工具会显示violation。
二、为什么检查 min period?
以一个常见的六管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中的每一bit储存在由四个场效管(M1,M2,M3,M4)组成2个交叉耦合的反相器中。此外2个场效管(M5,M6)是储存基础模块到用以读写能力基准线(BitLine)的自动开关。
min_period是为了给sram的bitline进行预充电留足时间,如果两次读间隔period太近,那么第二次读就不能正确读出。
三、如何设置 min period?
min_period 在RAM 的lib 里定义为index 是CLK pin transition 的一张一维表,min period的阈值是通过库文件查询得到的。
上图是一个RAM的CLK pin的min period的库文件信息。从中可以看出,min period的阈值与transition有关。并且不同的sdf_cond也会对应不同的查找表,也就是说相关pin的case值会影响min period的阈值。
四、如何检查 min period?
如下电路图所示,我们想要计算ram0的clock pin的min period check,采用report_min_period -path_type full_clock_expanded [get_pin ram0/CLK],得到下面path路径slack。
在PrimeTime中,用report_min_period命令可以得到如下min period的report结果。
另外,如果想要报出所有的min period violation可以使用report_min_period -all_violators命令。
五、如何修复 min period?
- 检查是否有比较大的transition, 因为transition影响min period的阈值,减小transition有利于min period;
- 检查是否有串扰。消除串扰有利于min period。
如果尝试以上方法依然meet 不了clock min period 的需求,说明memory 选型时可能考虑不周全,可以尝试换low VT 的memory。
总结
在memory 选型的时候,clock min period 是一个重要指标,需要根据电路实际的工作频率, clock 的uncertainty, Crosstalk, 工艺的Variation 来选定。在IC设计时,如果设计频率为1Ghz,那么sram选型min_period必须小于1ns,同时后端会对设计的SRAM的min_period提出过约要求,一般为过约15%,即要求min_period 为0.85ns才符合实际要求。