因為我們有EDA(Electronic design automation, 電子設計自動化)工具呀……
首先,這幾十億晶體管裏有99.999…%都是數位電路,模擬電路從晶體管數目上來說是很少很少的(雖然面積可能不小,因為模擬電路的單個晶體管尺寸可能比數位電路大很多,而且電容電感電阻這些模擬原件面積都很大)。
對於模擬電路、大部份數模混合電路和少數全客製數位電路,確實是一個管子一個管子搭起來的。但是這種電路要麽管子數量很少,要麽有很多模組可以大量復用(比如SRAM……),所以工程量可以接受。
對於占大頭的數位電路,是透過硬體描述語言(verilog和vhdl)和大量的自動化工具實作的。首先,頂層的架構設計師給出電路功能的行為級描述,然後rtl工程師寫出電路的rtl(寄存器傳輸級)程式碼,rtl程式碼經過綜合工具會生成門級網表,後端工程師將門級網表輸入後端工具進行布局布線,最後再手工修復自動布局布線的bug。
這裏面rtl工程師寫的一句程式碼可以對應幾十個甚至成百上千個邏輯閘,在後端自動生成幾千個晶體管,這個過程基本全是工具自動完成。比如你在設計中花幾十行程式碼聲明了1kb的緩存,eda工具就會自動拷貝1024個8bit SRAM單元並完成布局布線,這就是差不多十萬個晶體管了……
除了需要手動修復drc/lvs bug的後端工程師,其他數電團隊的人並不需要直接和這數不清的晶體管打交道,只要寫rtl程式碼並給出適當的設計約束,剩下的交給eda軟體和後端工程師就好了。
所以請大家善待後端/layout工程師!