讲讲Latch的功能?Timing Path如何分析?

latch功能
latch的电路结构如下图:
latch电路结构
当 e = 1 时,latch直传(transparent),d端信号的变化会即时反应在q端;
当 e = 0 时,latch关断(closed),q端保持关断瞬间d端的值。
设计中使用latch的好处是,相比寄存器的面积更小,功耗更低,可以从后级电路进行time borrowing,更容易满足setup time,然而坏处是sta分析不会那么直接,下面我们就看看引入了latch的timing path如何分析。
time borrowing
在数字设计中,经常会碰到如下图所示的path,两个寄存器(uff0和uff1)之间存在一个锁存器(ulat1),这种情况工具会怎么分析path呢?不同sta工具的行为会有稍微的区别,我们先以pt传统的分析方法来解释。
加入latch后的电路图
time borrowing示意图
根据latch的特点,在clkn为高电平时,ulat1是transparent,ulat1/d端的数据能即时地反映在ulat1/q端。上图中的情况是,uff0->ulat1/d的path delay使得ulat1/d数据在clkn的上升沿之后才到达,需要从后一级ulat1->uff1中借了1.81ns,使得原本违例的path满足了要求,而ulat1->uff1的timing path即使借出去1.81ns,也能够满足要求,具体的timing report如下:
uff0->ulat1的timing path
ulat1->uff1的timing path
这里需要指出的一点是,在计算setup timing的时候,在uff0->ulat1中,ulat1的clock path是按照early/min模式计算的,而在ulat1->uff1中,ulat1的clock path是按照late/max模式计算的,有一部分公共路径的crpr是不会被排除掉的,所以现在的pt引入了一种新的latch timing分析的模式,它把latch当成一个组合逻辑,在分析uff0->uff1的path时可以穿过ulat1,这里只提示一下可以通过下面这个选型来打开,从而可以减少悲观度:
set_app_var timing_enable_through_paths true这种模式下,latch的d pin只能作为endpoint,不能作为startpoint,所以在report_timing的时候也要注意是用-to还是-through的区别:
report_timing -to $latch_d_pinreport_timing -through $latch_d_pin需要注意的是,这种through模式只是针对setup,对hold分析还是保持不变。下面接着看一个用latch来解决跨时钟域hold timing问题的应用。
lockup latch in scan chain
为了芯片测试的需要,我们会用scan chain的方式将绝大部分的寄存器串链起来,在不影响功能的情况下,以简单的方式测试电路中寄存器的良率。但是存在一种情况,前后相邻的两级寄存器如果时钟不一样(跨时钟域),如下图所示:
加入lockup latch之前的电路图
由于clk1和clk2为不同的时钟域,很难保证他们同步,假如clk2相比clk1有一段不确定的延迟tskew,可大可小,那么很有可能ff1/clk1->ff1/q->ff2/si这段延时tdata会比tskew小,造成hold timing违例。
加入lockup latch之前的hold timing时序图
上一节提到latch有time borrowing的功效,假如在两级寄存器之间加入一个latch,结构如下图所示:
加入lockup latch之后的电路图
clk1低电平的时候,lockup latch是transparent,clk1高电平的时候lockup latch一直保持上一拍的数据,这样即使clk2有延迟,只要不超过clk1高电平持续时间,就能保证hold timing没有问题。
加入lockup latch之后的hold timing时序图
在dc中可以很方便的实现这一功能,具体会在rtl2gds微信公众号的综合/dft教程中详细介绍。
clock gating check
latch的另一个应用是作为门控时钟单元(clock gating cell),通过避免部分寄存器不必要的时钟翻转,可以极大地节省电路的动态功耗。实际应用中,为了避免出现毛刺,会在latch后面添加一个与门组成一个icg(integrated clock gating)。
icg电路结构
由于icg是用在clock path上,sta工具默认会要求做clki到en端的clock gating check,目的是保证时钟使能的时序满足要求,所以会存在reg2icg的path。因为icg的clock会比reg的clock delay要短,所以天然存在一个skew对setup不利,特别是假如有多级的icg级联,更加加重了这种情况。在设计上,需要保证reg2icg的数据路径不能太复杂,否则物理实现会存在困难。
在cts之前,由于clock tree是ideal的,考虑不到这种skew的不利影响,所以往往需要通过sdc命令set_clock_gating_check人为地设置,让综合或者布局工具提前认识到这一点并提前优化。
需要注意的是,不仅仅icg需要clock gating check,如果clock path上存在与门、或门等逻辑也需要进行clock gating check。

成品手机出货前需利用音圈电机对触摸屏进行测试
全球晶圆代工将在2022年产值达746.6亿美元
区块链如何互联网赋能
两会热议特高压发展 华中特高压交流环网应提上日程
区块链中的共识机制是什么
讲讲Latch的功能?Timing Path如何分析?
金溢科技智慧隧道一体化解决方案赋能交通数智升级
医院后勤智能管理云平台解决方案
工信部发布2019年通信业统计公报
组键家庭影院最常面临的那些小问题 教你如何轻松解决
华为畅享系列又添新机:畅享7 Plus价格完美,720P分辨率差点意思
便携式真空度测试仪的简介
最好的PCB防潮方法是什么?
信号滤波在PLC控制系统的使用 轧线张力控制的实现方法
半导体设备商疯并购 或成三强鼎立局面
中国LCD面板性价比高 LG电子或将把更多订单交给京东方
基本绝缘和附加绝缘介绍
2020年9月发布的3款iPhone都将搭载5G基带芯片和OLED显示屏
微软推送Windows 10 build 19603 编译版本 引入面向Linux子系统的文件资源管理器集成
维谛技术Vertiv:打造多元UPS产品 满足用户差异化需求