P&R 2

Floorplan:後端

要作好floorplan須要掌握哪些知識跟技能?網絡

一般,遇到floorplan問題,大體的debug步驟跟方法有哪些?工具

如何衡量floorplan的QA?性能

 

Floorplan是後端實現的根本,對後續流程的影響最大,所以必須綜合考量。SoC頂層的Floorplan涉及面廣而雜,以此作說明較有通用性。至於模塊級或IP級,能夠在SoC級的基礎上刪減一些。學習

 

如下羅列各方面的因素:測試

  • 芯片的形狀和尺寸。評價芯片三大指標PPA裏的A(Area)最終體如今了這裏。在工藝參數必定的條件下,A越小成本越低越有競爭力。對於TSMC來講(有的Foundry對曝光利用率並不強制要求),光有A還不夠,具體的長和寬的大小也會影響成本——即所謂的MFU。太低的MFU會被額外收費,很高的MFU會有額外獎勵;優化

  • 芯片在板級的互聯狀況。配套的顯示屏、存儲、電源管理、晶體等位於哪一個方向,決定了與之相關的IO的擺放,進而影響Floorplan;spa

  • 芯片一共有多少路電源輸入,其各自是否須要單獨關斷。歸屬同一電源的模塊應儘可能集中到一塊兒方便封裝走線以及電源網絡設計;debug

  • 封裝的具體要求。封裝對於PAD開口大小一般有明確的要求,其基板過孔的大小也會致使要求預留必定的位置不能開PAD口。相似存儲接口這類IO較密集的位置,須要仔細考量如何同時知足信號質量以及供電等方面的要求,而且方便封裝走線;設計

  • 進入先進的深亞微米工藝以後(40nm及如下),工藝上對於不少指標有了很是細的要求,好比Poly direction等。這些需求,會致使IP出現了方向性的概念:買的IP是NS的?仍是EW的?亦或是擺放在角落裏?這會涉及到項目規劃和IP採購,好比NS類型的IP就只能擺放在上、下兩條邊,沒法旋轉後放在左、右兩邊;

  • IO的選型也是Floorplan的一部分,in-line / stagger模式要根據芯片的實際狀況肯定,是否支持CUP要看工藝和IO庫。選定IO庫後,還會涉及到驅動能力的問題,通常講對外輸出的管腳對此敏感,須要用SSO的指標去評價是否帶得動外部電路,具體對某一組功能IO添加多少PG IO須要通過計算和評估,另外還會涉及到ESD等,也要在Floorplan階段規劃好;

  • 在Floorplan階段還要結合工藝提供的可用金屬層以及IR signoff標準,規劃具體的PG網絡設計。一般高層金屬厚度大電阻小會被用於主幹網,低層金屬的PG會影響signal routing,要仔細計算評估strap width / spacing等,橫豎strap之間的過孔會形成潛在的routing congestion,也要仔細評估如何添加。其餘還包括是否要求有back-bias?SRAM或IP是否有額外的供電網絡要求等;

  • 模塊的partition以及模塊間的channel設計,也是Floorplan時須要關注的問題。規劃時要充分考慮各模塊的特性,是否timing難收斂?是否routing難度大?不一樣模塊規劃成不一樣的形狀可能有利於利用頂層空間進而節省面積。Channel中要避免出現複雜邏輯以防止出現routing congestion。

  • 細節還有不少,特定IP對周邊環境的要求(好比PLL要放在儘可能遠離干擾的邊角附近),幾組IO是作成Ring?仍是構成一個個孤島?SRAM朝哪一個方向擺?MTCMOS擺成什麼pattern,用何種方式鏈接?如何利用placement / routing blockage引導工具作出本身想要的結果?

  • 要屢次迭代檢查後續流程中是否有任何問題與Floorplan相關並及時調整;

  • Floorplan做爲一個基礎,直接決定了後續實現工做可以達到的高度。好的Floorplan對外符合系統的要求,不會給系統設計形成額外的麻煩,對內不會形成意外的timing問題和routing問題。壞的Floorplan對內對外都會浪費更多的資源,例如走線層數、run time、功耗等。

評價機制上,首先要知足外部系統要求和內部各種IP、庫的具體使用要求,例如方位、PAD分佈、間距、Pattern等。在此基礎上,能夠對比不一樣版本的Floorplan在timing result、power、total net length等方面的差別。符合數據流向的好的Floorplan會帶來好的timing / routability / power結果。

 

Placement:

要作好placement須要掌握哪些知識跟技能?

一般,遇到placement問題,大體的debug步驟跟方法有哪些?

如何衡量placement的QA?

 

除了Floorplan階段和物理檢查階段外,PPA這三個目標都會定量的出如今各個階段中,成爲每一階段的目標。

 

Placement要完成的任務是把邏輯合理的擺放到Floorplan階段預留的空間中,儘量少的增長面積和功耗,同時知足時序要求。一方面,工程師應該瞭解工具的行爲和方法,另外一方面,工程師應該瞭解待處理的對象和可用的材料。

 

工具的行爲方法能夠從運行log中看出一部分,也能夠請教EDA AE。如今深亞微米的工藝愈來愈複雜,EDA對應的也提供了不少開關選項供工程師選擇,不一樣的開關會致使徹底不一樣的結果。

 

待處理的對象是設計自己,是timing critial(例如高性能CPU)仍是routing critical(例如CEVA DSP core)?也包括所使用的library,不一樣的library cell在時序、可繞線方面的表現徹底不一樣,這須要花必定的時間研究,以便在不一樣的場景下指導工具選擇不一樣的單元。

 

例如,讓工具儘量均勻地把邏輯攤開,仍是儘量把相關的邏輯集成到一塊兒,對timing / routability的結果會徹底不一樣。這對於CPU實現和DSP實現來講,就要求不一樣的開關組合。不一樣單元的pin density相差很大,所以dont use cell list等也須要斟酌。

 

Placement的問題一般表如今timing差,或者出現差的congestion map。debug時要具體問題具體分析,好比觀察timing path、各hier module的分佈狀況,看是否有Floorplan不合理或是工具設置不合理致使。

 

評價Placement時一般看幾點:

  • 能夠考慮邏輯門數的增量,因爲完成了一些HFN的fixing以及一些邏輯優化,面積會有小幅的增長,具體合理的增幅與綜合時是否考慮了Floorplan也有關係;

  • 看timing result,各timing group的setup time不該該有過大的violation;

  • 檢查congestion map,確認placement legalization以後,沒有出現high congestion的點等。

 

CTS:

要作好CTS須要掌握哪些知識跟技能?

一般,遇到CTS問題,大體的debug步驟跟方法有哪些?

如何衡量CTS的QA?

 

仍是先看目標,對於傳統的CTS來講,工程師須要儘量的把時鐘源頭產生的時鐘,在同一時刻傳遞給所有的FF(useful skew點除外)。在實際上固然沒法作到同時到達所有FF,所以有了最基本的latency / skew的概念。首先CTS的目標就是追求儘量小的skew,過大的skew會致使後續的setup/hold難以收斂;其次是追求儘量小的latency,這將會經過OCV影響timing結果,也會影響功耗。另外還有一些額外的指標須要考慮,例如上升沿和降低沿的均衡問題,一般工程師要挑選一些特定的門電路用於CTS,再好比時鐘脈寬在CPU設計中有較嚴格的要求,這對於CTS策略也有影響,另外考慮到SI的問題,用什麼樣的spacing,要不要加額外的shield routing也須要考慮。

 

一樣的,凡是用到工具的地方,都須要理解工具的行爲,從log裏能夠看到,工具是「如何」長成clock tree的,是從根節點向leaf節點看,仍是從leaf節點向根倒推?哪些指標能夠顯式的影響到工具的運行結果?也要了解設計,一般SRAM、hard macro等有可能致使tree意外變長,能夠重點關注。

 

CTS的結果若是不夠好,須要分析具體是哪一個時鐘出了問題(一般設計中會有不少個時鐘,特別是考慮到功能模式和測試模式後)。分步長CTS是一個能夠考慮的方法,以便對比先後不一樣階段時不一樣tree的性能。有時也須要與Designer討論時鐘的定義是否仍有優化的空間。

 

評價CTS的結果,除了latency / skew外,功耗也是一個重要因素,一般clock network會佔到全芯片功耗的很大一部分。另外,若是common path太短,可能會形成後續的timing fix難度較大,所以須要檢查不一樣分支的clock是否儘量多的使用了common path。面積增量也是一個檢查的方向,過大的面積增長可能意味着比較差的CTS結果。

Route:

要作好Route須要掌握哪些知識跟技能?

一般,遇到Route問題,大體的debug步驟跟方法有哪些?

如何衡量Route的QA?

 

仍然是要了解工具,瞭解工藝。不一樣金屬層的厚度、電阻率都不一樣,在不一樣的PVT corner下會對timing帶來徹底不一樣的影響。

 

Route階段工具能夠優化的幅度已經不太大了,不少結果已經被前期Floorplan / Placement / CTS所決定,所以順序上越靠前的步驟越應該多優化。

 

Double pattern的出現致使routing engine須要有一個升級,而且須要引導工具合理的使用double pattern CAD layer。除了基礎的完成所有的連線外,從DFM的角度考慮,過孔的可靠性須要額外的進行優化,所以有了double via ratio的概念。實際routing完成後,工具能夠看到真實的SI效應,所以timing結果須要根據實際狀況進一步進行優化。

 

Route階段不該該出現大的congestion意外,若是發現要仔細分析與Floorplan / Placement等階段到底有何不一樣。理論上congestion map在各步驟之間應該是連續可控的。若是發現Route有問題,包括DRC / short / open等,須要檢查是否有充足的資源用於route,是否出現局部routing過於擁塞,是否與PG或Clock net相關等,以便進行局部微調,或者調整Floorplan等。

 

Route以後不該該出現大的timing violation和DRC violation。面積增量應該是受控的,不然須要檢查約束是否合理(尤爲是hold time)。

DRC:

要作好DRC須要掌握哪些知識跟技能?

一般,遇到DRC問題,大體的debug步驟跟方法有哪些?

如何衡量DRC的QA?

 

DRC一般被分類爲前段和後段,即一般講的base layer / metal layer。前段DRC要在較早的時間點上確認乾淨,因其每每與Floorplan相關,若是後期改動時間來不及。

 

DRC與工藝直接相關,每一代先進工藝都會引進大量的DRC rule,所以須要提早學習設計規則文件,瞭解Foundry有哪些要求,以便在Floorplan時即有考慮。

 

先進工藝下的DRC檢查,除了基礎的寬度、間距這些幾何檢查外,還混合了ESD、latch-up等鏈接性和電路檢查。這就要求工程師熟悉設計規則的同時,清楚DRC rule file裏每一個開關選項的具體含義和用法。正確的使用開關組合以及開啓相應的完備的檢查是DRC signoff正確的前提。

 

基礎的DRC作debug在GUI上顯示分析便可很容易,ESD等跟電路結構有關,若是本身不具有分析能力,須要請layout engineer幫忙分析。另外有不少新的DRC rule與電壓等信息相關,所以輸入信息的準確性也須要反覆檢查。

 

評價芯片的DRC結果,首先要劃分類型:必須消滅的和能夠waive的:

除了一些特定緣由引發的DRC能夠waive(好比電感或敏感電路周邊的density issue,或者designer確認電路自己沒問題只是工具的理解有問題)外(也要跟Foundry確認),其餘的DRC都要修乾淨。

再說幾句題外話,偉哥的師傅Kimi哥說過,後端實現是「良心活兒」。這實在是一句真理。理論上說,經過了形式驗證的後端數據,功能正確性就有了保證;經過了物理驗證的後端數據,可生產性就有了保證;再經過timing、IR、SI等方面的signoff check,後端數據的使用正確性也有了保證。然而,做爲後端工程師這時候就能夠交差了麼?顯然不是。PPA三項指標,還能不能再作優化一些?能不能少用一層金屬一層孔?能不能少用一種Vt的device?電源網絡設計還能不能再robust一些?DFM recommendation rule是否能多知足一些?ESD放電路徑是否能再增長一些冗餘度......

 

若是有無限多的時間和無限多的資源,理論上能夠逼近最完美的那個解。但是在實際項目裏,不論是時間仍是其餘資源,trade-off無處不在,所以,雖而後端實現沒法從無到有的增長功能,但好的後端實現可以最大程度上保障芯片的可用性和可靠性。後端實現的「靈魂」,在於在於不斷地尋找更優的可能,發自心裏的想把芯片作得更強壯更好用,在於今天要比昨天作得更好。

相關文章
相關標籤/搜索