SoC原型驗(yàn)證技術(shù)的研究
快速系統(tǒng)原型技術(shù)已成為SoC(片上系統(tǒng))驗(yàn)證的主要手段之一,但大多數(shù)的原型描述仍使用Verilog/VHDL語(yǔ)言,描述效率低。以軟件編譯式系統(tǒng)設(shè)計(jì)(SCSD)為基礎(chǔ),提出了SoC的原型驗(yàn)證流程,用Handel-C語(yǔ)言描述SoC原型,并直接實(shí)現(xiàn)在原型驗(yàn)證硬件上;用SCSD的軟件工具、RC1000和RC200硬件平臺(tái)搭建了一個(gè)SoC原型驗(yàn)證系統(tǒng)的樣機(jī),并在樣機(jī)上完成了Lena圖像處理SoC的原型驗(yàn)證;在反復(fù)試驗(yàn)的基礎(chǔ)上,改進(jìn)了SoC原型驗(yàn)證流程,并設(shè)計(jì)出了新的原型電路板。
關(guān)鍵詞:原型 SoC 驗(yàn)證 軟件編譯式系統(tǒng)設(shè)計(jì) Handel-C
由于SoC設(shè)計(jì)復(fù)雜度不斷增加,使得縮短面市時(shí)間的壓力越來(lái)越重。雖然充分利用IP核大大減少了SoC的設(shè)計(jì)時(shí)間,但SoC驗(yàn)證仍然非常復(fù)雜耗時(shí)。SoC和ASIC的zui大不同之處在于它的系統(tǒng)特性,除了大量硬件模塊之外,SoC還需要大量的固件和軟件,如操作系統(tǒng)、驅(qū)動(dòng)程序、通訊協(xié)議以及應(yīng)用程序等。SoC硬件模塊數(shù)目眾多、內(nèi)嵌軟件復(fù)雜,傳統(tǒng)的基于邏輯模擬的驗(yàn)證方式已不再可行。尤其是軟硬協(xié)同驗(yàn)證時(shí),模擬時(shí)間之長(zhǎng)令人難以忍受。為了縮短SoC驗(yàn)證時(shí)間,快速系統(tǒng)原型(Rapid System Prototype)驗(yàn)證,即硬件原型和軟件原型結(jié)合驗(yàn)證,已經(jīng)成為SoC設(shè)計(jì)流程前期階段的常用手段[1]。
快速系統(tǒng)原型驗(yàn)證的本質(zhì)在于快速地實(shí)現(xiàn)SoC設(shè)計(jì)中的硬件模塊,讓軟件模塊在真正的硬件上高速運(yùn)行,實(shí)現(xiàn)SoC設(shè)計(jì)的軟硬件協(xié)同驗(yàn)證。該技術(shù)實(shí)現(xiàn)的基礎(chǔ)是強(qiáng)大的FPGA和有力的設(shè)計(jì)描述及編譯工具。原型驗(yàn)證系統(tǒng)由三個(gè)部分組成:系統(tǒng)硬件、軟件編譯器和運(yùn)行程序。系統(tǒng)硬件設(shè)計(jì)的核心部分是定制的FPGA并行系統(tǒng),用來(lái)實(shí)現(xiàn)SoC設(shè)計(jì)中的關(guān)鍵模塊如Mpeg編碼器,系統(tǒng)硬件的常規(guī)模塊可由商用芯片實(shí)現(xiàn)。軟件編譯器則把寄存器級(jí)或門(mén)級(jí)設(shè)計(jì)及其驗(yàn)證環(huán)境扁平化,映射到系統(tǒng)硬件。運(yùn)行程序控制原型系統(tǒng)的運(yùn)行、設(shè)計(jì)調(diào)試,一般采用C-API編程,并且有開(kāi)放的軟件結(jié)構(gòu),便于后期緊密集成。
快速系統(tǒng)原型驗(yàn)證采用商用芯片實(shí)現(xiàn)設(shè)計(jì)中的常用模塊,只有核心模塊才用FPGA實(shí)現(xiàn),因此提高了原型系統(tǒng)的速度,減少了原型描述及其實(shí)現(xiàn)的工作量,降低了原型驗(yàn)證系統(tǒng)的成本,更適合于開(kāi)發(fā)出針對(duì)某個(gè)領(lǐng)域的驗(yàn)證平臺(tái)。但目前的SoC原型的描述主要使用Verilog或者VHDL,描述的級(jí)別低、復(fù)雜度高、容易出錯(cuò),因此不能很快地實(shí)現(xiàn)SoC的原型。本文的目的就是找出一種方法,用語(yǔ)言(如C語(yǔ)言)來(lái)描述SoC的原型,并實(shí)現(xiàn)在設(shè)計(jì)的原型驗(yàn)證硬件上。
1 SoC原型的Handel-C描述及其實(shí)現(xiàn)流程
Celoxica公司提出的軟件編譯式系統(tǒng)設(shè)計(jì)(Software-Compiled System Design,SCSD)把軟件設(shè)計(jì)技術(shù)引入硬件設(shè)計(jì),直接用Handel-C語(yǔ)言描述硬件設(shè)計(jì),大大改善了硬件設(shè)計(jì)效率。SCSD的軟件工具包括集成開(kāi)發(fā)環(huán)境(DK)、平臺(tái)開(kāi)發(fā)工具(PDK)以及系統(tǒng)級(jí)硬件描述語(yǔ)言Handel-C等。DK可以編輯、模擬、調(diào)試并編譯Handel-C源代碼,生成EDIF、Verilog或VHDL代碼,并能夠與ModelSim一起協(xié)同模擬Handel-C和Verilog設(shè)計(jì)[2]。PDK由數(shù)據(jù)流管理器(DSM)、平臺(tái)抽象層(PAL)和平臺(tái)支持庫(kù)(PSL)三個(gè)層面構(gòu)成[3]。通過(guò)DSM,可以很方便地在軟件和硬件之間實(shí)現(xiàn)轉(zhuǎn)移設(shè)計(jì)的功能,便于快速地劃分設(shè)計(jì),找到*的劃分方案;PAL提供與API方式訪問(wèn)原型電路板一致的硬件資源,實(shí)現(xiàn)Handel-C設(shè)計(jì)的可移植性;PSL為DK和Handel-C設(shè)計(jì)提供與電路板、可編程器件或開(kāi)發(fā)工具有關(guān)的支持,更接近驅(qū)動(dòng)程序的概念。
SCSD的整套軟件工具能夠把Handel-C描述的設(shè)計(jì)直接實(shí)現(xiàn)到FPGA上,因此非常適合SoC原型的描述及其實(shí)現(xiàn)。本文以SCSD為基礎(chǔ),提出了SoC/IP的原型驗(yàn)證流程,如圖1所示。
圖1 SoC/IP原型實(shí)現(xiàn)的基本流程及其EDA工具
在SoC原型驗(yàn)證中,不同的硬件模塊用不同的方式實(shí)現(xiàn)。處理器用主機(jī)CPU或者原型硬件中的嵌入式處理器實(shí)現(xiàn);存儲(chǔ)器用原型硬件中與FPGA直接相連的存儲(chǔ)器排實(shí)現(xiàn);Verilog描述的核心模塊在FPGA中實(shí)現(xiàn);各種外設(shè)模塊用原型硬件中的外設(shè)資源實(shí)現(xiàn);模塊之間的互連實(shí)現(xiàn)在FPGA和原型硬件的互連總線上。IP原型驗(yàn)證需要確定它的外圍邏輯環(huán)境、驗(yàn)證向量生成機(jī)制和驗(yàn)證結(jié)果分析檢查策略。本文把SoC和IP驗(yàn)證中所有需要描述的模塊及其互連與原型硬件的映射關(guān)系以及原型驗(yàn)證的硬件支持統(tǒng)稱(chēng)為設(shè)計(jì)的驗(yàn)證環(huán)境。被驗(yàn)證的設(shè)計(jì)用Verilog/VHDL語(yǔ)言描述,驗(yàn)證環(huán)境用Handel-C語(yǔ)言描述。
Handel-C描述完成后,用模擬器ModelSim和Handel-C開(kāi)發(fā)工具DK協(xié)同模擬、調(diào)試設(shè)計(jì)和驗(yàn)證環(huán)境,這樣可用較少的驗(yàn)證向量檢查驗(yàn)證環(huán)境的正確性。模擬成功后,DK把驗(yàn)證環(huán)境的Handel-C描述編譯為Verilog描述。然后調(diào)用綜合工具(Synplify)對(duì)設(shè)計(jì)及其驗(yàn)證環(huán)境的Verilog描述進(jìn)行編譯優(yōu)化。接著調(diào)用Xilinx的布局布線工具(ISE),把優(yōu)化的Verilog描述轉(zhuǎn)換為原型系統(tǒng)硬件的配置數(shù)據(jù)。原型系統(tǒng)配置完畢后,就可以啟動(dòng)系統(tǒng)執(zhí)行原型驗(yàn)證了。如果模塊設(shè)計(jì)的RTL優(yōu)化已經(jīng)完成,就無(wú)需調(diào)用Synplify進(jìn)行優(yōu)化,直接輸入ISE即可。
在SoC軟硬件協(xié)同驗(yàn)證中,首先通過(guò)DK,協(xié)同模擬C/C++描述的軟件、Handel-C描述的驗(yàn)證環(huán)境和Verilog描述的模塊;然后把軟件編譯成SoC處理器的目標(biāo)代碼,讓軟件在原型系統(tǒng)中高速運(yùn)行,執(zhí)行驗(yàn)證。主機(jī)PC上運(yùn)行的診斷軟件與SoC的軟件模塊的描述實(shí)現(xiàn)流程基本一致,只是zui終實(shí)現(xiàn)運(yùn)行在主機(jī)的處理器上。