芯片有別于其他產(chǎn)品,一個顯著特性就是它的一次性工程費用(NRE)非常的高昂。芯片內(nèi)一個微小邏輯錯誤可能導(dǎo)致上千萬美金損失。這也意味在流片前,工程師需要花大量時間利用數(shù)字仿真器來驗證芯片,保證其功能的正確。
仿真技術(shù)是芯片驗證必不可少的一個環(huán)節(jié),它是保證芯片功能正常的關(guān)鍵手段。仿真主要是通過計算機結(jié)合測試激勵(stimuli)來模擬芯片在真實環(huán)境下的運行狀況;同時工程師可以通過各種調(diào)試手段來判斷運行結(jié)果是否符合預(yù)期。數(shù)字仿真器主要是針對數(shù)字電路的仿真,設(shè)計工程師需要應(yīng)用硬件描述語言(HDL)來設(shè)計電路,而驗證工程師也需要用抽象層的HDL來搭建測試環(huán)境;仿真工具需要解釋編譯這些HDL代碼,并計算出仿真結(jié)果,以便工程師檢查結(jié)果。
圖一 數(shù)字仿真器流程
二十年前,一百萬門的設(shè)計可以被稱作超大規(guī)模集成電路,而今數(shù)千萬門的電路已經(jīng)司空見慣。數(shù)字芯片集成度越來越高,伴隨的設(shè)計驗證語言和方法學不斷推陳出新,各種應(yīng)用平臺也層出不窮。這一系列的技術(shù)發(fā)展都給數(shù)字仿真器帶來了前所未有的挑戰(zhàn)。設(shè)計具有競爭力的片上系統(tǒng)(SoC)需要合理地利用各種高精尖的技術(shù)。對于數(shù)字仿真器來說,它面臨的挑戰(zhàn)不僅僅是芯片規(guī)模上的增長,還有伴隨而來的一系列問題,包括:算力受限、調(diào)試效率低下、平臺單一化等。芯華章在數(shù)字仿真器領(lǐng)域做了深入的研究和探索。放眼未來,我們認為一款好的數(shù)字仿真器應(yīng)該具備以下條件:
一、語義解析的合規(guī)性(conformity)
仿真器對語法正確解析決定了它能否正確理解設(shè)計意圖,同時也可以避免相同的編碼在不同的仿真器下產(chǎn)生不同仿真結(jié)果。設(shè)計仿真器最大的挑戰(zhàn)在于對HDL語法全面的解析。Verilog標準(IEEE1364)和SystemVerilog標準(IEEE1800)定義的這兩種語言的語義非常的復(fù)雜,關(guān)鍵字眾多,各種組合情況近乎無窮。如SystemVerilog中的interface,在interface中可以做assert,可以在其中使用task,function,還可在其中擴展各種modport等。要做到全面完整的測試,需要在構(gòu)建仿真器的測試用例時考慮的語法的各個方面,以及各種邊界場景。
通常人們認為,計算機語言是形式化(formal)的表達式,不存在歧義,但實際上,IEEE標準中存在很多模糊的界定,尤其在對發(fā)生競爭冒險(race condition)時的行為沒有明確的規(guī)定,處理這些問題,就需要開發(fā)者的經(jīng)驗和技巧。
二、良好的性能 (performance)
衡量仿真器的性能量化指標之一是:運行(runtime)時的CPU處理速度和內(nèi)存消耗。現(xiàn)今的大規(guī)模集成電路動輒上億門,如果還是依賴傳統(tǒng)的仿真技術(shù),當設(shè)計和環(huán)境的規(guī)模一旦達到某個數(shù)值,大部分商業(yè)仿真器性能都會顯著下降,造成效率低下。這其實是因為傳統(tǒng)的工具基本都是基于單機(single host)構(gòu)架來設(shè)計的。在網(wǎng)絡(luò)互聯(lián)日益發(fā)達的今天,分布式數(shù)據(jù)庫和多核并行計算等理論越來越成熟,仿真器也必須考慮并利用這些新技術(shù)取得更多性能上的突破。
三、卓越的調(diào)試功能(debuggability)
調(diào)試的重點在于可觀測性和可控制性。在數(shù)字電路調(diào)試中可觀測性表現(xiàn)形式有多種,如波形,記錄文本(log file),電路圖(schematics),源代碼,事務(wù)級數(shù)據(jù)表圖等等。調(diào)試工具的核心功能是針對不同的場景提供能夠各種有效的數(shù)據(jù)表現(xiàn)形式,并在不同數(shù)據(jù)形式間的可以同步數(shù)據(jù)標注(annotation)。此外,降低工具的使用門檻,讓初級用戶非常快速地掌握調(diào)試技術(shù),并且提供通用語言的二次開發(fā)的接口,也是優(yōu)秀的調(diào)試工具需要著重考慮的。
四、支持跨平臺(platform-independent)
傳統(tǒng)的EDA工具大多數(shù)和單一CPU構(gòu)架耦合度高,例如某些EDA工具僅支持x86的平臺。一旦需要遷移到另一種平臺上,所需要的研發(fā)工作量是巨大的。如今,處理器生態(tài)越來越多樣化,未來的平臺不再是某個單一處理器的平臺,降低EDA工具對底層CPU構(gòu)架的耦合度,可以讓用戶更加有效地把工具部署在任何平臺上,也讓產(chǎn)品有更多應(yīng)用空間,比如:在移動端的和云端的交互仿真,在移動端和服務(wù)器端的聯(lián)合仿真,利用FPGA和GPGPU的異構(gòu)加速仿真等。
LLVM的存在為跨平臺提供了技術(shù)支撐。LLVM是Chris Lattner博士于2000年開發(fā)的一種編譯器的框架系統(tǒng),他的目的在于提供一種可以適配多平臺的編譯系統(tǒng),讓前端語言和后端目標平臺解耦。利用LLVM框架開發(fā)的仿真軟件,理論上可以適配到任意目標平臺,甚至可以部署在分布式操作系統(tǒng)上,產(chǎn)品應(yīng)用范圍顯著擴大。
芯華章在跨平臺方面做了研究探索,2020年11月,芯華章的仿真器利用LLVM技術(shù)已經(jīng)成功將軟件運行在國產(chǎn)CPU架構(gòu)上。這一步工程量看似不大,但是現(xiàn)實意義非凡:這是中國EDA企業(yè)率先利用LLVM技術(shù)實現(xiàn)跨平臺支持,從某種意義上,它說也推動了傳統(tǒng)保守的EDA行業(yè)朝著更開放的技術(shù)領(lǐng)域拓展。
五、特定場景應(yīng)用(scenario-based applications)
不同的應(yīng)用場景對仿真器有不同的特殊要求,先進的仿真器需要具備各種場景下所需的功能。在大規(guī)模設(shè)計中,整個設(shè)計和驗證環(huán)境的編譯時間可能高達數(shù)十小時,這種速度在調(diào)試頻繁的設(shè)計初期是無法接受。因此,如果仿真器能夠只針對修改過的設(shè)計部分進行重編譯,而保留大部分沒改變已有編譯結(jié)果(snapshot),那么重編譯一次的時間就會大大減少,效率就得以提升。這種技術(shù)通常叫做:增量式編譯(incremental elaboration),或者分區(qū)式編譯(partition compilation)。
消費電子芯片中涉及到大量的冷復(fù)位和熱復(fù)位,在這些復(fù)位情況下的不定態(tài)傳播(x-state propagation)很大幾率會造成芯片潛在的非確定性(indeterministic)功能故障。因此,檢查不定態(tài)(X-state)在復(fù)位情況下的傳播極為重要。傳統(tǒng)的仿真器通常僅能在門級仿真(Gate Level Simulation)時檢查這些功能,但是門級仿真已經(jīng)屬于設(shè)計后期,且仿真效率低下,即便檢查出問題再修改,對項目進度來說也是壓力巨大。如果仿真器能夠在設(shè)計前期對RTL就能快速檢查不定態(tài)傳播,那么就可以節(jié)省更多后仿真時間。
當然,還有很多其他的場景應(yīng)用,如基于多進程多核加速,基于異構(gòu)系統(tǒng)的仿真等,囿于文章篇幅這里不能一一展開,我們將在今后的文章中擇機敘述。
圖二 先進仿真器
數(shù)字仿真在浩瀚的科學海洋只是某個分支,但也是一個技術(shù)密集型的多學科的領(lǐng)域,它涉及到各種技術(shù),包括:編譯原理、數(shù)據(jù)庫、運籌學、形式邏輯、拓撲學、控制理論等。
在十四五計劃指導(dǎo)下,我們深深意識到科學技術(shù),尤其是EDA技術(shù),從來沒有像今天這樣深刻影響著國家的前途命運。芯華章在EDA仿真技術(shù)領(lǐng)域不斷探索進取,同時也深感肩負使命的迫切,我們非常愿意和業(yè)界專業(yè)人士交流分享,共同成為新時代科技創(chuàng)新的排頭兵!
發(fā)布評論請先 登錄
相關(guān)推薦
評論