干貨|降低芯片流片失敗風險的"七種武器"


隨著SOC芯片的規(guī)模和功能的不斷急劇膨脹,SOC驗證一般可以占到整個項目的60%以上,驗證已成為了整個SOC芯片開發(fā)的瓶頸。芯片驗證不充分,輕則重新投片,時間資本上損失慘重,重則資金耗盡,公司關張。芯片江湖的也有“七種武器”,這七種武器合理運用,可以最大限度確保芯片驗證充分,降低芯片流片失敗的風險。

一:UVM


UVM不是一種編程語言,UVM(Universal Verification Methodology)而是驗證方法學;
 
UVM雖然不是一種語言,但是UVM是以systemverilog類和庫的驗證平臺框架呈現(xiàn)的,因為在芯片驗證領域非常流行,成為了一個事實上的驗證平臺標準;
 
正所謂:驗證不識UVM,便稱英雄也枉然;
 
賈老板成立一個AI芯片公司,研發(fā)一款AI芯片,于是請UVM大師指點如何保證芯片正確;
 
UVM大師說,我對你的芯片一無所知,不能告訴你芯片正確與否,但是,我可以驗證A=B;通過眾多驗證向量驗證芯片A和參考模型B,比較兩者輸出結果是否一致,如果一致,因此A=B;因此驗證結論是:芯片A和參考模型B功能一致,芯片A是滿足設計要求的,從而保證芯片正確;
 
賈老板直接就懵圈了,怎么還多出來一個B的事情;
 
(注釋:A和B功能是一樣,并不代表A和B相等,本文采用A=B,用公式來簡化這個意思);
 
賈老板說:像軟件測試一樣,有測試大綱,根據(jù)測試項一項一項測試看看功能對不對,UVM不是這樣嗎?
 
UVM大師:非也,引入了一個變量B,A和B的功能在各種激勵下輸出一致,來推斷A=B;這個就是驗證的方法學精髓之一;
 
A就是待測試芯片,也叫DUT(design under test),也就是設計工程師,絞盡腦汁,頭發(fā)掉光,設計出來的芯片(或IP);
 
B的就是參考模型,RM(reference model),參考模型,小名狗剩(Golden);
 
看到這里,賈老板就有了第一個問題:參考模型B從何而來;
 
UVM大師說:賈老板問了這個問題,當然從賈老板而來;因果循環(huán),皆有定數(shù);
 
賈老板成立一個AI芯片公司,請了一個AI領域的大師,AI大師苦思冥想,悟道新算法,有效提升性能,降低存儲代價,發(fā)表了CVPR(計算機視覺與模式識別的頂級會議),然后AI大師用python實現(xiàn)了這個算法;然后賈老板招了一批 IC設計工程師;把這個算法實現(xiàn)成了芯片(IP);
 
UVM大師說,看,這個芯片(IP)就是 DUT,是A,而原來的AI大師的算法 python描述,就是reference model,是B;
 
UVM的工作就是來驗證A=B;如果二者功能不一樣,那說明A芯片設計錯了,如果驗證A=B,那么UVM大師就功德圓滿了,那么芯片可以流片了;
 
現(xiàn)在這個流程是不是清晰多了;
 
算法大師設計了算法,設計工程師設計了芯片,UVM大師通過驗證方法學(UVM)推斷了兩者一致,完美,可以流片了;
 
且慢,第二個問題:怎么來驗證A=B
 
UVM提供了一種可移植的現(xiàn)成的架構可以同時將測試向量發(fā)給A和B,通過構造測試向量,同時發(fā)給A和B,然后收集A和B的輸出,比較輸出結果是否一致。如果比較結果一致,則驗證成功;否則,驗證失敗;
 
如果是僅僅對于一個測試向量CASE1,A和B的輸出結果一致,是沒有辦法說明A=B,只能說明:

        IF (CASE1)  A=B
 
所以,驗證大師就需要設計N個測試向量,CASE1到CASE N
 
        IF(CASE1->CASE N)  A=B
 
這些測試向量(激勵)的發(fā)送過程,就類似一個加特林機關q,然后發(fā)送不同類型的彈藥給A(DUT)和B(RM),這些彈藥可以是普通子 彈,也可以是榴彈,炮彈,導彈;
 
設計各種彈藥,然后賦予了這些彈藥各種特性,比如大小,火力,距離等等,每個都不同,但是這些彈藥繼承原來的彈藥的特性,不用從頭開發(fā),簡單,省事;
 
一方面這些彈藥可以設置成為隨機彈藥,就是同一個彈藥,但每次發(fā)射都不一樣,彈藥自身具有隨機性,例如一個彈藥可對隨機任意初速度,每次發(fā)射,可以檢查目標設備在任意初速度下,是不是都表現(xiàn)正常,同理也可以設置其他隨機性;
 
另一方面也不能完全隨機,畢竟完全隨機的目的性太差,需要約束(constraint)這個彈藥的隨機性,例如打蚊子,就不需要炮彈;打航母,用手榴彈也不靠譜;不能是完全隨機,通過約束隨機性,可以增加彈藥的目的性;
 
構造各種的彈藥,看看A和B的反應是不是一致;如果一致,萬事大吉;如果不一致,那就是有bug,則需要debug,看看究竟為什么A和B為什么不一致,反饋給設計者來修改原來的設計(DUT),直到兩者一致;
 
現(xiàn)在,第三個問題來了,到底構造多少CASE才能說明A=B;
    
子曰:驗證時間也有涯,而驗證case也無涯,以有涯隨無涯,殆已;
 
但是賈老板不管,他會直接問,大師雖然構造了這么多驗證用例,但是這些驗證用例就能說明A=B了嗎,驗證是沒有盡頭的;
 
UVM驗證大師說:賈老板請看,AI算法大師已經(jīng)描述了100個功能點,我已經(jīng)按照這100個功能點設計了100個驗證用例,全部比對都成功了,說明功能全覆蓋;另外,芯片設計的每一行,每個狀態(tài)機狀態(tài),每個分支,每個條件全都覆蓋到了,說明再無補充測試CASE的必要了;
    
見賈老板似懂非懂,UVM大師解釋道:UVM大師已經(jīng)用加特林機q,已經(jīng)對這個待測對象的上上下下,左左右右都攻擊過一遍,炮彈,榴彈,手q彈,機q彈全部都用上了;現(xiàn)在A和B在這些攻擊之下,表現(xiàn)都一樣,則證明了A=B;


賈老板說,明白了,估計A和B都能死的透透的,沒有補q的必要了;
 
(注:  功能覆蓋率和代碼覆蓋率100%,并不是驗證的終點;因為有些功能點不能被功能覆蓋率所保證,例如也要考慮邊界,異常,特殊檢查等,本文不再展開;代碼覆蓋率的意義更多的是指導驗證工程師在哪些方面增加case;)
 
有參考模型要比,沒有參考模塊就制造參考模型來比,沒有檢查比較的驗證項就是一個啞彈(無效的case),不能起到作用,還有反作用,就是以為驗證覆蓋到了,實際上沒有,實為UVM的大忌;

了解了UVM的思想,其實不局限于使用systemverilog來驗證,只不過UVM的平臺架構,各種庫已經(jīng)非常完善,通過移植這個架構,可以快速搭建符合每個芯片要求的驗證平臺;另外通過UVM平臺也可以作為一個驗證平臺通路,外部可以通過其他的語言例如(python,C,C++)等等來設計彈藥,然后UVM平臺將A(待測對象)和B(參考模型)輸出也可以通過UVM平臺傳遞給其他的驗證語言來比較,這樣就UVM平臺完全就是通路的角色,彈藥(測試向量產(chǎn)生)和比對都可以用其他語言完成(如python等)。兵無常勢,水無常形,得道思想,隨心而用;


二:VIP


聽了UVM大師的教導,賈老板公司的芯片驗證工作,似乎走上了正軌,但是,在集成多個IP之后,這些高速的IP的驗證面臨很大的問題;

例如買的DDR,PCIe,MIPI,UFS,AXI接口或者AMBA總線等,這些設計不論是驗證case還是參考模型,都非常復雜。遠超一個初級設計公司所能接受從頭開始驗證工作量,一句話,按照現(xiàn)有的項目計劃,根本搞不定。現(xiàn)在賈老板有兩個選擇,一個是團隊慢慢摸索,逐步熟悉,那產(chǎn)品上市時間就不可控;另一個是掏錢再買VIP;
 
這個VIP可不是賈老板的在機場或者KTV的身份象征,而是專門用于驗證的IP;做SOC不但需要買IP,還需要買VIP;賈老板真是覺得上了一條賊船,做芯片干什么都要花錢;
 
這些VIP直接都是原生的system verilog/UVM,內(nèi)置了驗證計劃和覆蓋率,以及一些測試套件,并且符合這些協(xié)議規(guī)范;所有的芯片標準外設,例如DDR、HBM、eMMC、UFS、AMBA、MIPI、SDIO,SAS、SATA,PCIe,USB。只有你想不到,沒有VIP提供商做不到;
 
這個就類似于,賈老板在想進階為俠客,買了一把屠龍刀(接口IP),同時還要買一本刀法十八式(VIP);否則自己摸索熟悉這口寶刀的成本太高了;只要按照這個刀法十八式(VIP)全部跑下來,說明屠龍刀(IP)沒有問題,可以去江湖上歷練一番了;
 
VIP的錢不是白花的,可以起到事半功倍的效果,每個高速IP集成到整個SOC后,按照VIP的提供所有case跑一遍,說明兩個事情,一,這個IP沒有問題,二,IP的集成沒有問題;快速高效,加快驗證和收斂的速度;
 
標準的東西都有標準的做法,標準的接口都有符合相應標準的VIP;自己從頭來驗證,即不明智,也會空耗費時間。最大限度利用已有經(jīng)驗成果(IP和VIP),是芯片能夠越做越復雜的基石;什么東西都從頭開始做,特別類似標準接口的設計和驗證,所有都是自研,陷入自我感動,偏離了芯片為了給客戶創(chuàng)造價值的初衷;  


三:軟硬協(xié)同


賈老板讓工程師開發(fā)一個當今世界上最牛的終端AI芯片,里面cpu, ddr, 總線,AI處理器,mipi,wifi網(wǎng)絡全都有,處理性能要求達到世界第一,賈老板可以出去吹牛。
 
自研的AI處理器的驗證是通過UVM證明了A=B,完美;
外設可以通過VIP,把VIP的流程跑一遍,沒有問題,完美;
 
但是,這就夠了嗎?
 
這個事情就面臨一個問題,這個大芯片SOC的參考模型在什么地方?還記得UVM所需要的那個B嗎?誰又能來搞個參考模型B出來比對一下?不是任何情況下,都有一個完美的參考模型可以來比對;芯片核心應用場景是mipi采集來的圖像,緩存到ddr中,通過ai處理器識別成潛在犯罪分子,然后把犯罪分子圖像由cpu控制通過網(wǎng)絡上傳到后臺。所有部件的都參與上了,這需要怎么驗證?
 
所有這一切都需要軟件和硬件配合才能實現(xiàn)場景的驗證;
 
在復雜的SOC系統(tǒng)設計中,進行硬件設計驗證、軟件設計驗證的同時,實現(xiàn)軟硬件交互的設計與驗證成為縮短設計周期,盡早完成系統(tǒng)設計的關鍵。通過CPU的軟件以及AI處理器的軟件和UVM平臺配合,將整個設計流程通過軟件實現(xiàn),然后將軟件跑在整個驗證平臺上;
 
軟硬協(xié)同仿真,聽起來起來非常高大上,實際的操作過程中,UVM平臺就是搭建了一個軟件的測試平臺,UVM所作工作不多,一種通常做法是把軟件的編譯文件走后門下載進去(UVM也要走后門,backdoor,這是UVM術語,不用增加驗證時間,直接將BIN文件寫到RAM);剩下就開始軟件工程師的表演了;
 
這里的軟件流程,可以是MCU一段編程,也可以是MPU的linux,甚至可以是andriod,不論復雜與否,這個軟硬協(xié)同,除了UVM的平臺,更有大量的軟件編程工作;所以很多軟件工程師,也可以參與SOC的芯片驗證,就是這個道理;
 
軟硬協(xié)同目的就是讓軟件開發(fā)人員提前進場,好比新設計一棟房子,家具軟裝在設計的時候就要安排好,提前擺一擺,別房子建完了,發(fā)現(xiàn)沒有安裝家具軟裝的空間,業(yè)主不買單,那設計者的麻煩就大了;
 
除此之外,軟件開發(fā)人員的努力不是單單為驗證芯片所準備的;這些軟件,可以作為SDK提供給用戶使用,也是芯片整個產(chǎn)品的一部分;軟硬系統(tǒng)驗證是一個矛盾的集合體,即是通過軟件驗證硬件,又是通過硬件驗證軟件;
 
1:通過軟件驗證硬件;
這個很好理解,軟件工程師把業(yè)務場景進行編程,實現(xiàn)了mipi采集來的圖像,緩存到ddr中,通過ai處理器識別成潛在犯罪分子,然后把犯罪分子圖像由cpu控制通過網(wǎng)絡上傳到后臺這一整套流程;這個測試過程過程的實現(xiàn),說明硬件各個模塊,在軟件的調(diào)度下,能夠正常按照預想的功能和性能在工作,這套流程正常工作,驗證了SOC集成的總線連接正確,功能正確,性能滿足,用戶場景可全覆蓋;
 
2:通過硬件驗證軟件
還是上述流程,如果采集,識別,發(fā)送的流程出了問題,很有可能是芯片設計錯了,也有可能是軟件出錯了,如果軟件錯誤,就需要修改軟件達到最終的效果,軟件也在這個過程中逐漸修改,迭代,不斷成熟;那么就是通過硬件驗證軟件的過程;
 
備注:
a:AI 處理器IP層級通過參考模型來證明A=B的方法,更多具有黑盒測試特性;
b:SOC上的軟硬協(xié)同驗證更多具有白盒測試的特性,軟件人員必須深刻了解各個模塊的作用,機理從而才能開展整個場景的測試。


四:FPGA


如果說芯片設計者,考慮面積,功耗,頻率等,那么芯片驗證者其中一個重要點考慮就是驗證時間;沒有什么比產(chǎn)品的上市的時間不要delay,更能考驗一個芯片設計公司能力了;
 
賈老板做AI芯片,這個AI芯片每個每個驗證用例的時間30分鐘,可以算完一張圖片,一天能計算圖片庫中48張圖片;待測試圖片庫中還有十萬張圖片,算了一下,全部驗證完畢需要2000多天;如果用10臺服務器并行,每臺服務并行運行10個驗證用例,那么還需要20天才能迭代一遍;
 
賈老板就非常著急,有什么辦法可以快速迭代,市場可不等人,錯過就被競品占領了;
 
通過FPGA測試是一個高效的解決辦法:將整個項目移植到FPGA上,然后在FPGA上模擬整個芯片運行狀態(tài),從而達到快速測試效果;這種大容量的FPGA非常貴,一般在幾十萬到上百萬;規(guī)模也非常大,不過這么好用的東西,一般芯片設計公司都會買幾塊;
 
FPGA的頻率根據(jù)關鍵路徑的長短能夠到實際運行頻率為幾十到上百Mhz;目前這個做驗證的FPGA都被XILINX的大容量的FPGA所壟斷;可以加速迭代,通過在FPGA運行,可以快速的發(fā)現(xiàn)問題,進行大數(shù)據(jù)量的測試;
 
賈老板終于下定決定,購買了這個FPGA驗證平臺之后,這十萬張照片,幾分鐘就可以出結果了,非常的快;賈老板的芯片驗證的效率大大提高,加快了大數(shù)據(jù)量的迭代;另外,F(xiàn)PGA可以作為原型,直接給賈老板演示,看到這個流片后的效果,賈老板心里覺得這個FPGA驗證原型板卡沒有白買,雖然還是有點貴,一輛卡宴沒有了,但是錢沒有白花;
 
同時在FPGA上,軟件運行的效率會大大提高,也可以加速軟件/固件的迭代過程,可以發(fā)現(xiàn)很多大數(shù)據(jù)量在仿真驗證平臺所不能發(fā)現(xiàn)的問題;
 
隨之問題來了,F(xiàn)PGA驗證發(fā)現(xiàn)芯片設計有個BUG,例如大數(shù)量識別圖像時靈時不靈,到底是MIPI的問題,CPU的問題,AI處理器的問題,還是DDR存儲的問題;在UVM仿真可能發(fā)現(xiàn)的幾率較低,這么大數(shù)據(jù)量后才出錯,仿真這么大數(shù)據(jù)量要好幾天到幾周;
 
FPGA發(fā)現(xiàn)問題容易,有時定位問題卻很費勁,一個問題一周或者幾周也不是不可能,迭代一次按照天計算,提高定位問題速率,加速收斂,是FPGA調(diào)試的一個難點。


五:“加速器”


 加速器:重劍無鋒,大巧不工;
 
FPGA就需要每次覺得哪些地方出問題,把信號加到嵌入式的邏輯分析儀來看波形。而加速器可以像仿真一樣直接看到所有波形,不需要FPGA需要個波形那里重新編譯,迭代一次就耗費一天;

例如賈老板游泳時,在泳池掉了戒指,F(xiàn)PGA調(diào)試需要每次憋氣沉下一個地方,一個地方一個地方找,效率不高;但是加速器上就類似把泳池四周和底部全部裝了攝像頭,看看監(jiān)控就能找到問題所在,可以提高問題收斂的速率;

加速器具備FPGA的速度,雖然稍微慢一點;又具備仿真的靈活性,可以看到所有信號的狀態(tài); 加速器可以大大提升迭代的周期,如果芯片太大,仿真速度太慢,例如云端的AI芯片,芯片規(guī)模很大,上百億個晶體管,F(xiàn)PGA原型裝下也很難,全部仿真起來非常慢;如果在UVM仿真環(huán)境下,加載一下andorid,仿真跑上,過七天再看,也來得及;加速器的頻率大約是1Mhz-5Mhz左右,雖然速度比實際的FPGA要慢,但是在加速器里面引導Android跑起來,過了幾十分鐘,就引導完畢;


賈老板見狀,失望的說,這算是什么加速器,慢的和蝸牛一樣,我手機開機也就是十幾秒而已;但是這個樣的加速器,已經(jīng)比仿真速度快100萬倍了;仿真的單位都是us級別來仿真,仿真100us半個小時甚至更長時間過去了(根據(jù)芯片規(guī)模不同),現(xiàn)在可以算一下仿真的速度有多慢了;
 
目前加速器廠家只有三家,分別是:
mentor的Veloce;
synopsys的Zebu;
cadence 的Palladium;
 
加速器都比較貴,根據(jù)配置license不同,一般在幾百萬左右,需要專人來維護,買不起還還可以租用,通過VPN連上,費用根據(jù)使用的機時來算;其實開發(fā)小芯片基本上用不到加速器;開發(fā)大芯片(一億門以上)的公司實力雄厚,也可以備一臺;畢竟以賈老板這么雄厚的土豪,也不太舍得買一臺。  


六:形式驗證


 如果項目進入后端設計后期,芯片前面驗證出現(xiàn)一個BUG,如果后端這個時候已經(jīng)不允許重新綜合了,因為重新綜合就會使后端返工,比如DFT鏈都插完畢了,那么再重新綜合網(wǎng)表,可能所有寄存器數(shù)量都不一致了(每次綜合的網(wǎng)表基本上很難保持一致),很多工作后端布局布線(PR)都已經(jīng)差不多了,要是重新綜合網(wǎng)表,那么后端PR工程師和DFT工程師就要瘋掉了,好多工作要重新再來,少則幾周,多則一個月;大芯片尤其是這樣,小規(guī)模的芯片還好一點,這個時候需要做網(wǎng)表的修改(ECO);
 
這個時候,如何保證網(wǎng)表的ECO修改是正確的,形式驗證就派上了用場;如果沒有形式驗證,這個時候要是重新把ECO網(wǎng)表作為DUT加到仿真平臺中,那么仿真就會慢無比,很難把ECO之后的網(wǎng)表驗證充分;
 
形式驗證(Formal Verification)主要來對比ECO之后的網(wǎng)表和修改后的RTL是不是等價,如果等價,那么修改后的RTL直接回歸就可以了,雖然做了化簡,回歸也是非常的耗時;
 
形式驗證還有很多其他的作用,例如在綜合時,保證代碼和綜合后網(wǎng)表一致;在ECO時,保證綜合網(wǎng)表,DFT網(wǎng)表,PR網(wǎng)表三個網(wǎng)表,和修改后的RTL都一致;
 
形式驗證,如同乾坤大挪移,本來是A(網(wǎng)表)被修改了,需要驗證A,現(xiàn)在通過形式驗證A(網(wǎng)表)和B(代碼)等價,現(xiàn)在只需要驗證B(代碼)就可以了;B(代碼)的驗證難度明顯降低了,提升了驗證的效率,比直接來做網(wǎng)表的仿真速度要快一個數(shù)量級;    


七:流程規(guī)范


流浪地球的作者,中國科幻作家劉慈欣在所著《三體2:黑暗森林》中有兩種人,面壁者和破壁者;面壁者要打敗三體人對地球的圖謀,設計了一系列的反擊計劃;而破壁者調(diào)動一切資源利用智子監(jiān)視面壁者的一舉一動,通過分析每一個面壁者公開和秘密的行為,破解他們真實的戰(zhàn)略意圖。每一位面壁者都有一位針對他的破壁人;面壁者和破壁者如同芯片的設計者和驗證者;三體中的破壁人是沒有什么規(guī)范的,但是作為芯片的驗證還是要有很多規(guī)范來約束。


沒有驗證規(guī)范,驗證質(zhì)量就會參差不齊,而芯片的質(zhì)量取決于木桶的短板;而驗證規(guī)范又依賴人的執(zhí)行;一個完整的驗證規(guī)范不論是模塊驗證規(guī)范(模塊級),集成驗證規(guī)范(SOC級),F(xiàn)PGA的測試等等都包含下面幾類;
 
1:驗證計劃:功能點分解,包括場景,功能,性能,異常,邊界等等,每個點check的策略;
2:  驗證執(zhí)行:構造驗證case, debug,問題迭代的流程等等;
3:驗證輸出:驗證報告輸出及評審等等;
4:驗證管理:驗證分割,buglist,bug review,回歸測試等等;
 
芯片越來越復雜,同時芯片的團隊越來越大,面臨的挑戰(zhàn)也是逐漸增大;由于產(chǎn)品有上市的時間窗口,驗證的進展都是在有限的資源下求解的過程,不是一個無線資源下瘋狂攻擊;
 
1:復雜度:芯片的規(guī)模越來越復雜度,億門/幾十億/上百億門的芯片也不罕見,芯片設計是人類這個物種最復雜的設計之一,例如蘋果的處理器M1內(nèi)部有160億個晶體管。這還僅僅是硬件的規(guī)模復雜度,還不包括上面所跑的軟件;上面所運行的軟件也是越來復雜,CPU的軟件,GPU的軟件,NPU的軟件等等;可能需要多個軟件,多種編程語言系統(tǒng)才能整體運行起來;

2:溝通:設計人員和驗證人員之間的雖然可以通過文檔,電路圖,會議等各種方式交流;但是很難完全同步二者之間理解。如同三體中面壁人和破壁人一樣,找到面壁人的BUG難度不大,關鍵是如何找到所有的BUG,100%的BUG,因為即使留下一個,也可能對芯片造成很大的影響;芯片團隊變大,成員的溝通成本也非常的大,還會有很多管理上的問題,而溝通不暢就會導致很多的信息丟失。
 
“聽過很多大道理,卻依然過不好這一生”;
 
即使把這些“武器”都用上,芯片就能沒有問題了嗎?肯定是不夠;從產(chǎn)品定義,設計,驗證,后端,流片,封裝,測試,每個環(huán)節(jié)都可能引入風險;這些“武器”只是能降低風險一些手段,但是遠不能100%消除;”陣而后戰(zhàn),兵法之常,運用之妙,存乎一心“。芯片研發(fā)本身是一個實踐的科學,只有把這些武器和實際中遇到的問題結合起來,迭代上升,在實踐中完善,梳理,沉淀這些“武器”運用和流程,才是最終才能是真正解決問題之道。
登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP