楊 津,張 盛,林孝康
(清華大學(xué)深圳研究生院, 廣東 深圳 518055)
目前,動(dòng)態(tài)的模擬仿真仍然是主要的功能驗(yàn)證方法,即首先產(chǎn)生一系列的測試向量,然后將測試向量加載到設(shè)計(jì)上(DUT)通過HDL模擬器得到測試結(jié)果,將這些結(jié)果與參考結(jié)果相比較,以此來驗(yàn)證設(shè)計(jì)的正確性。但是隨著設(shè)計(jì)規(guī)模的急劇增大,使用軟件RTL模擬器進(jìn)行仿真時(shí)仿真速度會變得非常低,在Pentium IV的設(shè)計(jì)驗(yàn)證中Intel公司使用了6 000個(gè)節(jié)點(diǎn)的PC Farm進(jìn)行仿真,而測試的向量不過相當(dāng)于實(shí)際系統(tǒng)運(yùn)行2 min所執(zhí)行的測試向量[1]。
盡管使用FPGA可以獲得快速的運(yùn)行速度,但是使用FPGA進(jìn)行仿真不能提供設(shè)計(jì)信號的百分之百可見.而通常需要邏輯分析儀這樣的設(shè)備進(jìn)行調(diào)試.可觀測信號的時(shí)間窗口范圍也很小,這給調(diào)試帶來了很大的困難。硬件加速器很好的平衡了計(jì)算速度和差錯(cuò)能力,因此在海外IC設(shè)計(jì)公司中被廣泛使用[2]。
本文根據(jù)視頻解碼芯片的需要,結(jié)合硬件加速器的特性,對視頻解碼芯片使用Cadence Xtreme硬件加速器進(jìn)行硬件仿真加速,取得高于40倍的加速效果。
圖1是視頻解碼芯片的功能框圖。芯片具有一條32 bit的總線和一條64 bit的總線。 32 bit的總線連接System CPU、Audio CPU及一些外圍設(shè)備。System CPU負(fù)責(zé)運(yùn)行操作系統(tǒng)和整個(gè)芯片的控制,而Audio CPU負(fù)責(zé)對語音進(jìn)行處理。外圍的設(shè)備則包含了一些接口控制器,如GPIO, UART, IDE等等。
圖1 視頻解碼芯片功能框圖
64 bit的總線連接用于視頻解碼的MPEG2 和H264的IP,以及顯示控制單元等等。兩條總線通過一個(gè)32到64的橋進(jìn)行連接。芯片系統(tǒng)CPU的運(yùn)行速度為200 MHz,設(shè)計(jì)規(guī)模約為350萬門。
芯片詳細(xì)的結(jié)構(gòu)如圖2所示。
圖2 芯片具體結(jié)構(gòu)圖
芯片分為Core_SYS、Core_Vedio和Core_Peri三個(gè)部分。其中, Core_SYS主要是運(yùn)行操作系統(tǒng)的CPU,而Core_Vedio則是包含了MPEG2及H264等用于視頻解碼的IP核,以及顯示控制單元DCU。所有的視頻解碼及顯示控制的數(shù)據(jù)均存入1 G的64 bitDDR2 RAM中。Core_Peri主要包含了音頻CPU及一些外圍接口控制器如Flash_ide, Ethernet等等。
Xtreme硬件加速器通過把IC設(shè)計(jì)進(jìn)行映射,把可綜合的設(shè)計(jì)放入到硬件加速器中進(jìn)行仿真,不可綜合的部分留在軟件中仿真以提高仿真的速度。
硬件加速器的仿真方式主要有三種[3]:
(1)軟件仿真方式;
(2)仿真加速方式;
(3)STB(Synthesizable Testbench)模式;
表1分析了幾種硬件仿真方式的特點(diǎn)和不足。
表1 幾種硬件仿真方式各自的特點(diǎn)和不足
由于視頻解碼芯片尚處于設(shè)計(jì)驗(yàn)證階段,且包含模擬電路,由表中可以看出,視頻解碼芯片適合使用硬件加速的方式進(jìn)行硬件加速。
硬件加速器的使用流程如圖3所示。在Compile階段,硬件仿真器的控制軟件對verilog代碼進(jìn)行語法分析,然后生成文件名為WORK的文件夾,把編譯后的數(shù)據(jù)放入到WORK文件夾中。在完成信號分析和生成FPGA代碼后,把這些數(shù)據(jù)放入文件名為AxisWork的文件夾中。同時(shí),生成可執(zhí)行文件vlg,通過運(yùn)行vlg開始進(jìn)行仿真。
圖3 硬件加速器流程圖
視頻解碼芯片硬件仿真加速主要的難點(diǎn)是如何獲得更快的仿真速度。
硬件加速器的仿真時(shí)間主要由三部分決定:①硬件仿真器部分運(yùn)行速度和需要的時(shí)間th;②軟件仿真器中部分的運(yùn)行速度和需要的時(shí)間ts;③軟件仿真器和硬件仿真器之間信號和數(shù)據(jù)傳遞需要花費(fèi)的時(shí)間tt。
由于硬件仿真器的運(yùn)行速度一般可以達(dá)到幾百,千赫茲, SA方式的運(yùn)行速度主要取決于上面的第②項(xiàng)ts和第③項(xiàng)tt。
顯然, ts和tt不是獨(dú)立的, tt越大,則ts也越大。因此,并不一定是放入硬件加速器中的模塊越多,仿真速度就越快,我們要盡量減少仿真系統(tǒng)中硬件和軟件之間的數(shù)據(jù)交換。在加速過程中,要針對設(shè)計(jì)的特性具體問題具體分析,才能獲得相對此設(shè)計(jì)的比較快的仿真速度。
2.3.1 視頻解碼芯片的軟硬件劃分
在進(jìn)行軟硬件劃分時(shí),需要優(yōu)先考慮的是盡量減少仿真系統(tǒng)中硬件和軟件之間的數(shù)據(jù)交換??紤]到芯片仿真開始時(shí)需要不斷從測試向量文件讀取數(shù)據(jù)到Flash Memory中,將Flash Memory放入硬件加速器將會增加大量的軟硬件之間的通信,降低仿真速度,因此,我們將Flash放入軟件中進(jìn)行仿真,加快仿真速度。圖4是具體的軟硬件劃分示意圖。
圖4 軟硬件劃分示意圖
2.3.2 視頻解碼芯片的編譯準(zhǔn)備
在編譯過程中, Xtreme的編譯器會將本來應(yīng)該放入硬件加速器中但又不可綜合的模塊指定成嵌入式軟件模塊,并將該模塊留在軟件中運(yùn)行。嵌入式模塊的存在會增加軟件仿真器的負(fù)擔(dān),并增加軟件仿真器和硬件仿真器之間的數(shù)據(jù)交換,造成硬件仿真速度的下降。因此,在確定了仿真模式及軟硬件劃分之后,通常要進(jìn)行模型的轉(zhuǎn)換工作。
通過分析Xtreme的編譯報(bào)告,我們發(fā)現(xiàn),設(shè)計(jì)中存在了大量的嵌入式模塊,而進(jìn)一步的細(xì)分,嵌入式模塊主要來自于設(shè)計(jì)中不可綜合的Memory及一些不可綜合的IP。因此,我們需要完成下面的工作。
(1)設(shè)計(jì)內(nèi)部Memory模型的替換
大部分設(shè)計(jì)使用由IC生產(chǎn)商提供的Memory單元模型,而這些模型很多是軟件仿真準(zhǔn)備的,不可綜合。Xtreme提供了Memeory primitive,通過這個(gè)模塊可以模擬ROM的功能。 Xtreme memory primitive可以直接用RCC上板載的存儲空間實(shí)現(xiàn),提高性能。視頻解碼芯片的Core_Peri中使用了較多的Artisan Memory,而這些Memory都是行為級模型,不可綜合,因此,我們需要對設(shè)計(jì)中的Artisan Memory用memory Primitive進(jìn)行改寫。
(2)不可綜合IP的處理
由于DDR2的IP僅為仿真模型,不可綜合,極大的影響了仿真速度,因此需要對這個(gè)IP進(jìn)行處理,由于DDR2功能復(fù)雜,自己改寫將花費(fèi)大量的時(shí)間,且不能保證正確性, 因此, Xtreme可綜合的DDR2代碼由Cadence提供。
(3)Testbench的修改
Teshbench對設(shè)計(jì)結(jié)果進(jìn)行檢測并記錄到文本中,這個(gè)監(jiān)測記錄的task每個(gè)時(shí)鐘周期都會運(yùn)行一次,因此,在軟件和硬件之間存在大量的數(shù)據(jù)交換,將會嚴(yán)重影響仿真速度,所以我們需要考慮對testbench進(jìn)行修改,減少task的調(diào)用次數(shù)。
基于上述考慮,我們?nèi)∠薬p_ba22_monitor和uart_monitor,并對設(shè)計(jì)進(jìn)行修改,增加了觸發(fā)ba22_monitor的信號,改為事件觸發(fā)monitor,極大的加快了仿真速度。但是,這樣的修改會導(dǎo)致監(jiān)測的信號太少,不利于判斷仿真結(jié)果的正確性,同時(shí),不容易對錯(cuò)誤進(jìn)行定位。因此,這個(gè)修改并不適用于設(shè)計(jì)驗(yàn)證階段,但適用于芯片的全功能驗(yàn)證階段。根據(jù)上面的特性,我們在設(shè)計(jì)驗(yàn)證階段,采用有monitor的形式monitor_on,可以方便的進(jìn)行錯(cuò)誤定位和數(shù)據(jù)監(jiān)測,而在芯片全功能階段,我們使用修改后的模式,即monitor_off模式,保證仿真具有較快的速度。
完成上述工作,就可以進(jìn)行編譯,然后將編譯好的數(shù)據(jù)下載到硬件加速器中,進(jìn)行仿真。
硬件仿真系統(tǒng)的加速結(jié)果見表2。在Monitor_on模式下,可獲得約為4倍的加速,而在Monitor_off的模式下,獲得了40倍以上的加速。
表2 硬件仿真系統(tǒng)的加速結(jié)果
本文根據(jù)視頻解碼芯片的需要,結(jié)合硬件加速器的特性,對視頻解碼芯片使用
Cadence Xtreme硬件加速器進(jìn)行硬件仿真加速,取得高于40倍的加速效果。硬件加速器強(qiáng)大的仿真速度和查錯(cuò)能力無疑為大規(guī)模設(shè)計(jì)的功能驗(yàn)證提供了一個(gè)非常好的解決方案,對比于現(xiàn)在廣泛使用的軟件仿真和FPGA的方法,它是具有無可比擬的優(yōu)勢的??梢灶A(yù)見,隨著芯片設(shè)計(jì)規(guī)模的增大,硬件加速器的使用將可能成為大規(guī)模設(shè)計(jì)功能驗(yàn)證的標(biāo)準(zhǔn)流程。
[ 1] Bob Bentley.Validatinga Moden Microprocessor[C] //17th Intemational Conference on Comput-Aided Verification:CAV2005, July, 2005.
[ 2] 林豐成,竺紅衛(wèi),李立.數(shù)字集成電路設(shè)計(jì)與技術(shù)[ M].北京:科學(xué)出版社, 2008.
[ 3] Cadence.Xtreme User Guide[S] .Version 6.3.1, 2006.