非常複雜的CPU電路圖是如何做出來的?

看到一個答主說一個CPU的電路圖展開來相當於紐約市的面積,如此大的電路圖,我猜就算是電腦做出來的,也得人去操作吧?


簡單來講,獲得設計要求之後,先用hdl語言(硬體描述語言)描述cpu功能,也就是代碼設計,然後模擬驗證,成功之後進行邏輯綜合,也就是說將hdl語言轉成電路邏輯,然後進行驗證,最後是版圖設計,也就是物理實現,再進行時序驗證等,最後進行流片,成功的話才生產成我們所看到的晶元。下面是比較專業的回答(感謝@liping09003)

IC的設計過程可分為兩個部分,分別為:前端設計(也稱邏輯設計)和後端設計(也稱物理設計),這兩個部分並沒有統一嚴格的界限,凡涉及到與工藝有關的設計可稱為後端設計。

前端設計的主要流程

1、規格制定

晶元規格,也就像功能列表一樣,是客戶向晶元設計公司(稱為Fabless,無晶圓設計公司)提出的設計要求,包括晶元需要達到的具體功能和性能方面的要求。

2、詳細設計

Fabless根據客戶提出的規格要求,拿出設計解決方案和具體實現架構,劃分模塊功能。以HDMI(高清多媒體介面)系統架構為例:

3、HDL編碼

使用硬體描述語言(VHDL,Verilog HDL,業界公司一般都是使用後者)將模塊功能以代碼來描述實現,也就是將實際的硬體電路功能通過HDL語言描述出來,形成RTL(寄存器傳輸級)代碼。

4、模擬驗證

模擬驗證就是檢驗編碼設計的正確性,檢驗的標準就是第一步制定的規格。看設計是否精確地滿足了規格中的所有要求。規格是設計正確與否的黃金標準,一切違反,不符合規格要求的,就需要重新修改設計和編碼。設計和模擬驗證是反覆迭代的過程,直到驗證結果顯示完全符合規格標準。模擬驗證工具Mentor公司的Modelsim,Synopsys的VCS,還有Cadence的NC-Verilog均可以對RTL級的代碼進行設計驗證,該部分個人一般使用第一個-Modelsim。該部分稱為前模擬,接下來邏輯部分綜合之後再一次進行的模擬可稱為後模擬。

5、邏輯綜合――Design Compiler

模擬驗證通過,進行邏輯綜合。邏輯綜合的結果就是把設計實現的HDL代碼翻譯成門級網表netlist。綜合需要設定約束條件,就是你希望綜合出來的電路在面積,時序等目標參數上達到的標準。邏輯綜合需要基於特定的綜合庫,不同的庫中,門電路基本標準單元(standard cell)的面積,時序參數是不一樣的。所以,選用的綜合庫不一樣,綜合出來的電路在時序,面積上是有差異的。一般來說,綜合完成後需要再次做模擬驗證(這個也稱為後模擬,之前的稱為前模擬)邏輯綜合工具Synopsys的Design Compiler,模擬工具選擇上面的三種模擬工具均可。

6、STA

Static Timing Analysis(STA),靜態時序分析,這也屬於驗證範疇,它主要是在時序上對電路進行驗證,檢查電路是否存在建立時間(setup time)和保持時間(hold time)的違例(violation)。這個是數字電路基礎知識,一個寄存器出現這兩個時序違例時,是沒有辦法正確採樣數據和輸出數據的,所以以寄存器為基礎的數字晶元功能肯定會出現問題。STA工具有Synopsys的Prime Time。

7、形式驗證

這也是驗證範疇,它是從功能上(STA是時序上)對綜合後的網表進行驗證。常用的就是等價性檢查方法,以功能驗證後的HDL設計為參考,對比綜合後的網表功能,他們是否在功能上存在等價性。這樣做是為了保證在邏輯綜合過程中沒有改變原先HDL描述的電路功能。形式驗證工具有Synopsys的Formality。前端設計的流程暫時寫到這裡。從設計程度上來講,前端設計的結果就是得到了晶元的門級網表電路。

Backend design flow後端設計流程:

1、DFT

Design ForTest,可測性設計。晶元內部往往都自帶測試電路,DFT的目的就是在設計的時候就考慮將來的測試。DFT的常見方法就是,在設計中插入掃描鏈,將非掃描單元(如寄存器)變為掃描單元。關於DFT,有些書上有詳細介紹,對照圖片就好理解一點。DFT工具Synopsys的DFT Compiler

2、布局規劃(FloorPlan)

布局規劃就是放置晶元的宏單元模塊,在總體上確定各種功能電路的擺放位置,如IP模塊,RAM,I/O引腳等等。布局規劃能直接影響晶元最終的面積。工具為Synopsys的Astro

3、CTS

Clock Tree Synthesis,時鐘樹綜合,簡單點說就是時鐘的布線。由於時鐘信號在數字晶元的全局指揮作用,它的分布應該是對稱式的連到各個寄存器單元,從而使時鐘從同一個時鐘源到達各個寄存器時,時鐘延遲差異最小。這也是為什麼時鐘信號需要單獨布線的原因。CTS工具,Synopsys的Physical Compiler

4、布線(Place Route)

這裡的布線就是普通信號布線了,包括各種標準單元(基本邏輯門電路)之間的走線。比如我們平常聽到的0.13um工藝,或者說90nm工藝,實際上就是這裡金屬布線可以達到的最小寬度,從微觀上看就是MOS管的溝道長度。工具Synopsys的Astro

5、寄生參數提取

由於導線本身存在的電阻,相鄰導線之間的互感,耦合電容在晶元內部會產生信號雜訊,串擾和反射。這些效應會產生信號完整性問題,導致信號電壓波動和變化,如果嚴重就會導致信號失真錯誤。提取寄生參數進行再次的分析驗證,分析信號完整性問題是非常重要的。工具Synopsys的Star-RCXT

6、版圖物理驗證

對完成布線的物理版圖進行功能和時序上的驗證,驗證項目很多,如LVS(Layout Vs Schematic)驗證,簡單說,就是版圖與邏輯綜合後的門級電路圖的對比驗證;DRC(Design Rule Checking):設計規則檢查,檢查連線間距,連線寬度等是否滿足工藝要求,ERC(Electrical Rule Checking):電氣規則檢查,檢查短路和開路等電氣規則違例;等等。工具為Synopsys的Hercules實際的後端流程還包括電路功耗分析,以及隨著製造工藝不斷進步產生的DFM(可製造性設計)問題,在此不說了。物理版圖驗證完成也就是整個晶元設計階段完成,下面的就是晶元製造了。物理版圖以GDSII的文件格式交給晶元代工廠(稱為Foundry)在晶圓矽片上做出實際的電路,再進行封裝和測試,就得到了我們實際看見的晶元。


明顯的胡扯。一個二輸入與非門的面積,在40nm工藝下大概為0.7平方微米。一款CPU die的面積大概20mm*20mm,大概12~15層布線。總共的面積也就不到8000平方毫米。說原理圖多大,那得看你的筆有多粗,以40nm粗細的筆來畫,也就不到一個巴掌大。故意說得這麼誇張明顯是想搞個新聞。


EDA工具,自動生成。


版圖自己畫,DRC/LVS後自動布局布線。數字CPU的IP要自己設計


複製粘貼啊。

比如做一個CPU裡面的緩存,其實存儲的原理就一個。做出儲存 1bit 數據的結構就可以依此類推做出 2bit 4bit 的緩存(當然控制結構也要改)。

不過對指令的解析、運算、優化等等的工作還是要人去設計的。只是並非數十億個門都需要人手設計,結構上重複就可以。

雖然這樣說很簡單,但其實設計工作是非常困難的,不僅要考慮工藝水平,還有進行很多複雜的工作(如分支預測等等)


精通觸屏結構工程圖的我 對CPU線路一竅不通


intel 的CPU肯定有手工調整的地方,工具布的面積通常會比較大


推薦閱讀:

華為和榮耀的硬體有什麼缺點?
驍龍 800 性能比 Exynos 5410 強多少?
電子信息工程出來以後該往什麼方向發展?
老劉電子的Ultimater有沒有前途?
為什麼-0的補碼是00000000?

TAG:中央處理器CPU | 計算機 | 硬體 | 圖形處理器GPU | 電腦硬體 |