但不管是車用、消費性電子還是 AI 加速器,在我的認知裡,大家都要走過同一條路。
這條路,業界叫做 IC Design Flow。
這篇,我想用便當工廠的比喻,帶大家走一遍這條路大概是什麼樣子。
化先說在前面,這篇只是讓大家看個輪廓,實際上每個步驟之間還有很多品質確認的動作,後面的文章會再慢慢拆開來說。( 應該會吧? )
▋ 從一個想法,到一顆真實的晶片
便當工廠在開始做便當之前,要先做幾件事。
老闆要先決定要賣什麼便當、賣給誰、一天要賣幾個、定價多少。
這個階段,在 IC 設計裡叫做 Spec,也就是規格。
Spec 就是這顆晶片要做什麼、要多快、要多省電、要多小。
有了 Spec,才知道接下來設計的部分要考慮到什麼需求。
▋ 第一步:設計食譜(RTL Design)
老闆決定好賣什麼便當之後,廚師要開始設計食譜。
食譜要寫清楚:用什麼食材、怎麼處理、幾點幾分放進去、幾點幾分起鍋。
在 IC 設計裡,這個步驟叫做 RTL Design。
RTL 工程師要把 Spec 的要求,我自己這邊是用一種叫做 Verilog 的語言,描述出來。 ( 有的人會用 VHDL 或是 SystemVerilog )
那 RTL 這個程式語言是什麼呢?
簡單來講就是告訴電腦什麼在什麼時間點要做什麼事情而已。
那目的就是好好的把人家的功能需求,透過這個程式語言體現出來。
在我的認知裡,RTL 設計不只是把功能寫出來而已。
好的 RTL 設計,有點像是蓋房子的時候預留電梯空間。
就算現在不裝電梯,但如果設計的時候有先留好那個空間,未來要加裝就容易很多。
反過來說,如果蓋好了才發現沒有留空間,要加裝電梯可能就要把整個結構拆掉重來。
在我的觀察裡,好的 RTL 工程師,在這個階段就會開始考慮後面的人需要什麼,比如說 timing 的要求、power 的設計、還有後面要做測試的空間。
意思就是一個設計師不只幫你設計空間,連這個空間利用率,風格動線甚至風水都做一個評估了。
這樣後面的人在合作的時候,就會相對順利一些。
▋ 第二步:確認食譜沒有問題(Verification)
食譜設計好了,接下來要確認這個食譜是不是真的可以做出老闆要的便當。
這個步驟叫做 Verification,也就是驗證。
在我的經驗裡,這個步驟花的時間可能比很多人想像的還要多。
因為要確認的不只是「功能有沒有做出來」,還要確認「這個設計有沒有跟 Spec 的要求對應上」、「有沒有哪些限制條件當初沒有考慮到」、「演算法的 mapping 是不是正確的」。
就算是設計者自己,在我的認知裡,也需要做最基本的驗證,確認自己的想法有沒有問題,再交給專門的 Verification 工程師做更完整的測試。
但我得先表示說,前面做菜的,基本自己也是要有試吃一下,才好交給別人試吃的。
▋ 第三步:確認食材能不能大量採購(Synthesis)
食譜確認沒問題了,接下來要確認這個食譜能不能真的做成產品。
這個步驟叫做 Synthesis,也就是合成。
合成工程師要把 RTL 的設計,轉換成真實電路的描述,並且確認速度有沒有達到要求。
就像便當工廠要確認,這道菜的食材能不能大量採購、加工流程能不能標準化、一天能不能做出老闆要的數量。
▋ 第四步:規劃廚房的空間(APR)
合成完成之後,要決定這些電路要放在晶片的哪個位置、怎麼連接。
這個步驟叫做 APR,也就是 Auto Place and Route。
就像廚房的空間規劃師,要決定電磁爐放哪裡、洗碗機放哪裡、走道怎麼安排,讓廚師在工作的時候不會互相干擾。
▋ 最後:送出去量產(Tape-out)
所有步驟都完成之後,就要把設計送去晶圓廠,開始製造真實的晶片。
這個動作叫做 Tape-out。
在我的認知裡,Tape-out 有點像是把便當的食譜和製作規格,正式送去中央廚房,開始量產。
很多人可能會覺得,Tape-out 之後就完全不能改了。
但在我的了解裡,其實還有一個叫做 ECO 的步驟,可以在某些情況下做小幅度的修正。
只是這個修正的代價,可能會很大。
所以在我的觀察裡,大家都會希望在 Tape-out 之前,把所有能確認的事情都確認好。
畢竟,從 Spec 開始,到 Tape-out 之前,中間做了這麼多驗證和確認,就是為了讓這個時刻到來的時候,可以比較有把握。
▋ 每個步驟,都有人在負責
說到這裡,我想把這條路跟上上篇說的職位對應起來。
Spec 通常是 PM 或是架構師在負責。
RTL Design 是 RTL 工程師在做。
Verification 是 Verification 工程師在負責。
Synthesis 和 Timing 是 Synthesis 工程師在確認。
APR 是 Physical Design 工程師在做。
每一個步驟,都有人在守著。
而這條流水線能不能順暢,在我的觀察裡,很大程度取決於每個人在自己的步驟裡,有沒有也想到後面的人需要什麼。
下一篇,我打算稍微再進階的聊聊 RTL 設計這個步驟,因為這是算是我比較熟悉的領域啦。
也歡迎大家給我回饋以及想法。
我是 Joker,咱們下回見。













