引言
在IC(integrated circuit.集成電路)發(fā)展到超大規(guī)模階段的今天,,基于IP(Intellectual Property,,知識產(chǎn)權(quán))核的IC設(shè)計及其再利用是保證SoC(system onchip,,片上系統(tǒng))開發(fā)效率和質(zhì)量的重要手段。如果能對IP核進(jìn)行驗證,、測試和集成.就可以加速SoC的設(shè)計,,而這需要從以下5個方面進(jìn)行考慮,。
代碼純化.指在代碼設(shè)計中及完成后進(jìn)行自定義的、IEEE標(biāo)準(zhǔn)的,、設(shè)計重用的,、可綜合性和可測試性等方面的規(guī)則檢查;
代碼覆蓋率分析.研究仿真中的測試矢量是否足夠,;
設(shè)計性能和面積分析.在設(shè)計邏輯綜合過程中分析所設(shè)計的RTL所能達(dá)到的性能和面積要求,;
可測性分析:IP核設(shè)計重用中的關(guān)鍵技術(shù)。如何保證IP核的高測試覆蓋率,如何保證IP核在集成到SoC中后的可測試性.是該階段分析的主要目標(biāo),。所以在IP核實現(xiàn)之前.要檢查IP核設(shè)計中是否違反了可測性設(shè)計規(guī)則,;
低功耗分析:SoC的重要衡量指標(biāo)。我們在IP核設(shè)計階段就需要將TP核功耗參數(shù)進(jìn)行精確估計并進(jìn)行相應(yīng)的功耗優(yōu)化設(shè)計,;基于此.本文重點討論在IC設(shè)計過程中IP核的驗證測試問題并以互聯(lián)網(wǎng)上可免費下載的原始IP核資源為例.在與8位RISC架構(gòu)指令兼容的微處理器下載成功,。
1 IP核與RISC體系
1.1 IP核
IP核是具有知識產(chǎn)權(quán)的集成電路芯核的簡稱其作用是把一組擁有知識產(chǎn)權(quán)的、在數(shù)字電路中常用但又比較復(fù)雜的電路設(shè)計功能塊(如FIR濾波器SDRAM控制器,、PCI接口等)設(shè)計成可修改參數(shù)的集成模塊構(gòu)成芯片的基本單位,以供設(shè)計時直接調(diào)用從而大大避免重復(fù)勞動,。
1.2 RISC處理器
RISC(reduced instruction set computer.精簡指令系統(tǒng)計算機)是IBM公司提出來的、在CISC(complerinstruction set computer復(fù)雜指令系統(tǒng)計算機)的基礎(chǔ),上繼承和發(fā)展起來的一種新型系統(tǒng)結(jié)構(gòu)技術(shù),。具有結(jié)構(gòu)簡單指令合理成本低廉快捷高效等特點,。應(yīng)用前景被普遍看好。國際IT領(lǐng)域的大公司如IBM,、DEC,、Intel、ARM,、Motorola,、Apple、HP等先后將其力量轉(zhuǎn)向RISC.并已經(jīng)開發(fā)出各種基于RISC的芯片或IP核,。
SoC是進(jìn)行IA(Intel Architecture.智能家電)產(chǎn)品開發(fā)的主要方法.而基于RISC體系的EP(embedded processor,,嵌入式處理器)則是SoC芯片的核心??梢哉f,RISC是當(dāng)前計算機發(fā)展不可逆轉(zhuǎn)的趨勢,。
1.3 VHDI語言
VHDL(Very High Speed Integrated Circuit Hardware Description Language.集成電路硬件描述語言)與Verilog HDL程序都很適合用來設(shè)計架構(gòu)RCMP reconfigurable mICroprocessor,,可重新規(guī)劃的微處理器)。為此.我們利用VHDL設(shè)計一種嵌入式RISC8微處理器及應(yīng)用芯片.設(shè)計后的IP核下載到FPGA(Field Programmable Gate Array.現(xiàn)場可編程門陣列)芯片上做驗證,,并在開發(fā)板構(gòu)建視頻接口模塊等以利于調(diào)試和應(yīng)用,。
2 IP核的仿真與測試
2.1 SoC的測試策略
SoC芯片的測試比傳統(tǒng)的ASIC測試要復(fù)雜得多.全面的功能測試通常是不現(xiàn)實的 目前常采用的策略是分別測試所有的電路功能模塊在SoC芯片中存在各種不同類型的電路模塊,每個模塊所要求的測試方式也不相同。SoC芯片中的模塊基本可以分為三類:CPU/DSP,、存儲器模塊,、其他功能電路模塊,。CPU/DSP的測試與傳統(tǒng)的CPU/DSP測試類似.通常采用邊界掃描方式結(jié)合矢量測試方式。存儲器的測試一般采用BIST測試,,比較快捷而容易控制,。其他的電路模塊按設(shè)計難易程度或應(yīng)用方便性,采用邊界掃描或BIST,。
2.2 IP核的測試方案
IP核的研究平臺有很多種.但一般硬件仿真調(diào)試器費用昂貴(幾千到數(shù)萬元),,對于普通用戶來說難于承受。為此,,本文利用免費的IP核進(jìn)行改寫,,利用Xilinx ISE開發(fā)軟件和匯編語言翻譯過來的機器碼作為測試激勵,完成了RISC結(jié)構(gòu)的Xilinx Spartan2系列的FPGA芯片CPU指令的驗證和測試方案.具體方案如下:
(1)以VHDL/Verilog語言改寫或新寫8 bit pipelined RISC 結(jié)構(gòu)之處理器模塊,、內(nèi)存控制器模塊以及視頻控制接口模塊.然后通過Xilinx ISE 4.1/5.2,、ModelSim完成行為級仿真、綜合以及布局布線等,。
(2)以某個應(yīng)用為例將C語言或匯編語言編寫的測試算法程序存儲在SRAM中.實現(xiàn)嵌入式處理器及視頻控制接口并下載到FPGA.從而生成一塊可編程的控制器芯片構(gòu)成一個簡化SoC應(yīng)用,。
(3)如果SoC應(yīng)用成功.則可通過cell-Base Design Flow將其轉(zhuǎn)成ASIC版圖.實現(xiàn)流片。
2.3 IP核的驗證方法
在芯片的設(shè)計流程中設(shè)計的驗證是一個重要而又費時的環(huán)節(jié),。在進(jìn)行Top_Down設(shè)計時.從行為級設(shè)計開始到RTT級設(shè)計再到門級設(shè)計相應(yīng)地利用EDA工具進(jìn)行各個級別的仿真.行為仿真和RTL級仿真屬于功能仿真其作用是驗證設(shè)計模塊的邏輯功能 門級仿真是時序仿真用于驗證設(shè)計模塊的時序關(guān)系無論是功能仿真或是時序仿真仿真方法有兩種.即交互式仿真方法和測試平臺法
(1)交互式仿真方法,。該方法主要是利用EDA工具提供的仿真器進(jìn)行模塊的仿真它允許在仿真期間對輸入信號賦值,指定仿真執(zhí)行時間,,觀察輸出波形,。當(dāng)系統(tǒng)的邏輯功能、時序關(guān)系達(dá)到設(shè)計要求后,,仿真結(jié)束,。缺點是輸入輸出不便于記錄歸檔尤其是輸入量比較復(fù)雜時,輸出不便于觀察和比較
(2)程序仿真測試法,。就是為設(shè)計模
塊專門設(shè)計的仿真程序(也稱為測試程序),以實現(xiàn)對被測模塊自動輸入測試矢量,,并通過波形輸出文件記錄輸出,便于將仿真結(jié)果記錄歸檔和比較,。利用測試程序可以對一個設(shè)計模塊進(jìn)行功能仿真和時序仿真,。
2.4 IP核的測試仿真
綜上所述,下面給出RISC 8測試仿真實例。該測試仿真大致可分為5個步驟
(1)給Wave(波形)窗口添加信號,。首先添加的是RISC 8的整體Structure(結(jié)構(gòu))信號,。
(2)行為級仿真初步測試。在初步測試中.“portb”信號的輸出如果是“FX”,,則說明系統(tǒng)必然存在問題,;如果是“OX”則說明系統(tǒng)沒有發(fā)現(xiàn)問題要進(jìn)行進(jìn)一步的測試。
(3)行為級仿真進(jìn)一步測試,。在進(jìn)一步測試中,,要注意的信號是romaddr,、romdata以及各種指令控制信號。
(4)源程序修改,,再仿真,。在上一步中定位到出錯的地方,然后回到源程序中找到所有出錯信號出現(xiàn)的地方,,仔細(xì)分析,,并結(jié)合波形圖進(jìn)行修改,然后重復(fù)上述步驟進(jìn)行再仿真,。
(5)布圖布線后的仿真(后仿真),。事實上在行為級仿真與后仿真之間還有3個仿真過程,但一般來說只要能通過后仿真則其他的仿真也就沒有問題,。
在后仿真過程中,,看一下“portb”的輸出是否與行為級仿真一致,若一致則測試通過。如果不一致則必須返回原程序和行為級仿真,,對時序進(jìn)行仔細(xì)分析(因為這種情況大都是因為加入延遲后原來的時序發(fā)生改變),。
3 IP核在RISC架構(gòu)中的下載實例
3.1 RISC處理器的選擇與指令的測試
我們選用MICrochip公司生產(chǎn)的PICl6c5x-Xilinx Spartan2系列中的Xc2s150微處理器下載.因為其FPGA芯片架構(gòu)指令與8位RISC兼容.能夠很容易實現(xiàn)RISC架構(gòu)之指令集。
RISC的測試激勵文件是由匯編語言測試程序翻譯而得到的.例如test3程序測試循環(huán)移位.test5測試邏輯操作指令,、test8測試端口等,。
testl程序是測試incf和的decf指令的.行為級初步測試中,“portb”輸出為“01”,,如3.3中所述,,這并不能說明沒有問題接著做行為級進(jìn)一步測試
3.2 測試激勵程序的加載步驟與驗證
選擇“Project”萊單中的“News Source”選項,在彈出的“New”對話框左側(cè)選擇文件類型為“Test Bench Waveform”,,填入文件名,,單擊下一步,在彈出的“select”對話框中選擇關(guān)聯(lián)的源為“anss_risc8_top”,,單擊下一步.然后單擊“Finish”后會啟動HDL Bencher.在這個軟件環(huán)境中可以輸入激勵信號最后將由匯編測試程序翻譯過來的機器碼信息作為激勵信號輸入保存.輸入測試時間后退出HDL Benche,。
在進(jìn)一步測試中也沒有問題,然后,我們可將測試程序進(jìn)行如下改變.
incf x,f:X<=FE
incf x,f;X<=FF
incf x,f:X<=00
incf x,f,;X<=01
decf x,f:X<=00
decf x,f:X<=FF
decf x,f:X<=FE
將程序中的最后一個incf改為的decf.這樣制造了一個錯誤.重新進(jìn)行仿真,發(fā)現(xiàn)"portb"的輸出仍然為"01"而不是預(yù)想的"F1",。由此可見程序中存在問題。仔細(xì)分析后發(fā)現(xiàn)問題出現(xiàn)在“btfss”變?yōu)?時.此時alu_z為1而實際上它應(yīng)該是0,。由于alu_z出現(xiàn)在算術(shù)邏輯運算模塊ALU的一個子模塊alu_dp中,,因此對alu_dp進(jìn)行分析,在wave窗口中加入alu_dp模塊的信號,,同時在ISE4.1i中打開alu_dp的源文件進(jìn)行分析.經(jīng)分析發(fā)現(xiàn)alu_z變?yōu)?是由于源程序中對alu_z的處理不完備.少考慮了一種情況。根據(jù)這種情況對源程序alu_dp.vhd進(jìn)行修改如下:
a.signal bittest,,temp:std_logIC_vector(7 downto 0),;
--add signal temp
b.u_zero:process(bittest,op,longq)
begin
if(bittest=ZEROBYTE) and&n
bsp; (op=ALU_OP_BITTESTCLR)
then zero<='1';
elsif(bittest/=ZEROBYTE) and (op=ALU_OP_BITTESTSET)
then zero<='1';
elsif longq(7 downto 0)=ZEROBYTE and(op/=ALUOP_BITTESTSET)
then zero<='1';--new add
elsif temp="zerobyte" and op="ALUOP"_BITTESTSET
then zero<='1',;--new add
else
zero<='0';
end if;
end process;
c.bittest<=bitdecoder and a;
temp<=bitdecoder or a; --new add
修改存儲源程序后再次仿真的結(jié)果是正確的(即portb輸出為“F1”)。將測試程序恢復(fù),,仿真結(jié)果也是正確的,。再進(jìn)行后仿真也正確.至此.test1程序測試完畢。
4 結(jié)束語
集成電路發(fā)展到超大規(guī)模階段后,,芯片中凝聚的知識已經(jīng)高度濃縮,。專有知識產(chǎn)權(quán)的IP核設(shè)計及其再利用是保證SoC開發(fā)效率和質(zhì)最的重要手段。 隨著CPLD/FPGA的規(guī)模越來越大,,設(shè)計越來越復(fù)雜,,IP核是必然的發(fā)展趨勢。