為什么芯片設(shè)計要做驗證,而不是只寫代碼就好?
因為芯片算是硬件體系,他并不像系統(tǒng)或者軟件可以升級!
畢竟芯片制造是"一次性買賣"。軟件寫錯了可以在線更新,但芯片一旦流片(投入工廠生產(chǎn)),如果發(fā)現(xiàn)問題就只能全部報廢。臺積電一條7納米產(chǎn)線的流片成本超過1億美元,驗證就是在流片前用"虛擬測試"代替"真實造芯片測試",把風(fēng)險扼殺在設(shè)計階段。行業(yè)里甚至有"驗證占整個芯片設(shè)計70%工作量"的說法,因為越復(fù)雜的芯片(比如CPU、GPU),需要驗證的場景就越多。
驗證工程師會模擬芯片在各種極端情況下的表現(xiàn):電壓突然波動會怎樣?溫度從-40℃升到85℃會出問題嗎?用戶連續(xù)點擊1000次屏幕會死機嗎?
他們還會用"形式驗證"這種數(shù)學(xué)方法,像證明幾何定理一樣嚴(yán)格檢查代碼邏輯,確保所有可能的輸入組合都能得到正確輸出。就像建大橋前要做無數(shù)次風(fēng)洞試驗和結(jié)構(gòu)應(yīng)力分析,芯片驗證就是給芯片做"虛擬壓力測試"。
而芯片代碼,一般用的是 Verilog 或者 VHDL,它描述的是幾十億個晶體管如何協(xié)同工作。就拿手機芯片來講,它得同時處理通話、上網(wǎng)、拍照、玩游戲這些事兒。但人在寫代碼的時候,特別容易犯一些 “想當(dāng)然” 的錯誤。有可能把 “先算加法再算乘法” 寫成 “先乘后加”;也可能忽略了某個按鍵同時按下的情況;又或者沒給某個電路留夠供電時間。
別小看這些小失誤,在幾十億晶體管的規(guī)模下,它們會被無限放大,最后直接讓芯片功能失效。像手機突然死機、信號斷連,甚至發(fā)熱爆炸這些問題,都可能是因為這些小失誤導(dǎo)致的。
最后一點反常識:驗證永遠不可能找到所有bug。芯片太復(fù)雜了,總有設(shè)計師沒考慮到的"邊緣場景"。比如2018年英特爾CPU的"熔斷"漏洞,就是因為工程師在設(shè)計 speculative execution( speculative execution)時,沒考慮到攻擊者可以利用緩存?zhèn)刃诺栏`取數(shù)據(jù)。這就是為什么芯片公司會保留"硬件補丁"機制,也解釋了為什么新芯片發(fā)布后通常會有多個版本迭代——驗證能減少bug,但無法做到絕對零缺陷,只能把風(fēng)險降到可接受范圍。
所以,芯片設(shè)計不做驗證,就像蓋樓不做地質(zhì)勘探、不畫設(shè)計圖紙,純屬"賭運氣"。而在芯片這個動輒上億美元投入的行業(yè),沒人敢這么賭。對此大家是怎么看的,歡迎關(guān)注我“創(chuàng)業(yè)者李孟”和我一起交流!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.