?

基于SoC FPGA的MIPS處理器驗證平臺設計

2017-03-15 17:11張偉梁蓓
電子技術與軟件工程 2017年2期
關鍵詞:驗證

張偉+梁蓓

摘 要 隨著集成電路制程工藝的迅猛發展,數字集成電路復雜度越來越高,這對集成電路的驗證帶來了嚴峻挑戰。相比軟件仿真,數字芯片采用FPGA進行邏輯驗證,可以大大提高驗證的速度。近年來,SoCFPGA的出現對于驗證平臺的設計提供了一種新的啟發。本文提出一種基于SoCFPGA的MIPS處理器驗證平臺的設計。采用ZYNQ芯片中的ARM主處理器實時控制監測MIPS從處理器的運行狀態,來達到驗證MIPS處理器的目的。同時ARM主處理器運行Linux操作系統,在不需要斷電重新配置的情況下,通過執行不同的C程序實現不同功能的驗證,大大提高了MIPS處理器的驗證效率。

【關鍵詞】驗證 SoCFPGA MIPS ARM

1 引言

隨著集成電路制程工藝水平的不斷提高,在現代集成電路設計中,ASIC芯片的復雜程度與集成規模與日俱增,這為ASIC芯片的驗證過程帶來了嚴峻的挑戰。芯片驗證的目的是為了保證電路的邏輯功能與性能滿足設計要求,其貫穿了整個芯片的設計過程。保證一次性流片成功,是芯片驗證的最高目標,如果流片失敗,不但會造成昂貴的流片費用損失,還會造成產品的推遲上市。整個芯片設計周期中,芯片驗證已經占70%以上。這些因素都證明了芯片驗證的極其重要性,實現高效且低成本的驗證顯得尤為重要。目前大多數模塊的邏輯仿真主要采用加入工藝庫的軟件仿真,而系統級的芯片邏輯驗證由于電路規模較大,軟件仿真的速度與覆蓋率已經不能滿足設計周期要求。FPGA(Field-Programmable Gate Array),在ASIC芯片邏輯驗證過程中是一種很有效的補充。由于FPGA的可重配置性,降低了流片失敗可能帶來的損失,加快了驗證速度。

近年來,Xilinx推出了新一代嵌入ARM硬核的SoC FPGA—ZYNQ系列,相比傳統FPGA中使用軟核通用處理器性能提高很多,且不占用FPGA有限的邏輯資源和布局布線資源。本文利用ZYNQ芯片中嵌入ARM硬核的優勢,提出了一種基于SoC FPGA的驗證平臺,通過使用ARM處理器做為主處理器,MIPS處理器作為從處理器,從而來對MIPS處理器設計過程進行驗證。

2 ZYNQ簡介

ZYNQ-7000是Xilinx推出的新一代全可編程片上系統(All Programmable SoC),其中我們采用的ZC706開發套件的ZYNQ芯片包含一顆可配置的雙核ARM Cortex A9處理器(Processing System,PS部分),和基于28nm工藝的Xilinx FPGA(Programmable Logic,PL部分),我們將其稱為SoC FPGA。其中PS部分可以用于通用型流水線計算,由于其已經集成在芯片上,不需要占用FPGA的邏輯資源和布局布線資源,而且性能很高。PL部分可以用于實現某些特殊算法的硬件加速與硬件擴展,PL部分可以實現并行計算,能夠比通用處理器快6-8個數量級以上,而且PL部分的可重構性,能夠靈活實現各種特殊算法的硬件加速。PS部分與PL部分通過芯片內AMBA總線實現連接,帶寬很高,滿足了某些苛刻環境下的帶寬要求。

3 MIPS處理器驗證平臺設計

本文提出一種基于SoC FPGA(Xilinx ZYNQ)的MIPS處理器驗證平臺的設計。將PS部分的ARM處理器作為主處理器,MIPS處理器在PL部分實現,其中ARM處理器上移植Linux操作系統,配置交叉編譯環境,在運行過程中ARM處理器實時監控MIPS處理器的工作狀態,以此達到驗證MIPS處理器功能的目的。

3.1 基于SoC FPGA的原型系統驗證架構

基于SoC FPGA的原型系統驗證架構如圖1,整體架構的設計思想如下:

(1)首先上電后MIPS處理器處于復位狀態。ARM主處理器通過AXI-Lite接口,將MIPS處理器運行過程中所需要的指令和初始化數據,從系統內存寫入到Distributed RAM中。

(2)寫入完成后,ARM主處理器通過AXI-Lite接口,寫入MIPS處理器啟動命令,結束MIPS 處理器的復位狀態。MIPS處理器開始從Distributed RAM中讀取指令和數據。

(3)MIPS處理器執行指令過程中,ARM主處理器將輪詢MIPS處理器的結束標志。MIPS處理器完成所有指令執行后,將設置結束標志(Distributed RAM的固定地址)。

(4)ARM處理器將計算結果從Distributed RAM中讀回到系統內存,并打印到串口終端,從而能夠在屏幕上實時監測MIPS處理器運行狀態。

3.2 AXI-Lite總線接口模塊設計

ARM主處理器發出的指令能夠在AXI-Lite Slave接口完成譯碼,根據ARM發出的讀寫請求對Distributed RAM進行操作。要求其能夠支持以下地址空間的尋址:AXI-Lite接口可尋址的范圍為0x00000000 – 0x00003FFF (16KB),其中包括8KB Distributed RAM空間,地址范圍為:0x00000000 – 0x00001FFF,并且在AXI-Lite接口模塊中加入一個1-bit寄存器,來實現啟動MIPS處理器的功能,地址為0x00002000。該寄存器將作為AXI-Lite接口的輸出信號,在正常復位后,該寄存器置為1。當AXI-Lite接口收到對這個寄存器的寫命令時,就將寫入值(32-bit)的第0位取反后寫到這個1-bit寄存器中,來實現對MIPS處理器的復位操作。

AXI-Lite Slave接口可尋址范圍為16KB,所以其地址寬度為14位,與ARM通過AXI總線連接,與Distributed RAM通過5個通道連接,分別是Address、Write_data、Read_data、MemWrite、MemRead。另外一位寄存器mips_reset輸出口與MIPS處理器的復位端相連。Distributed RAM空間大小為8KB,即2^13Byte,單個寄存器為32位(4Byte),需要2^11個寄存器,所以Distributed RAM地址為11位。Distributed RAM采用同步寫入異步讀取。

為了對AXI-Lite Slave模塊與Distributed RAM模塊進行仿真驗證,需要設計一個AXI-Lite Master模塊模擬ARM處理器對其進行收發數據,以對其邏輯功能進行驗證,對這兩個模塊進行仿真的結構如圖2所示。

AXI-Lite Master模塊代替ARM處理器進行收發數據,加入時鐘復位激勵,得到如圖3的仿真結果。

3.3 MIPS處理器頂層設計

mips_cpu_top需要將MIPS處理器模塊、AXI-Lite Slave模塊、Distributed RAM模塊包含進來,另外需要添加一段組合邏輯,實現當MIPS處理器對Distributed RAM進行讀寫操作時,如果此時ARM通過AXI-Lite Slave模塊對Distributed RAM有讀請求,將數據32hFFFF_FFFF返回到ARM讀取的數據,表示ARM讀取的數據錯誤。只有當MIPS處理器停止對Distributed RAM進行讀寫操作時,ARM處理器才能讀取到正確的數據。如圖4是對頂層的仿真結果。

根據仿真波形可以看到,當MIPS處理器對Distributed RAM進行寫操作時,同時ARM主處理器對Distributed RAM進行讀操作,讀到的數據為32hFFFF_FFFF。當MIPS處理器進行讀操作時,ARM主處理器同樣讀到錯誤的數據。只有當MIPS主處理器對Distributed RAM沒有任何操作時,ARM主處理器才會讀取到正確的數據。頂層邏輯功能得到驗證。

4 基于SoC FPGA的MIPS處理器驗證平臺實現

4.1 比特流文件的生成

驗證平臺具體的Block Design如圖5,MIPS處理器頂層包含了AXI接口模塊,Distributed RAM模塊以及MIPS處理器,對外只預留AXI總線結構,系統會自動為工程加入AXI Interconnect模塊與Processer System Reset模塊,經過DRC檢查,添加時鐘約束,Vivado軟件生成可以配置SoC FPGA的比特流文件。

4.2 ARM硬核上運行Linux操作系統

在ARM硬核上運行Linux操作系統需要用到以下幾個文件:

(1)BOOT.bin是引導程序,其組成包含3個文件:fsbl.elf、system.bit、u-boot.elf。主要用于初始化PL(FPGA部分)和PS(ARM部分)及引導內核。fsbl.elf需要在SDK軟件中生成,system.bit為Vivado工程的比特流文件,u-boot.elf需要在Linux系統下編譯生成。使用SDK軟件可以將這3個文件生成BOOT.bin。

(2)uImage是Linux內核文件,需要在Linux操作系統下安裝交叉編譯環境后,編譯生成。

(3)devicetree.dtb是設備樹文件,包含硬件配置信息的數據結構,包括CPU、內存、總線及相關外設,內核啟動時,可以解析這些信息,以此來配置內核及加載相關驅動。

(4)Linaro文件系統。需要在Linux系統下解壓到SD卡的ext3分區。ramdisk文件系統,需要存放于SD卡的fat32分區。

有了以上文件后,我們就可以在ARM硬核上移植Linux操作系統。

4.3 編譯運行C程序

將比特流文件燒寫到SoC FPGA中,啟動操作系統,C程序在Linux操作系統下編譯并且執行,ARM執行該C程序的主要功能是將MIPS處理器所需的指令和數據寫入Distributed RAM中,并啟動MIPS處理器,MIPS處理器將從Distributed RAM中讀取指令及數據,其執行后的結果存放于Distributed RAM中,將由ARM在Distributed RAM中讀回到系統內存中,并在串口調試工具界面中打印輸出。

由圖6打印輸出的結果可以判斷,在SoC FPGA上實現了多周期MIPS處理器的驗證,ARM處理器將MIPS處理器執行冒泡排序結果打印。后期可以編寫不同的C程序,讓MIPS處理器執行其他更加復雜的功能,對MIPS處理器進行更充分的驗證。

5 結語

本文提出了一種基于SoC FPGA的MIPS處理器驗證平臺的設計,對MIPS處理器的驗證提供了硬件仿真,提高了仿真速度。同時采用ARM主處理器實時控制監測MIPS從處理器的方式,可以更加直觀的監測MIPS處理器的運行狀態,并且ARM主處理器運行Linux操作系統,能夠在不斷電的前提下,通過執行不同的程序,來對MIPS處理器進行驗證,同時在驗證過程中采用C程序,極大的提高了驗證效率。

參考文獻

[1]Qinsheng M,Yang C,Jun Y,et al. Random testing for system-level functional verification of system-on-chip[J].系統工程與電子技術(英文版),2009,20(06):1378-1383.

[2]Murphy P,Frantz J P,Welsh E,et al.VALID:Custom ASIC Verification and FPGA Education Platform[C]// International Conference on Microelectronics Systems Education. IEEE Computer Society,2003:64-65.

[3]Devins R J.Processor-independent system-on-chip verification for embedded processor systems[J].South BurlingtonvtUssouthBurlingtonvtUsessexJunctionvt Us,2003.

[4]Hutton M,Yuan R,Schleicher J,et al.A Methodology for FPGA to Structured-ASIC Synthesis and Verification[C]// Design,Automation and Test in Europe.IEEE,2006:64-69.

[5]Crockett L H.The Zynqbook:embedded processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 all programmable SoC[M].Strathclyde Academic Media,2014.

[6]Wu Y,Song J,Ren K,et al.Research on LogGP Based Parallel Computing Model for CPU/GPU Cluster[J].2017.

作者簡介

張偉(1991-),男,在讀研究生,主要研究方向為繼承電路設計。

梁蓓(1963-),女,貴州大學教授,碩士生導師,主要研究方向為集成電路設計。

作者單位

貴州大學大數據與信息工程學院 貴州省貴陽市 550025

猜你喜歡
驗證
汽車外后視鏡抖動問題模型的試驗驗證
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合