開始玩

← fab24hr 專欄

晶片入門約 5 分鐘

晶片是怎麼設計出來的?IC 設計在做什麼

一句話:晶片是先在電腦上設計好、檢查很多遍,才交給晶圓廠做出來的。IC 設計(IC 是積體電路,晶片的正式名字)做的就是這一段:決定晶片要做什麼,把電路寫出來,確認它做得對,再排成一層一層的圖形,交出去做成光罩。

設計和晶圓廠的工作差在哪,「IC 設計(VLSI)和晶圓廠的工作差在哪?」講過;這篇講設計怎麼一步一步走。

設計一顆晶片,有哪幾步?

像蓋房子:先定需求、畫圖、檢查,送審過了才開工。數位晶片的設計大致是:

  1. 規格:要做什麼、多快、多省電。
  2. 寫出行為:用硬體描述語言,把電路要做的事寫出來。
  3. 驗證:確認它做的事跟規格一樣。
  4. 合成:變成一個個邏輯閘。
  5. 佈局繞線:決定每個邏輯閘擺哪裡、線怎麼連。
  6. 檢查:做不做得出來、時間來不來得及。
  7. 下線:交給晶圓廠做光罩。

實際上常要回頭改好幾次。

規格要定什麼?

規格是晶片的「需求單」:做哪些事、跑多快、最多用多少電、面積多大。晶片越大,一片晶圓排得下的越少,每一顆就越貴。

這幾樣常互相拉扯:要快,常得多放電路、多用電;要省電,可能就慢一點。靠一顆小電池撐很久的東西,省電就排第一。

電路怎麼「寫」出來?

一顆手機晶片有上百億個電晶體(電晶體是什麼?),不可能一個一個畫。數位電路多半用硬體描述語言(HDL),把電路的行為寫成文字。

它寫起來像寫程式,差別是:程式照順序一行一行做;硬體描述語言寫的是電路,很多部分同時在動。

大部分數位電路跟著一個固定的節拍動作,叫時脈,像節拍器。常見的寫法是寫清楚:每一拍,資料從哪裡來、經過什麼計算、存到哪裡,常叫 RTL。

驗證為什麼這麼花力氣?

驗證是確認寫出來的電路,做的事跟規格一樣。一般的說法是,它常佔掉設計工作裡很大一塊,因為:

  • 試不完:輸入的組合,加上電路裡記著的狀態,多到不可能一個一個試。
  • 錯誤躲在少見的情況裡:平常都對,兩件事剛好同時發生才出錯。
  • 漏掉很貴:下線後才發現,就得改設計、重做光罩。

常用的辦法有三種:

  • 模擬:在電腦上給電路各種輸入,看輸出對不對,像出很多考題。
  • 形式驗證:不出題,用數學證明某些事一定成立,例如「這兩個訊號絕不會同時打開」。
  • 先跑跑看:把設計放進一種可以重新寫入電路的晶片(FPGA),實際跑起來。

寫好的行為,怎麼變成電路?

這一步叫合成:設計軟體把寫好的行為,翻成邏輯閘接成的電路。邏輯閘是幾個電晶體接成的小電路,例如「兩個都是 1,才出 1」(記憶體和處理器差在哪?)。

翻的時候用一套元件庫:事先設計好、驗證過的小積木,有各種邏輯閘,也有記住一個 0 或 1 的小電路。每一塊一樣高、寬度不同,可以一排一排排好,像積木。同一種邏輯閘換一代製程,大小和速度都不一樣,所以元件庫是照某一家晶圓廠的某一代製程做的。

每個東西放哪裡、線怎麼連?

合成出來的是一張「誰接誰」的清單,還沒有位置。佈局繞線把它變成真的圖形:

  1. 分區:大塊的電路放哪裡、電從哪裡送進來。
  2. 擺放:把邏輯閘擺進去,常互相連的放近一點。
  3. 送時脈:節拍要差不多同時送到晶片的每一處。
  4. 拉線:好幾層導線疊在一起,像立體交叉的道路,線在這幾層裡繞。

做完,每一層是一張圖形,叫版圖;之後每一層至少做一片光罩。

交出去之前,要檢查什麼?

全部過了才能交出去,這一關常叫簽核(sign-off):

  • 做不做得出來:晶圓廠有一套設計規則,例如線最細能多細、兩條線最近能多近。設計軟體把版圖一條一條比對,叫設計規則檢查(DRC)。
  • 畫的和寫的是不是同一個:把版圖反推回電路,跟原本的比,叫 LVS。
  • 時間來不來得及:每一拍,訊號都要在下一拍之前跑到;最慢的那條路,決定晶片能跑多快。工廠做出來的電晶體會偏快、偏慢,這幾種偏法叫角落:偏慢時要來得及,偏快時也不能出錯。
  • 之後能不能測:先加進測試用的電路,讓測試機能檢查每一顆的裡面(晶片怎麼測試?)。

下線(tape-out)是什麼?

檢查都過了,把最後的設計檔交給晶圓廠,叫下線,英文 tape-out。常見的說法是,早年設計檔存在紙帶、磁帶上交出去,名字就留了下來。

下線後還想改,就得重做光罩:又貴、又要多等好幾個月。下線也不是結束:晶片做出來還要測,看是不是真的照規格動;有問題,就改設計、再下線一次。下線和投片差在哪,見「投片是什麼?」。

類比電路也這樣設計嗎?

不完全。類比電路處理連續變化的訊號,例如聲音、電壓、無線電(類比晶片和數位晶片差在哪?)。它多半更靠手工:

  • 每個電晶體多大、怎麼接,常是工程師自己決定,再用電路模擬一遍一遍調。
  • 版圖也常自己畫。類比電路對擺法很敏感:兩個要一模一樣的電晶體,要擺得對稱、靠近;旁邊有很吵的電路,就容易被干擾。

自動化的工具也在進步,但還是很靠經驗。

設計和晶圓廠怎麼合作?

設計要照晶圓廠做得到的事來畫,所以兩邊一開始就要接上:

  • 開始前:晶圓廠給一套設計用的檔案,常叫製程設計套件(PDK):設計規則、電晶體的模型(通常有中間值和幾個角落)、檢查用的規則檔;元件庫有時也在裡面,有時由別人照這一代製程另外做。
  • 下線之後:做好光罩、投片。新晶片最早的幾批是試產:設計的人看測試結果,晶圓廠的人找是哪一步的問題。

設計和製造常分在不同公司(新聞說的 IC 設計、晶圓代工、IDM 差在哪?);自己設計、自己做的公司,也一樣要照這一套規則。

在 fab24hr 裡

遊戲裡沒有設計晶片的位子;主線「晶片的一生」從下線之後開始。第一次玩主線,會先看到序章「下線」:一家做助聽器的小公司第一次自己設計的晶片「螢火」,交給晶圓廠做成一套光罩。

第 1 章「12 片怎麼分」在投片前一天,你是研發線的研發整合工程師:同一張設計圖,工廠做出來一定有偏差,所以第一批 12 片要故意把幾片做偏快、偏慢,看設計撐不撐得住(研發整合工程師在做什麼?)。第 3 章「壞的形狀」,下一版光罩下週定案,你要決定要不要在晶片裡留位置給自己的測試鍵,可是面積是客戶的。

遊戲裡的公司、晶片和人物都是虛構的;設計的流程照公開的一般資料寫,每家公司做法不一樣。其他行話可以到「半導體晶圓廠的行話,白話解釋」查。

在遊戲裡你會在哪裡遇到它第一次玩主線「晶片的一生」,會先看到序章「下線」:助聽器晶片「螢火」的設計交給晶圓廠,做成一套光罩。第 1 章「12 片怎麼分」在投片前一天,你在研發線上決定第一批 12 片怎麼分:故意把幾片做偏快、偏慢,看這份設計撐不撐得住。

在 fab24hr 的主線「晶片的一生」裡,設計已經下線;你在研發線上,看它第一次做出來撐不撐得住。

從第 1 章開始:設計下線之後的第一批晶圓

給老師:這一篇可以搭配「在課堂上玩 fab24hr」用在課堂上。

其他文章

這個網站的其他頁