關(guān)于DP,ICC2處理就是這么簡(jiǎn)單
掃描二維碼
隨時(shí)隨地手機(jī)看文章
這個(gè)原理其實(shí)也簡(jiǎn)單,就是將之前full-chip的工作,分解到各個(gè)partition,大家來(lái)并行設(shè)計(jì),最終頂層設(shè)計(jì)人員會(huì)把所有的partition的結(jié)果,封裝到一起。從而產(chǎn)生最終的full-chip數(shù)據(jù)庫(kù)。這樣做的好處顯而易見(jiàn):每個(gè)partition的設(shè)計(jì)都是并行,省時(shí)省力。只是需要跟更多的PR工程師(一個(gè)典型的串 -> 并轉(zhuǎn)化,通過(guò)加入人力來(lái)加速項(xiàng)目設(shè)計(jì))。每個(gè)模塊的內(nèi)部時(shí)序,物理問(wèn)題都在模塊級(jí)別搞定。只有interface留到了頂層。模塊內(nèi)部的問(wèn)題迭代周期短,并且效率高,最終的項(xiàng)目的收斂都會(huì)相對(duì)容易。一步一個(gè)腳印,一起攜手走向最終的TO。
對(duì)于后端的頂層設(shè)計(jì)人員,根據(jù)full-chip的規(guī)劃,會(huì)下發(fā)所有partition的物理約束信息,這里邊包括:
· Die/boundary: 模塊的邊框信息。
· Terminal: 模塊的pin放置信息
· PG: 電源地網(wǎng)絡(luò)的需求信息
· Hardmacro: 特殊macro的在partition的放置信息
具體參看下面的示例圖,來(lái)一起直觀的體會(huì)partition 設(shè)計(jì)帶來(lái)的的變化
如果采用了partiton流程,就是下面這個(gè)情況了:
有了上邊的概念,這里就要有請(qǐng)這篇文章的主角登場(chǎng):Design Planning(DP)。這個(gè)就是幫助頂層人員,合理規(guī)劃partition的物理信息,甚至timing budget的強(qiáng)大武器了。
在ICC2里邊,DP是一套流程,可以使用icc2內(nèi)建的命令來(lái)高效完成,下面就以此來(lái)體會(huì)DP帶給大家的給成強(qiáng)大的功能了吧。
通常的hierarchy 設(shè)計(jì)流程,無(wú)論是從RTL,synthesis還是layout,都是遵循bottom-up的設(shè)計(jì)方式的,一個(gè)簡(jiǎn)明的流程如下圖所示:
可以看出,要想開(kāi)始頂層DP,就必須要有底層的綜合數(shù)據(jù)庫(kù),從而產(chǎn)生頂層的綜合數(shù)據(jù)庫(kù),DP就可以基于這個(gè)頂層的綜合結(jié)果,來(lái)開(kāi)始DP工作了。
Icc2給出了一個(gè)非常完備的DP解決方案,如下圖
在頂層做DP的時(shí)候,主要的目的是給sub-partition提供boundary,terminal和PG等等,大部分時(shí)候,是不需要把這個(gè)復(fù)雜流程全部走完,這里,艾斯秀給大家的是一個(gè)體現(xiàn)DP核心功力的實(shí)用流程,如下示意圖:
1. 第一步:建立icc2物理庫(kù)
打開(kāi)icc2,創(chuàng)建NDM,這個(gè)是常規(guī)操作,為了創(chuàng)建整個(gè)DP流程需要的物理庫(kù)來(lái)使用。
2. 第二步:讀入網(wǎng)表
讀入top-level的netlist。這個(gè)階段的網(wǎng)表有兩個(gè)特點(diǎn)。第一:網(wǎng)表需要包含sub-partition的聲明。第二:由于只關(guān)注于創(chuàng)建partition的boundary和terminal,sub-partition的網(wǎng)標(biāo)完全可以是一個(gè)sub 的top-only,來(lái)加快DP的速度。一個(gè)示例如下:
3. 第三步:UPF的準(zhǔn)備
在做DP的時(shí)候,需要充分考慮到PG和VA的影響,因?yàn)檫@個(gè)很有可能會(huì)影響到partition的PG mesh和floorplan。通常的情況下,可以使用一個(gè)top-level的UPF來(lái)滿(mǎn)足這個(gè)要求。但是要注意的是,這個(gè)UPF文件,必須包含top-level的VA信息和聲明top-level和partition之間的PG連接關(guān)系,這是規(guī)劃具體floorplan和PG push-down的必要條件。
4. 第四步:top-level的initialfloorplan
要開(kāi)始DP的工作,還是要先定義好top-level的基礎(chǔ)floorplan,例如:boundary,hardmacro , terminal,VA等等,有了這個(gè)初始的布局,就可以逐步規(guī)劃partition的布局信息了。
5. 第五步:partition commit:
為了讓DP可以意識(shí)到,哪些instance是可以被操作的,這是一個(gè)非常必要的手段。在這個(gè)步驟結(jié)束后,就可以對(duì)partition進(jìn)行真是的物理操作了,這里完成的重要標(biāo)志,如下圖所示
6. 第六步:partition 的boundary規(guī)劃
從這個(gè)步驟開(kāi)始,就是真是的partition的操作了,首先,根據(jù)sub-partition的真實(shí)synthesis面積和內(nèi)部hard-macro的需求(高低、寬窄、數(shù)量等等信息),來(lái)規(guī)劃partition的大小和形狀。
第一要素:面積大小要給夠。
根據(jù)不同工藝和項(xiàng)目目標(biāo)值,一般整體的std-cell區(qū)域的利用率不要過(guò)高,要給后期的power-switch,tap-cell,optimization的器件留夠空間。當(dāng)然,對(duì)于特殊形狀的hardmacro也要預(yù)先布置好。
第二要素:形狀要可用
盡量做到拐角不浪費(fèi),高寬比例不失調(diào)。少邊角,多正方區(qū)域,給partition的layout留夠足夠的物理空間。還有數(shù)以邊沿區(qū)域,集中放置partition的terminal。
以上兩點(diǎn),處理得越好,返工迭代越少,top-level的push-down才可以進(jìn)展的順利不磕絆。
至此,floorplan的partition的boundary創(chuàng)建完成,如下圖所示
7. 第七步:PG網(wǎng)絡(luò)的創(chuàng)建和pushdown
如前面所說(shuō),PG net已經(jīng)創(chuàng)建成功了,這里,需要根據(jù)工藝和項(xiàng)目PG的需求,在頂層開(kāi)始創(chuàng)建真實(shí)的PG網(wǎng)絡(luò)了。通常來(lái)講,最高兩層會(huì)成為PG主要mesh的橫、這兩個(gè)布線的板層。每一版層都是使用固定步進(jìn)來(lái)實(shí)現(xiàn)電源地的PG-mesh創(chuàng)建。
Top-level創(chuàng)建完成后,整個(gè)core區(qū)域,默認(rèn)都會(huì)被鋪滿(mǎn),當(dāng)然,在那些創(chuàng)建partition的區(qū)域,也會(huì)鋪滿(mǎn)了PGmesh,如圖所示(這些密密麻麻的就是PG-mesh):
這個(gè)時(shí)候,需要做的事情就是將這個(gè)top-level的PG-mesh打到partition里邊(push-down),最終所有的partition都以這樣的PG網(wǎng)絡(luò)來(lái)規(guī)劃mesh,拼接到一起的時(shí)候,就會(huì)完美融合,這就是PG mesh的push-down的主要目的。Push-down后的結(jié)果:
可以看到,push-down后,只有top-only的PG-mesh可以被頂層看到,穿過(guò)partiton的PGmesh,就以及被打到partition里邊了
8. 第八步:partition的terminal規(guī)劃和創(chuàng)建
這一步驟,在partition的boundary,origin,以及PG-mesh的信息存在下,就可已創(chuàng)建partition的terminal信息了。
通過(guò)探索netlist,通常都會(huì)得到partition之間的穿線、直接互聯(lián)關(guān)系,同時(shí),由于頂層的macro,VA的布局也已經(jīng)完備,所有的terminal的創(chuàng)建,都要考慮到它們之間相互關(guān)系,從而將對(duì)應(yīng)的terminal朝著它們的傾向性連接的方向放置。這個(gè)小細(xì)節(jié),可以充分的提高interface timing的在物理位置、距離上的優(yōu)化。
此外,盡量把terminal都規(guī)劃到一個(gè)區(qū)域,從而間接的知道partition的placement可以把相關(guān)的邏輯放置的足夠近而不會(huì)產(chǎn)生乒乓放置的潛在隱患。如圖所示,如下就是partitionterminal 創(chuàng)建完成的結(jié)果:
9. 第九步:partition的abutterminal的處理
實(shí)際的項(xiàng)目網(wǎng)標(biāo)中,總會(huì)碰到一些partition之間的連接是直通的,例如:
Partition_A.data_o[63:0] -> Partition_B.data_i[63:0]
如果恰巧Partiton_A和Partiton_B在floorplan里邊,有一條abut在一起的一條邊,這就給了一次terminalabut的機(jī)會(huì),top layouter可以根據(jù)實(shí)際情況,選擇把這些terminalabut(貼合)在一起,從而讓這些直連的穿線在物理上拿到理論上的最短距離
10.第十步:partition的terminal的檢查
Icc2提供了一個(gè)非常好用的命令,來(lái)檢查terminal的狀態(tài);有沒(méi)有port沒(méi)有創(chuàng)建terminal,有哪些port的terminal的spacing違背了layer或者spacing的約束。通過(guò)這個(gè)都能價(jià)差出來(lái),強(qiáng)烈建議在release之前,使用這個(gè)命令來(lái)檢查partition terminal的QoR。正常的情況下,會(huì)得到如下的信息:
11.第十一步:partition的物理信息的導(dǎo)出
在上邊十步的處理完成后,就可以把下面羅列的partition物理信息逐一導(dǎo)出了。
· Boundary
· Terminal
· PGnet





