隨著晶片集成度越來越高和功能越來越複雜,在晶片開發過程中很容易產生缺陷。為確保晶片中的功能不受到影響,在流片前修復這些缺陷非常重要。本文將介紹如何通過手工修改網表代碼或使用Conformal或Formality等工具執行工程設計變更單 (ECO),來修復RTL固定後發現的缺陷。
所有現代數位邏輯都是由組合邏輯和循序邏輯組成的。組合邏輯由閘(gate)組成,而循序邏輯則由正反器(flipflop)組成。不同的電晶體以特殊的方式連接在一起形成一個閘電路,而連接不同閘則形成一個正反器。無論是組合邏輯還是循序邏輯,任何晶片的基本單元都是電晶體。
現代晶片由數十億個電晶體組成。例如,2021年10月發佈的最新款 MacBook M1 max 處理器就是由約570億個電晶體組成的。從電晶體的數量可以推斷出,M1 max處理器所包含的閘數就算沒有數十億至少也有數百萬,這些閘被仔細地建置於記憶體儲存格中。以邏輯方式精心地將這些閘互連在一起,就組成了功能強大的晶片。
整個晶片開發過程分為多個不同的階段。首先是前端階段,包括暫存器傳輸級(RTL)設計、設計驗證和可測性設計(DFT)插入;然後是後端階段,包括底層規劃、時脈樹合成以及佈局和佈線。在RTL設計過程中,先編寫晶片程式碼,然後進行模擬,接著合成設計,然後在RTL程式碼被固定的同時完成各種後端流程。
在晶片開發過程中很容易產生缺陷,因此為了確保晶片中的功能不受到影響,在投片之前修復這些缺陷十分重要。在像M1 max這樣的晶片中,由於電晶體數量龐大,出現缺陷的機率就更大了。透過手動修改網表程式碼或使用Cadence Conformal或新思科技(Synopsys)的Formality等工具執行工程變更指令(ECO)可以在RTL固定後修復發現的缺陷。
圖1:手動執行ECO流程的實例。
對於小規模ECO來說,手動更改網表程式碼是有效的,但在較大規模ECO的情況下,使用EDA工具是更好的選擇,因為它可以調整現有的邏輯等效檢查(LEC)流程,以便自動執行整個ECO過程。本文將介紹半導體產業中廣泛使用的光罩製作前(premask)平面型Conformal ECO流程。
光罩製作前平面型ECO流程涉及的步驟
圖2解釋了使用Conformal執行的光罩製作前平面化ECO流程。在開始ECO流程之前,應該先執行特定的等效性檢查。「邏輯等效檢查」(LEC)可以直接檢查修改後的設計,無需從測試台傳遞任何測試向量。這些檢查比執行回歸模擬更快,工程師經常在設計更改後使用這些方法來完成完整性檢查。
圖2:使用Conformal執行光罩製作前平面化ECO流程。
RTL1 – 未執行ECO的原始設計; RTL2 – 執行ECO的修改後設計; PNR1 – 未執行ECO且源自RTL1的佈線後網表; SYN2 – 執行ECO且源自RTL2的合成網表; PNR2 – 執行ECO增補程式的佈線後網表。
有關LEC及其流程的更多資訊,請參見本系列文章的第一部份——「使用Conformal進行邏輯等效檢查(LEC)入門」(A primer on logical equivalence checking (LEC) using Conformal)。
完成所有的初步檢查後,將帶有ECO的合成網表(SYN2)和原始的佈線後網表(PNR1)一併提供給Conformal工具。這些網表分別稱為改版設計和黃金設計。Conformal工具讀取不同類型的最佳化,例如由合成工具執行的邊界最佳化和分層時脈閘控,並在輸入黃金網表和改版網表之間執行LEC。LEC會報告非等效點。這些非等效點都應該仔細審查,因為增補程式的產生取決於這些失敗的關鍵點。
圖3:使用Conformal執行光罩製作前平面化ECO過程的更多詳細資訊。
該工具會產生一個增補程式,我們可以將該增補程式應用到黃金設計——PNR1上,以獲取新的帶ECO的佈線後網表(PNR2)。最後使用諸如Cadence Genus等合成工具及其提供的庫資訊完成增補程式最佳化。為了驗證ECO增補程式並確保沒有其他故障出現,需在SYN2和PNR2之間運行LEC,進而有望得到非等效關鍵點為零的成功結果。
使用LEC流程完成ECO
如前所述,可以修改現有的LEC流程來適應ECO流程。在執行ECO的同時修改現有LEC流程的第一步是比較黃金設計和改版設計,計算它們之間的增量變化。這個增量又名增補程式,隨後即被最佳化並應用於黃金網表。接著再次使用LEC比較帶增補程式的黃金網表和帶增補程式的合成網表以驗證ECO。如果比較結果沒有問題,那麼ECO就算成功了。
簡而言之,我們需要在ECO之前做三次等效檢查,並在ECO期間進行兩次等效檢查。在ECO過程中的兩次等效檢查之間,可以透過以下指令產生、應用和最佳化增補程式:
analyze_eco -hierarchical -ecopin_dofile ecopins.do patch.v -replace
set_system_mode setup
dofile ecopins.do
apply_patch -auto
optimize_patch -workdir <working_directory>
-library <lib_file_list>
-sdc <sdc_filename>
-instancenaming “ECOinst_%d”
-netnaming “ECOnet_%d”
-sequentialnaming “ECOreg_%s”
-synexec “genus”
-verbose
在RTL固定後,執行ECO可以發現設計中的缺陷並最終得到解決。手動修改網表程式碼可能是一個耗時且麻煩的過程。相較於手動執行ECO,使用Conformal或Formality等EDA工具可以實現整個ECO流程的自動化,並且速度更快,往往還能提供更好的結果。由於Conformal ECO流程利用了現有的LEC流程,因此在某些情況下可顯著減少整個ECO的工作量。
(參考原文:A primer on engineering change order (ECO) using Conformal,by Deekshith Krishnegowda)
從無線連接、更快的處理和運算、網路安全機制、更複雜的虛擬實境(VR)到人工智慧(AI)等技術,都將在未來的每一個嵌入式系統中發揮更關鍵功能。「嵌入式系統設計研討會」將全面涵蓋在電子產業最受熱議的「智慧」、「互連」、「安全」與「運算」等系統之相關硬體和軟體設計。
會中將邀請來自嵌入式設計相關領域的研究人員、代表廠商以及專家,透過專題演講、產品展示與互動交流,從元件、模組到系統,從概念設計到開發工具,深入介紹嵌入式系統設計領域的最新趨勢、創新和關注重點,並深入分享關於嵌入式系統設計的經驗、成果以及遇到的實際挑戰及其解決方案。
加入LINE@,最新消息一手掌握!