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