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

流片:從乾淨的佈局到 GDSII

你已經做完了佈局規劃、佈局、建好了時脈樹、完成了繞線,也對時序做了簽核。佈局終於乾淨了。現在,整個後段流程一直朝著它前進的那一刻到來了:把這份打磨好的佈局變成一個能送進工廠的單一檔案。這節收尾課帶你走完最後的檢查清單,講清楚 GDSII 究竟是什麼、「流片」意味著什麼、你的設計接下來會去哪裡,然後把你交接給那條把檔案變成矽的製造課程。

終點線

回想一下後段流程做過的所有事。你從一份閘級網表和一塊空白的矽矩形出發。你做了佈局規劃來決定大區塊和接腳擺在哪裡,做了佈局把每一個標準單元放進合法的列裡,做了時脈樹合成把時脈均勻地扇出,又做了繞線在真實的金屬層上畫出實際的連線。然後你做了簽核:你跑寄生參數萃取靜態時序分析,直到每條路徑都滿足預算,還檢查了功耗。整個序列——佈局繞線加上簽核——都在朝著同一份交付物逼近。這節課就是你把它交出去的地方。

「流片」就是這次交接的名字。它是這樣一個節點:你不再*改動*設計,而是開始*把它寄出去*——你凍結佈局,把它寫成一個檔案,再把這個檔案送到製作光罩的地方。這個詞是個化石:幾十年前,最終的設計資料真的是裝在一卷磁帶上離開大樓的,有人把磁帶用膠帶封好,帶去光罩廠。磁帶早已不在了,但這個名字留了下來,那種感覺也留了下來——一旦寄出去,就回不來了。你沒辦法像給軟體打補丁那樣給矽打補丁。

# Final signoff STA: prove timing on the WORST corner, not a friendly one.
set_analysis_mode -on_chip_variation true       ; # apply OCV derating margins
report_timing -corner slow_ss_125c -delay setup  ; # slowest silicon, hot -> setup
report_timing -corner fast_ff_m40c -delay hold   ; # fastest silicon, cold -> hold
# Tapeout gate: worst slack across ALL corners must be >= 0.
簽核是一個跨多個製程角的承諾。通過/不通過的規則很簡單——所有製程角裡最差的那個[[slack|裕量]]必須保持非負——只有到這一步,時序才掙到了它的勾選標記。

最後的簽核清單

在任何人按下「寫出 GDSII」之前,設計必須通過一份全隊都認可的檢查清單。它沒聽起來那麼風光,卻幾乎比什麼都更重要:流片就緒就是*一串綠色的勾選標記*,只要有一個紅的,就能卡住整次釋出。三大項是時序、物理正確性和功耗——正是後段流程一路追逐的那三樣,如今在最終的、完全繞線好的、帶有真實寄生參數的佈局上,再做最後一次確認。

  1. 時序已簽核。 時序簽核確認每條路徑都有非負的裕量——建立和保持都通過——這是在最終繞線後的網表上、跨所有相關的製程角、並施加了晶片內變異餘量後得到的結論。沒有任何路徑失敗,任何地方都沒有負裕量。
  2. DRC 乾淨。 設計規則檢查確認佈局遵守了晶圓廠要求的每一條幾何規則——最小線寬、間距、包圍、密度。零違規。
  3. LVS 乾淨。 佈局與電路圖比對確認你畫出的幾何形狀與你預期的網表一致——同樣的元件,同樣的連接關係。你畫出來的那顆晶片,*就是*你設計的那顆晶片。
  4. 功耗已驗證。 供電網路要做IR 壓降檢查(每個單元都拿到足夠的電壓)和電遷移檢查(沒有哪根線通過的電流大到會被磨損耗盡)。電源和地安全地抵達每一處。
  5. ECO 已收尾並重新驗證。 任何最後一刻的工程變更指令都已經繞線進去,*而且*受影響的檢查都重新跑過——因為正是那個用來收住時序的修改,可能會捅出一個 DRC 違規。

留意最後那句話裡藏著的陷阱。這些檢查並不是各自獨立的——它們彼此耦合,修好一個可能就弄壞另一個。為收住一條時序路徑而放大一個單元,你可能就違反了某條間距規則;為修這個 DRC 而重新繞線,你又改變了寄生參數,於是你的時序必須重新證明一遍。流片的紀律,就是拒絕在一個*已經過期*的結果上簽字。每一個綠色勾選標記都必須是在同一份、最終的資料庫上才是綠的——就是你即將寄出去的那一份。

GDSII:你寄出去的那份佈局

那些檢查全都是針對你工具內部的某個資料庫通過的。要把設計寄出去,你得把它壓平成一個自包含的檔案,用光罩廠能讀懂的格式。幾十年來,這個格式一直是GDSII——一段二進位流,它把你整顆晶片存成純粹的幾何:一疊層,每一層上是一堆帶有精確座標的多邊形。這就是它的全部理念。GDSII 不知道什麼是電晶體、什麼是時脈。它只知道:*在第 31 層,有一個從這裡到那裡的矩形;在第 49 層,有這個多邊形。* 這是用刻鏤空模板的人會用的方式來描述的晶片——一張張片子上的形狀——而不是邏輯設計師會用的方式。

把它想像成一疊高高的透明膠片。最底下的幾張片子裝著微小的電晶體形狀;往上爬,你會經過接觸層,然後是金屬1、金屬 2,一直往上到承載電源的厚厚的頂層金屬。每一張片子就是一個光罩層,每一張都只是多邊形的一個平面集合。把每張片子對準疊在一起,你就得到了完整的實體晶片——每一根線、每一個導孔、每一個單元——全都凍結成了座標。一個現代設計有數十億個這樣的多邊形,這正是為什麼 GDSII(以及它更精簡的後繼者 OASIS)是二進位並緊湊打包的,而不是人能直接讀的文字。

# Write the signed-off layout out as the shippable deliverable.
# (Vendor-neutral pseudo-commands; real tools differ in syntax.)
set_db design_freeze true              ; # no more edits past this point
write_gds  top.gds  -layer_map tech.map ; # binary geometry: layers + polygons
write_lef  top.lef                       ; # abstract for any parent using this block
流片這個動作,濃縮成一句話:凍結資料庫,然後把最終佈局以 GDSII 的形式串流寫出。從此以後,作為權威記錄的設計是那個檔案——而不再是你的專案。

流片與光罩廠

你的 GDSII 檔案會送到光罩廠——晶圓廠裡把幾何變成玻璃的那個部門。對你那疊層中的每一層,他們都會做一塊光罩:一塊石英板,上面把這一層的多邊形做成了不透明的鉻圖案,就像一塊極其精密的鏤空模板。一個現代製程需要幾十塊這樣的光罩,每層一塊(或幾塊),合在一起就是你這顆晶片的*光罩組*。製作一套光罩組,是你這個檔案觸發的、最昂貴也最具承諾性的一件事——這正是流片為何讓人覺得如此終局的原因。

但晶圓廠並不會原封不動地把你畫的多邊形印出來。那些特徵遠比用來印它們的光的波長要小,於是光會發生彎折,印出來的形狀就變得圓鈍、扭曲。為了補償這一點,光罩廠會做光罩資料處理:光學鄰近校正(OPC)會故意*扭曲*你的多邊形——加上一些小襯線和拐折、把邊緣輕輕挪一挪——這樣在光把它們模糊掉之後,真正落到晶圓上的東西才和你的本意吻合。光罩不是你佈局的一張照片;它是一個經過預先扭曲、專為能正確印出而設計的版本。

交接給製造

到這裡,後段課程就結束了,接力棒交給了晶圓廠。光罩組做好之後,晶圓廠就開始製造:一片裸矽晶圓送進去,一層一層地,把晶片自下而上地造起來。這個過程的主力是微影——讓光透過你的每一塊光罩,把這一層的圖案印到一層光敏塗層裡,然後在圖案指示的地方蝕刻或沉積材料。一層接一層、一塊光罩接一塊光罩,你那一疊多邊形片子,就變成了矽裡一疊真實的實體層。

如果你想詳細看看接下來發生什麼,那是另一個完整的故事——而 JOVANA 正好有一條課程講它。《晶片是怎樣造出來的》這條製造課程,恰好就從你的 GDSII 落地的地方接著講下去:晶圓是怎麼生長出來的、微影是怎麼把你的光罩印上去的、摻雜是怎麼造出當初構成你那些標準單元CMOS電晶體的,以及成千上萬顆你這顆晶片的副本,是怎麼在一片晶圓上並排造出來的。那條課程,是這同一段旅程裡屬於製造的那一半,而這條課程收的是另一半的尾。

回來的東西:矽晶片與點亮

流片之後的幾週或幾個月,一件非凡的東西會送到你的工作台上:*首批矽晶片*——用你的光罩做出來的、最最初的那批實物晶片。在模擬器和時序報告裡待了這麼久之後,你終於可以給真傢伙上電了。這就是點亮(bring-up):那個細緻而有條不紊的過程,用來證明這顆真實的晶片確實在做設計當初承諾的事。你從小處入手——上電會不會短路?時脈會不會翻轉?能不能從重置裡出來?——再一步步向外,做到完整的功能集。

點亮就是簽核拿到成績單的地方。你一路帶著的每一份餘量——你在上面收住時序的每一個製程角、每一道變異保護帶、你預留的每一份IR 壓降——都是關於真實矽晶片會如何表現的一次下注。如果晶片啟動了,並且在各個溫度和電壓下都跑到了目標頻率,那這些注就押對了。如果某條路徑只在晶片發熱時才勉勉強強,或者某個區塊在負載下電壓塌掉,那就是矽晶片在告訴你,有些東西你的腳本漏掉了。有時候,修法是一個小小的ECO加上一次便宜的*僅金屬層*重新流片;有時候,則是推倒重來。

於是,這個迴圈就閉合了。你開始這條後段課程時,手裡是一份乾淨的網表和一塊空蕩蕩的佈局地面;你結束它時,手裡握著一顆能運作的、起點是你那份RTL的晶片。中間的每一步——佈局規劃、佈局、時脈樹、繞線、萃取、簽核、流片——存在的意義,都是為了把意圖安全地從一段描述送進一個你能拿在手裡的實物。這就是實體設計與簽核這門手藝的全部:確保以矽晶片形式回來的東西,正是你當初以GDSII形式寄出去的東西。