李婷 黃蘇芳 梁浩 陳龍



[摘? ? 要]單核系統在同一個時間只能做一個任務,傳統的單核系統已無法滿足高性能的要求,雙核系統甚至多核系統的架構也逐漸發展起來。為了降低產品風險,芯片在流片之前都需要對其所有功能進行驗證和評估,驗證是整個設計過程中非常重要的一個環節。隨著嵌入式產品的發展,芯片越來越復雜,這導致FPGA驗證平臺越來越復雜。FPGA接近真實的芯片環境,速度快,實現方便,系統驗證時通過軟硬件同步工作能盡早發現設計上的問題。與軟件仿真相比,FPGA不僅可以讓設計運行在較高的頻率上,還能運行復雜的系統程序,適合做長時間的系統驗證和穩定性測試。本文提出了基于CORTEX-M4和CORTEX-M0雙核異構的FPGA系統的驗證方法,用于流片前對芯片進行系統功能驗證和性能評估。本文重點提出通過SPI驗證系統功能。經過該平臺驗證的目標芯片,流片回來的芯片所有的功能和性能都符合設計需求,可以進行量產。
[關鍵詞]FPGA驗證;雙核驗證;SPI驗證
[中圖分類號]TP391.41;TN791 [文獻標志碼]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結構
1.1 目標芯片結構
目標芯片集成了Cortex-M4和Cortex-M0雙核,系統頻率最高是300MHz。Cortex-M4核通過AHB2APB訪問外設,主要外設包括調試單元(DBG)、2M SPI FLASH、2塊256KB的DRAM、64KB PROM、2MB SDRAM、GPIO、UART、I2C、SSP、WDT、PWMTMR、DMA、CRC、GMAC和SPI_PROBE。調試單元支持外部調試器通過JTAG接口訪問內核和外設。Cortex-M0核通過AHB2APB訪問外設,主要外設包括2塊32KB的DRAM、128KB的PRAM、CRC、DMA、UART、PWMTMR和GPIO。目標芯片基本結構如圖1所示:
1.2 FPGA驗證結構
載板選擇的FPGA是XC2V1000,載板上面主要電路是:電源、晶振、調試接口、FPGA芯片,上面掛載了2片FLASH芯片。仿真器使用通用仿真器JLINK,通過JTAG跟目標芯片連接,實現下載程序和調試。系統時鐘來源于25MHz的晶振,通過芯片內部時鐘電路倍頻到最高300MHz。如圖2所示。
2 目前驗證技術現狀
通常在高性能芯片處理器驗證過程中,軟件模擬驗證、硬件加速仿真驗證和FPGA驗證是最常見的方法。
2.1 軟件仿真
使用EDA工具驗證設計,外部施加激勵,通過查看判斷結果是否符合預期,從而判讀設計是否合理。這個方法更適用于單功能驗證,仿真靈活、簡單,模擬精準,是當今高性能芯片驗證中最常用的一種方法。缺點是隨著芯片規模的提升,系統級驗證速度慢,時間長,系統驗證不方便,只適用于前期單IP功能驗證。如果IP功能不繼承之前的IP或者不是通用的IP功能,需要重新搭建驗證環境,搭建環境時間較長,比如搭建UART驗證環境,最少需要2周的時間,整個項目無法保證驗證周期內完成驗證。
2.2 硬件加速
硬件加速相對于軟件仿真,速度有所提升,但是價格昂貴,使用不方便。
2.3 FPGA驗證
該驗證接近真實的芯片環境,可以直接用于測試系統和應用程序開發,驗證功能和系統的正確性。軟件開發在真實的硬件上執行,實現軟件和硬件協同工作。
FPGA驗證和軟件仿真相比,運行速度快,軟件仿真在較為理想的情況下速度才可以達到KHz水平,而FPGA驗證可以達到幾百MHz。搭建軟件仿真前期時間長,搭建FPGA環境時間短,速度快。硬件加速有較好的仿真速度,但是硬件仿真價格昂貴,并且使用不方便,在很多場合不能達到需要的性能。所以綜合考慮,目標芯片選擇FPGA驗證。如圖3所示。
2.4 FPGA驗證面臨的挑戰
FPGA驗證的流程是設計人員把設計生成mcs或者bit文件,驗證人員把這個流文件燒入FPGA,通過IDE環境編程生成驗證程序,然后通過燒寫器燒入到目標芯片中。FPGA驗證無法脫離燒寫器和IDE環境,而搭建IDE環境需要一定時間,而且現在很多IDE環境需要付費,開源的IDE環境使用時不方便,且可能碰到很多問題,開源的IDE環境對最新的內核支持不如付費的好用,因此在驗證初期降低效率。SPI_PROBE可以解決這個問題,可以直接把bin文件寫入到RAM中,這樣程序在RAM中運行,可以用于初期驗證系統功能,也可以驗證單個IP功能。Bin文件可以通過很多IDE環境生成,因為只需要編譯,不用考慮下載。由于目標芯片的JTAG一次只能連接一個內核,切換另外一個內核時需要外部boot管腳重新選擇,并且需要硬件復位之后切換才生效,SPI_PROBE能解決這個問題,SPI_PROBE可以直接訪問總線,并且可以halt住內核,也可以讓內核重新跑起來。在系統驗證時,目標芯片在normal模式時,JTAG無法連接目標芯片,SPI_PROBE可以連接目標芯片,當系統驗證不通過時,可以通過SPI_PROBE排查和查找原因。
3 驗證方案
驗證平臺采用底板加載板架構,載板是FPGA,底板是采用STM32F429。底板的通用接口和載板連接,比如底板的UART和載板的UART接口連接、底板的SPI和載板的SPI接口連接,這樣可以通過底板驗證載板的通信接口功能。載板的調試接口連接到通用調試器,這樣可以直接調試目標芯片。FPGA接近真實的芯片環境,這樣驗證人員可以使用C或者C++語言,在通用的IDE(IAR或MDK)開發環境下進行功能和系統的驗證。作者使用的IDE環境是MDK-5.31。本文重點講述在SPI協議的基礎上,定義約定的協議,讓目標芯片通過SPI_PROBE和PC機通信,PC機可以通過SPI接口訪問目標芯片。
3.1 SPI_PROBE
SPI_PROBE是目標芯片特殊的一種功能,可以通過SPI訪問AHB總線,達到訪問總線上面的寄存器或者內存;SPI協議是4線SPI協議,目標芯片作為從機,PC機作為主機。如圖4所示。
3.2 SPI_PROBE協議
根據目標芯片規定的協議,外部PC機通過SPI接口跟目標芯片連接,這樣可以直接通過AHB總線訪問memory和AHB總線上的寄存器以及部分內核寄存器;這個功能可以在驗證初期,軟件環境還未搭建時快速驗證功能。還能解決在JTAG連接不上芯片時,可以通過這個功能訪問芯片的寄存器和內存,這個功能在驗證時期非常適用,不僅可以節省搭建環境的時間,還可以在JTAG連接不上時訪問芯片。SPI_PROBE有個非常重要的功能,PC機通過SPI_PROBE傳輸bin文件給目標芯片的RAM。這個功能可以讓RAM運行指定的程序。驗證初期環境未搭建時,節省驗證時間,快速驗證部分功能,提早發現問題,讓設計人員解決。
SPI_PROBE功能如下:
字節、半字、字讀寫指定RAM;
把Bin文件傳輸給RAM,從RAM拷貝Bin文件給PC機;
Halt M4/M0內核,讓M4/M0內核跑起來;
讀寫總線上面的寄存器。
3.3 字節、半字、字讀寫命令
這個命令用于讀寫RAM和總線上面的寄存器。
SPI_PROBE命令如表1所示:
命令協議如表2所示:
讀命令,數據不用發送給目標芯片,發送命令和地址之后,目標芯片會應答數據。
寫命令,發送完命令和地址之后,再發送數據。
4 驗證結果
使用SPI_PROBE,在驗證初期,把程序燒入M4上面的PRAM運行程序,程序運行如預期執行,現象也如預期一樣。把驗證DRAM和SDRAM程序燒入PRAM,驗證結果都是正確的。驗證DRAM和SDRAM字讀寫,通過字寫0x55AA55AA到DRAM和SDRAM,寫完之后讀出數據跟0x55AA55AA比對,比對一致認為驗證DRAM和SDRAM字讀寫功能正確,字讀寫功能驗證通過。生成驗證DRAM和SDRAM的bin文件使用了0.5h,測試時間5min得到結果。如果需要搭建燒寫環境,比如搭建MDK燒寫環境,需要1天的時間。使用SPI_PROBE節約了1d的時間,也可以更早發現DRAM和SDRAM問題,設計人員可以更快解決發現的問題。
參考文獻
[1] 陸兆春. 基于FPGA的YAK SOC原型驗證平臺設計與實現[D]. 北京:北京工業大學,2010.
[2] 朱英,陳誠,許曉紅,等.一款多核處理器FPGA驗證平臺的設計與實現[J].計算機研究與發展,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.