ICG結構知識
ICG timing check 的瓶頸
在不人工干預的情況下,tool默認會嘗試把reg1的CK pin和Reg2的CK pin做平。但是靜態時序分析時,reg1→ICG也會做時序check;所以,ICG會天然存在一個很大的clock skew,導致建立時間違例。
如何解決呢?
在place階段,在ICG的CK pin設置一個負的latency,這個負的latency的值可以大概等于CTS之后T3的delay大小;這樣就可以讓tool在給reg1的CK pin的樹長識別時,會盡力將T1(即reg1的launch path)做短至少T3(ICG→reg2的時鐘樹長度)的大小。
Place階段工具也會考慮時鐘樹skew引入的時序問題,讓某些cell盡可能的靠近和不要在path上過多插入delay。
Innovus命令:
set_cloCK_latency -0.300 [get_pins ICG/CK]
在CTS階段,在Reg1的CK pin上設置一個insert delay,這就是所謂的floating pin,這個insert delay的值大概也等于CTS后T3(ICG→reg2的時鐘樹長度)的大小。
Innovus命令:
set_ccopt_property insertion_delay 0.300 -pin reg1/CK
在timing path中為何ICG的delay跟一個組合邏輯似的
如下圖所示,ICG在reg2icg的timing path中只體現一個組合邏輯的delay。其實icg就是一個組合邏輯。
芯片工作時,時鐘電平本身一直在高低變化,因為晶振不會停止振動;但ICG的ENABLE信號是固定在高電平1(開啟模塊時鐘)或者低電平0(關斷模塊時鐘)。
ICG的兩個輸入端一個是ENABLE信號,一個是clock信號,因為ENABLE的電平是固定的(例如固定在高電平1),所以每個時鐘周期內鎖存器向后面輸出的信號一直是固定的(信號電平等于ENABLE 信號電平),ICG的delay大概就是一個鎖存器環路的delay(結合鎖存器結構一看便知)。
為何在timing path中ICG一般不體現timing borrow
ICG可以是latch + AND組成;或reg + AND組成。肯定要用一個時序器件,因為ICG的ENABLE信號是上一級reg產生的,這樣就和ICG組成了兩級同步電路,可以規避亞穩態的風險。
為什們ICG一般用latch + AND組合,而不是reg + AND組合呢?我個人理解,一方面latch的面積更小,功耗更低;另一方面,ICG上很容易有建立時間違例,latch有半個時鐘周期的timing borrow可以用,可以作為ICG時序瓶頸的“緊急鑰匙”。
那為什么ICG 的timing borrow一般不打開呢?因為如果打開了,ICG就由邊沿觸發check變成電平觸發check,采集到亞穩態的概率增大,可能導致clock信號不穩定,影響電路狀態。
在INNOVUS中怎么打開ICG timing check的timing borrow:
-
鎖存器
+關注
關注
8文章
908瀏覽量
41642 -
同步電路
+關注
關注
1文章
60瀏覽量
13348 -
時鐘樹
+關注
關注
0文章
55瀏覽量
10814 -
CTS
+關注
關注
0文章
35瀏覽量
14145
發布評論請先 登錄
相關推薦
評論