基于VHDL語言的IP核驗(yàn)證
——
在IC(integrated circuit.集成電路)發(fā)展到超大規(guī)模階段的今天,基于IP(Intellectual Property,知識產(chǎn)權(quán))核的IC設(shè)計及其再利用是保證SoC(system onchip,片上系統(tǒng))開發(fā)效率和質(zhì)量的重要手段。如果能對IP核進(jìn)行驗(yà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核實(shí)現(xiàn)之前.要檢查IP核設(shè)計中是否違反了可測性設(shè)計規(guī)則;
低功耗分析:SoC的重要衡量指標(biāo)。我們在IP核設(shè)計階段就需要將TP核功耗參數(shù)進(jìn)行精確估計并進(jìn)行相應(yīng)的功耗優(yōu)化設(shè)計;
基于此.本文重點(diǎn)討論在IC設(shè)計過程中IP核的驗(yàn)證測試問題并以互聯(lián)網(wǎng)上可免費(fèi)下載的原始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)計算機(jī))是IBM公司提出來的、在CISC(complerinstruction set computer復(fù)雜指令系統(tǒng)計算機(jī))的基礎(chǔ),上繼承和發(fā)展起來的一種新型系統(tǒng)結(jié)構(gòu)技術(shù)。具有結(jié)構(gòu)簡單指令合理成本低廉快捷高效等特點(diǎn)。應(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芯片的核心。可以說,RISC是當(dāng)前計算機(jī)發(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)場可編程門陣列)芯片上做驗(yàn)證,并在開發(fā)板構(gòu)建視頻接口模塊等以利于調(diào)試和應(yīng)用。
2 IP核的仿真與測試
2.1 SoC的測試策略
SoC芯片的測試比傳統(tǒng)的ASIC測試要復(fù)雜得多.全面的功能測試通常是不現(xiàn)實(shí)的 目前常采用的策略是分別測試所有的電路功能模塊在SoC芯片中存在各種不同類型的電路模塊,每個模塊所要求的測試方式也不相同。SoC芯片中的模塊基本可以分為三類:CPU/DSP、存儲器模塊、其他功能電路模塊。CPU/DSP的測試與傳統(tǒng)的CPU/DSP測試類似.通常采用邊界掃描方式結(jié)合矢量測試方式。存儲器的測試一般采用BIST測試,比較快捷而容易控制。其他的電路模塊按設(shè)計難易程度或應(yīng)用方便性,采用邊界掃描或BIST。
2.2 IP核的測試方案
IP核的研究平臺有很多種.但一般硬件仿真調(diào)試器費(fèi)用昂貴(幾千到數(shù)萬元),對于普通用戶來說難于承受。為此,本文利用免費(fèi)的IP核進(jìn)行改寫,利用Xilinx ISE開發(fā)軟件和匯編語言翻譯過來的機(jī)器碼作為測試激勵,完成了RISC結(jié)構(gòu)的Xilinx Spartan2系列的FPGA芯片CPU指令的驗(yàn)證和測試方案.具體方案如下:
(1)以VHDL/Verilog語言改寫或新寫8 bit pipelined RISC 結(jié)構(gòu)之處理器模塊、內(nèi)存控制器模塊以及視頻控制接口模塊.然后通過Xilinx ISE 4.1/5.2、ModelSim完成行為級仿真、綜合以及布局布線等。
(2)以某個應(yīng)用為例將C語言或匯編語言編寫的測試算法程序存儲在SRAM中.實(shí)現(xiàn)嵌入式處理器及視頻控制接口并下載到FPGA.從而生成一塊可編程的控制器芯片構(gòu)成一個簡化SoC應(yīng)用。
(3)如果SoC應(yīng)用成功.則可通過cell-Base Design Flow將其轉(zhuǎn)成ASIC版圖.實(shí)現(xiàn)流片。
2.3 IP核的驗(yàn)證方法
在芯片的設(shè)計流程中設(shè)計的驗(yàn)證是一個重要而又費(fèi)時的環(huán)節(jié)。在進(jìn)行Top_Down設(shè)計時.從行為級設(shè)計開始到RTT級設(shè)計再到門級設(shè)計相應(yīng)地利用EDA工具進(jìn)行各個級別的仿真.行為仿真和RTL級仿真屬于功能仿真其作用是驗(yàn)證設(shè)計模塊的邏輯功能 門級仿真是時序仿真用于驗(yàn)證設(shè)計模塊的時序關(guān)系無論是功能仿真或是時序仿真仿真方法有兩種.即交互式仿真方法和測試平臺法
(1)交互式仿真方法。該方法主要是利用EDA工具提供的仿真器進(jìn)行模塊的仿真它允許在仿真期間對輸入信號賦值,指定仿真執(zhí)行時間,觀察輸出波形。當(dāng)系統(tǒng)的邏輯功能、時序關(guān)系達(dá)到設(shè)計要求后,仿真結(jié)束。缺點(diǎn)是輸入輸出不便于記錄歸檔尤其是輸入量比較復(fù)雜時,輸出不便于觀察和比較
(2)程序仿真測試法。就是為設(shè)計模
塊專門設(shè)計的仿真程序(也稱為測試程序),以實(shí)現(xiàn)對被測模塊自動輸入測試矢量,并通過波形輸出文件記錄輸出,便于將仿真結(jié)果記錄歸檔和比較。利用測試程序可以對一個設(shè)計模塊進(jìn)行功能仿真和時序仿真。
2.4 IP核的測試仿真
綜上所述,下面給出RISC 8測試仿真實(shí)例。該測試仿真大致可分為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)布圖布線后的仿真(后仿真)。事實(shí)上在行為級仿真與后仿真之間還有3個仿真過程,但一般來說只要能通過后仿真則其他的仿真也就沒有問題。
在后仿真過程中,看一下“portb”的輸出是否與行為級仿真一致,若一致則測試通過。如果不一致則必須返回原程序和行為級仿真,對時序進(jìn)行仔細(xì)分析(因?yàn)檫@種情況大都是因?yàn)榧尤胙舆t后原來的時序發(fā)生改變)。
3 IP核在RISC架構(gòu)中的下載實(shí)例
3.1 RISC處理器的選擇與指令的測試
我們選用MICrochip公司生產(chǎn)的PICl6c5x-Xilinx Spartan2系列中的Xc2s150微處理器下載.因?yàn)槠銯PGA芯片架構(gòu)指令與8位RISC兼容.能夠很容易實(shí)現(xiàn)RISC架構(gòu)之指令集。
RISC的測試激勵文件是由匯編語言測試程序翻譯而得到的.例如test3程序測試循環(huán)移位.test5測試邏輯操作指令、test8測試端口等。
testl程序是測試incf和的decf指令的.行為級初步測試中,“portb”輸出為“01”,如3.3中所述,這并不能說明沒有問題接著做行為級進(jìn)一步測試
3.2 測試激勵程序的加載步驟與驗(yàn)證
選擇“Project”萊單中的“News Source”選項(xiàng),在彈出的“New”對話框左側(cè)選擇文件類型為“Test Bench Waveform”,填入文件名,單擊下一步,在彈出的“select”對話框中選擇關(guān)聯(lián)的源為“anss_risc8_top”,單擊下一步.然后單擊“Finish”后會啟動HDL Bencher.在這個軟件環(huán)境中可以輸入激勵信號最后將由匯編測試程序翻譯過來的機(jī)器碼信息作為激勵信號輸入保存.輸入測試時間后退出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而實(shí)際上它應(yīng)該是0。由于alu_z出現(xiàn)在算術(shù)邏輯運(yùn)算模塊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ā)展趨勢。
評論