前面主要介紹了Optimize的一些基本概念,那么今天就來講解一下它的一些實(shí)際運(yùn)用,以及我們?cè)趺床拍苡煤眠@個(gè)強(qiáng)大的命令??!
說到Optimize,那和它聯(lián)系最緊密的就是Timing了。在做實(shí)際design中,從place到signoff,Timing violation是伴隨著整個(gè)流程揮之不去的陰影。那P&R中,Timing violation的趨勢是怎么樣的呢?
很多人腦海里浮現(xiàn)的是左邊呈倒金字塔形的這張吧,認(rèn)為每前進(jìn)一步就會(huì)修掉一些violation。其實(shí)則不然,右邊那張才是更合理化的趨勢圖。工具P&R的核心,placement和routing,其實(shí)都不是那么的timing aware。Routing以后甚至?xí)霈F(xiàn)violation path的增多(因?yàn)镽oute之前都不care DRC)。那其實(shí)整個(gè)Timing closure的過程中,出力最大的就是Optimize。因此,我們非常有必要來了解一些傳統(tǒng)的Optimize的注意點(diǎn)
1Before Optimize
正所謂"臨陣磨槍,不亮也光",Optimize可是個(gè)超級(jí)命令,通常運(yùn)行時(shí)間都在幾個(gè)小時(shí),甚至幾十個(gè)小時(shí)以上。耗費(fèi)這么大的財(cái)力物力,我們可不希望它跑得毫無價(jià)值。在開始運(yùn)行place_opt之前,對(duì)design的基本情況進(jìn)行一些基本檢查真的是非常有必要的。整理了一下,以下幾點(diǎn)是比較有用的:
1)跑一遍check_design,檢查一下design中包括(netlist,Timing library,F(xiàn)loorplan)
2)檢查sdc文件是否clean。是否有一些定義不合理的約束。
3)報(bào)一遍zero wireload model的timing,如果zwl timing的結(jié)果都不理想的話,試著要去調(diào)整下sdc文件等等
4)采用get_attribute [get_lib_cell *] dont_use或者report_dont_use報(bào)出當(dāng)前設(shè)計(jì)中的dont use cell,一些特別weak的cell我們需要禁用。
5)檢查一下有沒有打開需要的active scenarios
set_scenario_status
6)檢查所需要的Optimize mode。
Performance(opt.timing.effort)
Power(opt.power.effort)
Density(-max_density)
2During Optimize
這個(gè)期間,是Optimize自己后臺(tái)運(yùn)行的過程。我們也做不了什么操作,正好來復(fù)習(xí)一下Optimize的transform。我們知道它可以做很多的動(dòng)作,而工具中可以讓它操作的object又有很多,這兩者之間的關(guān)系在下面這張表中可以體現(xiàn)出來:
3After Optimize
當(dāng)Optmize做完,結(jié)果不理想該腫么辦呢?
Debug唄~~
提供以下幾點(diǎn)建議:
1)從log入手:
1.查看下各個(gè)Path Group的WNS/TNS的收斂趨勢。
2.查看下DRV的收斂趨勢。
3.查看下Optimize過程中各個(gè)transform的detail report。包括move的instance數(shù)目,距離。包括routing conestion等等,檢查下有沒有異常值。
2)分析Timing情況
1. 總體概括性地檢查一下critical path,而不是去看最差的一條,通常Path Group的timing變差具有共性
2. 分析一下path上的cell/net delay, 看看有沒有“bad buffering,bad sizing,weak cell”這些情況
3. 檢查一下Placement結(jié)果吧,看看某些區(qū)域的density是不是較大,可以采用keepout margin或者cell spacing constraint來增大cell之間的距離
4. macro是否擺放不合理,channel留太少,或者macro上的routing過差,可以采用添加合適的blockage,或者重新擺放macro位置來解決
5. 可以自己創(chuàng)建Path Group來優(yōu)化timing,Optimize默認(rèn)創(chuàng)建的Path Group是reg2reg, reg2cgate. 我們可以采用group_path來自己創(chuàng)建需要重點(diǎn)優(yōu)化的Path。
3)通過report相關(guān)的命令來檢查一些潛在的誤操作或者工具的bug
report_dont_use可以報(bào)出當(dāng)前design中的dont use cell
report_dont_touch可以報(bào)出當(dāng)前design中的dont touch cell
4)運(yùn)行incremental的optimize
它會(huì)基于當(dāng)前Placement的結(jié)果來優(yōu)化density,以及基于Optimize的結(jié)果來繼續(xù)優(yōu)化WNS和TNS
optimize的介紹就到此為止了,看似簡單的一個(gè)命令其實(shí)要用好他卻不容易。如何挖掘工具潛能,取得較好的優(yōu)化結(jié)果,這是一個(gè)反復(fù)迭代,反復(fù)分析設(shè)計(jì)的過程??傊?,多嘗試,多跑跑設(shè)計(jì),才能對(duì)工具愈發(fā)熟練。
-
design
+關(guān)注
關(guān)注
0文章
156瀏覽量
45693 -
timing
+關(guān)注
關(guān)注
0文章
7瀏覽量
10175
原文標(biāo)題:芯片誠可貴,時(shí)序價(jià)更高——Optimize(二)
文章出處:【微信號(hào):IC_Physical_Design,微信公眾號(hào):數(shù)字后端IC芯片設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論