JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

實體驗證:DRC 與 LVS

你已經完成了佈局、時脈樹、繞線,也簽收了時序——但這些都還不能證明晶圓廠真的能把你的晶片造出來,也不能證明你畫下的那些多邊形仍然對應著你想要的那張電路。實體驗證在 [[tapeout|流片]]之前拋出兩個不留情面的問題:這版佈局能不能被製造出來,它和網表對不對得上?本指南帶你走一遍 DRC 與 LVS——晶片設計裡的「建築驗收」和「竣工圖對照施工藍圖」檢查——以及它們的兩個同胞兄弟:天線效應檢查與 ERC。貫穿始終的主題只有一句:根本不存在「差不多乾淨」這回事。

流片前的兩個問題

到這一步,你的模組已歷經千辛萬苦。你先做了 佈局規劃,擺好了 標準單元佈局),搭起了 時脈樹,把每一條網路都 繞通了線,抽取了 寄生參數,最後收斂了 時序。這版佈局*能跑*——在模型裡。但能跑的模型不等於一顆晶片。在把設計交給晶圓廠之前,你必須回答兩個不留情面、彼此獨立的問題,而且兩個都得給出肯定的答案。

第一個問題是:晶圓廠在物理上造得出來嗎? 你的佈局是幾十層 金屬層和矽層上數以百萬計的多邊形。晶圓廠靠 微影把它們變成現實——透過光罩把每一層印到晶圓上——而這個製程有著硬性的物理極限。導線不能畫得比光與化學反應所能穩定複現的還細;兩個圖形挨得太近,就會在印製時糊成一團。[[design-rule-check|設計規則檢查(DRC)]] 回答的就是這個「可製造性」問題。

第二個問題是:這版佈局真的對應著我設計的那張電路嗎? 在更上游的某個環節,你有一份 合成出來的網表——它是一份權威清單,列出了每一顆電晶體,以及每一條本應把它們連起來的導線。佈局繞線造出的物理佈局*本應*實現這份網表,但一處接錯的連接、一個漏掉的導孔、或是一次手工改動,都可能悄無聲息地破壞這種對應關係。[[layout-versus-schematic|佈局與電路圖比對(LVS)]] 回答的就是這個「正確性」問題。DRC 與 LVS 合在一起,就是 實體驗證的核心。

晶圓廠的規則集

每一家晶圓廠、每一個製程節點都會隨附一份規則集(rule deck)(常被叫作 DRC runset 或製程規則)——一份冗長而精確的文件,逐條寫明這條產線能製造出怎樣的幾何圖形。把它想成那套製程的建築規範。建築規範不管你的房子漂不漂亮、房間佈置得對不對;它規定的是:立柱間距不得超過 16 英吋、樓梯至少要這麼寬、橫梁至少要這麼厚。晶圓廠的規則集對矽做的是同樣的事,只不過單位是奈米。

規則成族成類。寬度(width)規則:本層上的導線不能比 X 還窄——再細,微影就印不清楚了。間距(spacing)規則:同一層上的兩個圖形至少要隔開 Y,否則它們會橋接成一個。包覆(enclosure)規則:導孔必須被上下兩層金屬完整地包住、並留出一定餘量,這樣即便光罩稍有錯位,孔也仍然落在金屬上。密度(density)規則:每一層都既不能太空、也不能太滿,因為銅分佈得越均勻,化學機械研磨(CMP)這一步就平坦化得越好。這樣的規則有成百上千條,全是數字,全都沒得商量。

# Foundry rule deck — illustrative entries (units = nm)
M1.W.1   : min_width(metal1)        >= 32     # thinner won't print
M1.S.1   : min_spacing(metal1)      >= 32     # closer shapes bridge
VIA1.EN.1: enclosure(metal1, via1)  >= 5      # metal must wrap the via
M1.DN.1  : 0.20 <= density(metal1)  <= 0.80   # for uniform CMP polish
幾條有代表性的設計規則。先進節點真正的規則集足有上千條;DRC 工具會拿你的佈局逐條去比對每一條。

DRC:它守不守規則?

DRC 就是那位建築驗收員,手裡拿著規範手冊,在你完工的佈局裡一寸寸地走。它不在乎你的晶片*能做什麼*;它只在乎每一層上的每一個圖形,是不是滿足規則集裡的每一條。工具會掃遍整張佈局——數以十億計的多邊形——並把每一處量出來不達標的地方都標出來:這條線寬 30 奈米,而最小值是 32;這兩塊金屬相隔 28 奈米,可它們必須隔 32;這個導孔戳出了本該把它包住的金屬之外。

設想同一層上有兩條平行導線,漂得太近——這是一處間距違例。在螢幕上它只是一條細如髮絲的縫;可在晶圓上,微影會把它們印成糊在一起的一團,把兩條本不該相碰的網路短路了。或者設想一條線為了擠過一個障礙而收窄成一根細絲——這是一處寬度違例;晶圓廠沒法穩定地複現這麼細的東西,於是它可能印成一條斷開的、開路的線。DRC 在這些問題*還沒變成矽片之前*就把它們抓出來,此時修起來不過是動一動繞線,而不是一次燒掉數百萬美元的重新流片。

輸出是一張違例清單,每一條都關聯著一個規則名和精確座標,讓你能徑直跳到那塊出問題的幾何圖形上去。大多數違例靠挪一挪、重新走一走線就能修好——往往只是一處小小的 繞線ECO改動。這個循環簡單而不講情面:跑 DRC、讀違例、修掉它們、再跑一遍。你一遍遍重複,直到違例數收斂到唯一的一個數字。

# Run design-rule check against the foundry deck
drc -layout   block.gds \
    -ruleset  foundryN_drc.rules \
    -report   block.drc.rpt

# Goal: this number is ZERO
Violations found: 0
一段不依賴任何廠商工具的 DRC 呼叫範例。對流片而言,唯一可接受的違例數就是零——哪怕只有一處真實違例,都能把整顆晶片卡住。

LVS:它和網表對得上嗎?

DRC 證明佈局*造得出來*,卻完全沒說你造的是不是對的東西。那是 LVS 的活兒。打個比方,它是一次竣工圖對照施工藍圖的實地巡檢:驗收員拿著建築師的藍圖和蓋好的房子,一個元件一個元件、一根線一根線地核對——每個房間是不是都在圖紙說的位置上,每根管子是不是都接到了正確的衛浴器具上?一棟房子可以蓋得無可挑剔,卻把廚房的水槽接到了浴室的管路上。DRC 永遠不會察覺;而 LVS 存在的意義,正是為此。

從機制上看,LVS 做兩件事。它先從佈局裡抽取一份網表——讀入那些多邊形,僅憑幾何圖形本身推斷出存在哪些電晶體、誰和誰連在一起。然後它把這份抽取出來的網表與參考網表(電路圖/合成網表)相比對,後者正是這版設計本應實現的那一份。它把兩者一個元件一個元件、一個節點一個節點地配對起來。如果連接關係完全一致,LVS 就報告比對乾淨通過。若不一致,你就會拿到一堆不匹配項。

那些經典的失敗,讀起來就像一場出了岔子的管路驗收。一處短路(short):本應彼此分開的兩條網路,在佈局裡卻連到了一起——像兩根管子被誤接成一根。一處開路(open):本應是一整條的網路,被斷成了兩截——像一根沒接到器具上的管子。一處元件不匹配(device mismatch):佈局裡的電晶體,尺寸或數量和電路圖對不上。每一項都按網路名或元件名報出來,讓你能一路追溯到佈局究竟在哪一處偏離了設計意圖。

天線效應與 ERC

DRC 和 LVS 還有兩個關係很近的同胞兄弟,湊齊了實體驗證的整套。頭一個是天線效應檢查(antenna check)。在製造過程中,晶圓廠是一層 金屬層一層金屬層地把你的晶片造出來的,每一層都要用電漿去蝕刻。一段很長的金屬,若已經連到了某個電晶體的閘極、卻*還沒*連到任何能把電荷洩走的地方,就會像一根小小的天線:它從電漿裡收集電荷,而這些電荷可能越積越多,多到足以擊穿、損壞那層薄薄的閘氧化層。造好的晶片在電學上也許完美無缺,可*造它的那道工序本身*,已經毀掉了一顆電晶體。

所以天線效應檢查本質上是一條關於製造順序的、DRC 式的幾何規則:它限定了在一條網路接上安全通路之前,最多能有多少裸露的金屬(也就是「天線比」——收集面積與閘極面積之比)掛在某個閘極上。修法很機械——加一個小小的天線二極體(antenna diode)把電荷洩到地,或者把這根線提早「跳線(jog)」到更高一層 金屬層上去,讓那根危險的天線被拆成幾小段、在不同的時刻分別被製造出來。

# Antenna rule (illustrative): exposed-metal area vs gate-oxide area
antenna_ratio = metal_area_on_gate_net / gate_oxide_area
# Violation when the accumulated ratio exceeds the foundry limit
antenna_ratio <= ANT_MAX     # else add an antenna diode, or jog to a higher layer
天線比拿收集電荷的金屬面積,去比它可能損壞的那個閘極。和 DRC 規則一樣,唯一算通過的狀態,就是「處處都在晶圓廠給的上限之內」。

第二個兄弟是 ERC——電氣規則檢查(Electrical Rule Check)。如果說 LVS 問的是「這些連接和網表對得上嗎?」,那麼 ERC 問的就是「這些連接在電學上*說得通嗎*?」它要揪出那些結構上合法、電學上卻錯了的東西:一個懸空的閘極輸入(什麼都沒連,於是它的取值無從確定)、一對被誤接短路的 電源與地網路、一個被兩個東西同時驅動的輸出接腳。把它想成水管工和建築驗收員都簽字放行之後,電工再來走一遍的安全巡檢。

「乾淨」——以及為什麼它沒得商量

在大多數工程裡,「夠好了」是一把可以滑動的尺子——99% 的測試覆蓋率很棒,差 0.1% 的效能也無所謂。實體驗證不是這麼玩的。對 DRC、LVS、天線效應和 ERC 來說,唯一可接受的結果就是乾淨:零違例、零不匹配,每一項檢查、覆蓋整顆晶片。不是「差不多乾淨」。也不是「有三個已知的豁免項,回頭再看」——除非晶圓廠已經為每一項豁免正式簽了字。就是乾淨。

原因是冷酷的經濟帳。一旦你 流片——把最終的 GDSII 交付給晶圓廠——先進節點的一套光罩動輒數百萬美元,而晶圓要數週到數月才回得來。哪怕只有一處真實的 DRC 違例,都可能意味著某個圖形印不出來,整顆晶粒就此報廢。哪怕只有一處 LVS 短路,都可能意味著晶片實現的是錯誤的電路——矽片在通電的那一刻就功能性死亡了。無論哪一種,修法都不是重新編譯一下;而是一次重新流片(respin):重畫、重新驗證、重做光罩、重新製造。數月光陰、數百萬美元,就這麼沒了。

  1. 拿晶圓廠的規則集跑一遍 DRC;把每一處寬度、間距、包覆和密度違例都修掉,直到違例數為零。
  2. 跑 LVS:從佈局抽出一份網表,與參考網表比對;把每一處短路、開路和元件不匹配都解決掉,直到它報告比對乾淨通過。
  3. 跑天線效應檢查;加天線二極體或把導線跳到更高層,直到每一個閘極都落在晶圓廠給的天線上限之內。
  4. 跑 ERC,揪出 LVS 不會標記的懸空節點、電源/地短路和驅動衝突。
  5. 確認四項都在整顆晶片範圍內乾淨通過——到那時,也唯有到那時,才把 GDSII 放出去流片。