門控時鐘技術(shù)可以用來降低電路的動態(tài)功耗,且在一定程度上能減小電路的面積。
門控時鐘有分離門控時鐘和集成門控時鐘,現(xiàn)在的大多數(shù)標準單元庫中都提供了集成門控時鐘單元(ICG),且它的性能更好,應(yīng)用更加簡單,因此設(shè)計中基本都采用ICG來實現(xiàn)門控時鐘。
之前也講述了在邏輯綜合階段如何實現(xiàn)門控時鐘技術(shù),那么在物理布局階段又有什么值得注意的地方或者有什么技巧可以提升設(shè)計的性能呢?
布局階段:
在用ICC進行布局時,需要對ICG單元和它控制的寄存器組(Register Bank, RB)進行特殊的處理。如果在布局之前不對PR工具進行任何的設(shè)置,那么布局完畢之后,所有ICG和它驅(qū)動的RB的擺放如左圖所示。
這種自由隨意的擺放方式質(zhì)量很不怎么樣,制約了設(shè)計的性能。
我們預(yù)期的是右邊的物理布局,所有的ICG和它驅(qū)動的RB靠近放置,Bound到一個區(qū)域內(nèi)。
右邊這種物理布局的優(yōu)點:
1、RB內(nèi)的所有Flop被Bound到一起,彼此間距小,因此Clock Skew?。?/p>
2、OCV的影響小,Timing更好,因為此時所有寄存器的Common Path非常長,因此OCV對Flop的影響小,體現(xiàn)在時序報告里面就是CRPR值更大;
3、有利于ICG的Setup,因為此時ICG離它控制的Flop更近,latency小,所以ICG的D Pin前面的partial cycle就更長,setup相對有利。
如何在Placement中實現(xiàn)?
要想實現(xiàn)右邊的這種物理布局,在Placement之前需要對ICG單元驅(qū)動的RB設(shè)置Auto bound,也就是將它們放置在ICG單元附近一定面積范圍內(nèi),設(shè)置腳本如下:
set placer_disable_auto_bound_for_gated_clock false; #默認值為true;
set placer_gated_register_area_multiplier 5; #設(shè)置ICG單元驅(qū)動的所有寄存器全部放置在總面積5倍面積范圍內(nèi),默認值為20。
高級應(yīng)用:
前面右邊的Placement方案就是最優(yōu)的么?
不!!
其實最優(yōu)的方案是ICG在它控制的RB中間。
那么如何實現(xiàn)呢?
這就需要用到Physical Aware Clock Gating技術(shù)
1、Rebuild門控時鐘結(jié)構(gòu),將那些有相同使能控制邏輯的門控時鐘單元Merge到一起;
2、之后根據(jù)ICG驅(qū)動的Register或者RB的物理位置,將ICG Split成多個ICG(如下圖所示),根據(jù)后邊控制的單元數(shù)目來選擇合適的Drive Strength的ICG。在物理布局階段,功能能根據(jù)物理信息,自動將ICG放置在與它有連接的RB中間。
DCG:
set power_cg_physically_aware_cg true
compile_ultra -gate_clock -scan -spg
ICC:
place_opt -optimize_icgs -spg
實現(xiàn)效果:
左圖是常規(guī)方法實現(xiàn)的ICG和它控制的RB的物理布局,后邊是采用Physical Aware的Clock Gating技術(shù)之后的物理布局。根據(jù)以上分析可知,這種方案的效果更好。
-
寄存器
+關(guān)注
關(guān)注
31文章
5250瀏覽量
119200 -
OCV
+關(guān)注
關(guān)注
0文章
25瀏覽量
12499 -
門控時鐘
+關(guān)注
關(guān)注
0文章
27瀏覽量
8916
發(fā)布評論請先 登錄
相關(guān)推薦
評論