1、插scan chain时的lockup cell
Lockup-Latch是DFT扫描链缝合阶段专用的电平锁存单元,主要用于解决跨异步时钟域扫描链在Shift移位模式下的Hold时序违例。
芯片功能工作时,不同异步时钟域的寄存器无数据交互,无需时序检查。但DFT为了优化扫描链数量、提升ATPG测试覆盖率,会将不同时钟域、甚至不同触发沿的寄存器串联至同一条扫描链。由于异步时钟没有公共时钟路径、未做时钟树平衡,CTS后会存在极大时钟偏斜,导致Shift移位过程中前级数据更新过快、后级来不及保持,产生大量真实Hold违例,造成ATE测试移位出错。相比于插入大量Buffer修Hold,Lockup-Latch可直接提供半个时钟周期的保持余量,面积与时序效率更高。
在scan-shift修复跨时钟域hold违例时,绝大多数情况(前后级寄存器均为上升沿扫描触发器) 使用负锁存器(低电平透明)作为Lockup-Latch,时钟连接前一级寄存器时钟,在时钟高电平时锁住数据、下降沿之后才放行数据,获得半个时钟周期的hold余量。特例:当扫描链两端全部是下降沿negedge触发器时,DFT工具会插入正锁存器(高电平透明)。Lockup-Latch时钟始终取自前级发射时钟。
在STA时序分析中,工具会默认将其当作普通Latch做常规时序检查,产生大量虚假Hold违例。一般在func sdc中会把lockup cell list设为false path。后仿真中会专门读取lockup cell list,关闭虚假路径时序检查。
2、正锁存器和负锁存器
锁存器是电平触发的存储单元,根据透明电平不同,分为正锁存器(高电平透明)和负锁存器(低电平透明),二者电路结构相似,但透明窗口、锁存边沿、时序参考基准完全不同,是数字时序分析的基础考点。
正锁存器在时钟高电平期间透明,输出Q实时跟随输入D变化;当时钟变为低电平、下降沿到来时,窗口关闭,锁存当前数据并保持不变。因此,正锁存器的建立、保持时间均以时钟下降沿为参考基准。高电平透明窗口较长时,路径可充分利用电平区间完成数据传输,具备典型的时间借用特性。
负锁存器在时钟低电平期间透明,输出跟随输入变化;时钟变为高电平、上升沿到来时关闭窗口、锁存数据。因此,负锁存器的时序检查以时钟上升沿为参考基准。DFT扫描链中使用的Lockup-Latch几乎全部为负锁存器,利用反向时钟产生半个周期延时,专门修复跨域扫描链的hold违例。
对于前后级都是上升沿触发寄存器的时序路径,负锁存器可以修hold;作为类比,这种情况下,正锁存器可以修setup(把采样窗口拉长了半个周期)。
152