芯片設(shè)計被譽為人類歷史上最細(xì)微也是最宏大的工程,芯片研發(fā)工作者需要把數(shù)百億顆晶體管集成在面積最小至指甲大小的芯片上。
如此復(fù)雜的工程,從設(shè)計階段開始就錯綜復(fù)雜,很多環(huán)節(jié)互相串聯(lián),形成一個長流程,需要專業(yè)細(xì)分、領(lǐng)域不同的研發(fā)人員、專業(yè)人士和科學(xué)家集團隊力量協(xié)作而成并且保證每個環(huán)節(jié)的高正確度。這樣精密的研發(fā)和跨領(lǐng)域協(xié)作是完全不可能靠手工完成的,研究人員所仰賴的是一種名叫 EDA 的工具。其全稱為電子設(shè)計自動化(Electronics Design Automation)工具。
正是這一工具在 1983 年問世,釋放了芯片研發(fā)者的創(chuàng)造力,把手工設(shè)計完全升級為電子自動化的設(shè)計,從而促成芯片技術(shù)發(fā)展進(jìn)入大爆炸時期。
一般來說,芯片設(shè)計分為以下幾個步驟:
1. 功能定義和實現(xiàn):通過采用類似編程語言的硬件描述語言(Verilog)來“描述”芯片的電路寄存器傳輸級(RTL, Register Transfer Level)最終設(shè)計達(dá)成的性能目標(biāo)——編寫出代碼來實現(xiàn)芯片的功能。
2.? 驗證(Verification):芯片電路是否達(dá)到預(yù)期行為和目標(biāo)性能。
3. 邏輯綜合(Synthesis):把抽象的電路行為描述(硬件描述語言)自動翻譯為電路級描述(邏輯電路圖)。芯
4.?物理實現(xiàn)(Physical Implementation):把邏輯電路轉(zhuǎn)換成為有物理連接的電路圖,將上百億或千億元器件和電路合理的布局布線并使其互不干擾。
5.?設(shè)計簽核(Sign-off):在芯片完成物理實現(xiàn)以后,芯片在物理層級所表現(xiàn)的時序性能和功耗指標(biāo)是否能滿足預(yù)期的目標(biāo),版圖上的線條尺寸是否符合制造工藝的的嚴(yán)格要求,都需要確認(rèn)無誤以后才能正式流片生產(chǎn)。芯思想
以上幾個步驟都完成了,芯片才能正式進(jìn)行制造、測試和封裝。
最新的數(shù)據(jù)報告顯示,當(dāng)前單個最先進(jìn)工藝的芯片設(shè)計環(huán)節(jié)成本已經(jīng)高于 4 億美金(見下圖)。如此高昂的成本讓芯片研發(fā)的容錯率降至冰點,也因此芯片設(shè)計幾大環(huán)節(jié)中的“驗證”,變得日益重要。
本文就驗證的重要性進(jìn)行一個淺述。
一、芯片進(jìn)入 SoC 時代,驗證工具變的必不可缺芯思想
系統(tǒng)級芯片(SoC- System on Chip)將微處理器、模擬 IP 核、數(shù)字 IP 核和存儲器(或片外存儲控制接口)集成在單一芯片上,?是當(dāng)前芯片里的主流。SOC 這一概念在 20 世紀(jì) 90 年代出現(xiàn),經(jīng)過近 30 年的發(fā)展,SoC 可集成的內(nèi)容越來越多,晶體管數(shù)量越來越大、功能越來越多元化,使得設(shè)計原理變的異常復(fù)雜。毫不夸張的說,一款 SoC 設(shè)計對于一個配置齊全的、有經(jīng)驗的研發(fā)團隊來說,也需要 3-5 年的時間才能完成全部研發(fā)工作。
高昂至上億美金的流片(Tapeout)成本,不可逆的研發(fā)時間成本,導(dǎo)致芯片設(shè)計的每個環(huán)節(jié)都不容許出現(xiàn)一點點錯誤;而且隨著 SoC 所繼承的內(nèi)容和復(fù)雜程度日益提高,驗證需要探索的空間和范圍越來越大,每一次驗證都像是一次“大海撈針”,因此驗證所需要的時間亦越來越長。EDA 里的驗證工具已然必不可缺,驗證越充分,芯片的成功率就越高。
當(dāng)前的驗證幾乎必須貫穿芯片設(shè)計的每個步驟,以便芯片研發(fā)團隊及時發(fā)現(xiàn)錯誤,保證所投入的巨大研發(fā)成本不會覆水東流或錯過最佳上市時間。據(jù)悉,在現(xiàn)在的 SoC 研發(fā)項目中,仿真和驗證的時間占了整個項目 70%以上的時間,而仿真和驗證工程師也占了整個團隊的 70%以上。因為只有經(jīng)過充分的仿真和驗證,找出足夠多的 bug,才能放心拿去流片。
二、反復(fù)驗證—驗證貫穿整個芯片設(shè)計流程
芯片在設(shè)計啟動伊始就會設(shè)定非常嚴(yán)格的設(shè)計周期和面市時間,環(huán)節(jié)一環(huán)扣一環(huán),驗證是一個反復(fù)和交叉作業(yè)的工作內(nèi)容,貫穿整個芯片研發(fā)周期,環(huán)節(jié)繁復(fù)但時間不能有任何延誤,從而造成在單位時間內(nèi)的驗證任務(wù)成指數(shù)增長。并且,驗證不僅僅是在芯片設(shè)計階段,即使一款芯片已經(jīng)量產(chǎn)出貨,驗證的工作可能依然沒有結(jié)束。芯思想
這張圖按照芯片研發(fā)的時間進(jìn)程,示意了驗證的每個環(huán)節(jié):
?
1、?產(chǎn)品規(guī)劃
在研發(fā)初期首先要啟動的是驗證規(guī)劃,這是為了在產(chǎn)品規(guī)劃的同時即確定驗證方案和技術(shù)路線,并且保證驗證結(jié)果有一定量的調(diào)試時間并有可行的調(diào)試方案。
SoC 研發(fā)時非常依賴選用一部分可復(fù)用的成熟 IP 核,以加快其本身的研發(fā)速度。但在選擇合適的 IP 核時要同時考慮的因素有很多,?功耗、性能、安全以及成本,還有 IP 核與 IP 核,IP 核與其他模塊之間通訊和數(shù)據(jù)交互的界面接口,等。因此,在初期,還要為某些標(biāo)準(zhǔn)的模塊需要提前準(zhǔn)備好驗證 IP 核(Verification IP,VIP)并規(guī)劃好不同的檢測點,并具體落實在各個研發(fā)階段和模塊中。
2、架構(gòu)定義
SoC 設(shè)計首先要定義系統(tǒng)的架構(gòu),其中包括但不限于定義功能、明確各 IP 和模塊之間的通訊協(xié)議、功耗與性能的妥協(xié)關(guān)系等等。架構(gòu)定義要基于該芯片使用后所面臨經(jīng)典工作場景進(jìn)行假設(shè)和模擬,所以在架構(gòu)定義階段,需完成兩個非常重要的驗證:
一個是不同通訊協(xié)議下的功能驗證?(Functional Verification),該驗證允許設(shè)計工程師在設(shè)計階段發(fā)現(xiàn)高階的協(xié)議性錯誤(bug),在設(shè)計早期以非常低的成本進(jìn)行修復(fù)。而如果進(jìn)入到產(chǎn)品階段才發(fā)現(xiàn),修復(fù)的成本將會非常高。
另一個同步進(jìn)行的是原型驗證?(Prototyping),就是把硬件原型模擬化,提前對軟件和硬件的配合表現(xiàn)進(jìn)行驗證。這樣提前驗證的好處是,在芯片制造前,便可以開展軟硬件協(xié)同設(shè)計,提前發(fā)現(xiàn)問題、檢測問題并解決問題,確保芯片在真正可使用時,研發(fā)團隊已經(jīng)擁有一個成熟的軟硬件整體方案,芯片能切實支持軟件的應(yīng)用,大大將研發(fā)時間提前,提升整體研發(fā)效率。
3、流片前驗證
前文提到,SoC 設(shè)計為了縮短研發(fā)周期會采用可復(fù)用 IP 核和新 IP。每一個 IP 核驗證都在各自單獨的環(huán)境中完成,以確保單獨 IP 功能正確;但在復(fù)雜的 SoC 驗證鏈中,不僅需要單點驗證,更需要有多種驗證手段進(jìn)行系統(tǒng)性驗證,確保各種 IP 核以及其他模塊能協(xié)同工作。
IP 驗證中慣用動態(tài)仿真(Dynamic Simulation)和形式化驗證(Formal Verification)。二者在使用時都需要基于單獨的驗證基礎(chǔ)環(huán)境,前者需要模擬出基礎(chǔ)環(huán)境;后者要通過數(shù)學(xué)建模,在數(shù)字世界里搭建出環(huán)境假設(shè)和目標(biāo)斷言。驗證工程師通過比較結(jié)果、仿真波形比對最終來判定測試用例是否通過。
流片前驗證是 SoC 研發(fā)過程中耗費時間和資源最大的驗證環(huán)節(jié),而且是一個增量的連續(xù)過程,隨著設(shè)計成熟度和設(shè)計復(fù)雜性的提高而提高。
4、硬件加速
嚴(yán)格意義上來說,硬件加速(Emulation)的使用是在流片前,屬于流片前驗證的一部分,但參與過芯片設(shè)計的研發(fā)者都知道,這個環(huán)節(jié)是流片前驗證和流片后驗證的橋梁,它將還處于 RTL 級別的設(shè)計放到一個可重構(gòu)的虛擬硬件環(huán)境中,讓驗證速度得到成千上萬倍提升,同時也讓軟硬協(xié)同成為可能。利用這種技術(shù),我們可以在數(shù)小時之內(nèi),將操作系統(tǒng)在 RTL 模塊上啟動起來。
驗證速度的提升,讓驗證的效率大幅提升,對驗證成本的貢獻(xiàn)是無可比擬的。俗話說,有得必有失,有失必有得。驗證工程師發(fā)現(xiàn),驗證速度的提升的同時,能夠觀察的信號將會急劇減少,并且那些需要被觀測的信號,必須在產(chǎn)生 FPGA 比特流之前就要定義好,一旦沒有定義,重新編譯可能又需要耗費好幾個小時。
為了解決上述問題,現(xiàn)在 EDA 公司已經(jīng)推出了硬件加速器(Emulator),硬件加速器在仿真速度和可觀測性之間進(jìn)行權(quán)衡和取舍,速度上向原型驗證靠攏,而可觀測性向仿真器靠攏,在仿真器和原型驗證之間增加一個驗證產(chǎn)品,但是因為硬件加速器結(jié)構(gòu)特殊,價格昂貴,只有芯片利潤相對豐厚的大企業(yè)才用得起。
5、流片后驗證
流片后驗證一般發(fā)生在芯片實際生產(chǎn)結(jié)束以后,在芯片進(jìn)行量產(chǎn)之前,將測試批芯片在實驗室進(jìn)行各種測試,確保功能、時序、性能、功耗、物理應(yīng)力得都符合設(shè)計預(yù)期,在完成所有的驗證以后,再進(jìn)行批量生產(chǎn)。如果在這個階段發(fā)現(xiàn)錯誤,其修復(fù)的成本將會非常高昂,甚至成為不可能。如果一個錯誤被確認(rèn)為功能錯誤,設(shè)計團隊就必須對進(jìn)行修復(fù),修復(fù)錯誤的方法有多種,包括利用系統(tǒng)微碼來避免失效的條件。但如果錯誤必須在硬件層面進(jìn)行,那就需要重新流片了。
三、驗證技術(shù)的挑戰(zhàn)
隨著晶體管的數(shù)量和設(shè)計的復(fù)雜度在不斷提高,模塊增多,要找到它們中間最佳的互動可能性必須通過更充分地驗證才能找到最優(yōu)方案。芯片設(shè)計的各階段,需要不同的驗證方法和多種驗證工具相互配合,解決不同的問題。芯
以 5G、大數(shù)據(jù)、智能駕駛、物聯(lián)網(wǎng)為代表的新興市場讓芯片的類型和數(shù)量都有了指數(shù)式的增長。但增長的背后,是對 SoC 研發(fā)周期的更高要求。如何在更少的研發(fā)時間里完成更多的驗證工作?一是提升驗證工具的可擴展性,讓驗證成為一個“交鑰匙”一樣的工程;二是讓設(shè)計自身具有可配置性,針對不同的應(yīng)用場景,可以通過升級底軟或固件、或者是通過硬件重構(gòu)來解決出現(xiàn)的問題。
1、工具可擴展性
工具的擴展性是解決繁重驗證的一個重要手段,可是工具的擴展性本身就有很大的技術(shù)問題。以形式化驗證為例,盡管自動化技術(shù)已經(jīng)一再升級,然而與 SoC 系統(tǒng)復(fù)雜性的提升速度相比,還是有很大的差距。因為這種技術(shù)推進(jìn)的差距,讓驗證技術(shù)開始越來越向解決特定問題演進(jìn)。如形式化驗證越來越集中用來解決安全和死鎖的問題,而不是用其作為一個通用的驗證技術(shù)。這就變相增加了驗證的工作量,因為需要使用不同的驗證技術(shù)來配套使用,與提高工具可擴展性的目標(biāo)完全背道而馳。
2、驗證標(biāo)準(zhǔn)的缺失
驗證標(biāo)準(zhǔn)也是一個關(guān)鍵的挑戰(zhàn)。驗證標(biāo)準(zhǔn)就是到底要驗證什么,為什么要這樣驗證。傳統(tǒng)的驗證標(biāo)準(zhǔn)主要依賴需求,將 SoC 應(yīng)具備的表現(xiàn)、或者是某些場景下期望的行為規(guī)范定義好,甚至將一些不清晰的行為模糊定義,或者是干脆不定義,留下灰色地帶;然而這些有意為之的模糊定義在當(dāng)前芯片設(shè)計中缺成了一個大問題。
微處理器(MPU)設(shè)計公司,都有一個專門的仿真器來仿真指令系統(tǒng)結(jié)構(gòu)(ISA),并將此作為驗證標(biāo)準(zhǔn)??墒?SoC 設(shè)計因為牽扯到設(shè)計不同的功能模塊,標(biāo)準(zhǔn)也需要跨模塊,單純的指令仿真不足以驗證這類芯片設(shè)計的正確性,從而讓驗證標(biāo)準(zhǔn)無從定義和參考。
3、低功耗的廣泛使用
隨著物聯(lián)網(wǎng)時代的開啟,所有的 SoC 都要必須在設(shè)計中考慮低功耗問題,使得電子產(chǎn)品的待機時間更長。在 Soc 設(shè)計中采用門控功耗和門控時鐘技術(shù)成為使用最廣和效率最高的功耗節(jié)省方式。門控功耗依靠關(guān)閉那些不用的模塊節(jié)省功耗,而門控時鐘則是通過關(guān)閉那些不需要激活的模塊和寄存器來縮減功耗。
目前產(chǎn)業(yè)界已經(jīng)開發(fā)了標(biāo)準(zhǔn)語言用以支持 RTL 仿真中的功耗行為,但是卻大幅提升發(fā)驗證工作復(fù)雜性。
對一個低功耗設(shè)計而言,設(shè)置數(shù)十個電壓域和數(shù)千種功耗模式是非常常見的行為,驗證規(guī)劃需要確保在所有功耗模式下電路的行為皆正確,其復(fù)雜程度和驗證負(fù)荷可想而知。
4、芯片安全要求的提高
現(xiàn)今社會對信息安全的要求提升到了一個從來未有的級別。萬物互聯(lián)的背面是我們往往對電子產(chǎn)品鏈接了那些設(shè)備都無從而知,如冰箱、電飯煲甚至燈泡等,導(dǎo)致無法定義危險是什么,如何去驗證更是無從談起。
另一種安全的維度是功能安全。系統(tǒng)的突然失效不能傷害到芯片,而這種失效在汽車和航天產(chǎn)業(yè)尤為突出。即使芯片經(jīng)歷了突發(fā)事件,也要確保這些芯片不受損壞。芯思想
這種種高安全要求都對驗證提出了新挑戰(zhàn)。
5、軟硬件協(xié)同驗證的挑戰(zhàn)
在傳統(tǒng)的 PC 世界,硬件和軟件總是非常容易區(qū)分清楚,因此軟件驗證和硬件驗證也在各自獨立的流程中進(jìn)行,楚河漢界異常明確。
然而科技進(jìn)步使得這種界線變得越來越模糊,甚至在許多的情形下,硬件和軟件已經(jīng)密不可分,比如智能手機和智能汽車。沒有相應(yīng)的固件和軟件運行,有些芯片模塊根本無法得到期望的電路行為,這會從不同的層面改變驗證的方法學(xué)。
如今軟硬件的無縫連接,直接決定了軟件的開發(fā)節(jié)點需要配合 RTL 的進(jìn)程。反過來,驗證軟件的時候,亦需要硬件模型足夠穩(wěn)定、成熟且快速。如何一并對硬件和軟件的系統(tǒng)功能進(jìn)行驗證,除了驗證所必須的環(huán)境外,確認(rèn)設(shè)計錯誤發(fā)生的地方和機理已經(jīng)成為一個必須要面對的課題。
四、國產(chǎn)空白之“憂”
盡管近十年來,國產(chǎn) EDA 工具取得了一些成績,但我們也要正視存在的差距。差距主要體現(xiàn)在四個方面:芯思想
1.? 缺乏數(shù)字芯片設(shè)計核心工具模塊,無法支撐數(shù)字芯片全流程設(shè)計。
2.? 對先進(jìn)工藝支撐還不夠,除了個別兩三個工具能支持 14 納米、7 納米、5 納米之外,其它很多工具都做不到。
3. ? 缺乏制造及封測 EDA 系統(tǒng),無法支撐芯片制造和封測廠商的應(yīng)用需求。
4. 核心驗證工具和驗證平臺缺失,沒有完整的 EDA 工具鏈。
根據(jù)最新的調(diào)研數(shù)據(jù),國產(chǎn) EDA 工具在國內(nèi)市場的占有率可謂慘不忍睹,還不到 1%,只有約 0.8%。概倫執(zhí)行副總載兼博達(dá)微總經(jīng)理李嚴(yán)峰在《再談本土 EDA 競爭力順便聊聊 DTCO 在中國落地》一文中指出,EDA 中國市場份額全球占比并不高,市場容量也不大,國際競爭對手環(huán)繞,掙錢并不容易,沒有市場和利潤的支撐,光靠政策面支持不能持久。同時指出,在 EDA 的用戶群中,最好的設(shè)計和制造公司都在海外,真正卡脖子的工具需要與先進(jìn)工藝和設(shè)計一同迭代,這個不是靠錢能解決的。不管戰(zhàn)略還是要解決卡脖子問題,EDA 還是集成電路的一環(huán),集成電路的競爭力離不開市場,EDA 的重點還是圍繞市場做有競爭力的產(chǎn)品和技術(shù)。
回到驗證工具這個正題。通過數(shù)十年的發(fā)展,驗證工具一直伴隨市場的需求在向前發(fā)展。目前主要的驗證方式非常繁復(fù),包括前文所提到的動態(tài)仿真(Dynamic Simulation)、原型驗證 / 硬件加速(Prototyping and Emulation)和形式化驗證(Formal Verification)之外,還有很多其他方式方法。在實際工作中,如何選擇驗證方式,是否能有一個可反復(fù)使用的驗證平臺,實現(xiàn)這些不同驗證方法的跨越,是當(dāng)前芯片研發(fā)者最關(guān)心的話題。
目前國際 EDA 巨頭基本上都在動態(tài)仿真、硬件加速、原型驗證和形式化驗證上能夠提供完整的解決方案,并且還在通過方法學(xué)和旁類技術(shù)的應(yīng)用來提升驗證的效率。芯思想
和大多數(shù) EDA 工具一樣,中國在驗證工具的技術(shù)儲備幾乎為“零”,近年國內(nèi) EDA 公司在驗證上有所探索,但是產(chǎn)品主要還是集中在后端實現(xiàn)和芯片測試階段,SoC 設(shè)計過程中驗證負(fù)擔(dān)最重、使用頻度最高的數(shù)字集成電路驗證 EDA 工具套件,國產(chǎn)技術(shù)依然是“零”,國內(nèi)芯片設(shè)計公司在研發(fā) SoC 時,依然 100%使用國際 EDA 巨頭的相關(guān)驗證工具。
五、小結(jié)
驗證(Verification)的重要性是證實(Validation)我們永遠(yuǎn)不會“不可能出錯”,這也是驗證之痛,因此我們只能決定何時是“足夠接近沒機會出錯”,然后開始主觀標(biāo)準(zhǔn)和實用主義之間的權(quán)衡。
不同類型的 SoC 設(shè)計可能需要不同的驗證策略、工具和測試環(huán)境,大型 SoC 設(shè)計需要復(fù)雜的流程,多種工具包括虛擬原型、模擬器、仿真器和原型驗證等理想化地集成在一起并可擴展,并且可以在不同的驗證階段重復(fù)使用測試。
盡管國產(chǎn)驗證工具起步階段,發(fā)展任重道遠(yuǎn)。但隨著芯片設(shè)計的日益復(fù)雜化,驗證工具更趨于多樣化。是否也給國產(chǎn)驗證工具帶來新機遇呢?
鳴謝
本文在成稿過程中得到電子科技大學(xué)電子科學(xué)與工程學(xué)院副教授黃樂天、西南交通大學(xué)信息學(xué)院電子工程系副系主任邸志雄的幫助。特此感謝!