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