今天來聊一聊時鐘樹。首先我先講一下我所理解的時鐘樹是什么,然后介紹兩種時鐘樹結構。
時序器件傳遞信號的時候需要依賴時鐘,而STA一項關鍵的檢查就是不能有setup/hold violation。如果對于同一時鐘域的兩個時序器件,如果他們接收到的時鐘之間有相位差,有可能會使setup/hold更難滿足,如果產生violation,芯片就會發(fā)生邏輯錯誤。
而時鐘從時鐘源到sink是需要一定的傳播時間的,距離時鐘源越遠的器件傳播時間越長。
有的時候data的傳播方向和clock的傳播方向相同,如果不做任何時鐘樹處理,這種情況對setup有好處;有的時候data傳播方向與clock傳播方向相反,這就對hold有好處;而如果電路中存在反饋回路,那data傳播方向就不確定。
所以為了能使上述所有情況都有一個較好的時鐘性能,我們會希望時鐘到達每個時序器件的時間一樣,也就是傳播時間的差(skew)越接近0越好。時鐘樹的目的正是如此。因為時鐘樹實在太過重要,現(xiàn)在也是很多人研究的課題。
我想說的第一種結構就是H-tree。它的結構確實很形象的像一棵樹,是應用最廣的結構了。
對于一個四四方方完全對稱的芯片來說,H-tree會先從root長到整個芯片的中心,再分出兩個trunk到芯片左右兩側,分出的trunk與root相互垂直,每個trunk再分兩個垂直枝干出來……不斷這樣分下去,得到一個簡單的分形結構,最終的leaf連接到相應的clock pin上。
這樣在物理上就可以保證每一個cell到root的走線長度一致,相應的net上的delay就會一樣,再加上整個tree上的buffer也都相同,就能保證傳播時間完全一致,從而實現(xiàn)skew為0. 當然實際的芯片不會這么理想化,長出來的H-tree也不一定像一個個H,但它的邏輯結構是一樣的。
并且另外一種升級版的H-tree就不保證走線長度一樣了,只要保證RC信息一致即可,好像可以稱為RC-tree(或者一般也就叫H-tree了)。
第二種結構是網格狀的(mesh)。就是把時鐘樹的每一級做成一個網格,級與級之間用多個buffer相連,最終把最后一級mesh接到clock pin上。
可是這樣不就等于把多個driver的output接在一起了嗎?這在我們ERC檢查的時候是違反的呀?但是,制定output不能短接的依據是擔心一個output輸出1一個output輸出0,這樣會造成電源地之間的短路。
但是對于clock mesh來說,它的buffer全部都是同時變化,永遠是一樣的狀態(tài),這也就使mesh成為可能。
但是,畢竟每個buffer到達的時間還是會有一丟丟的差別,還是會存在很短的瞬間電源和地在mesh上發(fā)生短路,再加上mesh本身就需要更多繞線,它的功耗是非常大的。另一個缺點就是會占用很多繞線資源。
但是mesh的skew容易做的更小,畢竟每一級它們的輸出都接在了一起,只有最后一級接在不同pin上。可以說mesh是犧牲了功耗換取更小的skew。
現(xiàn)在大多數的design還是在利用傳統(tǒng)的H-tree,只不過它的變式很多。mesh結構更復雜,EDA tool也不能很好地自動化完成,設計上相對更加困難。
-
STA
+關注
關注
0文章
51瀏覽量
19032 -
時鐘樹
+關注
關注
0文章
55瀏覽量
10815 -
時鐘源
+關注
關注
0文章
93瀏覽量
16035 -
電源地
+關注
關注
0文章
36瀏覽量
9826
發(fā)布評論請先 登錄
相關推薦
評論