天天看點

國産硬體仿真系統混合驗證平台,深度解讀!

軟體仿真(Simulation),原型驗證(Prototyping),以及硬體仿真 (Emulation),是目前主要的三種有效的驗證方法,在晶片前端設計的功能性驗證階段起到了關鍵的作用。

近年來,由于大資料處理和AI晶片設計規模的擴大,以及市場競争激烈導緻的快速疊代需求,越來越多的晶片設計公司開始選擇硬體仿真,以提高晶片驗證效率,縮短晶片開發周期。

相較于軟體仿真和原型驗證,硬體仿真具有可支援設計容量大、擴充性好、工程建構時間短、仿真速度快、調試能力強、驗證場景豐富等特點,适合大型設計從子產品級、晶片級到系統級的仿真驗證。

一、 硬體仿真驗證模式

硬體仿真支援的豐富的驗證模式,可以滿足晶片設計不同階段的驗證需求,常用于架構設計、前期開發、子產品開發、IP開發、系統深度調試等晶片開發階段。

常見的仿真驗證模式,主要包括:電路内仿真(In-Circuit Emulation,ICE仿真),事務級的仿真加速(Transaction Based Acceleration,TBA仿真),以及混合仿真(QEMU)等。在不同的晶片設計階段,可以選擇合适的仿真加速方法,來提升驗證效率。

1. 電路内仿真(In-Circuit Emulation,ICE仿真)

電路内仿真是使用線上仿真器(In-Circuit Emulator)進行具有特定調試技術的硬體仿真加速,其中線上仿真器代替實際硬體以便在實際系統環境中運作和測試。此方法允許工程師在實際的系統環境中進行測試和調試,而無需等待硬體原型的生産。這可以大大加速開發過程,并提高最終産品的品質。

2. 事務級的仿真加速(Transaction Based Acceleration,TBA仿真)

事務級的仿真加速是通過使用總線功能模型Bus Functional Model (BFM),将運作在軟體上的Testbench和運作在硬體仿真系統中的DUT進行事務級層面的軟硬聯合驗證。即在主機上運作的Testbench和在硬體仿真上運作的DUT是通過無時序的事物進行互動。通過這種方法,仿真速度可以大大提高,因為仿真的焦點從每個時鐘周期的具體操作轉移到了更進階别的事務。這種方法常用于大規模系統的設計驗證,可以提高仿真的效率。

3. 混合仿真(Hybrid Emulation)

混合仿真是将硬體仿真與軟體仿真相結合,允許工程師同時觀察和調試系統的硬體和軟體部分。混合仿真可以提供對整個系統的全面視圖,并可以在更高的抽象級别進行仿真,可以進一步提高仿真速度和效率。是IC設計團隊在早期架構優化、軟硬體協同開發、RTL級仿真驗證中的重要驗證方法。

這些驗證模式都是硬體仿真的一部分或者擴充,它們提供了不同層次和粒度的仿真和驗證能力,以适應不同的設計需求和驗證目标。在實際的設計和驗證過程中,工程師可能會根據需要選擇适合的仿真方法。

二、 混合仿真(QEMU)

1. QEMU

QEMU是純軟體實作的一個開源、跨平台的虛拟化模拟器,幾乎可以模拟任何硬體裝置。通常是模拟一台能夠獨立運作作業系統的虛拟機,混合仿真時虛拟機會以為自己和真實硬體進行資料互動,而該“硬體”實際上卻是QEMU模拟,QEMU 将這些指令轉譯給真正的硬體。本質上,虛拟出的每個虛拟機對應宿主系統(Host)上的一個QEMU程序,而虛拟機的執行線程(如 CPU 線程、I/O 線程等)對應QEMU程序的一個線程。

國産硬體仿真系統混合驗證平台,深度解讀!

圖1 QEMU架構圖

2. SystemC

SystemC是一個支援系統模組化的開源的C++ library。混合仿真驗證前,通常優先開發抽象SystemC模型(如TLM模型),然後将此模型轉化為RTL并基于此模型上開發軟體。在此過程中,軟硬體的諸多錯誤能盡早被發現,進而節省開發時間。

使用QEMU和SystemC可以共同組成虛拟驗證平台,實作SoC系統級模組化。

國産硬體仿真系統混合驗證平台,深度解讀!

圖2 SystemC Simulation

3. 基于QEMU的混合仿真驗證

混合驗證是一種方法,它在使用硬體仿真進行DUT仿真的同時,利用虛拟原型建立目标SoC環境,并進行相應軟硬體的協同開發調試。混合仿真是IC設計團隊在早期架構優化、軟硬體協同開發、RTL級仿真驗證中的重要工具。

基于QEMU和硬體仿真系統的混合仿真,是在硬體仿真系統和QEMU上同時運作SoC的不同設計子產品,在SoC整體架構硬體實作之前提供嵌入式軟體和硬體的協同仿真,為系統架構的優化、RTL的早期開發、以及嵌入式軟體開發,提供準确,即時的仿真驗證環境,有力推動産品開發周期左移,進而加速SoC的研發程序。

QEMU運作在Runtime Server上,一般通過SystemC實作TLM(Transaction Level Model)模型,提供虛拟CPU、Linux核心以及使用者态程式。QEMU通過标準SCEMI協定和硬體仿真器通信,硬體仿真器上可運作SOC外設等IP,進而實作完整的混合仿真環境。

國産硬體仿真系統混合驗證平台,深度解讀!

圖3 QEMU混合仿真

三、 混合仿真帶來的好處

混合仿真帶來了諸多好處,主要表現在軟體開發和內建測試的工作可以大幅度提前,顯著地縮短了項目周期。在應用混合驗證之前,軟硬體開發和內建測試往往要等待硬體設計完成後才能開始,這将會導緻項目周期延長。而在使用混合驗證之後,軟硬體開發和內建測試可以在硬體設計階段同時進行,這樣将會顯著地縮短整個項目周期。

國産硬體仿真系統混合驗證平台,深度解讀!

圖4使用混合驗證前

國産硬體仿真系統混合驗證平台,深度解讀!

圖5使用混合驗證後

四、 基于OminArk硬體仿真系統和QEMU的混合仿真

思爾芯自主研發的OmniArk芯神鼎硬體仿真系統,采用超大規模可擴充陣列架構設計,設計容量最大10億門。支援TBA、ICE 、混合仿真等多種仿真驗證模式,可以滿足不同驗證場景需求。

國産硬體仿真系統混合驗證平台,深度解讀!

圖6 OminArk硬體仿真系統

思爾芯提供的混合驗證解決方案,通過連接配接開源虛拟機QEMU工具和OmniArk芯神鼎硬體仿真系統,實作了虛拟原型硬體和嵌入式軟體協同混合驗證,為早期的設計架構的驗證優化、嵌入式軟體的協同開發、RTL級的仿真加速提供更準确、更及時的仿真驗證環境。

以混合仿真一個SoC晶片設計為例。SoC整體系統架構如下圖所示,主要由ARMv8 CPU、AMBA BUS、NVDLA和DRAM等子產品組成。為了實作QEMU虛拟平台與OmniArk芯神鼎硬體仿真系統的混合仿真,我們将NVDLA和DRAM移植到OmniArk芯神鼎硬體仿真系統中進行仿真,同時使用QEMU實作ARMv8的軟體模型。

國産硬體仿真系統混合驗證平台,深度解讀!

圖7 SoC系統框圖

在設計移植到OmniArk芯神鼎硬體仿真系統後,Runtime Server端采用QEMU模拟運作ARMv8,并通過TLM Wrapper将其挂載到AMBA總線上。OmniArk芯神鼎硬體仿真系統仿真運作NVDLA,通過AXI Transactor(簡稱Xtor)、GPIO Transactor挂載到AMBA總線上。Runtime Server和OmniArk芯神鼎硬體仿真系統之間通過SCE-MI協定進行軟硬體協同仿真。

國産硬體仿真系統混合驗證平台,深度解讀!

圖8 QEMU混合仿真系統框圖

  • TLM Wrapper,建立一套基于TLM模型的通信機制,将QEMU包裝成TLM模型,使QEMU模拟的裝置能夠與SystemC開發的子產品進行通信。
  • AMBA Router,以軟體形式模拟AMBA總線,實作了标準的AMBA路由機制和仲裁機制,可将多個TLM模型連接配接并進行資料通信。
  • AXI TLM,是一個基于AXI總線的TLM模型,負責将AXI接口裝置适配到AMBA Router總線上。
  • IRQ TLM,則是中斷TLM模型,負責将裝置的中斷信号經TLM2C發送給QEMU模拟的CPU,由CPU作出響應處理。

五、 總結

目前,許多全流程驗證工作都依賴于硬體仿真來完成。在早期,硬體仿真主要被用于代碼設計的後端階段,主要用于确認代碼功能的正确性。然而,随着設計流程時間需求的加劇,更多的步驟開始被內建到硬體仿真中,包括早期的功耗分析、系統環境建構和邏輯調試等。

同時,硬體仿真系統的專用化趨勢日益顯著。對于那些需要處理大量資料,但算法相對單一的應用領域,例如加密算法和WIFI應用等,他們對仿真的需求正在逐漸增大。在晶片設計過程中,根據設計的複雜性和特性,可能需要采用不同的仿真驗證模式。在晶片設計中,我們可能需要不同的仿真驗證模式以适應不同的設計複雜性和特性。是以,專用的硬體仿真技術提供了強大的支援,使硬體仿真具有更高的靈活性和适應性,滿足各種不同場景和需求的驗證任務。

思爾芯自主研發的OmniArk芯神鼎硬體仿真系統,正是這種具有更高靈活性和适應性的硬體仿真系統,目前已在多個晶片設計企業成功使用。産品除了支援TBA、ICE 、混合仿真等多種仿真驗證模式外,還支援使用者設計的快速導入和全自動快速編譯、可以支援高速的仿真運作速度,同時具備強大的調試能力和對海量的資料處理能力,可以快速尋找和修複源代碼中潛在的深度錯誤和性能瓶頸。利用這個平台,使用者可以更高效地進行晶片設計和優化,極大地提高了晶片設計的品質和效率。