摘要: 設(shè)計(jì)了一種基于FPGA的驗(yàn)證平臺(tái)及有效的SoC驗(yàn)證方法,介紹了此FPGA驗(yàn)證軟硬件平臺(tái)及軟硬件協(xié)同驗(yàn)證架構(gòu),討論和分析了利用FPGA軟硬件協(xié)同系統(tǒng)驗(yàn)證SoC系統(tǒng)的過(guò)程和方法。利用此軟硬件協(xié)同驗(yàn)證技術(shù)方法,驗(yàn)證了SoC系統(tǒng)、DSP指令、硬件IP等。實(shí)驗(yàn)證明,此FPGA驗(yàn)證平臺(tái)能夠驗(yàn)證SoC設(shè)計(jì),提高了設(shè)計(jì)效率。
引言
隨著集成電路技術(shù)的發(fā)展以及EDA 設(shè)計(jì)水平的迅速提高, 基于IP(Intellectual Property) 進(jìn)行SoC(System on Chip)芯片設(shè)計(jì)的能力和技術(shù)得到了大大的提高。在一些應(yīng)用中,需要處理的數(shù)據(jù)量不斷增大,并且處理時(shí)間也要縮短,數(shù)據(jù)運(yùn)算更加復(fù)雜,內(nèi)嵌DSP核處理器的SoC技術(shù)能夠縮短處理時(shí)間并能進(jìn)行大數(shù)據(jù)量的處理,提高可靠性,縮小體積,降低功耗。因此本文研究一種基于DSP的SoC芯片的FPGA驗(yàn)證方法,并將整個(gè)系統(tǒng)包括DSP處理器、片上總線(xiàn)、ASIC、內(nèi)存模塊、I/O 外圍設(shè)備及其他IP模塊集成到一個(gè)芯片中。而在復(fù)雜的內(nèi)嵌DSP核的SoC 芯片的系統(tǒng)設(shè)計(jì)中, 為了保證SoC芯片設(shè)計(jì)的正確性, 驗(yàn)證工作變得越來(lái)越重要, 也更加復(fù)雜。FPGA驗(yàn)證是復(fù)雜芯片和SoC芯片設(shè)計(jì)驗(yàn)證的一種有效手段,可以彌補(bǔ)軟件模擬仿真的不足,減少驗(yàn)證時(shí)間,檢驗(yàn)SoC的設(shè)計(jì)是否實(shí)現(xiàn)了設(shè)計(jì)規(guī)范確定的功能,從而提高SoC芯片流片成功率。
1基于DSP核控制的SoC系統(tǒng)
本文設(shè)計(jì)的SoC系統(tǒng)采用國(guó)內(nèi)自主研發(fā)DSP核,主要包括: DSP處理器核、片上AXI總線(xiàn)、PWM、事件捕獲器、看門(mén)狗控制、中斷控制器、復(fù)位管理、存儲(chǔ)模塊、I/O以及其他外設(shè)(UART、CAN、SPI等)模塊。這些模塊與DSP核之間通過(guò)AXI總線(xiàn)連接,進(jìn)行數(shù)據(jù)通信。AMBA AXI的總線(xiàn)協(xié)議具有高性能、支持高頻傳輸、高速亞微型系統(tǒng)互連的特征,為主從結(jié)構(gòu),一切觸發(fā)都由主設(shè)備發(fā)起。核間通信總線(xiàn)采用SoC系統(tǒng)中應(yīng)用最多的AXI總線(xiàn)結(jié)構(gòu),比較靈活,可滿(mǎn)足對(duì)帶寬需求不同的各種IP。
基于DSP的SoC系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
?
圖1 基于DSP的SoC系統(tǒng)結(jié)構(gòu)框圖
2 SoC系統(tǒng)的FPGA驗(yàn)證平臺(tái)
FPGA驗(yàn)證平臺(tái)用于SoC芯片驗(yàn)證,可以對(duì)大規(guī)模SoC系統(tǒng)的設(shè)計(jì)進(jìn)行快速準(zhǔn)確的實(shí)時(shí)驗(yàn)證,根據(jù)不同SoC規(guī)模容量,采用不同的FPGA硬件資源,硬件平臺(tái)建設(shè)也有所不同。由于FPGA具有靜態(tài)可編程和在線(xiàn)動(dòng)態(tài)重構(gòu)特性,能夠使硬件功能電路同軟件程序一樣方便修改,使得FPGA驗(yàn)證修改十分方便、實(shí)時(shí)性好,還可以縮短開(kāi)發(fā)周期、降低開(kāi)發(fā)成本。FPGA具有的這些特點(diǎn)使其成為通用的SoC功能驗(yàn)證的器件,為SoC的系統(tǒng)原型驗(yàn)證提供了一個(gè)非常合適的平臺(tái)。目前FPGA已經(jīng)從系統(tǒng)集成、系統(tǒng)存儲(chǔ)、系統(tǒng)時(shí)鐘和系統(tǒng)接口4個(gè)方面滿(mǎn)足了SoC芯片驗(yàn)證的要求,為快速系統(tǒng)原型驗(yàn)證提供了一個(gè)非常合適的平臺(tái)。本文的FPGA驗(yàn)證平臺(tái)采用Xilinx Virtex6 LX760器件,是建立在Xilinx Virtex6 FPGA板上的軟硬件聯(lián)合驗(yàn)證系統(tǒng),并用ISE13.3進(jìn)行綜合和布局布線(xiàn)。另外,此FPGA硬件驗(yàn)證平臺(tái)包括支持DSP程序下載的JTAG接口。
2.1FPGA硬件平臺(tái)搭建
硬件平臺(tái)搭建主要使用了兩個(gè)Xilinx Virtex-6 LX760 FPGA器件,具有15.2M個(gè)邏輯門(mén)。Virtex-6 LX760面向高端應(yīng)用,具有更多的時(shí)鐘和存儲(chǔ)資源,而且能夠支持更快的速度。通過(guò)分析,所選擇FPAG能夠滿(mǎn)足此SoC驗(yàn)證使用,為了實(shí)現(xiàn)通用性,該FPGA硬件驗(yàn)證平臺(tái)采用了子板和母板相結(jié)合的方式。
在母板上設(shè)置有通用的FPGA芯片、相應(yīng)的PROM、系統(tǒng)全局時(shí)鐘的選擇和配置模塊、系統(tǒng)復(fù)位邏輯、FPGA芯片下載接口、與子板連接的connector接口等模塊。子板根據(jù)驗(yàn)證需求,配置了JTAG調(diào)試子板,以提供DSP仿真器連接的調(diào)試接口。另外還設(shè)計(jì)配置了驗(yàn)證EMIF訪(fǎng)問(wèn)外部存儲(chǔ)設(shè)備通路的SRAM存儲(chǔ)器子板。為了方便測(cè)試和驗(yàn)證EMIF接口功能,在這兩類(lèi)測(cè)試子板上,都設(shè)有關(guān)鍵信號(hào)的測(cè)試探測(cè)點(diǎn),以方便測(cè)試一些基礎(chǔ)的時(shí)鐘、復(fù)位信號(hào)以及其他探測(cè)信號(hào)。
2.2FPGA軟件環(huán)境搭建
在SoC 設(shè)計(jì)中,經(jīng)常會(huì)使用一些硬IP 核(如PLL、SRAM、ADC、USB transceiver 等),而在采用FPGA驗(yàn)證技術(shù)驗(yàn)證ASIC及SoC設(shè)計(jì)的過(guò)程中,需要做ASIC設(shè)計(jì)原碼的轉(zhuǎn)換,所以首先需要對(duì)SoC進(jìn)行修改,以適合FPGA的開(kāi)發(fā)環(huán)境。如門(mén)控的處理,添加PLL對(duì)所需要的時(shí)鐘進(jìn)行適當(dāng)?shù)姆郑额l,存儲(chǔ)單元RAM、FIFO的替換,修改子模塊配置,特殊單元的處理等。還要根據(jù)特定的硬件平臺(tái)增加FPGA 相關(guān)時(shí)序Timing的約束和I/O引腳的指定約束,并搭建一個(gè)能夠自動(dòng)仿真和驗(yàn)證的環(huán)境。在FPGA驗(yàn)證過(guò)程中主要使用ISE13.3內(nèi)置綜合工具或?qū)S镁C合工具對(duì)RTL進(jìn)行編譯、綜合,生成網(wǎng)表。生成的網(wǎng)表可以生成bit文件,包括優(yōu)化、適配、bit文件生成等。進(jìn)行靜態(tài)時(shí)序分析,檢查是否滿(mǎn)足預(yù)定的時(shí)鐘頻率要求,若不能滿(mǎn)足,則重新進(jìn)行綜合編譯優(yōu)化。如果多次進(jìn)行優(yōu)化仍不能滿(mǎn)足時(shí)序要求,則根據(jù)違反時(shí)序信息查找關(guān)鍵路徑,對(duì)RTL設(shè)計(jì)代碼進(jìn)行修改優(yōu)化。
FPGA驗(yàn)證軟件除了需要上述提到的綜合布局布線(xiàn)的軟件環(huán)境ISE13.3外,還需要FPGA內(nèi)部信號(hào)在線(xiàn)調(diào)試工具Chipscope,即時(shí)抓取一些內(nèi)部邏輯信號(hào),分析內(nèi)部邏輯正確與否。在驗(yàn)證調(diào)試階段,還需要DSP核下載調(diào)試軟件CCS3.3,以編寫(xiě)控制處理器核DSP運(yùn)行軟件的測(cè)試程序。
2.3軟硬件協(xié)同驗(yàn)證系統(tǒng)
FPGA驗(yàn)證SoC系統(tǒng)方法是軟硬件協(xié)同仿真和驗(yàn)證,并搭建軟硬件協(xié)同驗(yàn)證平臺(tái)系統(tǒng)。實(shí)現(xiàn)的基礎(chǔ)條件是能夠滿(mǎn)足工作要求的FPGA硬件平臺(tái),以及有力的設(shè)計(jì)描述及編譯工具等軟件環(huán)境。而基于DSP控制的SoC驗(yàn)證系統(tǒng)還需要DSP軟件程序開(kāi)發(fā)環(huán)境及下載通路等。
2.3.1FPGA軟硬件協(xié)同驗(yàn)證架構(gòu)
FPGA驗(yàn)證是為了實(shí)現(xiàn)和驗(yàn)證SoC芯片在實(shí)際硬件環(huán)境下的功能和運(yùn)行工作情況。針對(duì)本文提出的基于DSP的SoC系統(tǒng),搭建能夠?qū)崿F(xiàn)和驗(yàn)證其DSP程序指令及內(nèi)部電路工作的軟硬件協(xié)同驗(yàn)證系統(tǒng)平臺(tái)。建立的FPGA軟硬件協(xié)同驗(yàn)證系統(tǒng)的基本架構(gòu)如圖2所示。
其中包括FPGA原型驗(yàn)證需要的Xilinx Virtex6芯片的FPGA驗(yàn)證母板、支持下載bit文件及驗(yàn)證調(diào)試過(guò)程中需要的Xilinx FPGA編程器及下載線(xiàn)、能夠支持正確下載DSP激勵(lì)測(cè)試程序的DSPJTAG調(diào)試子板、支持DSP芯片的仿真器、安裝有TI CCS軟件和 ISE13.3,以軟件及支持DSP芯片驅(qū)動(dòng)的計(jì)算機(jī)。
?
圖2 FPGA軟硬件協(xié)同驗(yàn)證系統(tǒng)的基本架構(gòu)
2.3.2驗(yàn)證過(guò)程
軟硬件協(xié)同驗(yàn)證過(guò)程分以下幾個(gè)步驟:
① 首先把要驗(yàn)證的SoC系統(tǒng)由ISE13.3自動(dòng)綜合及布局布線(xiàn)實(shí)現(xiàn)后生成相應(yīng)的FPGA位流文件,經(jīng)JTAG下載至構(gòu)建的FPGA驗(yàn)證系統(tǒng)中的FPGA芯片或?qū)?yīng)的PROM中。
② 通過(guò)微機(jī)CCS開(kāi)發(fā)界面編寫(xiě)控制內(nèi)部DSP核運(yùn)行的程序,完成程序啟動(dòng)初始化、測(cè)試激勵(lì)程序編譯、開(kāi)發(fā)驗(yàn)證IP及系統(tǒng)需要的程序。
③ 通過(guò)DSP仿真器以實(shí)時(shí)的方式進(jìn)行軟硬件協(xié)同驗(yàn)證過(guò)程中的管理控制,通過(guò)編寫(xiě)及測(cè)試程序的加載、運(yùn)行、調(diào)試,實(shí)現(xiàn)對(duì)DSP核單步操作、連續(xù)運(yùn)行等;通過(guò)設(shè)置正確中斷服務(wù)程序、設(shè)置斷點(diǎn)、觀測(cè)DSP核內(nèi)部寄存器及SoC配置寄存器值等分析DSP核運(yùn)行及操作IP情況。
④ 通過(guò)不同的控制程序驅(qū)動(dòng)運(yùn)行相應(yīng)功能IP模塊及整個(gè)系統(tǒng)工作運(yùn)行,驗(yàn)證IP功能及不同IP之間的交互和總線(xiàn)競(jìng)爭(zhēng)。
在驗(yàn)證過(guò)程中可以根據(jù)IP功能及SoC系統(tǒng)特性使用示波器觀測(cè)引腳信號(hào),利用Chipscope軟件抓取內(nèi)部信號(hào)來(lái)判斷邏輯關(guān)系及系統(tǒng)運(yùn)行的準(zhǔn)確性,驗(yàn)證DSP核、SoC系統(tǒng)及相應(yīng)IP功能;驗(yàn)證系統(tǒng)各模塊間的相互操作、片上系統(tǒng)內(nèi)的數(shù)據(jù)相互流通功能;驗(yàn)證所有IP集合協(xié)同運(yùn)行情況;驗(yàn)證整個(gè)系統(tǒng)的正確性。具體驗(yàn)證流程圖可參見(jiàn)圖3。
3 SoC系統(tǒng)及IP模塊功能驗(yàn)證
對(duì)SoC系統(tǒng)及內(nèi)部IP功能模塊進(jìn)行驗(yàn)證,需要首先驗(yàn)證FPGA軟件平臺(tái)及硬件平臺(tái)的正確性,才能在CCS環(huán)境下編寫(xiě)控制DSP的程序以驗(yàn)證SoC系統(tǒng)設(shè)計(jì)及各個(gè)功能模塊的正確性。CCS編程器與FPGA硬件平臺(tái)連接正確后,可通過(guò)下載編寫(xiě)控制DSP內(nèi)核的程序,驗(yàn)證DSP運(yùn)行正確性,并通過(guò)編寫(xiě)控制其他IP邏輯模塊驗(yàn)證SoC系統(tǒng)內(nèi)部交互及IP邏輯設(shè)計(jì)。其中主要進(jìn)行了下面幾種功能模塊劃分及其驗(yàn)證,通過(guò)驗(yàn)證功能模塊也進(jìn)一步驗(yàn)證了SoC系統(tǒng)及片上總線(xiàn)等設(shè)計(jì)的正確性。
3.1 DSP核的驗(yàn)證
通過(guò)CCS開(kāi)發(fā)界面對(duì)DSP內(nèi)部寄存器進(jìn)行讀寫(xiě)操作并觀測(cè)DSP內(nèi)部寄存器的變化以實(shí)現(xiàn)驗(yàn)證DSP的功能,分別對(duì)DSP內(nèi)部的Timer、GPIO、中斷寄存器等進(jìn)行讀寫(xiě)及功能驗(yàn)證,并通過(guò)DSP控制其他各類(lèi)寄存器以驗(yàn)證DSP核的正確性。
3.2 EMIF及片上儲(chǔ)存設(shè)備的驗(yàn)證
利用DSP能夠正確讀寫(xiě)片上存儲(chǔ)器設(shè)備及支持各類(lèi)讀寫(xiě)操作,對(duì)片上存儲(chǔ)設(shè)備進(jìn)行驗(yàn)證。為了驗(yàn)證EMIF接口,在FPGA工程里對(duì)EMIF I/O口進(jìn)行綁定約束使其與SRAM存儲(chǔ)器子板進(jìn)行正確的連接,通過(guò)DSP對(duì)EMIF空間寄存器的控制,使DSP能夠正確地對(duì)連接在EMIF外的SRAM進(jìn)行各類(lèi)型的讀寫(xiě)操作,可驗(yàn)證EMIF接口設(shè)計(jì)。
?
圖3 基于DSP的SoC系統(tǒng)的FPGA驗(yàn)證流程圖
本SoC系統(tǒng)中設(shè)計(jì)的EMFI接口模塊可以連接4個(gè)外部存儲(chǔ)空間CE0~CE3。通過(guò)ISE工具使用Xilinx Virtex6芯片的FPGA IP core例化4個(gè)寬度為32位、深度為64位的SRAM,并且將它們連接到CE0~CE3空間接口上。在CCS中,初始化CE0~CE3空間接口,對(duì)各空間前16個(gè)地址寫(xiě)數(shù)據(jù),之后對(duì)這些地址進(jìn)行讀操作。執(zhí)行單步調(diào)試命令,可以成功讀取CE0~CE3空間地址里面寫(xiě)入的數(shù)據(jù)。DSP核指令代碼,首先配置全局控制寄存器,選擇DSP提供的系統(tǒng)時(shí)鐘,指令代碼寫(xiě)全局控制寄存器:
*(int*)0x4000a000 = 0x00000000
配置CE0~CE3時(shí)鐘寄存器和空間寄存器:
*(int*)0x4000a004=0x00000004;*(int*)0x4000a008=0x00000006;
*(int*)0x4000a00C=0x00000008;*(int*)0x4000a010=0x0000000a;
*(int*)0x4000a014=0xffffffe6;*(int*)0x4000a018=0x1091c226;
*(int*)0x4000a01c=0x30d5c846;*(int*)0x4000a020=0x2251c736;
對(duì)各空間前16個(gè)地址寫(xiě)數(shù)據(jù),之后對(duì)這些地址進(jìn)行讀操作的DSP核指令代碼:
for(i=0;i<16;i++){
*(int*)(0xC0060000+4*i) = (0x00000600+i);
*(int*)(0xD0060000+4*i) = (0x00000700+i);
*(int*)(0xE0060000+4*i) = (0x00000800+i);
*(int*)(0xF0060000+4*i) = (0x00000900+i);
}
for(i=0;i<16;i++)
{
temp_data = *(int*)(0xC0060000+4*i);
temp_data = *(int*)(0xD0060000+4*i);
temp_data = *(int*)(0xE0060000+4*i);
temp_data = *(int*)(0xF0060000+4*i);
}
運(yùn)行DSP核指令代碼,觀察CE0~CE3寄存器的值,能夠成功進(jìn)行讀寫(xiě),驗(yàn)證了EMIF的正確性。
3.3事件捕獲、看門(mén)狗等功能模塊的驗(yàn)證
通過(guò)DSP操作控制看門(mén)狗邏輯模塊寄存器,看門(mén)狗能夠正確運(yùn)行,并能夠正確影響復(fù)位模塊以驗(yàn)證看門(mén)狗IP模塊。通過(guò)DSP正確操作CPI等寄存器,使CPI模塊產(chǎn)生中斷并發(fā)送至DSP,DSP能夠正確響應(yīng)中斷信號(hào)進(jìn)行及時(shí)處理。為了方便驗(yàn)證CPI功能,此SoC驗(yàn)證CPI模塊把PWM產(chǎn)生波輸入到CPI模塊,配置CPI捕獲模式,當(dāng)CPI模塊輸入有變化時(shí),進(jìn)行捕獲產(chǎn)生中斷。當(dāng)發(fā)生中斷時(shí),CPI_INT為高電平,當(dāng)DSP處理后會(huì)變?yōu)榈碗娖叫盘?hào)。驗(yàn)證方法原理如圖4所示。
?
圖4 驗(yàn)證CPI模塊原理框圖
在Chipscope中正確設(shè)置觸發(fā)條件并通過(guò)FPGA編程器及JTAG傳送到PC主機(jī),可觀察其邏輯波形的正確性。CPI中斷事件圖略——編者注,可以看出,CPI_INT6從高電平到低電平的轉(zhuǎn)換,可說(shuō)明DSP對(duì)CPI中斷事件進(jìn)行了處理,并正確響應(yīng)外部中斷。可驗(yàn)證正確設(shè)置CCS配置IP模塊寄存器后,IP硬件模塊能夠正常運(yùn)行。
3.4 PWM、SPI、CAN、UART等外設(shè)模塊
通過(guò)控制內(nèi)部寄存器,能夠產(chǎn)生正確的PWM波,分別在示波器及Chipscope上對(duì)一些信號(hào)進(jìn)行采集及觀測(cè)分析,驗(yàn)證其正確性,驗(yàn)證方法和驗(yàn)證CPI、EMIF相同。測(cè)試驗(yàn)證結(jié)果表明其功能正確。其中結(jié)合示波器測(cè)試PWM波,驗(yàn)證PWM設(shè)計(jì)的正確性,另外還使用相同方法驗(yàn)證SPI、CAN、UART等各IP功能的正確性。
結(jié)語(yǔ)
本文以一個(gè)DSP處理器控制的SoC芯片的開(kāi)發(fā)與驗(yàn)證項(xiàng)目為例,介紹了關(guān)于FPGA的軟硬件協(xié)同驗(yàn)證方法及過(guò)程,搭建FPGA驗(yàn)證硬件平臺(tái)及軟件平臺(tái)環(huán)境, 并通過(guò)軟硬件協(xié)同驗(yàn)證, 在線(xiàn)驗(yàn)證調(diào)試SoC系統(tǒng)中邏輯及功能設(shè)計(jì), 并對(duì)每個(gè)功能模塊進(jìn)行了驗(yàn)證分析。通過(guò)CCS輸入控制DSP程序進(jìn)而控制SoC系統(tǒng)及內(nèi)部IP模塊,具有可觀測(cè)性及實(shí)時(shí)性,實(shí)驗(yàn)結(jié)果表明,通過(guò)FPGA軟硬件協(xié)同驗(yàn)證系統(tǒng)可以對(duì)目標(biāo)SoC芯片進(jìn)行功能驗(yàn)證及性能評(píng)估,縮短了基于SoC芯片的應(yīng)用系統(tǒng)的開(kāi)發(fā)時(shí)間,提高了流片成功率,整個(gè)驗(yàn)證平臺(tái)及方法具有較高的可靠性。
評(píng)論