日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > > 艾思后端實(shí)現(xiàn)
在所有的后端工具里邊,有三個(gè)重要的引擎:auto-place,CTS,auto-route三個(gè)。這里邊的auto-place是決斷了整個(gè)設(shè)計(jì)時(shí)序的基點(diǎn)。由于,auto-place的動(dòng)作是在設(shè)計(jì)的preCTS階段,所以這里的設(shè)計(jì)時(shí)序就是廣義上說(shuō)的:數(shù)據(jù)路徑(datapath)時(shí)序(timing )。當(dāng)然,就算是到了CTS/route階段后,也可以繼續(xù)利用auto-place數(shù)據(jù)優(yōu)化的功能,在數(shù)據(jù)庫(kù)上做數(shù)據(jù)路徑增量?jī)?yōu)化(optDesign -increment)??梢哉f(shuō),數(shù)據(jù)路徑的優(yōu)化手段,實(shí)際上是貫穿在整個(gè)后端流程上的。這里結(jié)合過(guò)往的經(jīng)驗(yàn),以及invs特有的先進(jìn)策略,一起來(lái)看看,數(shù)據(jù)路徑優(yōu)化里邊的重要知識(shí)點(diǎn):路徑分組(path group)??纯催@其中的奧妙和有趣的事情。ICer GO!眾所周知,無(wú)論是綜合工具(DC、genus或者precision等)抑或是APR工具(icc、icc2或者invs等),數(shù)據(jù)路徑優(yōu)化(data path optimization)一直是影響時(shí)序質(zhì)量的重要因素。由于綜合使用了ideal clock,可以說(shuō),data path的優(yōu)化就是綜合階段的主要工作,這個(gè)和后續(xù)的APR工具的第一個(gè)主動(dòng)作:auto-place,形成了前后連貫,相輔相成。盡管這兩個(gè)引擎和所處工具的位置不同,但是目標(biāo)是高度一致:優(yōu)化數(shù)據(jù)路徑的時(shí)序。這也是最近兩年聚合型R2G工具大行其道的一個(gè)重要原因。
  • S家的Fusion Compiler:DCG + ICC2

  • C家的iSpatial:genus + innovus

無(wú)論什么工具,數(shù)據(jù)路徑優(yōu)化(data path optimization)一直是基于路徑分組(path group)進(jìn)行的,想要提高數(shù)據(jù)路徑優(yōu)化就需要了解路徑分組(path group)的理論。

經(jīng)典路徑分組(path group)理論

在經(jīng)典的數(shù)據(jù)路徑優(yōu)化理論(主要是基于S家,因?yàn)镈C是綜合界的長(zhǎng)期主導(dǎo)),對(duì)于數(shù)據(jù)路徑優(yōu)化,DC采用了基于**時(shí)鐘域(clock domain)**的方式進(jìn)行處理:每一個(gè)時(shí)鐘域都會(huì)被工具判定為一個(gè)路徑分組(path group)。

路徑分組(path group)的基礎(chǔ)知識(shí)

PS:雖然最新的DC也提供了基于違例(violation)和設(shè)計(jì)層次(hierarchy)的自動(dòng)路徑分組(path group)創(chuàng)建命令;create_auto_path_groups,但是這個(gè)命令只是一個(gè)補(bǔ)充性的,并沒有動(dòng)搖S家傳統(tǒng)的路徑分組方式。S家的這種分組方式對(duì)用戶是很友好的,基本就是將SDC的create_clockcreate_generate_clock命令直接翻譯成了group_path 命令,映射關(guān)系見下表:

這個(gè)簡(jiǎn)單的映射方法,有兩個(gè)潛在的問(wèn)題:
  • 如果有g(shù)en-clock的存在,按照時(shí)鐘傳播理論,那么主clock和gen-clock會(huì)同時(shí)送達(dá)同一個(gè)FF

  • 如果有多個(gè)主clock存在,跨時(shí)鐘域路徑(cross domain data path)處理方式

利用下圖,來(lái)解釋一下這兩個(gè)問(wèn)題:
  • 基于SDC層疊(cascade clock)理論,所有的FF都是使用離它最近的clock或者gen-clock,所以上述的FF1~FF4都是使用了gen-clock,所以這些FF都只會(huì)被歸為gen-clock的domain

  • 默認(rèn)情形,SDC里邊所有的clock都是做同步(synchronous)關(guān)系處理,除非用戶單獨(dú)指定,命令是:set_clock_groups -group $PCLK_1_GRP -group $PCLK_2_GRP [-physically_exclusive| -logically_exclusive| -asynchronous

所以,使用下面的SDC命令,DC/SDC 就可以明確每個(gè)FF所歸屬的時(shí)鐘域和同步時(shí)序關(guān)系了:
create_clock/clock_generate_clock
set_clock_groups ...... 

基于路徑分組的優(yōu)化策略

前邊說(shuō)過(guò),這種方式最大的優(yōu)勢(shì)就是方便,除過(guò)聲明clock domain之間的同步、異步等關(guān)系,用戶不用再做其他設(shè)定,工具就可以處理后續(xù)的事宜。基于上,整個(gè)S家的R2G流程都是使用上述的path group 理論進(jìn)行時(shí)序優(yōu)化的?;玖鞒倘缦拢?/span>
  • 基于path group進(jìn)行WNS優(yōu)化,同時(shí)兼顧TNS。(工具總是基于WNS來(lái)進(jìn)行優(yōu)化,這樣才能有效的提高整體設(shè)計(jì)質(zhì)量。相反只要TNS的重要新并非那么高了)

  • 默認(rèn)的path group具有同樣的優(yōu)先級(jí)(weight),除非用戶指定。對(duì)于具有優(yōu)先級(jí)區(qū)別的路徑分組,工具會(huì)在出現(xiàn)修復(fù)沖突的時(shí)候,使用優(yōu)先級(jí)進(jìn)行解沖突(conflict)

所以這里會(huì)衍生出一個(gè)新的問(wèn)題,譬如下圖:對(duì)于上述路徑,F(xiàn)F2會(huì)在同一個(gè)clock domain下有兩個(gè)路徑,F(xiàn)F1->FF2和SRAM1->FF2,如果此時(shí)有下列情景:
  • FF1-> FF2 violation -1ns

  • SRAM1-> FF2 violation -0.5ns

基于WNS理論,由于-1ns的存在,這個(gè)時(shí)候工具就不會(huì)去做SRAM1->FF2的timing修復(fù)。但是用戶可能更為關(guān)注的是SRAM1->FF2的violation,所以通常的做法就是使用group_path進(jìn)行再次分組,譬如:
group_path -name GRP1 -from FF1 -to FF2
group_path -name GRP2 -from SRAM1 -to FF2 
這樣就會(huì)產(chǎn)生兩個(gè)平行的組,工具都可以看到他們的TNS,所以大概率的結(jié)果會(huì)是下面的結(jié)果:

這個(gè)做法很常用,并且對(duì)S家的流程也很有好用,但是這里提高SRAM->FF2的代價(jià)是跳過(guò)了FF1->FF2優(yōu)化,也就是說(shuō)整個(gè)數(shù)據(jù)庫(kù)的WNS(-1ns)并沒有發(fā)生變化。
但是最近使用了invs后,對(duì)invs的分組理論進(jìn)行了學(xué)習(xí)和理解,發(fā)現(xiàn)了一個(gè)新思路,很有趣。

invs 路徑分組(path group)的新思路

C家的R2G流程,基本還是沿用了S家的時(shí)序分析基本理論,基于SDC是標(biāo)準(zhǔn)的時(shí)序約束交付數(shù)據(jù),C家嚴(yán)格遵循,除過(guò)一些貓叫咪的名詞差異(leading/tailing等),核心的理論是完全一樣的。PS:這里要給C家點(diǎn)贊,確實(shí)S家在前端和中端的統(tǒng)治地位不容撼動(dòng),打不過(guò)我就加入,這個(gè)也是順應(yīng)當(dāng)下的商業(yè)策略的。近似的,C家的時(shí)序路徑的優(yōu)化也是基于path group的WNS的,WNS優(yōu)先級(jí)大于TNS。

傳統(tǒng)路徑分組(path group)的挑戰(zhàn)

在讀入SDC后,某些FF會(huì)繼承一個(gè)或者多個(gè)clock domain的屬性,這種比較常見,相應(yīng)的描述可以參見S家的這個(gè)變量這個(gè)變量默認(rèn)是true,也就是說(shuō)無(wú)論是S家還是C家,對(duì)于這種一個(gè)FF上有多個(gè)clock的情形默認(rèn)是可以直接支持的,這樣也對(duì)RTL/SDC的設(shè)計(jì)提供了盡量大的寬容度,一個(gè)圖例如下:譬如這里的FF1,就會(huì)有兩個(gè)clock到達(dá):gen_clk1_pclk1和gen_clk2_pclk1,按照傳統(tǒng)S家的路徑分組理論,F(xiàn)F1會(huì)被分別歸入到gen_clk1_pclk1和gen_clk2_pclk1兩個(gè)分組,按照默認(rèn)方式,下面的path就有可能形成一個(gè)沖突(conflict)
 FF0 -> FF1  vs FF2-> FF1 
S家的工具默認(rèn)的行為就是對(duì)每一個(gè)組進(jìn)行修復(fù),組合組之間不做一致性合并(merge),如果在FF0->FF1和徑FF2->FF1的數(shù)據(jù)路徑優(yōu)化發(fā)生分歧(conflict),如果兩個(gè)path’ group優(yōu)先級(jí)恰巧又一樣,S家的工具只能確保一個(gè)結(jié)果會(huì)好一點(diǎn),這是因?yàn)椋?span style="font-weight:bolder;">數(shù)據(jù)路徑的修復(fù)在同一時(shí)間只能關(guān)注一個(gè)數(shù)據(jù)分組(path group)
這個(gè)情形在設(shè)計(jì)中非常常見,如果使用了傳統(tǒng)分組,一個(gè)風(fēng)險(xiǎn)就是:**同樣重要的時(shí)序很有可能不會(huì)同時(shí)被工具優(yōu)化到最好。**所以,在借鑒了S家的分組方式,C家提出了自己的分組方式思想:基礎(chǔ)路徑分組(BPG:BasicPathGroup)

BasicPathGroup (BPG)的理論和特點(diǎn)

基于上述傳統(tǒng)路徑分組的優(yōu)劣勢(shì),C家提出了一個(gè)新的思路:在傳統(tǒng)路徑分組的基礎(chǔ)上,疊加一層新馬甲(wrapper):BasicPathGroup (BPG)。通過(guò)BPG這個(gè)wrapper,可以較好的解決傳統(tǒng)路徑分組的短板。這里看一下S家的時(shí)序分析理論,任何工具對(duì)時(shí)序質(zhì)量的統(tǒng)計(jì)都是基于終點(diǎn)的(endpoint,EP),這個(gè)是所有STA工具評(píng)判時(shí)序質(zhì)量的統(tǒng)計(jì)基礎(chǔ)。但是由于時(shí)鐘交疊(clock domain overlap)的情景,會(huì)導(dǎo)致在一個(gè)EP,產(chǎn)生多個(gè)report_timing的結(jié)果(multi path group per FF),同時(shí)也會(huì)讓place_opt的引擎遇到類似的局面:一個(gè)單一FF,會(huì)同時(shí)出現(xiàn)多個(gè)path group的分組。與其繼續(xù)深耕,不如化繁從簡(jiǎn)(PS:這個(gè)確實(shí)是C家長(zhǎng)期堅(jiān)持的一個(gè)策略:簡(jiǎn)單就是美好),使用BPG,破除傳統(tǒng)的基于clock domain的路徑分組(path group),讓每個(gè)EP回歸到原本應(yīng)該就應(yīng)該有的形態(tài):獨(dú)一性(unique)。使用BGP的方式,在上述情境下,F(xiàn)F1只會(huì)歸為一個(gè)path group,這樣就可以緩解傳統(tǒng)路徑分組的沖突(conflict)困擾。默認(rèn)invs流程,會(huì)使用BPG的方式進(jìn)行分組,這里會(huì)有兩類明確的組:
  • reg2reg:沿觸發(fā)時(shí)序邏輯到沿觸發(fā)時(shí)序邏輯

  • reg2cgate:沿觸發(fā)時(shí)序邏輯到電平觸發(fā)的時(shí)序邏輯

除過(guò)上述兩個(gè)組,其余所有未被覆蓋的組都被工具稱作default。所以,一個(gè)數(shù)據(jù)庫(kù),在invs里邊的默認(rèn)BGP的加持下會(huì)有這樣的情形:
all = reg2reg + reg2cgate + default 
當(dāng)然,這里邊并非說(shuō)明:all 就等于設(shè)計(jì)里邊的reg + cgate的數(shù)量總和,這是因?yàn)椋喝绻愕脑O(shè)計(jì)里邊有了IO 時(shí)序約束,那么大概率會(huì)有IN2REG或者REG2OUT的類型,這樣:all >= reg_count + cgate_count。默認(rèn),在同為Effort High的路徑分組下,invs給出了自己的權(quán)重配比:reg2reg > reg2cgtage > default采用的BGP分組:invs工具無(wú)論在何種情形下, 每一個(gè)reg,cgate都只有唯一的最高優(yōu)先級(jí)的主分組,這個(gè)會(huì)給基于TNS修復(fù)方式的place 引擎解放了手腳,大大提升了修復(fù)結(jié)果。當(dāng)然,如果用戶自己明確知道數(shù)據(jù)庫(kù)里邊有IO的時(shí)序路徑,并且需要關(guān)注,也可以使用下列命令進(jìn)行配置,
createBasicPathGroups -expanded 
設(shè)計(jì)里邊的組會(huì)有下面的加總公式:
all = default + reg2reg + reg2cgate + in2reg + reg2out + in2out 
invs也會(huì)配置一個(gè)合理的默認(rèn)優(yōu)先級(jí),具體如下:
reg2reg > reg2cgate > default > [in2out | reg2out | in2reg] 
C家這里的默認(rèn)處理還是很合理的。這個(gè)也符合用戶的常規(guī)需求。使用BGP模式的時(shí)候,在optDesign的過(guò)程中,工具會(huì)根據(jù)系統(tǒng)情形,對(duì) reg2reg、reg2cgate 等組進(jìn)行逐個(gè)優(yōu)化,基于每個(gè)BGP分組,對(duì)于所有隸屬于High Effort path group的最差的TNS group進(jìn)行優(yōu)化: optDesign always work on worst(TNS_grp_1 … TNS_grp_n)'s group每個(gè)組的WNS的EP進(jìn)行優(yōu)化的原則是:無(wú)論這個(gè)EP屬于那個(gè)clock domain,invs只會(huì)去做到這個(gè)EP最差的路徑優(yōu)化這個(gè)方式,在multi-clock per FF情形,或者復(fù)雜fanin的timing path的情形,是可以得到更好的優(yōu)化結(jié)果,因?yàn)樵谕粫r(shí)間的優(yōu)化是絕對(duì)專注的,不會(huì)有其他的同優(yōu)先級(jí)的path group的path出現(xiàn)。所以,在默認(rèn)情況下,invs就會(huì)得到不差于傳統(tǒng)path group分組方式的結(jié)果。
C家通過(guò)BGP的wrapper,巧妙的處理了復(fù)雜數(shù)據(jù)路徑優(yōu)化種的沖突問(wèn)題,讓工具可以更為專一的進(jìn)行優(yōu)化,而不是把精力浪費(fèi)在了仲裁(arbiter)和path group反復(fù)迭代(iteration)上。

usefulSkew + BGP:時(shí)序修復(fù)的雙殺

眾所周知,invs里邊有很強(qiáng)大的usefulSkew技能,此技能貫穿了auto-place,CTS和auto-route等階段(PS:這里要注意,usefulSkew只是追加,不能替代原有的三大引擎)。如果當(dāng)使用BGP后,每個(gè)EP都有了獨(dú)一的最高優(yōu)先級(jí)的path group,這樣invs在調(diào)節(jié)usefulSkew上的計(jì)算量(compute consume)會(huì)大幅降低。因?yàn)槊恳粋€(gè)path的skew調(diào)節(jié),都需要工具去評(píng)估這個(gè)path原有的margin才能做出判斷,如果一個(gè)EP分屬于不同的組(但是是同優(yōu)先級(jí)的組),每個(gè)組在這個(gè)EP的slack形態(tài)大概率不一致,工具需要數(shù)倍的計(jì)算時(shí)間和依賴考量(dependency),互相牽制,工具只能選擇在那個(gè)修復(fù)瞬間的最優(yōu)解,但是,隨著path group被不斷被輪詢修復(fù)(repair iteration),上一次的usefule的修復(fù)方式,可能已經(jīng)過(guò)時(shí)(out-of-date),這樣數(shù)據(jù)就會(huì)形成相互牽制(lock),類似一個(gè)狀態(tài)機(jī)(SM),但是它無(wú)法自收斂,最終隨著data path optimization的圈數(shù)達(dá)到極限(iteration limit),數(shù)據(jù)的狀態(tài)就有點(diǎn)中間態(tài)的意味,不太會(huì)達(dá)到一個(gè)好的收斂度。擁有了BGP的usefulSkew,就像插上了翅膀的馬達(dá),由于依賴度的大幅度降低,可以專注clock skew的調(diào)優(yōu)工作,這個(gè)時(shí)候才能把usefulSkew的性能徹底釋放出來(lái)。和所有的工具命令一樣,BGP也不是完全絲滑,譬如:由于可讀性和命令一致性的原因,針對(duì)BGP,invs也在report_timing的命令里邊做了一些變通處理,這個(gè)后續(xù)會(huì)講到。未完待續(xù) (To be continued ) …

【敲黑板劃重點(diǎn)】

path group是data path optimization的數(shù)據(jù)分類基石,理解其中的理論可以有助于優(yōu)化命令和設(shè)計(jì)流程。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉