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
在數(shù)字設計中,經(jīng)常會碰到如下圖所示的Path,兩個寄存器(UFF0和UFF1)之間存在一個鎖存器(ULAT1),這種情況工具會怎么分析path呢?不同STA工具的行為會有稍微的區(qū)別,我們先以PT傳統(tǒng)的分析方法來解釋。
加入Latch后的電路圖
Time Borrowing示意圖
根據(jù)Latch的特點,在CLKN為高電平時,ULAT1是transparent,ULAT1/D端的數(shù)據(jù)能即時地反映在ULAT1/Q端。上圖中的情況是,UFF0->ULAT1/D的Path Delay使得ULAT1/D數(shù)據(jù)在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是不會被排除掉的,所以現(xiàn)在的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的區(qū)別:
report_timing -to $latch_d_pin
report_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時序圖
上一節(jié)提到Latch有time borrowing的功效,假如在兩級寄存器之間加入一個latch,結構如下圖所示:
加入Lockup latch之后的電路圖
CLK1低電平的時候,Lockup Latch是transparent,CLK1高電平的時候Lockup Latch一直保持上一拍的數(shù)據(jù),這樣即使CLK2有延遲,只要不超過CLK1高電平持續(xù)時間,就能保證hold timing沒有問題。
加入Lockup latch之后的hold timing時序圖
在DC中可以很方便的實現(xiàn)這一功能,具體會在RTL2GDS微信公眾號的綜合/DFT教程中詳細介紹。
Clock Gating Check
Latch的另一個應用是作為門控時鐘單元(Clock Gating Cell),通過避免部分寄存器不必要的時鐘翻轉,可以極大地節(jié)省電路的動態(tài)功耗。實際應用中,為了避免出現(xiàn)毛刺,會在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級聯(lián),更加加重了這種情況。在設計上,需要保證REG2ICG的數(shù)據(jù)路徑不能太復雜,否則物理實現(xiàn)會存在困難。
在CTS之前,由于clock tree是ideal的,考慮不到這種skew的不利影響,所以往往需要通過SDC命令"set_clock_gating_check"人為地設置,讓綜合或者布局工具提前認識到這一點并提前優(yōu)化。
需要注意的是,不僅僅ICG需要clock gating check,如果clock path上存在與門、或門等邏輯也需要進行clock gating check。
-
寄存器
+關注
關注
31文章
5325瀏覽量
120052 -
鎖存器
+關注
關注
8文章
905瀏覽量
41448 -
STA
+關注
關注
0文章
51瀏覽量
18945 -
SDC
+關注
關注
0文章
48瀏覽量
15528 -
CLK
+關注
關注
0文章
127瀏覽量
17129
發(fā)布評論請先 登錄
相關推薦
評論