《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 業(yè)界動(dòng)態(tài) > SoC原型驗(yàn)證技術(shù)的研究

SoC原型驗(yàn)證技術(shù)的研究

2008-10-15
作者:馬鳳翔 孫義和

  摘 要: 快速系統(tǒng)原型技術(shù)已成為SoC(片上系統(tǒng))驗(yàn)證的主要手段之一,但大多數(shù)的原型描述仍使用Verilog/VHDL語(yǔ)言,描述效率低。以軟件編譯式系統(tǒng)設(shè)計(jì)(SCSD)為基礎(chǔ),提出了SoC的原型驗(yàn)證" title="原型驗(yàn)證">原型驗(yàn)證流程,用Handel-C語(yǔ)言描述SoC原型,并直接實(shí)現(xiàn)在原型驗(yàn)證硬件上;用SCSD的軟件工具" title="軟件工具">軟件工具、RC1000和RC200硬件平臺(tái)搭建了一個(gè)SoC原型驗(yàn)證系統(tǒng)" title="驗(yàn)證系統(tǒng)">驗(yàn)證系統(tǒng)的樣機(jī),并在樣機(jī)上完成了Lena圖像處理" title="圖像處理">圖像處理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的最大不同之處在于它的系統(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í)或門級(jí)設(shè)計(jì)及其驗(yàn)證環(huán)境扁平化,映射到系統(tǒng)硬件。運(yùn)行程序控制原型系統(tǒng)" title="原型系統(tǒng)">原型系統(tǒng)的運(yùn)行、設(shè)計(jì)調(diào)試,一般采用C-API編程,并且有開放的軟件結(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)的成本,更適合于開發(fā)出針對(duì)某個(gè)領(lǐng)域的驗(yàn)證平臺(tái)。但目前的SoC原型的描述主要使用Verilog或者VHDL,描述的級(jí)別低、復(fù)雜度高、容易出錯(cuò),因此不能很快地實(shí)現(xiàn)SoC的原型。本文的目的就是找出一種方法,用高級(jí)語(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的軟件工具包括集成開發(fā)環(huán)境(DK)、平臺(tá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ì),找到最優(yōu)的劃分方案;PAL提供與API方式訪問(wèn)原型電路板一致的硬件資源,實(shí)現(xiàn)Handel-C設(shè)計(jì)的可移植性;PSL為DK和Handel-C設(shè)計(jì)提供與電路板、可編程器件或開發(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所示。


  在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)稱為設(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開發(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)流程基本一致,只是最終實(shí)現(xiàn)運(yùn)行在主機(jī)的處理器上。
2 SoC原型驗(yàn)證系統(tǒng)樣機(jī)
  本文利用可配置計(jì)算電路板RC1000和SoC設(shè)計(jì)展示評(píng)估平臺(tái)RC200搭建了一個(gè)原型驗(yàn)證系統(tǒng)的樣機(jī),以充分體驗(yàn)SCSD的優(yōu)缺點(diǎn),為以后SoC原型驗(yàn)證系統(tǒng)的設(shè)計(jì)做一些基礎(chǔ)性研究工作。
  原型驗(yàn)證系統(tǒng)的樣機(jī)由PC主機(jī)、RC1000和RC200構(gòu)成,如圖2所示。在功能定位上,PC主機(jī)是主控子系統(tǒng),RC1000和RC200共同組成原型子系統(tǒng)。RC1000插在PC主機(jī)的PCI插槽中。RC200和PC主機(jī)之間用并口總線連接。RC1000和RC200之間用自制的34位總線連接。


  PC主機(jī)與原型子系統(tǒng)之間通信的方式有三種:?jiǎn)螖?shù)位、字節(jié)和DMA。單數(shù)位方式使用GPI和GPO兩根信號(hào)線進(jìn)行一位的數(shù)據(jù)通信,可用來(lái)傳遞一個(gè)狀態(tài)。字節(jié)方式使用RC1000控制/狀態(tài)端口進(jìn)行單字節(jié)數(shù)據(jù)傳輸,可用來(lái)傳遞控制命令或狀態(tài)信息;兩者采用握手協(xié)議,只有在操作完成之后才能返回。前兩種方式一般用來(lái)對(duì)存儲(chǔ)器所有權(quán)的交換進(jìn)行同步,DMA方式一般用于大量數(shù)據(jù)的傳輸。首先主機(jī)以DMA方式在SRAM中寫入數(shù)據(jù);然后FPGA獲得SRAM所有權(quán)后,讀取數(shù)據(jù)并進(jìn)行處理,將結(jié)果寫入SRAM;最后主機(jī)又以DMA方式取回結(jié)果。
  RC1000的FPGA外接四排SRAM,其中任何一排都可以賦給FPGA或者主機(jī)。SRAM是主機(jī)和原型子系統(tǒng)交換數(shù)據(jù)的緩沖區(qū)。
  把RC1000和RC200連接起來(lái),共同構(gòu)成原型子系統(tǒng)彌補(bǔ)了兩者的缺點(diǎn):首先,為RC1000提供多種接口標(biāo)準(zhǔn)支持,如音視頻輸入輸出、Internet和Bluetooth、觸摸屏、串/并口等;其次,增強(qiáng)RC200的調(diào)試診斷能力,運(yùn)行過(guò)程中的數(shù)據(jù)可以通過(guò)RC1000傳輸?shù)街鳈C(jī),因此可以和模擬環(huán)境中一樣觀察分析信號(hào);另外,還擴(kuò)展了系統(tǒng)的邏輯容量:RC1000的FPGA有2.5M系統(tǒng)門,RC200的FPGA有1M系統(tǒng)門,所以整個(gè)子系統(tǒng)的邏輯容量為3.5M系統(tǒng)門,可以實(shí)現(xiàn)更大設(shè)計(jì)的原型驗(yàn)證。
  并口總線是PC主機(jī)和RC200之間唯一的通信渠道。PC主機(jī)只能通過(guò)并口總線下載RC200配置數(shù)據(jù),或者讀寫RC200上SmartMedia卡中內(nèi)容。而RC1000配置可通過(guò)PCI總線實(shí)現(xiàn),有多種靈活的配置方式[4]
  RC1000的可編程時(shí)鐘可以提供400kHz~100MHz的時(shí)鐘頻率[5]。它的輸出時(shí)鐘從'OUT'端口輸出,經(jīng)由連接總線驅(qū)動(dòng)RC200,實(shí)現(xiàn)RC1000和RC200的時(shí)鐘同步。
3 Lena圖像處理SoC的原型驗(yàn)證
  為了檢驗(yàn)系統(tǒng)樣機(jī)進(jìn)行原型驗(yàn)證的有效性,試驗(yàn)了一個(gè)實(shí)例:Lena圖像處理SoC原型驗(yàn)證,如圖3所示。主機(jī)處理器代表SoC處理器的原型;RC1000實(shí)現(xiàn)圖像扭曲算法,是專用圖像處理模塊;RC200是顯示驅(qū)動(dòng)模塊及顯示裝置。


  Lena圖像數(shù)據(jù)以靜態(tài)庫(kù)文件的方式嵌入程序源代碼。主機(jī)程序啟動(dòng)后,首先對(duì)原型子系統(tǒng)進(jìn)行配置,然后用DMA方式把圖像數(shù)據(jù)送入RC1000的存儲(chǔ)器中。數(shù)據(jù)傳輸結(jié)束后,主機(jī)用控制端口通知RC1000進(jìn)行處理。RC1000對(duì)Lena圖像進(jìn)行扭曲處理,處理完一幀后,用狀態(tài)端口通知主機(jī)取回結(jié)果,并在主機(jī)顯示器上顯示。主機(jī)拿到結(jié)果后,通知RC1000繼續(xù)處理。如此反復(fù)。也就是說(shuō),主機(jī)以DMA方式傳輸一幀靜態(tài)圖像,然后再以DMA方式逐幀取回處理結(jié)果,在主機(jī)顯示器上得到扭曲變幻的動(dòng)態(tài)圖像。
  在RC1000對(duì)每幀圖像的處理過(guò)程中,是以像素為單位把圖像數(shù)據(jù)傳遞給RC200的。像素?cái)?shù)據(jù)的傳送使用三條信號(hào)線,分別是Data、Write和RC200Rdy。Data是16位的數(shù)據(jù)總線,用來(lái)發(fā)送像素?cái)?shù)據(jù)。Write是RC1000發(fā)送數(shù)據(jù)的標(biāo)志信號(hào)線。RC200Rdy表明RC200是否準(zhǔn)備好接收像素?cái)?shù)據(jù)Data。像素?cái)?shù)據(jù)的發(fā)送協(xié)議與握手協(xié)議類似。在RC1000處理像素的過(guò)程中,Write為0,像素處理完成后,如果RC200Rdy為1,則開始發(fā)送數(shù)據(jù)Data,同時(shí)把Write置為1通知RC200接收數(shù)據(jù);如果RC200Rdy為0,RC1000就進(jìn)入等待狀態(tài),直至RC200Rdy跳變?yōu)?。在RC200接收、處理數(shù)據(jù)的過(guò)程中,RC200Rdy被置為0。
  RC200接收到的數(shù)據(jù)是16位的,但它只支持24位或者30位的顯示數(shù)據(jù)。因此,對(duì)16位的像素?cái)?shù)據(jù)應(yīng)加以處理,把它擴(kuò)展到24位。動(dòng)態(tài)圖像的顯示借助FrameBufferdb實(shí)現(xiàn),這是Celoxica的視頻顯示核。它用兩個(gè)存儲(chǔ)器排作為視頻緩沖器,交替接收數(shù)據(jù)和驅(qū)動(dòng)顯示。
4 實(shí)驗(yàn)結(jié)果及系統(tǒng)原型的性能分析
  Lena圖像處理及其試驗(yàn)表明:SCSD能夠有效、快速地實(shí)現(xiàn)SoC的原型驗(yàn)證和IP的仿真驗(yàn)證。但用于SoC原型驗(yàn)證,尚有不足之處。首先,它只支持設(shè)計(jì)的可配置邏輯實(shí)現(xiàn),不支持診斷能力的實(shí)現(xiàn);其次,它只能在單個(gè)FPGA上實(shí)現(xiàn)設(shè)計(jì),不能把Handel-C設(shè)計(jì)劃分在多個(gè)FPGA上實(shí)現(xiàn)。而這兩點(diǎn)對(duì)于原型驗(yàn)證來(lái)說(shuō)卻非常重要。
  診斷就是在原型運(yùn)行過(guò)程中如何實(shí)現(xiàn)重要信號(hào)的收集和分析。診斷涉及到監(jiān)測(cè)點(diǎn)的指定及其實(shí)現(xiàn),以及監(jiān)測(cè)點(diǎn)數(shù)據(jù)的處理分析。在Verilog中指定監(jiān)測(cè)點(diǎn)相對(duì)簡(jiǎn)單,因?yàn)橛鞋F(xiàn)成的工具—Synplicity的Identify。在Handel-C中還沒(méi)有現(xiàn)成辦法指定監(jiān)測(cè)點(diǎn),其指定和實(shí)現(xiàn)機(jī)制需要進(jìn)一步的研究??尚械霓k法就是,先用DK把Handel-C描述的驗(yàn)證環(huán)境或設(shè)計(jì)編譯成Verilog描述,然后再在Identify中指定監(jiān)測(cè)點(diǎn)。實(shí)現(xiàn)就是在硬件上獲得并表現(xiàn)這些監(jiān)測(cè)點(diǎn)的信號(hào),如把這些信號(hào)直接或者經(jīng)過(guò)某種處理后輸出到邏輯分析儀或PC主機(jī)。但這需要圓形硬件的支持。
  大規(guī)模設(shè)計(jì)需要多個(gè)FPGA實(shí)現(xiàn)。因此對(duì)于原型驗(yàn)證,需要把設(shè)計(jì)劃分到多個(gè)FPGA上實(shí)現(xiàn)。比較快捷的方法是:先用DK把Handel-C設(shè)計(jì)編譯為Verilog描述,然后用Synplicity的設(shè)計(jì)劃分工具Certify劃分,最后用Xilinx公司的布局布線工具生成配置數(shù)據(jù)。也可以進(jìn)一步研究如何劃分Handel-C設(shè)計(jì)。改進(jìn)的SoC/IP原型驗(yàn)證流程及所用的軟件工具如圖4所示。


  為了支持原型驗(yàn)證的診斷能力、實(shí)現(xiàn)大規(guī)模SoC設(shè)計(jì)的原型驗(yàn)證,設(shè)計(jì)了一款全新的原型電路板,其功能示意圖如圖5所示。電路板使用三個(gè)FPGA,采用環(huán)形互連結(jié)構(gòu)。原型FPGA之間的互連便于設(shè)計(jì)在兩者之間劃分。而接口FPGA與兩者之間的連接則用于對(duì)設(shè)計(jì)內(nèi)部接點(diǎn)實(shí)現(xiàn)監(jiān)督,對(duì)配置數(shù)據(jù)進(jìn)行下載。接口FPGA外接六排存儲(chǔ)器(32位SRAM),因此每周期最多可以并行監(jiān)督192個(gè)內(nèi)部信號(hào)。運(yùn)行過(guò)程中,監(jiān)測(cè)點(diǎn)的信號(hào)值直接存入SRAM。主機(jī)以DMA方式讀取SRAM中的信號(hào)值,從而實(shí)現(xiàn)軟件讀取原型硬件運(yùn)行過(guò)程中的數(shù)據(jù),開發(fā)工程師可以像在模擬環(huán)境中一樣觀察分析自己感興趣的信號(hào)。這就部分解決了長(zhǎng)久以來(lái)困擾硬件仿真或原型的問(wèn)題(診斷能力很差)。如果監(jiān)測(cè)點(diǎn)的信號(hào)數(shù)據(jù)量很大,無(wú)法通過(guò)PCI總線實(shí)時(shí)傳送到PC主機(jī)或分析困難時(shí),可在接口FPGA中進(jìn)行處理,數(shù)據(jù)處理之后再傳送過(guò)去。但有時(shí)用邏輯分析儀分析信號(hào)更適合也更方便,因此電路板上還設(shè)計(jì)了一個(gè)邏輯分析儀與接口FPGA連接的插槽。該原型電路板支持兩種擴(kuò)展方式:電路板擴(kuò)展和插件擴(kuò)展。電路板擴(kuò)展就是在系統(tǒng)的PCI總線中加入更多原型電路板,以驗(yàn)證更大規(guī)模的電路。此時(shí),電路板之間可采用速度可高至射頻的高速連接總線,PCI總線只是用來(lái)實(shí)現(xiàn)控制和診斷。擴(kuò)展插槽中可以插入不同的小尺寸外設(shè)以及數(shù)模/模數(shù)電路板,以擴(kuò)展原型系統(tǒng)的原型能力。Rocket I/O接口支持射頻模塊的接入。原型驗(yàn)證系統(tǒng)的設(shè)計(jì)細(xì)節(jié)可參見參考文獻(xiàn)[6]。


  SCSD可以加快SoC原型驗(yàn)證的描述和實(shí)現(xiàn),但無(wú)法實(shí)現(xiàn)診斷和設(shè)計(jì)的劃分。本文在數(shù)次試驗(yàn)的基礎(chǔ)上,提出了改進(jìn)的原型實(shí)現(xiàn)流程,并重新設(shè)計(jì)原型電路板。然而,這只是為SoC原型驗(yàn)證系統(tǒng)的開發(fā)找到了一個(gè)很好的方向,并作了一些基礎(chǔ)性的研究工作。要實(shí)現(xiàn)它,還有很多工作要做。
參考文獻(xiàn)
1 Natalino Busá, Ghiath Alkadi etc. al. RAPIDO A Modular,Multiboard,Heterogeneous Multiprocessor, PCI Bus Based protoping Framework for the Validation of SoC VLSI Designs.Darmstadt, Germany: Proceedings of the 13 th IEEE International Workshop on Rapid System Prototyping (RSP′02),2002
2 Celoxica. DK Design Suite Datasheet. Celoxica,2003
3 Celoxica.Introduction to the Celoxica Platform Developer′s Kit(PDK). Celoxica,2003
4 Celoxica.RC1000 Software Reference Manual.Celoxica,2003
5 Celoxica.RC1000 Hardware Reference Manual.Celoxica, 2003

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。