他山之石可以攻玉。綜合敏捷開發(fā)在其它行業(yè)的經(jīng)驗(yàn),并結(jié)合其在芯片開發(fā)流程中的歷史、現(xiàn)狀,芯華章初步提出敏捷驗(yàn)證的主要發(fā)展目標(biāo),以發(fā)展出下一代EDA 2.0的核心驗(yàn)證流程。
文章首發(fā)于《中國集成電路》,由國家工業(yè)和信息化部主管,中國半導(dǎo)體行業(yè)協(xié)會主辦的官方專業(yè)期刊。感謝《中國集成電路》對芯華章的認(rèn)可!
敏捷開發(fā)理念在芯片開發(fā)中的應(yīng)用
1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的開發(fā)流程“瀑布模型”。瀑布模型是將產(chǎn)品開發(fā)的各個周期按固定順序而連接,形如瀑布流水,最終得到產(chǎn)品。直到80年代早期,它一直是被廣泛采用的軟件開發(fā)模型,在同時期的芯片開發(fā)項(xiàng)目中,也基本是采用瀑布模型。瀑布模型的優(yōu)點(diǎn)是階段劃分明確,有明確的文檔輸入輸出,但這種流程交付周期長,對階段交付標(biāo)準(zhǔn)要求高。90年代開始一直到2000年之后,隨著軟件定制要求快速提高,以“Scrum”和“Agile”命名的敏捷開發(fā)方法逐漸發(fā)展,敏捷的核心在于更快、更多、更好的迭代,以更早的集成、測試、交付來發(fā)現(xiàn)問題和調(diào)整產(chǎn)品。但是敏捷開發(fā)方法對測試工具和測試團(tuán)隊(duì)提出了更高的要求。
敏捷開發(fā)并沒有一個標(biāo)準(zhǔn)的定義,常見的特點(diǎn)有:
拆分和并行開發(fā):大系統(tǒng)拆分成可以并行開發(fā)的子模塊,各模塊并行開發(fā)、并行測試,并能夠集成為最終系統(tǒng)進(jìn)行系統(tǒng)級測試;
持續(xù)集成、持續(xù)部署、持續(xù)測試:盡快盡早把各系統(tǒng)模塊進(jìn)行組合,并以最終面向用戶的形式進(jìn)行測試,并及時把結(jié)果反饋給開發(fā);
自動化流程:把代碼提交、模塊測試、系統(tǒng)集成、系統(tǒng)部署、系統(tǒng)級測試的多個步驟形成自動化流程,自動化后即能用更多的高效與廉價算力來代替人工投入,并增加測試迭代次數(shù),盡快反饋Bug,提高質(zhì)量;
以測試來驅(qū)動開發(fā):因?yàn)閺拇a到系統(tǒng)的部署和測試流程完全自動且更加及時,因此敏捷流程中往往測試代碼先于功能代碼開發(fā),用測試代碼來驅(qū)動功能代碼的開發(fā)和測試;
盡可能復(fù)用成熟模塊:復(fù)用現(xiàn)有的、經(jīng)測試的可用模塊,是降低開發(fā)和測試成本的重要手段。
敏捷驗(yàn)證解決芯片開發(fā)的瓶頸
敏捷開發(fā)實(shí)際上是一種理念而不是標(biāo)準(zhǔn),與經(jīng)典的“瀑布流程”之間并沒有明確的分界線。雖然在軟件特別是互聯(lián)網(wǎng)軟件領(lǐng)域應(yīng)用得較多,但敏捷的理念已經(jīng)逐漸被應(yīng)用于很多工程開發(fā)領(lǐng)域。芯片開發(fā)制造作為一種特別復(fù)雜的系統(tǒng)工程,同樣也不例外。如果我們回顧上世紀(jì)六、七十年代到九十年代的芯片設(shè)計和EDA發(fā)展歷程,在開發(fā)流程上可以總結(jié)為如下圖的變化,即芯片開發(fā)從早期的“定義-設(shè)計-驗(yàn)證-制造”瀑布模型逐漸細(xì)分,芯片越來越復(fù)雜,需求和架構(gòu)的定義逐漸成為不同的階段,而設(shè)計階段隨著RTL語言的發(fā)展也分化為IP、前端設(shè)計、后端設(shè)計、軟件設(shè)計、系統(tǒng)集成,每個設(shè)計步驟都需要有對應(yīng)的驗(yàn)證,并誕生了對應(yīng)的建模、集成、驗(yàn)證的各類語言和工具。
除此之外,近年來基于“敏捷設(shè)計”的理念,出現(xiàn)了多種提高RTL語言邏輯表達(dá)層次的電路描述語言,比如Bluespec、Chisel、SpinalHDL、nMigen等HDL語言和框架,它們基于Scala或Python等語言,加入RTL級描述和代碼構(gòu)建功能,主要出發(fā)點(diǎn)是簡化從架構(gòu)定義到硬件邏輯描述的流程,并能從這樣的硬件邏輯描述自動生成RTL級電路實(shí)現(xiàn)。同時基于類C語言等高層次語言的HLS綜合方法學(xué),也在過去十幾年逐步發(fā)展。這些都在推動芯片開發(fā)敏捷化的發(fā)展。
(圖片來源于網(wǎng)絡(luò)公開信息)
目前的HLS或HDL等高層次設(shè)計語言,更多集中在從架構(gòu)定義到邏輯設(shè)計、電路實(shí)現(xiàn)的敏捷流程,側(cè)重于提高芯片設(shè)計抽象層級,用可參數(shù)化、可復(fù)用的高級語言做設(shè)計,目的是讓架構(gòu)和邏輯的修改能快速反映到設(shè)計實(shí)現(xiàn)中。但是存在的問題是脫離了傳統(tǒng)芯片電路級驗(yàn)證、調(diào)試、修改的流程,驗(yàn)證環(huán)節(jié)沒有加速反而一定程度上讓驗(yàn)證與設(shè)計脫節(jié),增加了驗(yàn)證困難,因此在芯片開發(fā)流程中還沒有得到普遍應(yīng)用。
隨著芯片的規(guī)模和復(fù)雜度越來越高,對芯片的驗(yàn)證要求越來越高。如何更有效地完成芯片所有功能的驗(yàn)證成為最大的挑戰(zhàn),芯片驗(yàn)證工作已經(jīng)占用了整個開發(fā)流程的70%時間和資源,成為實(shí)際上的瓶頸。在芯片開發(fā)周期的所有階段——包括架構(gòu)、模塊設(shè)計、綜合、系統(tǒng)集成、軟件開發(fā)和物理設(shè)計階段,都會引入錯誤,而且很多錯誤是無法在當(dāng)前階段完全發(fā)現(xiàn)和解決的。這個背景也非常符合敏捷理念所面對的問題:用更快更完善的迭代流程,讓設(shè)計和驗(yàn)證更“敏捷”地進(jìn)入下一階段,才能更早發(fā)現(xiàn)每個模塊在后期階段才能暴露出的潛在問題。
從上文可以看出,沒有自動、智能、快捷的驗(yàn)證流程和工具,就無法完成復(fù)雜大規(guī)模芯片的低成本敏捷開發(fā)流程,也無法推動EDA工具流程向敏捷開發(fā)方向發(fā)展。因此,優(yōu)化和完善芯片敏捷開發(fā)流程,首先要解決如何實(shí)現(xiàn)設(shè)計驗(yàn)證敏捷化的問題。
芯片敏捷驗(yàn)證的發(fā)展目標(biāo)
綜合敏捷開發(fā)在其它行業(yè)的經(jīng)驗(yàn),并結(jié)合其在芯片開發(fā)流程中的歷史、現(xiàn)狀,我們初步提出敏捷驗(yàn)證的主要發(fā)展目標(biāo),以發(fā)展出下一代EDA 2.0的核心驗(yàn)證流程。
特別值得一提的是,這里列出的每一個點(diǎn)目標(biāo),都需要EDA算法團(tuán)隊(duì)、EDA工具廠商、芯片設(shè)計團(tuán)隊(duì)、計算平臺供應(yīng)商這整個生態(tài)的緊密結(jié)合和配合,不僅僅從技術(shù)角度,還需要從應(yīng)用模式角度變革,才能快速推動現(xiàn)有EDA流程的發(fā)展。
自動和智能的快速迭代
EDA驗(yàn)證的本質(zhì)是基于特定流程的大量計算,而近年來全球算力發(fā)展的突飛猛進(jìn),讓超大規(guī)模計算的成本大幅降低,這給計算替代分析的工程方法學(xué)帶來了更多空間,敏捷驗(yàn)證在迭代流程和計算優(yōu)化方向的發(fā)展目標(biāo)包括但不限于如下優(yōu)化點(diǎn):
支持自動化的快速部署、持續(xù)迭代流程
自動化流程是整個敏捷驗(yàn)證和敏捷開發(fā)的核心基礎(chǔ),目前的模塊和IP級開發(fā),一般基于UVM等測試框架,使用自動化腳本完成仿真流程并收集測試結(jié)果和覆蓋率數(shù)據(jù),單個工具的流程自動化已經(jīng)比較完善。但是,面向功能測試或約束隨機(jī)的測試用例,還是需要大量的人工分析和編寫。同時多種EDA工具之間的協(xié)同,特別是到集成驗(yàn)證階段,還經(jīng)常需要大量人工介入來完成集成和實(shí)現(xiàn),因此實(shí)際情況往往是各種工具單獨(dú)使用,模塊驗(yàn)證和集成驗(yàn)證相互隔離。我們需要發(fā)展更自動和智能的平臺級EDA工具,實(shí)現(xiàn)多工具協(xié)同下的測試用例生成、設(shè)計編譯、實(shí)現(xiàn)、驗(yàn)證計算、數(shù)據(jù)收集一直到部分調(diào)試分析的自動化,以支持敏捷開發(fā)中“快速部署和持續(xù)迭代”的工程方法學(xué),縮小從設(shè)計到驗(yàn)證的周期及成本。
更多使用基于大規(guī)模算力的形式化驗(yàn)證方法
形式化驗(yàn)證方法能夠從數(shù)學(xué)建模角度全面地驗(yàn)證設(shè)計是否正確,是對仿真驗(yàn)證方法的有效補(bǔ)充,也對驗(yàn)證自動化的發(fā)展有利。但過去形式化驗(yàn)證的應(yīng)用往往受限于求解空間和計算量。隨著近年來全球算力規(guī)模的大發(fā)展,以及AI方法在輔助形式化驗(yàn)證求解方向開始取得進(jìn)展,將會有效推動形式化驗(yàn)證得到更廣泛使用。同時,形式化驗(yàn)證工具也需要從計算性能、核心調(diào)度算法、應(yīng)用場景支持、云計算應(yīng)用不斷改進(jìn),基于新型形式化驗(yàn)證EDA工具,驗(yàn)證流程會更加依靠大規(guī)模算力而不是人工投入。如芯華章科技的GalaxFV形式化驗(yàn)證產(chǎn)品,已經(jīng)在形式化驗(yàn)證工具的前沿發(fā)展上取得了一定進(jìn)展。
更早引入系統(tǒng)集成驗(yàn)證到迭代流程中
設(shè)計者越來越認(rèn)識到,芯片設(shè)計的后端實(shí)現(xiàn)過程以及與軟件的大系統(tǒng)集成,往往會引入新的問題或者暴露設(shè)計的深層次問題,而且未來Chiplet級芯片的創(chuàng)新發(fā)展,會對EDA系統(tǒng)級驗(yàn)證提出極高要求。因此,EDA驗(yàn)證過程,需要基于自動化的EDA工具、各種功能、性能、互聯(lián)模型的支持以及多驗(yàn)證平臺的聯(lián)合仿真,在驗(yàn)證迭代中盡早引入后端的實(shí)現(xiàn)驗(yàn)證和軟硬件系統(tǒng)集成,推動EDA前端仿真、功能驗(yàn)證、后端實(shí)現(xiàn)、后端驗(yàn)簽等全流程步驟的自動化,讓架構(gòu)和設(shè)計的任何修改都能夠快速反映到驗(yàn)證系統(tǒng)中,并進(jìn)行從模塊級到系統(tǒng)級的迭代測試,讓架構(gòu)和設(shè)計的問題盡快暴露在更接近真實(shí)環(huán)境的系統(tǒng)中,這也包括了系統(tǒng)級性能和功耗的提前驗(yàn)證。當(dāng)然,更早實(shí)現(xiàn)系統(tǒng)級的驗(yàn)證迭代不意味著放松模塊級的測試要求。
更敏捷的驗(yàn)證計算
EDA算法優(yōu)化 :EDA驗(yàn)證相關(guān)的核心邏輯和求解器的算法優(yōu)化和異構(gòu)實(shí)現(xiàn);
EDA計算并行化 :基于多核、多節(jié)點(diǎn)、高速聯(lián)接的并行計算網(wǎng)絡(luò)結(jié)構(gòu),加速EDA驗(yàn)證的并行計算;
EDA計算規(guī)?;夯诩軜?gòu)靈活、成本更低的大規(guī)模彈性云計算資源,在更高層次實(shí)現(xiàn)EDA驗(yàn)證集群的并行化;
EDA計算異構(gòu)加速:EDA驗(yàn)證計算傳統(tǒng)上主要依賴主流CPU主機(jī),但隨著異構(gòu)計算的快速發(fā)展,新型CPU、GPU、光計算甚至量子計算平臺,會越來越多地進(jìn)入傳統(tǒng)EDA計算的領(lǐng)域,以實(shí)現(xiàn)更高效、更低成本的大規(guī)模計算;
基于大數(shù)據(jù)的AI機(jī)器學(xué)習(xí)和“傳統(tǒng)計算”的結(jié)合:大數(shù)據(jù)分析和機(jī)器學(xué)習(xí)被不斷應(yīng)用在前端驗(yàn)證、后端布局和驗(yàn)證、制造測試等不同的EDA驗(yàn)證階段,是一個已經(jīng)出現(xiàn)并會不斷加速的趨勢;
更早進(jìn)行系統(tǒng)級驗(yàn)證
系統(tǒng)層驗(yàn)證和電路層驗(yàn)證分離
傳統(tǒng)芯片硬件開發(fā)的特點(diǎn)是邏輯設(shè)計和電路實(shí)現(xiàn)緊密結(jié)合,在驗(yàn)證環(huán)節(jié)同樣也是如此。但是隨著SoC芯片復(fù)雜度提高,芯片驗(yàn)證的很大一部分工作更偏向于系統(tǒng)功能測試和軟件測試,特別是依賴操作系統(tǒng)和大量中間層軟件環(huán)境的系統(tǒng)測試,用傳統(tǒng)的電路級驗(yàn)證語言很難支持。因此,EDA工具實(shí)現(xiàn)系統(tǒng)軟件層功能驗(yàn)證和實(shí)現(xiàn)層電路驗(yàn)證的分離,讓用戶更多使用傳統(tǒng)軟件層的高級語言來完成系統(tǒng)層驗(yàn)證,是未來驗(yàn)證語言和驗(yàn)證工具的重要目標(biāo)。
這可以有效降低對驗(yàn)證工程師的綜合性要求,并減輕驗(yàn)證中的開發(fā)工作量,復(fù)用更多現(xiàn)有的軟件生態(tài),并在邏輯無關(guān)的底層實(shí)現(xiàn)級更多使用形式化驗(yàn)證、驗(yàn)證IP復(fù)用等方法自動驗(yàn)證。同時,未來chiplet多芯粒芯片的發(fā)展目標(biāo),也會逐步降低對電路實(shí)現(xiàn)層驗(yàn)證的需求,而逐漸加大對系統(tǒng)軟件層面功能和性能驗(yàn)證的比重。
更多的驗(yàn)證復(fù)用
敏捷驗(yàn)證的另一個重要發(fā)展方向是從驗(yàn)證工具、驗(yàn)證數(shù)據(jù)、驗(yàn)證IP到測試用例的統(tǒng)一和大規(guī)模復(fù)用。例如基于PSS(Portable Stimulus Standard)標(biāo)準(zhǔn)和工具的復(fù)雜場景測試用例,可以覆蓋從ESL級模型到最終芯片實(shí)現(xiàn)的多級測試復(fù)用。而更統(tǒng)一的設(shè)計編譯工具,可以有效減少軟件仿真、硬件仿真、形式化求解等多種工具相互遷移時的重復(fù)編譯時間。最終多種驗(yàn)證工具所產(chǎn)生的互補(bǔ)的驗(yàn)證結(jié)果和數(shù)據(jù),應(yīng)該能集中到統(tǒng)一的中央數(shù)據(jù)庫中,并通過管理工具進(jìn)行項(xiàng)目驗(yàn)證進(jìn)程的計劃、管理。最終整個驗(yàn)證流程和多種驗(yàn)證工具不應(yīng)該是碎片化的,而應(yīng)該形成統(tǒng)一的驗(yàn)證平臺(Verification Platform)。
基于軟硬件仿真的系統(tǒng)驗(yàn)證自動化
仿真是驗(yàn)證過程中的核心手段。隨著SoC和Chiplet芯片越來越廣泛應(yīng)用,在驗(yàn)證過程中盡早啟動系統(tǒng)級驗(yàn)證、并減少系統(tǒng)級驗(yàn)證的實(shí)現(xiàn)成本,是驗(yàn)證敏捷化的最重要需求。具體來說,大規(guī)模系統(tǒng)級驗(yàn)證在軟件仿真階段,過去沒有很好的EDA手段,最近芯華章科技推出的GalaxSim仿真Turbo模式,首次填補(bǔ)了系統(tǒng)級軟件仿真的空白,在提前做系統(tǒng)級驗(yàn)證、降低大規(guī)模系統(tǒng)驗(yàn)證成本方面走出了第一步。
同時,硬件系統(tǒng)平臺仍然是大規(guī)模高性能系統(tǒng)仿真的必要手段。過去在硬件系統(tǒng)仿真上,我們遇到的很大困難是產(chǎn)品和人力成本的高投入,從設(shè)計到系統(tǒng)驗(yàn)證這個流程需要在多種軟硬件平臺上一次又一次地由工程師來實(shí)現(xiàn)。芯華章科技的硬件驗(yàn)證系統(tǒng)產(chǎn)品,致力于統(tǒng)一軟硬件平臺,降低客戶在EDA成本和人力成本上的大量投入。
基于統(tǒng)一數(shù)據(jù)庫的智能調(diào)試分析
基于統(tǒng)一數(shù)據(jù)的統(tǒng)一調(diào)試
除了利用多種靜態(tài)和動態(tài)的驗(yàn)證方法和不同的驗(yàn)證工具,我們都知道,波形、源代碼、電路的調(diào)試,以及覆蓋率的分析和改進(jìn)等工作,占系統(tǒng)芯片設(shè)計中4成以上的工作量。因此,更敏捷的驗(yàn)證需要各種EDA工具能統(tǒng)一和合并所產(chǎn)生的大量基礎(chǔ)數(shù)據(jù),并提供給芯片設(shè)計驗(yàn)證團(tuán)隊(duì)統(tǒng)一的調(diào)試工具,基于這些基礎(chǔ)數(shù)據(jù)去進(jìn)行分析調(diào)試,以貫穿整個驗(yàn)證環(huán)節(jié),支持更敏捷的迭代。芯華章的FusionDebug,貫穿之前提及的系統(tǒng)驗(yàn)證技術(shù)與工具,具備開放的接口,高效的壓縮和讀寫速度,支持分布式調(diào)試,能很好的支持敏捷驗(yàn)證快速迭代,分析與調(diào)試所需。
更智能和更高抽象層次的調(diào)試
驗(yàn)證計算與調(diào)試分析是不能分離的,所有驗(yàn)證過程中暴露出來的設(shè)計問題,目前都需要人工從電路到架構(gòu)自下而上的分析去解決。但敏捷驗(yàn)證中的標(biāo)準(zhǔn)化接口模塊復(fù)用、分析工具智能化、調(diào)試工具智能化,可以逐步輔助解決從電路、信號波形和Log數(shù)據(jù)向設(shè)計邏輯和架構(gòu)的逆向映射,提高調(diào)試的抽象層次,并利用基于大數(shù)據(jù)的機(jī)器學(xué)習(xí)方法縮小問題分析空間,最終實(shí)現(xiàn)在設(shè)計層面而不是電路層面解決絕大部分的調(diào)試需求,并減少調(diào)試對人工投入的需求。
結(jié)語
敏捷開發(fā)思想已經(jīng)普遍應(yīng)用在軟件和系統(tǒng)產(chǎn)品工程領(lǐng)域,而在芯片設(shè)計工程中還處于探索階段,但敏捷的思想和價值對EDA及芯片行業(yè)的發(fā)展非常重要,因此發(fā)展更加敏捷的芯片驗(yàn)證技術(shù),推動芯片的全流程敏捷開發(fā)真正實(shí)現(xiàn),對實(shí)現(xiàn)芯華章科技提出的EDA 2.0發(fā)展目標(biāo)極其關(guān)鍵,未來發(fā)展還需要整個行業(yè)的共同努力。芯華章針對數(shù)字芯片驗(yàn)證流程已經(jīng)提供了多種驗(yàn)證產(chǎn)品,配合芯華章的通用基礎(chǔ)技術(shù)模塊共同構(gòu)成“智V驗(yàn)證平臺”。
同時芯華章于2022年成立研究院,目前也在開展敏捷驗(yàn)證相關(guān)的系列研究,歡迎行業(yè)專家與同仁的交流、合作,共同推動敏捷驗(yàn)證和敏捷開發(fā)在EDA設(shè)計流程中的應(yīng)用。