原创文章
latch(锁存器),电路图结构如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/088283d6cbca41578e8f847d8f42508c.png)
当 E = 1 时,latch直传(transparent),D端信号的变化会即时反应在Q端;
当 E = 0 时,latch关断(closed),Q端保持关断瞬间D端的值。
设计中使用Latch的好处是,相比寄存器的面积更小,功耗更低,可以从后级电路进行time borrowing,更容易满足setup time,然而坏处是STA分析不会那么直接,下面我们就看看引入了Latch的Timing Path如何分析。
Timing borrowing
![加入锁存器的电路图](https://img-blog.csdnimg.cn/0692195d704a40d18045945ef2105aa9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I2o54S2,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/1116eb023c394b319ce8610ad319ea91.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I2o54S2,size_20,color_FFFFFF,t_70,g_se,x_16)
由于锁存器在半个始终周期内直通,所以说数据到达的是时间约束更加宽了,但是这样就会导致锁存器数据传到触发器时,数据保持稳定的时间变少,那么后面的逻辑延迟就要减小。这样便是timing borrowing.(这是初学小白自己的理解,如有错误希望各位大佬指正)。
Look up latch
为了完成DFT工作,芯片内部需要插入扫描链,会将不同时钟域的寄存器串联起来。
未加入Look up latch的电路图和时序图
![](https://img-blog.csdnimg.cn/f73f9bfe31144a80bdbc475adb70ef26.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/92f01e01219141df92663d0ad9783bd5.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I2o54S2,size_20,color_FFFFFF,t_70,g_se,x_16)
由于时钟不同,所以CLK1与CLK2之间存在skew,可大可小,所以FF1.CLK1—FF1.Q—FF2.SI这段延时比skew小,造成hold timing违例。
加入Look up latch后的电路图和时序图
![](https://img-blog.csdnimg.cn/e6412a5a35dc4876b1840a13e9784e72.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/da1b8a4aeb314a1683500bf1a79eac2a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6I2o54S2,size_20,color_FFFFFF,t_70,g_se,x_16)
latch可以修后面寄存器hold的原因是,修hold可以增加数据路径上的延迟,所以当插入可以增加部分延迟,并且插入latch后,由于timingborrow,后面寄存器的capture提前了半个周期也有利于hold修复。