光罩製作前的晶片工程設計變更

作者 : Deekshith Krishnegowda,Marvell Technology設計工程師

隨著晶片集成度越來越高和功能越來越複雜,在晶片開發過程中很容易產生缺陷。為確保晶片中的功能不受到影響,在流片前修復這些缺陷非常重要。本文將介紹如何通過手工修改網表代碼或使用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過程中的兩次等效檢查之間,可以透過以下指令產生、應用和最佳化增補程式:

  1. 產生指令此指令產生分層增補程式。該工具還可以根據增補程式和接腳可用性添加/刪除ECO接腳。

analyze_eco -hierarchical -ecopin_dofile ecopins.do patch.v -replace

set_system_mode setup

dofile ecopins.do

  1. 將增補程式應用於黃金設計使用以下指令將產生的增補程式應用於黃金設計。

apply_patch -auto

  1. 最佳化指令隨後用提供的庫資訊和Genus合成工具最佳化增補程式。最佳化後增補程式中的實例、網路和暫存器的命名可以透過適當的參數進行控制。

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)

本文同步刊登於EDN Taiwan 2022年2月號雜誌

加入LINE@,最新消息一手掌握!

發表評論