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