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

當(dāng)前位置:首頁 > > 艾思后端實(shí)現(xiàn)


在結(jié)束了power步驟后,我們進(jìn)入到了第一個(gè)自動(dòng)化的大步驟了,這里是實(shí)現(xiàn)的重要一步。APR里邊的AP(auto-place)就是指此步驟,所以說,真正和工具死磕的時(shí)候到啦!按照慣例,有圖有真相:

如上圖所示,為了能讓place的結(jié)果更有(fei)利(hua)于timing、physical,我們要在真正開始place_opt命令前加入必要的控制、約束手段。通過下文的講解,你可以看到這些手段的必要性和重要性。

第一步:set ideal clock network:理想化所有的clock

我們timing分析都是基于data和clock的,在import的文章里邊,我們說過dc 綜合的目標(biāo)就是只關(guān)注于data path,前提是所有的clock都是ideal(理想化的,零延遲,驅(qū)動(dòng)能力無限大)。在place這一步,我們將繼續(xù)這個(gè)事業(yè),但是目標(biāo)是把cell 都放置到真正的版圖上,然后做data path的優(yōu)化,而不是像DC那樣,cell是隨意放置的。

為了讓place步驟專注于data path的優(yōu)化,我們一上來先做一遍set ideal clock的指令,確保時(shí)鐘的理想化。

第二步:apply user timing addons:基于物理位置影響,添加額外的時(shí)序約束

在一開始,我們的數(shù)據(jù)庫里邊,已經(jīng)從綜合那里拿到了主要的時(shí)序約束,包括clock的定義、timing exception (MCP、false_path等等),但是這些可能是不太夠的。因?yàn)榫C合的環(huán)境相對(duì)比較寬松,不用太精細(xì)的約束可能也能讓timing得到滿足,但是在真實(shí)的物理世界,cell和cell的實(shí)際物理距離會(huì)引入data path 的delay顯著增大。這時(shí)候需可能需要基于place的QoR,加上和前端同事的討論、確認(rèn),才能把時(shí)序約束逐步細(xì)化。這很有可能是一個(gè)帆布迭代的過程。切記,只有正確的約束才能導(dǎo)向正確的方向,在不合適或者過約束的數(shù)據(jù)庫上修timing,都是事倍功半的。

除過std-cell距離問題,在place階段還有一個(gè)重要的信息,就是IO terminal的位置。所有的interface timing都是要經(jīng)過IO port,按道理,IO timing 不應(yīng)該很難修,因?yàn)橥ǔ6紩?huì)在做partition的時(shí)候,綜合考量高速、低速時(shí)鐘的控制范圍,block的邊界一般都不會(huì)是超高速的接口,但是,例外總會(huì)發(fā)生。需要在綜合的時(shí)候使用合適(不緊不松)的IO timing constraint,到了這一步,基于place QoR,再做進(jìn)一步的約束優(yōu)化,目標(biāo)是讓工具在合理的范圍內(nèi)做最大的優(yōu)化。

綜上所屬,以下幾點(diǎn)需要我們仔細(xì):

1:  對(duì)于所有的IO都應(yīng)該有約束,

2:僅對(duì)于critical的接口實(shí)施正常weight的優(yōu)化,其他的IO可以使用weight來降低它的優(yōu)先級(jí)。

3:  如果timing 特別緊張的部分,可以相應(yīng)調(diào)高weight來增強(qiáng)它的優(yōu)化街別

第三步:apply physical constraint: 物理的約束

這里我們要添加物理約束來引導(dǎo)place 命令的行為,通過引導(dǎo),達(dá)到讓工具做出來的結(jié)果朝我們期望的方向發(fā)展。例如:對(duì)某個(gè)區(qū)域的cell density過高的處理,限制某個(gè)區(qū)域std-cell邏輯門的放置等等。具體如下:

1:placement blockage

顧名思義,這類約束是限制std-cell的擺放的,對(duì)于不同的需求,會(huì)有以下幾類不同特點(diǎn)的blockage供用戶選擇使用

hard blockage:  強(qiáng)制遮擋,被這種blockage覆蓋的區(qū)域,是不能放置任何std-cell的,只要有cell放在這個(gè)區(qū)域,工具在legalize的時(shí)候,就會(huì)強(qiáng)制把cell 挪出來。如下圖所示,在place結(jié)束的數(shù)據(jù)庫,hard blockage區(qū)域是沒有std-cell的:

Partial blockage:  部分遮擋,這個(gè)命令會(huì)部分的遮擋某個(gè)區(qū)域,防止std-cell進(jìn)入。用戶可以加一個(gè)百分比,例如遮擋40%,那么這個(gè)區(qū)域的目標(biāo)density大概就是60%,這個(gè)目標(biāo)限定只局限于coarse placement,在優(yōu)化的時(shí)候工具會(huì)自動(dòng)忽略這個(gè)約束,所以整個(gè)流程就熟后,受限制區(qū)域可能會(huì)超出給定目標(biāo)值。

Partial blockage advanced:  部分遮擋的加強(qiáng)版。在單純部分遮擋的基礎(chǔ)上,引入了更多的約束條件:register avoid(禁止register進(jìn)入)、buffer only(只允許放置buffer/inverer)等屬性,來控制工具的行為。

2: routing guide,routing blockage: 繞線引導(dǎo)和遮擋

Routing_guide: 是一種繞線引導(dǎo)物理約束,它可以對(duì)指定繞線層、區(qū)域進(jìn)行約束。包括

a: track 利用率

b: pre-route/signal (電源網(wǎng)絡(luò)布局/普通信號(hào)線)繞線的限定

c: prefer/non-prefer (優(yōu)選繞線方向)繞線的約束 等等

Routing blockage:在某一區(qū)域,完全阻擋某一層、某幾層的繞線。

之所以我們?cè)谶@里place階段提到routing_guide、routing_blockage,是因?yàn)閜lace的算法已經(jīng)加入了global routing的考量,所以這些routing 的約束也會(huì)影響place的結(jié)果,相應(yīng)的place的優(yōu)化結(jié)果也會(huì)提升、考慮routing的QoR,這個(gè)會(huì)在routing的步驟體現(xiàn)出來。

3:bound:std-cell的布局的干預(yù)

Bounds(綁定)是一個(gè)有趣的物理約束,在自動(dòng)布局階段,按照通常行為,基于timing -driven工具可以自動(dòng)放置所有的std-cell,但是有時(shí)候,由于某種原因,工具的結(jié)果和我們的期望有出入,這個(gè)時(shí)候使用bounds是可以幫助我們引導(dǎo)工具的放置行為,

Bounds的創(chuàng)建可以基于leaf_cell或者h(yuǎn)ierarchy cell,由于實(shí)際的操作都是基于leaf_cell,所以,準(zhǔn)確的用法使基于leaf cell,這樣方便檢查和回溯。
對(duì)應(yīng)不同的用法,一般有如下三種bound的方式

Hard:指定的cell必須放到指定區(qū)域,但是其他cell也是可以進(jìn)來的

Soft:指定的cell可以放到指定區(qū)域或其周邊區(qū)域,其他cell也是可以進(jìn)來的

Exclusive: 指定cell必需放置進(jìn)來,別的cell是不允許進(jìn)來的

通過使用bound,我們可以讓強(qiáng)制讓制定leaf cell放到bound的區(qū)域內(nèi)。

Bound的應(yīng)用需要注意,因?yàn)樯衔奈覀冎v到了macro的擺放會(huì)影響工具place的結(jié)果,原因就是工具是timing-driven的,這樣的一個(gè)顯性的結(jié)果就是同層級(jí)的cell會(huì)放置的比較近。所以如果我們調(diào)整bound,一定也會(huì)影響工具的擺放,在使用的時(shí)候要注意bound的創(chuàng)建對(duì)QoR的影響。

第四步:pre-place setup: place前的最后一招

在使用完工具提供的native命令對(duì)數(shù)據(jù)庫進(jìn)行調(diào)整后,有些時(shí)候,這些還是不能解決所有問題,尤其是遇到復(fù)雜模塊的時(shí)候。這時(shí)候,我們要借助一下腳本來對(duì)當(dāng)前模塊做進(jìn)一步的調(diào)整,這個(gè)調(diào)整的目的就是,減輕工具的運(yùn)算量,讓所有的數(shù)據(jù)向收斂的方向發(fā)展。

1:channel placement: 如下圖:




基于圖例,我們可以看到整個(gè)block有四個(gè)地方需要出port,具體對(duì)應(yīng)的數(shù)據(jù)流為

Port_main       ->      default_VA     -> ?   SW1/SW2

Port_part1       ->      default_VA     ->       SW1/SW2

Port_part2       ->    default_VA      ->        SW1/SW2

Port_part3 ?   ->    macro、SW2 and default

對(duì)于port_part1 和port_part2,這里的channel_1 和channel_2是非常狹窄的通道,為了保證繞線的通過性,首先,我們應(yīng)該阻止任何std-cell 的邏輯cell在這里的布局,但是在某些情況下,這些還不夠。

使用過自動(dòng)布局工具的同學(xué)應(yīng)該知道,基于工具優(yōu)化的方式,再這樣狹窄通道,有兩個(gè)可選區(qū)域的時(shí)候,經(jīng)常會(huì)出現(xiàn),反復(fù)跨過macro的行為,類似下圖:


這種系鞋帶是的布局規(guī)劃,是很不利后期繞線和時(shí)序收斂的,使用前述方法也是不太容易約束工具行為的。所以這里我們需要使用腳本來解鞋帶。創(chuàng)建guide buffer來認(rèn)為干預(yù)這個(gè)區(qū)域的布局,結(jié)果如下圖:

加之使用placement blockage 來限制別的std-cell進(jìn)入這個(gè)區(qū)域,這樣就可以解掉這個(gè)問題了

同樣對(duì)于port_part3,使用腳本合理添置guide buffer可以有效提高QoR。

2:magnet placement:

工具有一套命令會(huì)去做std-cell的與其相關(guān)聯(lián)的邏輯進(jìn)行就近擺放,例如你已經(jīng)在floorplan里邊擺好了port,我們可以讓工具把相關(guān)的std-cell擺到port的附近,這樣可以有效收斂相關(guān)邏輯物理距離。但是對(duì)于macro要謹(jǐn)慎使用,由于很多macro會(huì)share邏輯,很多時(shí)候,并不是把他們聚集在某個(gè)區(qū)域是個(gè)更優(yōu)的選擇。這個(gè)工具命令的結(jié)果,會(huì)把對(duì)應(yīng)的邏輯擺放到目標(biāo)cell的附近,并且可以legalize和fixed。

3: ESD protect buffer:放置ESD保護(hù)器件

在某些工藝下,基于PAD的設(shè)計(jì),PAD? core的一些輸出信號(hào),需要做ESD的保護(hù)處理,防止出現(xiàn)ESD violation,這時(shí)候就需要我們?cè)趐re-place階段來規(guī)劃。通常來講ESD buffer不是工具的target library,所以工具不會(huì)在place階段使用它。為了彌補(bǔ)這個(gè)問題,我們需要把ESD buffer放到link library里邊,然后使用insert buffer命令來預(yù)插入ESD buffer,考慮到timing DRC的要求,這些cell不應(yīng)該離PAD cell過遠(yuǎn)。

一般常用的手動(dòng)就是這樣了,在開始place_opt命令前,各位同學(xué)備份一下當(dāng)前節(jié)點(diǎn)的數(shù)據(jù)庫,因?yàn)槟憧赡苄枰磸?fù)在這個(gè)地方進(jìn)行調(diào)試、迭代。

第四步:place:真正的大招來了

一個(gè)模塊的實(shí)現(xiàn),place這個(gè)命令可能會(huì)占據(jù)整個(gè)run time 的30%左右,從一個(gè)std-cell處于原始位置的狀態(tài),到最后按照用戶需求和約束達(dá)到布局完成,這里邊的動(dòng)作和計(jì)算量會(huì)非常的大,一般規(guī)模的模塊place主命令大概需要20~30小時(shí),甚至50小時(shí)以上,這還不包括你的server crash、overload等意外情況。在runtime 這方面,Synopsys家也是很努力的,icc2在這方面是有所提高的。
1:place命令的理解和應(yīng)用
Place_opt命令的主要?jiǎng)幼魇牵?




這三個(gè)步驟里邊每一步的最后,都有l(wèi)egalize ,言下之意,就是工具的任何的粗布局、優(yōu)化的結(jié)果,都要以最終的legalize來收尾。所以,任何的displacement都會(huì)導(dǎo)致工具的修復(fù)的偏差。這里建議個(gè)問題同學(xué),在你的place log里邊查看displacement是一個(gè)重要檢查手段。

Place_opt 命令里邊提供了幾個(gè)常用選項(xiàng)

-optimize_dft:如果用戶提供了scan_def文件,place命令可以調(diào)整scan_chain的前后順序,來優(yōu)化繞線

-area_recovery:在時(shí)序優(yōu)化的時(shí)候,同時(shí)也對(duì)面積進(jìn)行優(yōu)化,結(jié)果是會(huì)降低cell density,同時(shí)timing上會(huì)有些許影響

-congestion:這個(gè)是優(yōu)化routing congestion的主要選項(xiàng),建議打開。
-cts:在place_opt完成cts的步驟,如果你的flow里邊有專門的cts步驟來解clock tree,建議不要使用它。

-optimize_icgs:優(yōu)化clock gating timing,前提是要在數(shù)據(jù)庫里邊加載所有cts的配置,如果選擇使用專門的cts步驟,建議不開。

-power:優(yōu)化power 和leakage power,對(duì)于leakage power,需要用戶提供不同VT類型(via command set_multi_vth_constoraint),供工具選擇VT cell。對(duì)于通常的power 優(yōu)化,可以不開這個(gè)選項(xiàng),但是要打開變量 icc_preroute_power_aware_optimization 來讓工具優(yōu)化power。

-spg:當(dāng)用戶使用compile_ultr –spg命令來做綜合,同時(shí)要使用DDC的格式作為import的輸入量,這個(gè)時(shí)候place_opt命令會(huì)自動(dòng)使用DDC的floorplan信息。如果這里的floorplan被place_opt命令使用,就等價(jià)于余毒入了一個(gè)initial placement動(dòng)作。所以place_opt命令里,就會(huì)自動(dòng)跳過initial placement步驟。這個(gè)選項(xiàng)是不能和-skip_initial_placement同時(shí)使用的。

-skip_initial_placement:跳過最初的initial placement,這個(gè)接口是允許用戶對(duì)placement做初始化的懂多,有些第三方工具提供的initial placement 會(huì)使用DEF的方式讀入,如果使用第三方工具的輸入,這里是需要initial_placement,然后把后邊的步驟交給place_opt命令。這里initial placement需要包括,std-cell is_placeed 屬性是 true,所有的macro,is_fixed/is_placeed屬性是true。Highfanout的net已經(jīng)被解掉。

-layer_optimization:工具可以自動(dòng)去看到用戶的net search pattern和set_net_search_pattern_delay_estimation_options 來使用layer promotion 的方式來提高timing,

方法如下:

Icc_shell> create_net_search_pattern -net_length_lower_limit 200 -connect_to_port

1

Icc_shell>set_net_search_pattern_delay_estimation_options -pattern 1 -min_layer_name METAL7 -max_layer_name METAL8

通過以上的定義,place_opt 命令,會(huì)把所有長于200um 并且連接到port的net,進(jìn)行l(wèi)ayer promotion,使用的規(guī)則是:最底層是metal7,最高層metal8。當(dāng)你創(chuàng)建create_net_search_pattern,會(huì)返回一個(gè)ID值,這里的ID是1,所以在第二個(gè)命令里的pattern后面跟的是1

2:Place 結(jié)果的檢查

在之前的幾個(gè)步驟,我們都沒有設(shè)計(jì)到檢查這個(gè)步驟,但是從place開始,我們需要對(duì)數(shù)據(jù)庫的結(jié)果進(jìn)行排查,只有對(duì)place的質(zhì)量了然于心,才能在后面使用的時(shí)候得心應(yīng)手:

a:timing檢查

在place階段,重要的目的就是修復(fù)和優(yōu)化data path的timing。因?yàn)檫@時(shí)候clock tree都是ideal,所以這個(gè)時(shí)候的setup timing計(jì)算,都是基于cell的placement和virtual connection來估算net、cell延遲來估算timing的??傮w上將,如果place 階段的setup timing不能被完全滿足,那么后期很難修出來,對(duì)于比較差的violation(<-500ps)這時(shí)候需要找到violation 的原因,這里邊有幾個(gè)排查方向:

a1:timing約束是不是合適:通過查看report_timing的報(bào)告來定位。

a2:timing path 上面有沒有乒乓繞線:可以使用change_selection [get_timing_path] 的命令 在版圖上查看timing path,看看有沒有detour的cell placement。一個(gè)timing path的圖示大概如下圖:



a3:其他種種

有時(shí)候,我們會(huì)碰到一些net上有很大的delay,如上圖箭頭處所示。在有些情形下工具就是不修,放在那里。這時(shí)候我們需要仔細(xì)看一下原因。首先你要查看當(dāng)前group里邊的最大的violation(就是通常說的WNS),如果你的net delay不是發(fā)生在最差的path上,工具很有可能會(huì)拒絕修復(fù),工具是timing driven的機(jī)制,但是深入了解后,你會(huì)發(fā)現(xiàn)是WNS機(jī)制,他是從大的violation開始修起,直到修不動(dòng),同時(shí)也會(huì)兼顧DRC cost 的影響。

局部區(qū)域density 過高導(dǎo)致修復(fù)不利,這時(shí)候可能由于legalize導(dǎo)致在high cell density區(qū)域發(fā)生了large displacement,所以工具不能有效的修復(fù)timing。

邏輯深度影響timing,如果發(fā)現(xiàn)由于data path過長,導(dǎo)致拍數(shù)過多,我們需要考慮ungroup的方法,降低邏輯深度,從而減少data path的時(shí)延。

驅(qū)動(dòng)能力導(dǎo)致的問題:默認(rèn)情況,工具會(huì)使用library里邊的所有std-cell,但是一般的library都會(huì)有各種驅(qū)動(dòng)能力的cell,這時(shí)候如果工具使用過多的驅(qū)動(dòng)能力小的cell,可鞥會(huì)影響timing,所以,需要人為干預(yù),禁止工具使用過小驅(qū)動(dòng)能力的cell來保證timing。

b:report hierarchy:這個(gè)經(jīng)常用來全局查看placer的擺放結(jié)果,

從下圖可以看到,同樣顏色表示屬于同一個(gè)邏輯層次,大部分邏輯都是按照hierarchy來擺放的,這樣更利于縮短cell和cell之間的物理距離,從而改善timing


c: report cell density:工具提供了cell density的視圖,具體如下圖示例


這是基于std-cell的density視圖,可以直觀地感受到,工具在做完place_opt后,整個(gè)die區(qū)域的cell分布密度情況,對(duì)于高密度的區(qū)域需要留意,因?yàn)槿魏蜗敕胚M(jìn)去的優(yōu)化cell都可能由于high density導(dǎo)致large displacement,這樣是無法達(dá)到最佳優(yōu)化效果的。

整個(gè)place是所有APR工具的核心命令之一,一個(gè)placer工具的一般需要3~4年的開發(fā)時(shí)間,其中的奧妙自然是很深的。對(duì)于工程師而言,一定要了解工具的特性和傾向性,這樣才能成為工具的朋友。說到底,工具是為我們的工作服務(wù)的,工程師存在的價(jià)值就是讓工具能發(fā)揮出自身的特點(diǎn),高效的實(shí)現(xiàn)我們的APR目標(biāo)。

我們用了以上的篇幅討論了place步驟和特點(diǎn),相信你的工作中一定會(huì)遇到各種各樣的實(shí)際問題,如果上述經(jīng)驗(yàn)?zāi)軌驅(qū)δ愕墓ぷ髌鸬叫┰S幫助,作者就深感欣慰了。希望通過上邊的講解,我們都能對(duì)工具有一個(gè)更深的認(rèn)識(shí)和了解,從而助力我們的日常的布局工作。

本站聲明: 本文章由作者或相關(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)閉