李婷 黃蘇芳 梁浩 陳龍
[摘? ? 要]單核系統(tǒng)在同一個時間只能做一個任務(wù),傳統(tǒng)的單核系統(tǒng)已無法滿足高性能的要求,雙核系統(tǒng)甚至多核系統(tǒng)的架構(gòu)也逐漸發(fā)展起來。為了降低產(chǎn)品風(fēng)險,芯片在流片之前都需要對其所有功能進(jìn)行驗證和評估,驗證是整個設(shè)計過程中非常重要的一個環(huán)節(jié)。隨著嵌入式產(chǎn)品的發(fā)展,芯片越來越復(fù)雜,這導(dǎo)致FPGA驗證平臺越來越復(fù)雜。FPGA接近真實的芯片環(huán)境,速度快,實現(xiàn)方便,系統(tǒng)驗證時通過軟硬件同步工作能盡早發(fā)現(xiàn)設(shè)計上的問題。與軟件仿真相比,F(xiàn)PGA不僅可以讓設(shè)計運(yùn)行在較高的頻率上,還能運(yùn)行復(fù)雜的系統(tǒng)程序,適合做長時間的系統(tǒng)驗證和穩(wěn)定性測試。本文提出了基于CORTEX-M4和CORTEX-M0雙核異構(gòu)的FPGA系統(tǒng)的驗證方法,用于流片前對芯片進(jìn)行系統(tǒng)功能驗證和性能評估。本文重點(diǎn)提出通過SPI驗證系統(tǒng)功能。經(jīng)過該平臺驗證的目標(biāo)芯片,流片回來的芯片所有的功能和性能都符合設(shè)計需求,可以進(jìn)行量產(chǎn)。
[關(guān)鍵詞]FPGA驗證;雙核驗證;SPI驗證
[中圖分類號]TP391.41;TN791 [文獻(xiàn)標(biāo)志碼]A [文章編號]2095–6487(2020)10–00–03
Design and Implementation of System Verification Based on
Heterogeneous Dual Core FPGA
Li Ting,Huang Su-fang,Liang Hao,Chen Long
[Abstract]A single core system can only do one task at a time. The traditional single core system can not meet the requirements of high performance. The architecture of dual core system and even multi-core system is gradually developed. In order to reduce the product risk, all functions of the chip need to be verified and evaluated before it is produced. Verification is a very important link in the whole design process. With the development of embedded products, the chip becomes more and more complex, which leads to the FPGA verification platform becoming more and more complex. FPGA is close to the real chip environment, which is fast and easy to implement. When the system is verified, the problems in design can be found as soon as possible through the synchronous work of software and hardware. Compared with software simulation, FPGA can not only make the design run at a higher frequency, but also run complex system programs, which is suitable for long-term system verification and stability test. In this paper, a verification method based on cortex-m4 and Cortex-M0 dual core heterogeneous FPGA system is proposed, which is used to verify the system function and evaluate the performance of the chip before it is taped. This paper focuses on the verification of system functions through SPI. All functions and performances of the target chip verified by the platform meet the design requirements and can be mass produced.
[Keywords]FPGA verification; dual core verification; SPI verification
1 FPGA結(jié)構(gòu)
1.1 目標(biāo)芯片結(jié)構(gòu)
目標(biāo)芯片集成了Cortex-M4和Cortex-M0雙核,系統(tǒng)頻率最高是300MHz。Cortex-M4核通過AHB2APB訪問外設(shè),主要外設(shè)包括調(diào)試單元(DBG)、2M SPI FLASH、2塊256KB的DRAM、64KB PROM、2MB SDRAM、GPIO、UART、I2C、SSP、WDT、PWMTMR、DMA、CRC、GMAC和SPI_PROBE。調(diào)試單元支持外部調(diào)試器通過JTAG接口訪問內(nèi)核和外設(shè)。Cortex-M0核通過AHB2APB訪問外設(shè),主要外設(shè)包括2塊32KB的DRAM、128KB的PRAM、CRC、DMA、UART、PWMTMR和GPIO。目標(biāo)芯片基本結(jié)構(gòu)如圖1所示:
1.2 FPGA驗證結(jié)構(gòu)
載板選擇的FPGA是XC2V1000,載板上面主要電路是:電源、晶振、調(diào)試接口、FPGA芯片,上面掛載了2片F(xiàn)LASH芯片。仿真器使用通用仿真器JLINK,通過JTAG跟目標(biāo)芯片連接,實現(xiàn)下載程序和調(diào)試。系統(tǒng)時鐘來源于25MHz的晶振,通過芯片內(nèi)部時鐘電路倍頻到最高300MHz。如圖2所示。
2 目前驗證技術(shù)現(xiàn)狀
通常在高性能芯片處理器驗證過程中,軟件模擬驗證、硬件加速仿真驗證和FPGA驗證是最常見的方法。
2.1 軟件仿真
使用EDA工具驗證設(shè)計,外部施加激勵,通過查看判斷結(jié)果是否符合預(yù)期,從而判讀設(shè)計是否合理。這個方法更適用于單功能驗證,仿真靈活、簡單,模擬精準(zhǔn),是當(dāng)今高性能芯片驗證中最常用的一種方法。缺點(diǎn)是隨著芯片規(guī)模的提升,系統(tǒng)級驗證速度慢,時間長,系統(tǒng)驗證不方便,只適用于前期單IP功能驗證。如果IP功能不繼承之前的IP或者不是通用的IP功能,需要重新搭建驗證環(huán)境,搭建環(huán)境時間較長,比如搭建UART驗證環(huán)境,最少需要2周的時間,整個項目無法保證驗證周期內(nèi)完成驗證。
2.2 硬件加速
硬件加速相對于軟件仿真,速度有所提升,但是價格昂貴,使用不方便。
2.3 FPGA驗證
該驗證接近真實的芯片環(huán)境,可以直接用于測試系統(tǒng)和應(yīng)用程序開發(fā),驗證功能和系統(tǒng)的正確性。軟件開發(fā)在真實的硬件上執(zhí)行,實現(xiàn)軟件和硬件協(xié)同工作。
FPGA驗證和軟件仿真相比,運(yùn)行速度快,軟件仿真在較為理想的情況下速度才可以達(dá)到KHz水平,而FPGA驗證可以達(dá)到幾百M(fèi)Hz。搭建軟件仿真前期時間長,搭建FPGA環(huán)境時間短,速度快。硬件加速有較好的仿真速度,但是硬件仿真價格昂貴,并且使用不方便,在很多場合不能達(dá)到需要的性能。所以綜合考慮,目標(biāo)芯片選擇FPGA驗證。如圖3所示。
2.4 FPGA驗證面臨的挑戰(zhàn)
FPGA驗證的流程是設(shè)計人員把設(shè)計生成mcs或者bit文件,驗證人員把這個流文件燒入FPGA,通過IDE環(huán)境編程生成驗證程序,然后通過燒寫器燒入到目標(biāo)芯片中。FPGA驗證無法脫離燒寫器和IDE環(huán)境,而搭建IDE環(huán)境需要一定時間,而且現(xiàn)在很多IDE環(huán)境需要付費(fèi),開源的IDE環(huán)境使用時不方便,且可能碰到很多問題,開源的IDE環(huán)境對最新的內(nèi)核支持不如付費(fèi)的好用,因此在驗證初期降低效率。SPI_PROBE可以解決這個問題,可以直接把bin文件寫入到RAM中,這樣程序在RAM中運(yùn)行,可以用于初期驗證系統(tǒng)功能,也可以驗證單個IP功能。Bin文件可以通過很多IDE環(huán)境生成,因為只需要編譯,不用考慮下載。由于目標(biāo)芯片的JTAG一次只能連接一個內(nèi)核,切換另外一個內(nèi)核時需要外部boot管腳重新選擇,并且需要硬件復(fù)位之后切換才生效,SPI_PROBE能解決這個問題,SPI_PROBE可以直接訪問總線,并且可以halt住內(nèi)核,也可以讓內(nèi)核重新跑起來。在系統(tǒng)驗證時,目標(biāo)芯片在normal模式時,JTAG無法連接目標(biāo)芯片,SPI_PROBE可以連接目標(biāo)芯片,當(dāng)系統(tǒng)驗證不通過時,可以通過SPI_PROBE排查和查找原因。
3 驗證方案
驗證平臺采用底板加載板架構(gòu),載板是FPGA,底板是采用STM32F429。底板的通用接口和載板連接,比如底板的UART和載板的UART接口連接、底板的SPI和載板的SPI接口連接,這樣可以通過底板驗證載板的通信接口功能。載板的調(diào)試接口連接到通用調(diào)試器,這樣可以直接調(diào)試目標(biāo)芯片。FPGA接近真實的芯片環(huán)境,這樣驗證人員可以使用C或者C++語言,在通用的IDE(IAR或MDK)開發(fā)環(huán)境下進(jìn)行功能和系統(tǒng)的驗證。作者使用的IDE環(huán)境是MDK-5.31。本文重點(diǎn)講述在SPI協(xié)議的基礎(chǔ)上,定義約定的協(xié)議,讓目標(biāo)芯片通過SPI_PROBE和PC機(jī)通信,PC機(jī)可以通過SPI接口訪問目標(biāo)芯片。
3.1 SPI_PROBE
SPI_PROBE是目標(biāo)芯片特殊的一種功能,可以通過SPI訪問AHB總線,達(dá)到訪問總線上面的寄存器或者內(nèi)存;SPI協(xié)議是4線SPI協(xié)議,目標(biāo)芯片作為從機(jī),PC機(jī)作為主機(jī)。如圖4所示。
3.2 SPI_PROBE協(xié)議
根據(jù)目標(biāo)芯片規(guī)定的協(xié)議,外部PC機(jī)通過SPI接口跟目標(biāo)芯片連接,這樣可以直接通過AHB總線訪問memory和AHB總線上的寄存器以及部分內(nèi)核寄存器;這個功能可以在驗證初期,軟件環(huán)境還未搭建時快速驗證功能。還能解決在JTAG連接不上芯片時,可以通過這個功能訪問芯片的寄存器和內(nèi)存,這個功能在驗證時期非常適用,不僅可以節(jié)省搭建環(huán)境的時間,還可以在JTAG連接不上時訪問芯片。SPI_PROBE有個非常重要的功能,PC機(jī)通過SPI_PROBE傳輸bin文件給目標(biāo)芯片的RAM。這個功能可以讓RAM運(yùn)行指定的程序。驗證初期環(huán)境未搭建時,節(jié)省驗證時間,快速驗證部分功能,提早發(fā)現(xiàn)問題,讓設(shè)計人員解決。
SPI_PROBE功能如下:
字節(jié)、半字、字讀寫指定RAM;
把Bin文件傳輸給RAM,從RAM拷貝Bin文件給PC機(jī);
Halt M4/M0內(nèi)核,讓M4/M0內(nèi)核跑起來;
讀寫總線上面的寄存器。
3.3 字節(jié)、半字、字讀寫命令
這個命令用于讀寫RAM和總線上面的寄存器。
SPI_PROBE命令如表1所示:
命令協(xié)議如表2所示:
讀命令,數(shù)據(jù)不用發(fā)送給目標(biāo)芯片,發(fā)送命令和地址之后,目標(biāo)芯片會應(yīng)答數(shù)據(jù)。
寫命令,發(fā)送完命令和地址之后,再發(fā)送數(shù)據(jù)。
4 驗證結(jié)果
使用SPI_PROBE,在驗證初期,把程序燒入M4上面的PRAM運(yùn)行程序,程序運(yùn)行如預(yù)期執(zhí)行,現(xiàn)象也如預(yù)期一樣。把驗證DRAM和SDRAM程序燒入PRAM,驗證結(jié)果都是正確的。驗證DRAM和SDRAM字讀寫,通過字寫0x55AA55AA到DRAM和SDRAM,寫完之后讀出數(shù)據(jù)跟0x55AA55AA比對,比對一致認(rèn)為驗證DRAM和SDRAM字讀寫功能正確,字讀寫功能驗證通過。生成驗證DRAM和SDRAM的bin文件使用了0.5h,測試時間5min得到結(jié)果。如果需要搭建燒寫環(huán)境,比如搭建MDK燒寫環(huán)境,需要1天的時間。使用SPI_PROBE節(jié)約了1d的時間,也可以更早發(fā)現(xiàn)DRAM和SDRAM問題,設(shè)計人員可以更快解決發(fā)現(xiàn)的問題。
參考文獻(xiàn)
[1] 陸兆春. 基于FPGA的YAK SOC原型驗證平臺設(shè)計與實現(xiàn)[D]. 北京:北京工業(yè)大學(xué),2010.
[2] 朱英,陳誠,許曉紅,等.一款多核處理器FPGA驗證平臺的設(shè)計與實現(xiàn)[J].計算機(jī)研究與發(fā)展,2014(6):139-147.
[3]Taylor S,Quinn M,Brown D,et a1.Functional verification of a multiple—issue,out—of—order,superscalar Alpha processor—the DEC Alpha 21264 microprocessor EC]/Proc of the 35th Design Automation Conf.New York:ACM,1998:638-643.