如標題所寫,我們今天聊一聊IC設計種的ECO。在展開關于ECO的概念之前,我們先大致捋下數字IC設計的流程,有助于我們后面的討論。
數字IC設計流程簡述
1、確定項目需求
根據市場或者芯片功能要求,設計芯片的spec,得到可行的芯片設計方案。
2、系統級設計
用系統建模語言對各模塊進行描述
3、前端設計
RTL設計、功能仿真、硬件原型驗證、電路綜合、DFT、STA
4、后端設計
版圖設計、物理驗證、后仿真
在復雜的設計流程中,bug是難以避免的。對于芯片設計而言,bug自然是越早發現越好。但是仿真驗證差不多,進入RTL freeze階段后,一旦發現新的bug,就變得有些麻煩。
因為RTL freeze前,你可以通過修改RTL來更正你發現的bug。然而RTL freeze之后,后端人員做好了floorplan,或者已經開始布局布線,這個時候再去重新做一遍,既耗時耗力,又會惹怒后端。這顯然不是好的選擇。
如果這個時候即將tapeout,甚至已經tapeout,根本就沒有機會修改RTL了。
這個時候,我們就需要ECO,來修正我們的失誤了。
什么是ECO?
ECO,即Engineering Change Order的縮寫,指工程改變命令。
什么意思呢?簡單來說就是手動修改集成電路的過程,換句話說,就是直接手動修改netlist。
一般應用于數字芯片版圖設計。
對于數字IC設計而言,ECO這一步實際上是正常設計流程的一個例外。它是對設計的layout進行局部的小范圍的修改和重新布線,而不影響到設計的其它部分的布局布線,所以其它部分的時序信息沒有改變。
根據功能的不同,ECO可以分為功能改變和非功能改變。功能改變是指由于來自客戶對設計的追加需求(spec改變)或者設計的最后階段發現芯片存在 bug 的情況下進行的 ECO;而非功能改變則是為了在不改變 RTL 網表的基礎上修復部分時序以及串擾等問題而做的 ECO。
說到底,ECO的目的就是省錢省時間。
那么在不同階段,進行ECO,有什么樣的區別呢?
在階段上,數字IC設計中的ECO大體可以分為:tapeout前的ECO,tapeout過程的ECO,tapeout后的ECO。
Tapeout前的ECO
在RTL freeze后,tapeout前這一階段,RTL已經沒法修改,但是好歹也沒有進入tapeout,還有補救的機會。
此時數字前端負責寫coding的工程師需要在final RTL的基礎上,通過寫ECO腳本的方式來實現功能上的ECO。
ECO代價:時間成本,相對較小
Tapeout過程中的ECO
當數字后端實現后的design,timing已經符合signoff標準,DRC已經clean,LVS已經pass,IR drop,MVRC,Formality,DRCPLUS等都已經pass。
但是,數字前端設計工程師還沒來得及做完大部分case的后仿,而且芯片又面臨著Timing-TO-Market的壓力。此時,進入tapeout階段。
為什么不給自己留更多余地呢?因為foundary會先做base layer的加工。只要后期仿真發現的問題,不需要再添加額外的cell,就不耽誤之前的tapeout(此處有點像流水線)。即使發現需要新加幾個cell,這個時候仍然可以通過替換后端實現過程中所加的ECO cell或者spare cell來實現。
ECO代價:時間成本較大
Tapeout后的ECO
當芯片已經tapeout回來,我們在測試過程中卻發現了必須修復的bug。這個時候做ECO的代價相對前面兩種,就要大很多。
改動少的可能僅需要改幾層Metal layer,改動大的話可能需要動十幾層Metal layer,甚至重新流片。在此階段,前端設計工程師需要出具ECO方案,同時讓后端工程師進行評估,主要評估需要改動的層數,timing 是否能快速收斂等方面的風險。
在一次次確認后,敲定方案,進行ECO。
ECO代價:時間與金錢成本巨大
由此可見,即使ECO能夠亡羊補牢,但是為了節省更多的時間和金錢成本,還是盡早發現問題,盡早解決吧。
關于ECO的分類:
常見的ECO可以分為pre mask ECO和post mask ECO,也就是任何layer都可以動到的ECO和只修改metal layer的ECO。
兩者的區別在于,pre mask ECO的晶體管和布線層都還沒有開始做出mask,此時可以往netlist里面添加cell。而post mask ECO的晶體管層已經開始進行加工了,但是布線層還沒有加工,還能修改,可以通過ECO改變各種已有cell的連線關系,但是不能添加新的cell,有一定局限。
換句話說,從freeze到tapeout之間的ECO叫pre mask ECO;tapeout之后,已經加工完芯片的晶體管,但是還沒有做晶體管連線期間的ECO叫做post mask ECO。
Pre mask ECO:
Pre mask ECO比Post mask ECO要靈活得多。在tapeout之前,如果發現有任何需要修改的地方,都可以用這種方法。它可以改成百上千個單元。該操作主要是針對靜態時序分析和后仿真中出現的問題,對電路的網表直接進行修改,待網表修改完畢之后反饋到PR工具中對標準單元的布局和連線進行小范圍的改動。當然,直接對網表進行修改是存在風險的,所以之后一定要進行形式驗證(formal verification),確保功能實現。
Post mask ECO:
Post mask ECO是利用預先留好的備用單元(Spare Cell),做的邏輯修改。如果后期發現Timing存在問題(或者想小動Function),可以利用附近的Spare Cell搭配上層金屬連線來修改電路結構。比起Pre mask ECO,這種ECO受限于Spare Cell的位置,所以它的修改規模十分有限。
Spare Cell:
Foundry提供一種服務,允許客戶在wafer加工到poly以及M1層的時候,讓大部分wafer暫時停止加工,而少量wafer繼續加工直至完成。之后可以對這些完成了的wafer上的die進行測試,如果發現存在功能或者時序上的問題,那么可以通過利用那些預布在die上的spare cell來解決。
由于絕大部分的金屬層都沒有加工,因此在不修改標準單元布局的情況下,只用改動幾層金屬的mask并利用spare cell去修復這些問題。如此一來,也大大降低了流片的風險。而Post mask ECO則提供了一種根據silicon測試結果進行Debug的方法。
Post mask ECO 可行的前提是設計里有足夠的可供新功能實現的cell, 如Spare cell, Freed cell, GA cell。
Freed cell,這些cell原本服務于原始的邏輯功能,但是因為邏輯功能更改,被釋放出來,既然已被釋放故可以用于來實現新的功能。GA cell,是內部晶體管沒有鏈接的cell,是可以被“編程”的cell,在做ECO 時,通常用最底層金屬如M1 將GA cell 內部的晶體管鏈接起來,以實現對應的邏輯功能,如:與或非、選擇器、寄存器等。
而Post mask ECO的修復則受制于這些cell的位置,可以說是不太靈活了。
從邏輯和物理來看,ECO又可以分為Logic ECO和Physical ECO。Logic ECO是對網表的邏輯功能的修改。在芯片設計的后期階段,前端工程師可能會發現設計上的某些bug,進而需要對電路做修改,而此時的schedule已經不允許進行重新綜合,因此會選擇在PR的網表上進行邏輯修改,一般情況是會增加一些邏輯或者將某些邏輯的net重新連接;而Physical ECO主要是針對PR工具無法完全修復的問題進行手動修正。一般包括Timing ECO,drc fix等。
ECO的實際運用與技巧
對于版圖工程師來說,經常會碰到一些function ECO的需求:
從上圖可以看到,為了保證數據庫有優先級的收斂,最后的timing ECO會分為幾個主要步驟
·功能模式的時序修復:function mode
·存儲器自測模式的時序修復:mbist mode
·其他測試模式的時序修復:test mode
·芯片接口時序修復:IO mode
功能模式的重要性、工作量和難度都是最大的,需要盡早修復,然后是其他的模式。整個流程基本上是按照步驟和優先級完成整個芯片的時序修復的。
改變功能的ECO被稱之為function ECO,但是實際上,這種ECO可能是針對真正的function mode的,也有可能是針對mbist 邏輯的,或者有可能是針對at-speed test mode的。
由于function ECO會引起潛在的timing arc的變化,因此帶入function ECO的時間點是有講究的。一般來講,只會在一種模式的timing修復告一段落的時候,才會帶入這個模式的function ECO。
假如在時間節點Pre-B,前端準備好了一個比較大的function ECO,這個ECO是給mbist服務的。通常需要先驗證這個腳本的正確性,如果腳本本身沒問題,在這個Pre-B的時候并不帶入,因為這個時候整個mbist的時序還不夠穩定。
等到了Pre-C的時間節點,mbist的時序修復基本完成的階段,這時可以代入這個ECO。理論上講,新出來的timing violation都是由于這個腳本引起的。
增量設計工作模式,是ECO階段的重重之重,任何違背增量設計方案的舉動,都會造成局部損耗,甚至更糟的結果。
功能ECO的腳本生成的探究和技巧
后端一般會在最終layout的節點,給前端分享最終layout版本的網表。一般為了閱讀方便,后端都是給前端一個不帶PG信息的netlist。前端同學在完善數據庫的過程中,同時也會對各種問題進行評估,最終給出解決方案:
·軟件改動
·約束用戶行為
·硬件改動
如果有任何需要在硬件方面做的功能修改,前端會先保證RTL修改、驗證完成后,對相應的final layout的網表進行修改。
綜上所述,一個function ECO的誕生過程大抵如下:
前端主要關注功能,后端主要關注實現,對于下面的幾個主題的關注度,這里展示一下:
前端基于final layout的網表,改出來一版帶function ECO的功能網表,這個流程基本就算大功告成了。
ECO版圖實現的技巧和經驗
在ECO中,版圖的實現是非常重要的步驟。是否能完成STA的腳本期望,是數據庫能否走向收斂的關鍵點。一般的STA對應的ECO和相應的修復方法如下:
ECO的物理實現就是兩種情形
·size_cell
·add buffer
這里邊最會產生的影響其實是面積和器件的位置變動(dis-placement)
器件的位置變動帶來的影響都可能導致ECO無法如期進行,因為原有數據庫的cell的放置被調整,之前的繞線需要做相應的調整,同時帶來更多的timing/驅動能力的問題,這樣就會給數據庫帶來不期望的抖動。
為了盡可能保證原有數據庫的狀態,這里引入一個新名詞:Minimal Physical Impact Flow(MPI)。
較小的dis-placement帶來更為穩定的版圖數據,繞線的挑戰也比較小,這是MPI的核心思想。
ECO收尾階段的風險和注意點
在ECO收尾階段,所有決策和行動都需要慎重,否則出了問題就叫苦不迭了。
先說結論,兼顧metal fill,MCMM以及VT cell的靈活使用,是ECO后期成功收斂的關鍵要素。
MCMM,全稱為:multi_corner和multi_mode,而multi_corner(PVT):process/voltage/tmperature。
multi_mode:function/scan_shift/scan_capture。
看到它的全稱,想必你就明白它的重要性了。
至于metal fill,先進工藝是需要fill的支持,來保證流片的物理需求,fill是基于繞線和布局的,如果繞線或者布局改變了,就需要重新跑fill。所以在先進工藝,一定不能忽略fill對timing的影響,tapeout之前,一定要保證fill的信息完全和真實的數據庫匹配,這樣跑出來的timing才完整可信。
ECO的時序信息通常是增量示的,除非你改變了繞線。這是需要在ECO后期階段牢記的一點。
對于一個數據庫,經常會遇到在接近TO的ECO的迭代中,會冒出一些和修復timing沒有關系的微小的setup/hold violation。這個大多是由于繞線的細微改變,而導致的時序變化。這個時候,VT cell就會派上用場。
時間是TO前最值錢的,使用VT cell進行ECO,最大的方便時省略了ECO 繞線、寄生參數的抽取和STA的re-run。這三個步驟的時間是非常長的。有了VT cell的幫忙,這些時間統統可以省略。
經歷了這么一系列流程與注意事項,我們終于可以完成ECO,確保tapeout順利,獲得一塊good chip。
以上,經過筆者粗淺的總結和整合,將ECO相關的知識點與大家分享。
審核編輯 :李倩
-
IC設計
+關注
關注
38文章
1295瀏覽量
103918 -
ECO
+關注
關注
0文章
52瀏覽量
14885
原文標題:科普:數字IC設計中的ECO是什么?
文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論