基于Altera FPGA的軟硬件協(xié)同仿真
關(guān)鍵詞:系統(tǒng)級芯片設(shè)計;軟硬件協(xié)同仿真;FPGA;
中圖分類號:TN407 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-353X(2003)05-0052-02
隨著大規(guī)模集成電路工藝技術(shù)的發(fā)展,集成電路設(shè)計逐漸進(jìn)入了系統(tǒng)級芯片(SoC)設(shè)計的時代。SoC芯片往往會集成數(shù)百萬門,而且電路結(jié)構(gòu)還包括MPU、SRAM、DRAM、EPROM、ADC、DAC以及其它模擬和射頻電路。由于SoC芯片通常包含有一個或數(shù)個微處理器,軟件成為SoC芯片不可或缺的一個重要組成部分。在SoC芯片上,軟件和硬件是緊密耦合在一起的。軟件和硬件任何一部分設(shè)計有缺陷,或者兩者協(xié)調(diào)有問題,都將導(dǎo)致整個芯片設(shè)計的失敗。為了能及早發(fā)現(xiàn)問題,軟硬件協(xié)同仿真成為SoC芯片產(chǎn)品仿真策略中一個非常重要的部分。本文首先簡單介紹軟硬件協(xié)同仿真技術(shù),然后介紹基于Altera FGPA的軟硬件協(xié)同仿真的方法和策略,同時給出門級協(xié)同仿真的實例。
2 軟硬件協(xié)同仿真簡介
軟硬件協(xié)同仿真(software/hardware co-simulation)的基本定義是在模擬的硬件上運(yùn)行軟件。軟硬件協(xié)同仿真的目的是為了能在芯片設(shè)計交付生產(chǎn)前盡早地驗證盡可能多的軟硬件功能。對于一個小系統(tǒng),軟硬件協(xié)同仿真可以驗證芯片的大部分軟件功能,而對于一個較大的系統(tǒng),軟硬件協(xié)同仿真可能只能驗證芯片軟件的某些關(guān)鍵部分的功能。
軟硬件協(xié)同仿真系統(tǒng)主要由仿真平臺、硬件設(shè)計和軟件設(shè)計三個部分組成。如果仿真引擎完全由運(yùn)行在工作站或PC機(jī)上的軟件構(gòu)成,這樣的仿真稱為純軟件模擬。還有些仿真平臺的仿真引擎使用專用協(xié)處理器來輔助運(yùn)行,這樣的仿真稱為混合模擬。另有些仿真平臺的仿真引擎主要由專門的硬件仿真器構(gòu)成。硬件仿真器仿真速度通??梢赃_(dá)到實際運(yùn)行速度的10%,仿真速度要比混合模擬高2~3個數(shù)量級,但是硬件仿真器的價格也要比混合模擬平臺高2~3個數(shù)量級,甚至更多。純軟件模擬雖然仿真速度最慢,但是其靈活性最好,而且價格也是最低的。
根據(jù)采用的不同仿真算法,仿真引擎可以分成事件驅(qū)動模擬器(event driven simulator)、周期基準(zhǔn)模擬器(cycle-based simulator)和數(shù)據(jù)流模擬器(data flow simulator)三類。事件驅(qū)動模擬器會計算時鐘周期內(nèi)每個信號值的變化,而周期基準(zhǔn)模擬器為了加快仿真速度只在時鐘邊沿計算信號值。數(shù)據(jù)流模擬器則進(jìn)一步簡化了仿真模型,信號由一組沒有明顯時間標(biāo)記的數(shù)據(jù)序列來表示。在數(shù)據(jù)流模擬中,整個軟硬件系統(tǒng)由通過信號連接的各個功能塊組成,功能塊的執(zhí)行次序由模擬器的調(diào)度程序決定。數(shù)據(jù)流模擬是高層次的仿真,通常在芯片的系統(tǒng)設(shè)計階段采用,主要用于驗證算法的正確性。
根據(jù)芯片設(shè)計的不同階段,軟硬件協(xié)同仿真可以分為系統(tǒng)級協(xié)同仿真、行為級協(xié)同仿真、RTL級協(xié)同仿真和門級協(xié)同仿真。系統(tǒng)級協(xié)同仿真主要用于驗證算法的正確性和評估系統(tǒng)的整體性能。系統(tǒng)級協(xié)同仿真為了提高仿真速度往往側(cè)重于對總線操作進(jìn)行模擬,如CoCentric System Studio的業(yè)務(wù)級建模(Transaction Level Modeling)仿真。行為級仿真和RTL級仿真的區(qū)別主要在于硬件設(shè)計是否可綜合。在RTL級仿真中,測試平臺中往往也包含一些行為級的模型,如為了模擬操作系統(tǒng)的載入過程,測試平臺中必須包含片外Flash ROM的行為模型。門級協(xié)同仿真可以完整的模擬軟硬件實際運(yùn)行的過程,但是仿真速度會隨設(shè)計規(guī)模的增大而急劇下降。
典型的軟硬件協(xié)同仿真通常是直接在模擬的硬件上運(yùn)行軟件,即微處理器通常與別的硬件是在同一個層次上被模擬的。但是事實上大部分設(shè)計中的微處理器都是采用成熟的IP,或微處理器已經(jīng)單獨(dú)驗證過而沒有必要在RTL級或門級對微處理器進(jìn)行仿真。而且對于軟件工程師來說,他們更習(xí)慣于在指令集模擬器上調(diào)試軟件而不是在硬件仿真器上觀察信號的波形。因此,在協(xié)同仿真中有些成熟的模塊如微處理器,往往采用行為級的模型。在仿真時,該模型通過仿真引擎的專用進(jìn)程間通信接口與指令集模擬器(ISS)通信,軟件代碼在指令集模擬器中的執(zhí)行結(jié)果會直接反映到仿真引擎中模擬硬件上。由于采用了進(jìn)程間通信接口,協(xié)同仿真引擎和指令集模擬器可以分布在通過網(wǎng)絡(luò)連接的不同計算機(jī)上。這種協(xié)同仿真的方法稱為異階協(xié)同仿真(Heterogeneous Co-simulation)。
FPGA的規(guī)模越來越大,如Altera的APEX20KE 系列最高可以有50多萬個邏輯單元,典型門數(shù)達(dá)到150萬門,一塊FPGA芯片已經(jīng)足以容納下包括32 位微處理器、相當(dāng)數(shù)量的存儲器和大量用戶專用邏輯的數(shù)字系統(tǒng)。雖然FPGA具有快速重新配置的能力,軟件可以直接在FPGA硬件上調(diào)試,但是為了縮短開發(fā)周期,有必要對基于FPGA的系統(tǒng)芯片設(shè)計進(jìn)行軟硬件協(xié)同仿真。協(xié)同仿真可以發(fā)現(xiàn)許多直接調(diào)試無法觀察到的問題,如系統(tǒng)總線上的讀寫時序等,因此軟硬件協(xié)同仿真對基于FPGA的系統(tǒng)芯片設(shè)計也是非常重要的。下文通過基于Altera EP20K200E的Bluetooth基帶處理器仿真實例,介紹基于Altera FPGA的門級軟硬件協(xié)同仿真技術(shù)。由于Altera FGPA的基本元器件并不是邏輯門,而是邏輯單元(LE)和嵌入式系統(tǒng)塊(ESB),所以更確切地說是基本單元級軟硬件協(xié)同仿真。
該Bluetooth基帶處理器如下圖所示。
協(xié)同仿真的流程如下圖所示。
門級軟硬件協(xié)同仿真是最基本的協(xié)同仿真。有時設(shè)計中可能用到了第三方的軟核,由于這些軟核往往只是些網(wǎng)表文件而不是源代碼,無法進(jìn)行高層次的協(xié)同仿真。但是只要這些軟核可以被Quartus編譯成功,就能生成對應(yīng)的門級網(wǎng)表和SDF延時文件,就能進(jìn)行門級軟硬件協(xié)同仿真。由于門級軟硬件協(xié)同仿真速度較慢,在編寫調(diào)試軟件時務(wù)必將 printf()等用戶接口代碼去掉,要盡量減少靜態(tài)變量,以縮短初始化代碼長度。如有必要,可以直接把程序運(yùn)行到某一階段的存儲器鏡像作為仿真開始時存儲器的狀態(tài),這樣就可以直接調(diào)試仿真主要的關(guān)鍵代碼,而無需仿真冗長的系統(tǒng)載入過程。存儲器的鏡像可以在指令級模擬器中獲得。
4 結(jié)論
本文介紹的基于Altera FPGA的軟硬件協(xié)同仿真方法簡單實用,而且這些協(xié)同仿真的思想方法也可以借鑒到別的FPGA產(chǎn)品的軟硬件協(xié)同仿真中。
參考文獻(xiàn):
[1].EPROMdatasheethttp://www.dzsc.com/datasheet/EPROM_1128137.html.
來源:零八我的愛0次