畢業(yè)論文 基于功能覆蓋率的處理器運(yùn)算部件測試_第1頁
已閱讀1頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  畢業(yè)論文</b></p><p>  題 目 基于功能覆蓋率的 </p><p>  處理器運(yùn)算部件測試 </p><p>  專 業(yè) 微電子學(xué) </p><p>  基于功能覆蓋率的處理器運(yùn)算部件測試</p><p><

2、b>  摘 要</b></p><p>  測試驗(yàn)證是數(shù)字集成電路設(shè)計(jì)中一個(gè)非常重要的環(huán)節(jié),一般一個(gè)復(fù)雜的芯片從設(shè)計(jì)到封裝成型,測試將占用百分之七十的時(shí)間。因此,一種能花費(fèi)最短時(shí)間,并且能最大限度測試出芯片中設(shè)計(jì)錯(cuò)誤的測試方法是非常重要的?;诠δ芨采w率的測試方法就是一種可信性比較高的測試方法。</p><p>  本論文主要研究如何用借助仿真工具以及基于功能覆蓋率的測試

3、方法,對微處理器中功能部件功能正確性及語法正確性進(jìn)行批量測試。測試過程是在system verilog平臺環(huán)境下進(jìn)行的,應(yīng)用gcc編譯工具和GDB調(diào)試工具測試C-modle,以及應(yīng)用Vcs仿真軟件測試RTL代碼,最后運(yùn)用基于功能覆蓋率的方法編寫覆蓋組方案代碼以及用嵌入式匯編語言編寫測試激勵(lì),完成C-modle和RTL代碼中除了浮點(diǎn)除、浮點(diǎn)乘加以外的所有運(yùn)算功能測試任務(wù)。測試出部分功能部件模塊存在代碼語法錯(cuò)誤或結(jié)構(gòu)錯(cuò)誤,并反饋改正。達(dá)到了

4、對數(shù)字電路測試驗(yàn)證的目的。</p><p>  關(guān)鍵詞:測試,功能覆蓋率,處理器功能部件,IEEE-754浮點(diǎn)標(biāo)準(zhǔn)</p><p><b>  Abstract</b></p><p>  Test verification is a very important part of digital integrated circuit desig

5、n, and generally a complex chip from design to the package-molding, the test will take up 70% time. Therefor, a mothod of test which cost the shortest time and can test the wrong of the design of the chip maximum extent

6、is very important. Testing method based on functional coverage rate is a method which has a relatively high credibility.</p><p>  In this paper, study how to use the simulation tools and test methods based o

7、n functional coverage rate to finish the batch tests of the functional correctness and syntactic correctness of the cpu. Testing process is carried out under the system verilog platform, using GCC compiler tool and GDB d

8、ebugging tool to test C-modle, and VCS simulation software to test RTL code, finally, finish all the computing functions testing task in the C-modle and RTL code except floating-point addition and floa</p><p

9、>  Key words:Test,F(xiàn)unctional coverage,Processor function components,</p><p>  IEEE Standard 754 for Binary Floating-Point Arithmetic</p><p><b>  目 錄</b></p><p>  第 1

10、章 緒論1</p><p>  1.1測試方法學(xué)的研究現(xiàn)狀1</p><p>  1.2測試的意義2</p><p>  1.3本文的主要內(nèi)容2</p><p>  第2章 測試內(nèi)容的基本介紹4</p><p>  2.1 基于Mips指令集的微處理器功能部件的簡單介紹4</p><

11、p>  2.1.1 功能部件在微處理器中的位置4</p><p>  2.1.2 功能部件實(shí)現(xiàn)功能和內(nèi)部結(jié)構(gòu)4</p><p>  2.1.3 Mips指令集介紹5</p><p>  2.2 IEEE-754標(biāo)準(zhǔn)7</p><p>  2.2.1 IEEE-754內(nèi)容7</p><p>  2.2.1

12、 IEEE-754舍入方式和異常情況9</p><p>  2.3 基于功能覆蓋率測試方法學(xué)的簡單介紹11</p><p>  第3章 微處理器功能部件參考模型(C-modle)的測試15</p><p>  3.1 微處理器 refercence modle---C-modle的簡單介紹15</p><p>  3.2 C-modl

13、e功能部件的基本功能測試15</p><p>  3.3 C-modle在微處理器中聯(lián)調(diào)17</p><p>  第4章 微處理器的RTL代碼測試21</p><p>  4.1 RTL代碼的基本測試21</p><p>  4.2 用功能覆蓋率的測試方法測試RTL代碼24</p><p>  第5章 測試總

14、結(jié)31</p><p><b>  致謝33</b></p><p><b>  參考文獻(xiàn)34</b></p><p><b>  第 1 章 緒論</b></p><p>  1.1測試方法學(xué)的研究現(xiàn)狀</p><p>  隨著微電子制造加工技

15、術(shù)的發(fā)展, 芯片的集成規(guī)模越來越大, 系統(tǒng)級芯片的集成度早已跨過百萬門級的規(guī)模。另外市場對于電子產(chǎn)品的更新?lián)Q代要求很快, 對于系統(tǒng)級芯片的設(shè)計(jì)周期往往要求能夠縮短至一年以內(nèi)。因此迫切要求提高設(shè)計(jì)的生產(chǎn)效率。而當(dāng)前在芯片的設(shè)計(jì)過程中驗(yàn)證已經(jīng)成為開發(fā)過程中占用人力資源最多, 耗費(fèi)時(shí)間最長的部分。按照以前那樣用手工編寫測試代碼的方法, 只能為小規(guī)模電路的芯片設(shè)計(jì)服務(wù), 只能達(dá)到比較低的測試覆蓋率, 不論從驗(yàn)證的效率, 或是從驗(yàn)證效果方面考慮,

16、 都遠(yuǎn)遠(yuǎn)不能滿足系統(tǒng)級芯片的設(shè)計(jì)要求。</p><p>  隨著集成電路產(chǎn)業(yè)技術(shù)的發(fā)展,芯片的規(guī)模和復(fù)雜度不斷地提高,尤其是系統(tǒng)芯片(SOC)的興起【1】,使得我們能在一個(gè)芯片上集成整個(gè)系統(tǒng)。而這使得芯片的驗(yàn)證工作變得越來越復(fù)雜和困難,驗(yàn)證工作在芯片研發(fā)中所占的比重也越來越大,根據(jù)許多文獻(xiàn)報(bào)道,近年來新推出的SoC 芯片的驗(yàn)證工作量所占用的人力和時(shí)間超過了總資源的70%。</p><p>

17、  為了適應(yīng)這種變化,人們提出了很多新的概念來提高驗(yàn)證工作的效率,包括斷言、受約束的隨機(jī)約束、功能覆蓋率模型等等,通過采用這些機(jī)制,可以大大提高驗(yàn)證的效率和首次流片的成功概率。本文將就這些機(jī)制中的一個(gè)方面,即針對功能覆蓋率的驗(yàn)證過程,做一個(gè)簡要的介紹,以引起國內(nèi)同行的注意。</p><p>  功能覆蓋率簡單地說是一個(gè)比例數(shù)據(jù),指芯片中已驗(yàn)證過的功能占該芯片全部功能的百分比。只有當(dāng)芯片中所有的功能都被驗(yàn)證為正確時(shí)

18、才能保證流片的成功,驗(yàn)證工作的目標(biāo)就是盡量使功能覆蓋率達(dá)到100%。想要提高驗(yàn)證工作的效率,就必須在盡可能短的時(shí)間內(nèi),盡可能多地提高功能覆蓋率。</p><p><b>  1.2測試的意義</b></p><p>  測試驗(yàn)證是數(shù)字集成電路設(shè)計(jì)中一個(gè)非常重要的環(huán)節(jié),一般一個(gè)復(fù)雜的芯片從設(shè)計(jì)到封裝成型,測試將占用百分之七十的時(shí)間。即使投入這么長時(shí)間測試,芯片也不可能1

19、00%的測試通過【2】。因此,一種能花費(fèi)最短時(shí)間,并且能最大限度測試出芯片中設(shè)計(jì)錯(cuò)誤的測試方法對于集成電路設(shè)計(jì)行業(yè)的重要性不言而喻。</p><p>  浮點(diǎn)和定點(diǎn)的功能部件作為處理器中數(shù)據(jù)吞吐量最大的部件【3】,其穩(wěn)定性非常重要。就功能部件本身而言,它會遇到很大數(shù)量的數(shù)據(jù)崩塌點(diǎn)。世界著名的半導(dǎo)體公司Intel就曾今因?yàn)楦↑c(diǎn)部件的錯(cuò)誤沒有測試出來而被大量召回,造成很大損失??梢?,處理器中功能部件是核心,而功能部件

20、的測試,則是這個(gè)核心中的最重要的一個(gè)零件。</p><p>  基于功能覆蓋率的測試方法就是一種可信性比較高的測試方法。不僅提供覆蓋率報(bào)告反映以測試驗(yàn)證的進(jìn)度,也為功能驗(yàn)證的完成提供重要的量化標(biāo)準(zhǔn),保證驗(yàn)證工作的完備性,同時(shí)證明設(shè)計(jì)的正確性與可靠性。</p><p>  1.3本文的主要內(nèi)容</p><p>  本課題主要研究基于功能覆蓋率的處理器運(yùn)算部件驗(yàn)證。功能

21、覆蓋率簡單地說是一個(gè)比例數(shù)據(jù), 指芯片中已驗(yàn)證過的功能占該芯片全部功能的百分比。只有當(dāng)芯片中所有的功能都被驗(yàn)證為正確時(shí)才能保證流片的成功, 驗(yàn)證工作的目標(biāo)就是盡量使功能覆蓋率達(dá)到100%。想要提高驗(yàn)證工作的效率, 就必須在盡可能短的時(shí)間內(nèi), 盡可能多地提高功能覆蓋率。</p><p>  本課題的主要任務(wù)是通過對測試功能部件指令研究與分析,結(jié)合所有的功能部件指令特點(diǎn),完成C-modle和RTL代碼中除了浮點(diǎn)除、浮

22、點(diǎn)乘加以外的所有運(yùn)算功能測試任務(wù)。具體工作包括一下幾點(diǎn):</p><p>  1)C-modle功能部件的基本功能測試。</p><p>  2)C-modle在微處理器中的聯(lián)調(diào)。</p><p>  3)基于仿真軟件RTL代碼的測試。</p><p>  4)用功能覆蓋率的測試方法測試RTL代碼。</p><p>

23、  第2章 測試內(nèi)容的基本介紹</p><p>  2.1 基于Mips指令集的微處理器功能部件的簡單介紹</p><p>  2.1.1 功能部件在微處理器中的位置</p><p>  圖2-1 處理器中功能部件的位置</p><p>  圖2-1為功能部件ALU和FALU在微處理器中的位置。微處理器通過icache從內(nèi)存中取出指令,經(jīng)過

24、譯碼后發(fā)往發(fā)射模塊,發(fā)射模塊從RF中取出操作數(shù),并將指令發(fā)往功能部件單元模塊,功能部件經(jīng)過運(yùn)算后將結(jié)果寫入RF【4】。</p><p>  2.1.2 功能部件實(shí)現(xiàn)功能和內(nèi)部結(jié)構(gòu)</p><p>  功能部件是微處理器中的核心運(yùn)算部件之一,實(shí)現(xiàn)除了浮點(diǎn)除,浮點(diǎn)乘加以外的所有運(yùn)算功能。功能部件的內(nèi)部結(jié)構(gòu)主要分為定點(diǎn)ALU和浮點(diǎn)FALU兩部分。指令集的前八個(gè)模塊復(fù)用為定點(diǎn)ALU模塊,后五個(gè)模塊

25、復(fù)用為浮點(diǎn)FALU模塊,定點(diǎn)ALU和浮點(diǎn)FALU共用一個(gè)入口寄存器和一個(gè)出口寄存器。</p><p>  指令集具體包括以下模塊:</p><p><b>  1.位運(yùn)算模塊</b></p><p><b>  2.固定取位模塊</b></p><p><b>  3.前導(dǎo)零模塊</

26、b></p><p><b>  4.移位模塊</b></p><p><b>  5.加法模塊</b></p><p><b>  6.比較跳轉(zhuǎn)模塊</b></p><p><b>  7.選擇取位模塊</b></p><p&g

27、t;<b>  8.跳轉(zhuǎn)模塊</b></p><p>  9.浮點(diǎn)簡單運(yùn)算模塊</p><p>  10.浮點(diǎn)判斷移位模塊</p><p>  11.定點(diǎn)轉(zhuǎn)浮點(diǎn)模塊</p><p>  12.浮點(diǎn)轉(zhuǎn)定點(diǎn)模塊</p><p><b>  13.浮點(diǎn)比較模塊</b></p&

28、gt;<p>  2.1.3 Mips指令集介紹</p><p>  MIPS是高效精簡指令集計(jì)算機(jī)(RISC)體系結(jié)構(gòu)中最優(yōu)雅的一種【5】;即使連MIPS的競爭對手也這樣認(rèn)為,這可以從MIPS對于后來研制的新型體系結(jié)構(gòu)比如DEC的Alpha和HP的Precision產(chǎn)生的強(qiáng)烈影響看出來。雖然自身的優(yōu)雅設(shè)計(jì)并不能保證在充滿競爭的市場上長盛不衰,但是MIPS微處理器卻經(jīng)常能在處理器的每個(gè)技術(shù)發(fā)展階段保

29、持速度最快的同時(shí)保持設(shè)計(jì)的簡潔。</p><p>  相對的簡潔對于MIPS來說是一種商業(yè)需要,MIPS起源于一個(gè)學(xué)術(shù)研究項(xiàng)目,該項(xiàng)目的設(shè)計(jì)小組連同幾個(gè)半導(dǎo)體廠商合伙人希望能制造出芯片并拿到市場上去賣。結(jié)果是該結(jié)構(gòu)得到了工業(yè)領(lǐng)域內(nèi)最大范圍的具有影響力的制造商們的支持。從生產(chǎn)專用集成電路核心(ASIC Cores)的廠家(LSI Logic,Toshiba, Philips, NEC)到生產(chǎn)低成本微處理器的廠家(N

30、EC, Toshiba,和IDT),從低端64位處理器生產(chǎn)廠家(IDT, NKK, NEC)到高端64位處理器生產(chǎn)廠家(NEC, Toshiba和IDT)。</p><p>  低端的微處理器物理面積只有1.5平方毫米(在SOC系統(tǒng)里面肉眼很難找到).而高端的R10000處理器,第一次投放市場時(shí)可能是世界上最快的微處理器,它的物理面積幾乎有1平方英寸,發(fā)熱近30瓦特.雖然MIPS看起來沒什么優(yōu)勢,但是足夠的銷售量

31、使其能健康發(fā)展:1997年面市的44M的MIPS 微處理器,絕大多數(shù)使用于嵌入式應(yīng)用領(lǐng)域。</p><p>  MIPS 微處理器是一種RISC結(jié)構(gòu)的微處理器【2】, 它產(chǎn)生于一個(gè)特殊的蓬勃發(fā)展的學(xué)術(shù)研究與開發(fā)時(shí)期.RISC(精簡指令集計(jì)算機(jī))是一個(gè)極有吸引力的縮寫名詞,與很多這類名次相似,可能遮掩的真實(shí)含義超過了它所揭示的.但是它的確對于那些在1986到1989年之間投放市場的新型微處理器體系結(jié)構(gòu)提供了一個(gè)有用

32、的標(biāo)識名,這些新型體系結(jié)構(gòu)的非凡的性能主要?dú)w功于幾年前的幾個(gè)具有開創(chuàng)性的研究項(xiàng)目所產(chǎn)生的思想。有人曾說:"任何在1984年以后定義的計(jì)算機(jī)體系結(jié)構(gòu)都是RISC";雖然這是對于工業(yè)領(lǐng)域廣泛使用這個(gè)縮寫名詞的嘲諷,但是這個(gè)說法也的確是真實(shí)的-1984年以后沒有任何一款計(jì)算機(jī)能夠忽視RISC先驅(qū)者們的工作。</p><p>  MIPS的指令格式只有3種:</p><p> 

33、 1、R(register)類型的指令。該類型指令從寄存器堆(register file)中讀取兩個(gè)源操作數(shù),計(jì)算結(jié)果寫回寄存器堆。</p><p>  2、I(immediate)類型的指令。該類型指令使用一個(gè)16位的立即數(shù)作為一個(gè)源操作數(shù)。</p><p>  3、J(jump)類型的指令。該類型指令使用一個(gè)26位的立即數(shù)作為跳轉(zhuǎn)的目標(biāo)地址(target address)。</p

34、><p>  MIPS的指令種類有:</p><p><b>  1、算術(shù)運(yùn)算。</b></p><p><b>  2、邏輯運(yùn)算。</b></p><p><b>  3、數(shù)據(jù)傳送。</b></p><p><b>  4、條件轉(zhuǎn)移。</b

35、></p><p><b>  5、無條件跳轉(zhuǎn)。</b></p><p><b>  6、特殊指令。</b></p><p><b>  7、例外指令。</b></p><p><b>  8、協(xié)處理器指令。</b></p><p

36、>  9、系統(tǒng)控制協(xié)處理器指令。</p><p>  基于功能覆蓋率的處理器運(yùn)算部件測試采用了MIPS精簡指令集(RISC)體系結(jié)構(gòu),改體系結(jié)構(gòu)基于的理論是使用相當(dāng)簡單的指令,結(jié)合優(yōu)秀的編譯器以及采用流水線執(zhí)行指令的硬件,就可以用更少的晶元面積生產(chǎn)更快的處理器。</p><p>  2.2 IEEE-754標(biāo)準(zhǔn)</p><p>  2.2.1 IEEE-754

37、內(nèi)容</p><p>  有IEEE-754標(biāo)準(zhǔn)是IEEE計(jì)算機(jī)科學(xué)標(biāo)準(zhǔn)委員會的微處理器標(biāo)準(zhǔn)小組委員會浮點(diǎn)工作組于1985年制訂的,主要是為便于軟件的移植,給浮點(diǎn)數(shù)數(shù)據(jù)格式的表示、加、減、乘、除等運(yùn)算處理等所作的統(tǒng)一標(biāo)準(zhǔn)【6】,并對于浮點(diǎn)數(shù)一些特殊數(shù)處理、異常處理以及最終結(jié)果的舍入進(jìn)行了明確的規(guī)定。</p><p>  圖2-1-1浮點(diǎn)數(shù)的表示形式</p><p>

38、  圖2-1-1為IEEE754標(biāo)準(zhǔn)表示形式。在表示浮點(diǎn)數(shù)時(shí),每個(gè)浮點(diǎn)數(shù)均由符號位S、指數(shù)部分E、尾數(shù)部分M三部分組成。</p><p>  IEEE-754只定義了四種格式的浮點(diǎn)數(shù)據(jù)類型:單精度、單精度擴(kuò)展、雙精度、擴(kuò)展雙精度格式【7】。</p><p>  IEEE-754對于以下的一些特殊數(shù)據(jù)作了詳細(xì)的規(guī)定:</p><p>  1)NANs(非數(shù))</

39、p><p>  當(dāng)浮點(diǎn)數(shù)的指數(shù)部分全為1且尾數(shù)不全為0時(shí),不論符號位的正負(fù),則為NAN數(shù),即非數(shù)。非數(shù)又分為兩種,一種為SNAN,一種為QNAN。當(dāng)SNAN作為操作數(shù)時(shí),觸發(fā)異常,應(yīng)報(bào)無效操作錯(cuò)誤;當(dāng)QNAN作為操作數(shù)時(shí),不觸發(fā)異常,直接輸出QNAN原數(shù)據(jù),當(dāng)操作數(shù)中出現(xiàn)多個(gè)QNAN數(shù)時(shí),由設(shè)計(jì)者決定優(yōu)先級。SNAN和QNAN的區(qū)別由設(shè)計(jì)者確定。</p><p><b>  2)無窮

40、(∞)</b></p><p>  當(dāng)浮點(diǎn)數(shù)的指數(shù)部分為全1且尾數(shù)為全0時(shí),則為無窮數(shù),其正負(fù)取決于符號位。所有對于無窮的操作都是精確的,且除以下兩種情況外不觸發(fā)任何異常:</p><p>  1、無窮數(shù)是由有限數(shù)據(jù)計(jì)算產(chǎn)生或者是除0操作產(chǎn)生;</p><p>  2、無窮數(shù)作為觸發(fā)無效操作異常的操作數(shù)。</p><p><

41、b>  3)非規(guī)格化數(shù)</b></p><p>  當(dāng)浮點(diǎn)數(shù)的指數(shù)部分為全0且尾數(shù)不為全0時(shí),則為denormal數(shù),即非規(guī)格化數(shù)。以64位雙精度來說,此時(shí)隱含位不再為1而是為0,其</p><p>  已經(jīng)偏移的指數(shù)表示的真值為-1022而不是通常所理解的0-1023=-1023。</p><p><b>  4)0 </b>

42、;</p><p>  當(dāng)浮點(diǎn)數(shù)的指數(shù)和尾數(shù)部分全為0時(shí),則其值為0,符號位決定正負(fù)。所有格式中對正負(fù)0有明顯的區(qū)別,但是符號位只在某些特定的場合有意義,如乘零的時(shí)候,在其他地方則沒有意義。</p><p>  2.2.1 IEEE-754舍入方式和異常情況</p><p>  確定了浮點(diǎn)數(shù)的格式之后,我們最關(guān)心的就是浮點(diǎn)數(shù)的舍入方式及由此帶來的誤差。浮點(diǎn)數(shù)運(yùn)算中,

43、運(yùn)算結(jié)果有可能超出浮點(diǎn)數(shù)所容許的位數(shù),舍入得目的就是使得有效數(shù)據(jù)的尾數(shù)保持在固定位數(shù)范圍內(nèi)。</p><p>  IEEE-754標(biāo)準(zhǔn)規(guī)定了四種舍入模式:</p><p>  1.就近舍入(round to nearest):結(jié)果被舍入成最接近原值的可表示數(shù);如果兩個(gè)值同樣接近原值,那么根據(jù)IEEE-754標(biāo)準(zhǔn),系統(tǒng)應(yīng)該選擇最后一個(gè)有效數(shù)字為“0”的那個(gè)值作為舍入結(jié)果。</p>

44、<p>  2.向上舍入(round toward +∞):結(jié)果被舍入成最接近原值而又大于或等于原值的可表示數(shù)。</p><p>  3.向下舍入(round toward -∞):結(jié)果被舍入成最接近原值而又小于或等于原值的可表示數(shù)。</p><p>  4.向零舍入(round toward 0):結(jié)果被舍入成最接近原值而又絕對值又小于或等于原值的可表示數(shù)。</p&g

45、t;<p>  在各種浮點(diǎn)數(shù)運(yùn)算、操作過程中,當(dāng)出現(xiàn)某些情況時(shí),系統(tǒng)必須通過特定的方式通知用戶,IEEE-754用“異常(exception)”來表示這些情況。</p><p>  IEEE-754定義了五中異常: </p><p>  上溢(Overflow)</p><p>  下溢(Underflow) 由運(yùn)

46、算的結(jié)果所導(dǎo)致</p><p>  不精確(Inexact)</p><p>  無效運(yùn)算(Invalid operation) </p><p>  由參與運(yùn)算的操作數(shù)所導(dǎo)致 </p><p>  除以零(Division by zero) </p><p>  (1) 非法操作例外V</p>

47、<p>  當(dāng)存在非法情況的兩個(gè)操作數(shù)存在于一個(gè)可執(zhí)行的操作中時(shí),則發(fā)出V例外。在浮點(diǎn)除法部件中具體包括:</p><p>  兩個(gè)零相除:(+0)/(-0)、(+0)/(+0)、(-0)/(+0) 、(-0)/(-0) </p><p>  兩個(gè)無窮數(shù)相除:(+∞)/(-∞)、(+∞)/(+∞)、(-∞)/(+∞)、(-∞)/(-∞) </p><p&

48、gt;  對SNAN的所有操作</p><p><b>  (2)不精確例外</b></p><p>  以下任一種情況發(fā)生時(shí)產(chǎn)生不精確例外:</p><p><b>  舍入后結(jié)果上溢;</b></p><p><b>  舍入后結(jié)果非精確;</b></p>&

49、lt;p>  舍入后結(jié)果下溢,而且下溢例外和非精確例外的enable位都不被設(shè)置,而FS比特被設(shè)置。</p><p>  (3)浮點(diǎn)上溢、下溢例外 </p><p>  在舍入的幅度超過了目標(biāo)格式的最大有限值時(shí),輸出結(jié)果會產(chǎn)生上溢異常,此時(shí)該輸出結(jié)果由舍入方式?jīng)Q定。最近偶舍入上溢的結(jié)果設(shè)置為∞;目標(biāo)格式的幅度最大有限值被設(shè)置為零舍入上溢的結(jié)果;負(fù)無窮舍入正上溢則設(shè)置為目標(biāo)格式的最大有

50、限值,負(fù)上溢設(shè)置為負(fù)無窮;正無窮舍入設(shè)置負(fù)上溢為目標(biāo)格式的最大有限值,設(shè)置正上溢為正無窮。</p><p><b>  (4)除以零例外</b></p><p>  當(dāng)除數(shù)為零(包括“+0”和“-0”)而被除數(shù)是有限值時(shí),發(fā)生該例外。在浮點(diǎn)除法部件中具體如:</p><p>  3.0/+0.0=+∞</p><p> 

51、 3.0/-0.0=-∞</p><p>  -3.0/-0.0=+∞</p><p>  2.3 基于功能覆蓋率測試方法學(xué)的簡單介紹</p><p>  功能覆蓋率簡單地說是一個(gè)比例數(shù)據(jù),指芯片中已驗(yàn)證過的功能占該芯片全部功能的百分比【8】。只有當(dāng)芯片中所有的功能都被驗(yàn)證為正確時(shí)才能保證流片的成功,驗(yàn)證工作的目標(biāo)就是盡量使功能覆蓋率達(dá)到100%。想要提高驗(yàn)證工作的

52、效率,就必須在盡可能短的時(shí)間內(nèi),盡可能多地提高功能覆蓋率。</p><p>  功能覆蓋率似乎是一個(gè)較新的概念,但事實(shí)上,傳統(tǒng)的驗(yàn)證過程也使用了功能覆蓋率的概念。為了驗(yàn)證一個(gè)設(shè)計(jì),項(xiàng)目組長必須編寫驗(yàn)證需求文檔(或類似的文檔),以確定需要驗(yàn)證的測試案例。這份文檔最后被歸納為一張表格,表格中的一欄填寫的是所有測試案例的名稱,另一欄是這些測試案例的完成情況。驗(yàn)證工程師的任務(wù)就是要在投片(tape-out)之前把這些的測

53、試案例一個(gè)個(gè)地完成。實(shí)際上,這樣一張表格就是一個(gè)功能覆蓋率模型。</p><p>  傳統(tǒng)的驗(yàn)證過程由于缺少自動地統(tǒng)計(jì)當(dāng)前功能覆蓋率的機(jī)制,大大地限制了它的能力,只能說它使用了初級的功能覆蓋率模型。為了適應(yīng)當(dāng)前的芯片的規(guī)模和復(fù)雜度,我們需要一種新的針對功能覆蓋率的驗(yàn)證過程,在這個(gè)新的驗(yàn)證過程中,對當(dāng)前功能覆蓋率進(jìn)行自動統(tǒng)計(jì)的機(jī)制是必不可少的。</p><p>  圖2-3-1 針對功能覆蓋

54、率的驗(yàn)證過程</p><p>  在如圖2-3-1這個(gè)新的驗(yàn)證過程中,與傳統(tǒng)的驗(yàn)證過程不同的地方在于:它實(shí)現(xiàn)了一個(gè)能夠自動統(tǒng)計(jì)功能覆蓋率的模型。通過該模型,可以方便地得到當(dāng)前的功能覆蓋率,并根據(jù)它調(diào)整驗(yàn)證策略,以盡快地達(dá)到100%功能覆蓋率【9】。</p><p>  功能覆蓋中最常見的是需求覆蓋,其含義是通過設(shè)計(jì)一定的測試用例,要求每個(gè)需求點(diǎn)都被測試到。其公式是需求覆蓋 = (被驗(yàn)證到的

55、需求數(shù)量)/(總的需求數(shù)量)</p><p>  功能覆蓋率是通過仿真器統(tǒng)計(jì)功能覆蓋點(diǎn)的覆蓋情況得到的。它要求驗(yàn)證工程師首先根據(jù)spec定義功能覆蓋點(diǎn),覆蓋點(diǎn)的定義這里不在細(xì)說。</p><p>  功能覆蓋率驗(yàn)證過程。首先說一下功能點(diǎn)。從系統(tǒng)設(shè)計(jì)的角度來看,功能點(diǎn)就是設(shè)計(jì)的某一個(gè)具體功能。在不同的抽象層次上,功能點(diǎn)的含義有較大的區(qū)別。在較高的抽象層次上,功能點(diǎn)可以是系統(tǒng)的某一項(xiàng)功能;而在

56、較低的抽象層次上,功能點(diǎn)可以僅僅是設(shè)計(jì)中的某個(gè)信號的改變(例如:微處理器內(nèi)部某個(gè)通用寄存器值的改變)。從設(shè)計(jì)驗(yàn)證的角度來看,功能點(diǎn)就是我們?yōu)榱俗C明設(shè)計(jì)的正確性,而構(gòu)造的一個(gè)個(gè)能正確執(zhí)行的測試用例。因而功能點(diǎn)的含義包含兩個(gè)方面:一是測試用例,二是正確性。</p><p>  圖2-3-2 功能點(diǎn)的含義</p><p>  圖2-3-2說明了功能點(diǎn)的含義。我們把不同的測試用例定義為縱向功能線,

57、正確性檢查的條件定義為橫向功能線。功能點(diǎn)就是縱向功能線和橫向功能線的交點(diǎn)。</p><p>  如果我們能找到完備的測試用例,并且能證明設(shè)計(jì)執(zhí)行每個(gè)測試用例都是正確的,我們就可以確認(rèn)我們的設(shè)計(jì)是正確的。當(dāng)然這是功能驗(yàn)證的理想情況,設(shè)計(jì)驗(yàn)證要做的就是如何找出完備的測試用例和如何定義充要的正確性條件。</p><p>  根據(jù)前面對功能點(diǎn)的說明,驗(yàn)證的過程可以分為兩步:一是構(gòu)造能夠體現(xiàn)設(shè)計(jì)功能

58、的測試用例;二是定義設(shè)計(jì)的正確性條件。定義好測試用例和正確性條件以后,我們就可以搭建驗(yàn)證平臺(Testbench),對設(shè)計(jì)進(jìn)行仿真了。仿真的結(jié)果是不是達(dá)到了我們預(yù)期的目標(biāo)了呢?這就需要通過某種手段來分析。功能覆蓋率就是用來分析仿真結(jié)果的一種手段。功能覆蓋率包含兩方面的內(nèi)容:一是測試用例的覆蓋率,二是正確性條件的覆蓋率。在仿真完成后,感興趣的測試條件是不是都被構(gòu)造出來了?定義的正確性條件是不是都得到滿足?這些都可以通過功能覆蓋率體現(xiàn)出來。

59、</p><p>  功能覆蓋率在這種策略中的作用就是指出哪些功能點(diǎn)已經(jīng)覆蓋到,哪些還沒有覆蓋到,從而對構(gòu)造新的測試用例作出指導(dǎo)。從分析覆蓋率到生成新的測試用例,這個(gè)過程可以由人手工完成,也可以由驗(yàn)證環(huán)境自動完成:前者節(jié)省機(jī)器的仿真時(shí)間,后者節(jié)省人的編碼的時(shí)間。</p><p>  第3章 微處理器功能部件參考模型(C-modle)的測試</p><p>  3.1

60、 微處理器 refercence modle---C-modle的簡單介紹</p><p>  C-modle是個(gè)reference modle,即參照模型。即用C語言(高級語言)寫的一個(gè)微處理器的模型【10】,由于C語言是高級語言,具有以下特點(diǎn):</p><p>  1. 簡潔緊湊、靈活方便 </p><p><b>  2. 運(yùn)算符豐富 </b&

61、gt;</p><p>  3. 數(shù)據(jù)結(jié)構(gòu)豐富 </p><p>  4. C是結(jié)構(gòu)式語言 </p><p>  5. C語法限制不太嚴(yán)格、程序設(shè)計(jì)自由度大 </p><p>  6. C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作 </p><p>  7. C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高 </p

62、><p>  8. C語言適用范圍大,可移植性好 </p><p>  調(diào)試C-modle的目的就是保證其正確性,由于C-modle的正確性和可信度都遠(yuǎn)遠(yuǎn)高于RTL代碼。因此,用這個(gè)模型做RTL的比對模型,會減少RTL調(diào)試時(shí)的困難。</p><p>  3.2 C-modle功能部件的基本功能測試</p><p>  C-modle功能部件的基本

63、功能測試對象為MIPS指令集中的每條指令在C-modle中都是單獨(dú)用一個(gè)函數(shù)實(shí)現(xiàn)的,然后將這些指令打包成一些有特定功能的模塊,這些不同功能的模塊就組合成了整個(gè)ALU部件,C-modle功能部件的基本功能測試的測試對象就是針對每條指令的這個(gè)函數(shù)來測試的。</p><p>  C-modle功能部件的基本功能測試過程先從*.c文件中取出要測試指令模塊,根據(jù)指令需求寫C語言測試激勵(lì)和輸出語句。然后用gcc編譯工具在測

64、試平臺上采用相關(guān)命令將測試激勵(lì)編譯生成*.txt的可執(zhí)行文件,輸入測試激勵(lì),再運(yùn)行此文件,進(jìn)行相關(guān)測試。最后,將得到測試指令模塊的測試結(jié)果與預(yù)期的結(jié)果進(jìn)行對比,來驗(yàn)證模塊功能的完備性【11】。</p><p>  C-modle功能部件的基本功能測試結(jié)果用位運(yùn)算模塊NOR指令為例具體分析。</p><p>  圖3-2-1 提取測試指令模塊</p><p>  圖3

65、-2-2 修改代碼</p><p>  圖3-2-3 測試結(jié)果</p><p>  該測試過程可分為六步:</p><p>  第一步,如圖3-2-1所示,從*.c文件中取出要測試指令模塊。</p><p>  第二步,如圖3-2-2所示,根據(jù)指令需求修改C語言代碼,編寫測試激勵(lì)和輸出語句。</p><p>  第三步

66、,用gcc編譯工具在測試平臺上采用相關(guān)命令將測試激勵(lì)編譯生成*.txt的可執(zhí)行文件,輸入測試激勵(lì),再運(yùn)行此文件。</p><p>  第四步,如圖3-2-3所示,賦值分別為212990和2109128。</p><p>  測試結(jié)果為-229376。手算同或結(jié)果為-229376。</p><p>  測試指令模塊的測試結(jié)果與預(yù)期的結(jié)果相同,則該模塊測試通過。<

67、/p><p>  在C-modle功能部件的基本功能的測試期間,我對精簡Mips指令集中13個(gè)模塊中的近200多條指令進(jìn)行了測試。但由于時(shí)間的限制,針對每個(gè)小的指令模塊僅賦值一個(gè)輸入需求進(jìn)行測試,所以達(dá)到的覆蓋情況一般。但是C-modle功能部件的基本功能測試的工作量仍然較大,測試過程中出現(xiàn)的問題較多,基本可歸結(jié)為指令模塊結(jié)構(gòu)錯(cuò)誤。通過對C-modle功能部件的基本功能的測試,也為之后C-modle在微處理器中聯(lián)調(diào)測

68、試打下了堅(jiān)實(shí)的基礎(chǔ)。達(dá)到了C-modle功能部件的基本功能的測試的目的。</p><p>  3.3 C-modle在微處理器中聯(lián)調(diào)</p><p>  C-modle在微處理器中聯(lián)調(diào)測試對象是將Mips指令集中所有指令打包成一些特定功能的模塊,這些不同功能的模塊組合成為一個(gè)整個(gè)的ALU部件,ALU部件在C-modle中用不同函數(shù)實(shí)現(xiàn)其功能。C-modle功能部件在微處理器中聯(lián)調(diào)就是針對所

69、有指令對應(yīng)的函數(shù)來測試的。</p><p>  C-modle在微處理器中聯(lián)調(diào)測試首先,讀測試需求的文檔,用嵌入式匯編編寫測試C代碼。嵌入式匯編就是將匯編語言嵌入C語言中,嵌入式的那段匯編就是要測試的指令序列,這樣做的好處是指令序列可控,這里的匯編就是Mips指令隊(duì)列。其次,將寫好的嵌入式匯編代碼反匯編成Mips指令隊(duì)列。將Mips指令的隊(duì)列的編碼寫入虛擬內(nèi)存中。將指令加入C-modle的虛擬內(nèi)存,運(yùn)行這個(gè)mod

70、le。再用GDB單步調(diào)試C-modle,并觀察結(jié)果,并與預(yù)期結(jié)果比對。如果有錯(cuò)誤,對錯(cuò)誤進(jìn)行定位查找,并將錯(cuò)誤反饋【12】。</p><p>  C-modle在微處理器中聯(lián)調(diào)測試結(jié)果以ADDIU為例具體分析其測試過程及結(jié)果。</p><p>  圖3-3-1 反匯編代碼寫入虛擬內(nèi)存</p><p>  圖3-3-2 GDB中設(shè)置斷點(diǎn)和觀察點(diǎn)</p>

71、<p>  圖3-3-3 入口寄存器數(shù)據(jù)流觀察</p><p>  圖3-3-4 出口寄存器數(shù)據(jù)流觀察</p><p>  圖3-3-5 數(shù)據(jù)寫回結(jié)果</p><p>  該測試過程可分為六步:</p><p>  第一步,先根據(jù)測試需求的文檔,用嵌入式匯編編寫測試C代碼。</p><p>  第二步,將寫好

72、的嵌入式匯編代碼反匯編成Mips指令隊(duì)列。</p><p>  第三步,如圖3-3-1將Mips指令的隊(duì)列的編碼寫入其虛擬內(nèi)存中的過程。由于片外存儲器DDR不包含在代碼中,故需要用一個(gè)結(jié)構(gòu)體組模擬這個(gè)內(nèi)存空間。將指令隊(duì)列賦值給這個(gè)數(shù)組后,讓微處理器從這個(gè)數(shù)組拿數(shù)據(jù)就模擬了微處理器從內(nèi)存中取數(shù)的行為。</p><p>  第四步,將指令加入C-modle的虛擬內(nèi)存,運(yùn)行這個(gè)modle。<

73、;/p><p>  第五步,如圖3-3-2在GDB中設(shè)置斷點(diǎn)為196行和165行,觀察點(diǎn)分別為fu_in_reg[0],fu_out_reg[0],pc_reg,lw_id。</p><p>  第六步,用GDB單步調(diào)試C-modle【13】。如圖3-3-3和圖3-3-4所示,觀察入口寄存器數(shù)據(jù):</p><p>  fu_in_reg[0]= [value1=(ui=

74、0),valulue2=(ui=4294967000)]</p><p><b>  出口寄存器數(shù)據(jù):</b></p><p>  fu_out_reg[0]= [result=(ui=4294967000)]</p><p>  如圖3-3-5所示,數(shù)據(jù)寫回結(jié)果:</p><p>  Rf_reg[29]=[data=

75、(li=4294967000)]</p><p>  測試結(jié)果與預(yù)期結(jié)果進(jìn)行比對相同,說明該指令模塊發(fā)射成功并通過。</p><p>  C-modle在微處理器中聯(lián)調(diào)測試期間,我對精簡Mips指令集中加法模塊、定點(diǎn)轉(zhuǎn)浮點(diǎn)模塊和浮點(diǎn)轉(zhuǎn)定點(diǎn)模塊進(jìn)行了測試。測試過程中出現(xiàn)的問題較多,基本可歸結(jié)為指令模塊結(jié)構(gòu)錯(cuò)誤。由于時(shí)間和當(dāng)前測試能力的限制,僅僅測試了十三個(gè)模塊中的三個(gè)模塊,但是基本達(dá)到了C-

76、modle在微處理器聯(lián)調(diào)測試的目的。</p><p>  第4章 微處理器的RTL代碼測試</p><p>  4.1 RTL代碼的基本測試</p><p>  RTL代碼的基本測試的對象是MIPS指令集中的每條指令在VCS仿真軟件中都是單獨(dú)用一個(gè)函數(shù)實(shí)現(xiàn)的,然后將這些指令打包成一些有特定功能的模塊,這些不同功能的模塊就組合成了整個(gè)ALU部件,RTL代碼的基本功能測

77、試的測試對象就是針對每條指令的這個(gè)函數(shù)用VCS仿真軟件來測試的。</p><p>  RTL代碼的基本測試的過程是先編寫test_bench,即編寫測試RTL的激勵(lì)文件。然后單獨(dú)運(yùn)行功能部件的模塊。應(yīng)用VCS仿真軟件,在圖形化界面下查看結(jié)果,并與用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果進(jìn)行比對,結(jié)果一致這測試模塊正確可通過,不一致則說明該模塊存在問題【14】。</p><p>  RTL代碼的基

78、本測試結(jié)果用一個(gè)測試出錯(cuò)誤和一個(gè)測試驗(yàn)證正確的兩條指令為例具體分析,兩條指令分別是位運(yùn)算模塊NOR指令和固定取位模塊DSBH指令。</p><p>  圖4-1-1 位運(yùn)算模塊NOR指令在VCS仿真軟件中測試波形</p><p>  在位運(yùn)算模塊測試中,測出多處錯(cuò)誤。以NOR指令模塊測試為例,如圖4-1-1可知,輸入賦值分別是:</p><p>  fu_in_va

79、lue1輸入十六進(jìn)制數(shù)為000000000b42abc3</p><p>  fu_in_value2輸入十六進(jìn)制數(shù)為000000000000f0f3</p><p><b>  波形圖輸出結(jié)果:</b></p><p>  fu_out_result 輸出十六進(jìn)制數(shù)為fffffffff4bd020c</p><p>

80、  應(yīng)用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果為fffffffff4bda2cf</p><p>  VCS仿真軟件輸出結(jié)果與用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果不一致,說明該模塊存在問題。</p><p>  圖4-1-2 固定取位模塊DSBH指令在VCS仿真軟件中測試波形</p><p>  在固定取位模塊測試中,同樣測出存在錯(cuò)誤,但DSBH指令模塊測試正確可通過。&l

81、t;/p><p>  如圖4-1-2可知,輸入賦值:</p><p>  fu_in_value1輸入十六進(jìn)制數(shù)為0c1ef701f00f0801</p><p><b>  波形圖輸出結(jié)果:</b></p><p>  fu_out_result 輸出十六進(jìn)制數(shù)為1e0c01f70ff00108</p>&

82、lt;p>  應(yīng)用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果為1e0c01f70ff00108</p><p>  VCS仿真軟件輸出結(jié)果與用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果一致,說明該模塊測試正確可以通過。</p><p>  對基于VCS仿真軟件RTL代碼的測試過程,我主要對位運(yùn)算模塊AND、OR、NOR、XOR四個(gè)指令模塊,固定取位模塊LUI、SEB、SEH、WBSH、DSHD、DSBH

83、六個(gè)指令模塊,前導(dǎo)零模塊CLZ、CLO、DCLZ、DCLO四個(gè)指令模塊,移位模塊SLL、SRL、SRA、ROTR、DSLL、DSRL、DSRA、DROTR、DSLL32、DSRL32、DSRA32十一個(gè)指令模塊進(jìn)行測試。其中每個(gè)指令模塊賦值一個(gè)需求輸入,將輸測試RTL激勵(lì)文件寫入test-bench中,單獨(dú)運(yùn)行功能部件的指令模塊代碼,用VCS仿真軟件,輸入指定數(shù)據(jù),在圖形化界面下查看結(jié)果,并與用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果進(jìn)行比對,

84、結(jié)果一致這測試模塊正確可通過,不一致則說明該模塊存在問題。對所進(jìn)行的二十五個(gè)指令模塊測試中,共發(fā)現(xiàn)十一處錯(cuò)誤。達(dá)到了測試目的,完成了RTL代碼基本測試工作任務(wù)。</p><p>  4.2 用功能覆蓋率的測試方法測試RTL代碼</p><p>  用功能覆蓋率的測試方法學(xué)測試RTL代碼的測試對象是ALU和FALU功能模塊,RTL代碼的實(shí)現(xiàn)是基于C-modle的,其基本功能已在4.1節(jié)中驗(yàn)證

85、通過。為了驗(yàn)證ALU和FALU相應(yīng)模塊的功能完備性,需用功能覆蓋率的方法驗(yàn)證ALU和FALU相應(yīng)模塊的邊角情況。</p><p>  用功能覆蓋率的測試方法學(xué)測試RTL代碼的測試過程是先讀取測試需求數(shù)據(jù)文檔,用嵌入式匯編編寫測試C語言代碼。其次,將寫好的嵌入式匯編代碼反匯編成MIPS指令隊(duì)列,將MIPS指令的隊(duì)列的編碼寫入虛擬內(nèi)存中。然后,用system verilog編寫覆蓋率代碼,并插入RTL代碼,將這些代碼

86、加入RTL中之后,就相當(dāng)于加入很多觀察點(diǎn),這些觀察點(diǎn)會在將來的覆蓋報(bào)告中讀出其覆蓋信息。最后,將.v文件生成功能覆蓋報(bào)告,讀取覆蓋點(diǎn)的覆蓋信息,看是否功能覆蓋100%【15】。</p><p>  對于用功能覆蓋率的測試方法測試RTL代碼,我的主要工作是學(xué)習(xí)用system verilog編寫覆蓋率代碼。由于C-modle和RTL比對平臺還不夠完善,以及時(shí)間及能力有限,只做了功能覆蓋率組的代碼實(shí)現(xiàn),并沒有在基于功能

87、覆蓋率的測試平臺上做測試。此模塊批量測試任務(wù)后續(xù)進(jìn)行,但測試過程已經(jīng)掌握。</p><p>  以在ce信號的上升沿對覆蓋點(diǎn)進(jìn)行采樣為例,對用system verilog編寫代碼及覆蓋報(bào)告生成過程具體分析介紹。</p><p><b>  測試需求文檔為:</b></p><p>  覆蓋點(diǎn):addr、datai、datao、we。</p

88、><p>  1. addr為存數(shù)據(jù)或取數(shù)據(jù)的地址,位寬為8,值為0-255。通道可劃分為3個(gè)通道:0-50、51-150、151-255。</p><p>  2. we為讀寫使能信號,1位寬,為0時(shí)代表讀,為1時(shí)代表寫。那么可劃分為兩個(gè)通道,分別為讀和寫。</p><p>  3. 交叉覆蓋addr和we的通道。</p><p>  4. d

89、atai為要寫的數(shù)據(jù),8位寬,值為0-255。劃分為256個(gè)通道。</p><p>  圖4-2-1 將system verilog編寫代碼程序放入.v文件</p><p>  圖4-2-1是根據(jù)測試需求文檔要求,運(yùn)用system verilog所編寫的測試程序,使程序滿足每個(gè)覆蓋點(diǎn)的需求,能在工作站中正常運(yùn)行,并將該程序復(fù)制放入example.v文件中。</p><p

90、>  圖4-2-2 編譯步驟</p><p>  圖4-2-3 編譯步驟</p><p>  圖4-2-4 編譯步驟</p><p>  圖4-2-5 編譯步驟</p><p>  用system verilog編寫覆蓋代碼后,編譯*.v文件生成功能覆蓋報(bào)告的過程分四步【15】。</p><p>  第一步,如圖

91、4-2-2顯示為所輸入的編譯指令過程,作用是編譯*.v文件,生成simv可執(zhí)行文件;</p><p>  第二步,如圖4-2-3顯示為輸入的編譯指令過程,及該程序在VCS軟件中可正常運(yùn)行,作用是運(yùn)行simv可執(zhí)行文件,生成simv.vdb文件夾;</p><p>  第三步,如圖4-2-4顯示為所輸入的編譯指令過程,作用是在simv.vdb文件夾生成text報(bào)告數(shù)據(jù)文件;</p>

92、;<p>  第四步,如圖4-2-5顯示為打開text文件中g(shù)rpinfo.txt文件查看覆蓋率報(bào)告。</p><p>  圖4-2-6 覆蓋率報(bào)告</p><p>  圖4-2-6所顯示的為在ce信號的上升沿對覆蓋點(diǎn)進(jìn)行采樣結(jié)果,即覆蓋點(diǎn)的詳細(xì)覆蓋率??梢钥闯稣w覆蓋率為41.86%,覆蓋點(diǎn)we有2個(gè)測試通道,覆蓋到2個(gè)通道,覆蓋率為100%;覆蓋點(diǎn)addr有3個(gè)測試通道,

93、2個(gè)測試通道沒有覆蓋,覆蓋到1個(gè)測試通道,覆蓋率為33.33%;覆蓋點(diǎn)datai有256個(gè)通道,其中有254個(gè)通道沒有被覆蓋,只覆蓋到2個(gè)通道,所以覆蓋率僅有0.78%。還可以看到三個(gè)覆蓋點(diǎn)匯總統(tǒng)計(jì)為Variables,總結(jié)有261個(gè)通道,其中256個(gè)通道沒有覆蓋,覆蓋了5個(gè)通道,平均覆蓋率為44.70%。交叉覆蓋點(diǎn)addr1有6個(gè)通道,覆蓋到2個(gè)通道,4個(gè)通道沒有被覆蓋,覆蓋率為33.33%。因?yàn)榻徊娓采w點(diǎn)只有一個(gè),所以匯總統(tǒng)計(jì)結(jié)果C

94、rosses同覆蓋點(diǎn)addr1的覆蓋率相同【16】。</p><p><b>  第5章 測試總結(jié) </b></p><p>  通過對測試功能部件指令研究與分析,結(jié)合所有的功能部件指令特點(diǎn),選擇合適的方法與工具,完成處理器運(yùn)算部件測試。該測試過程在system verilog平臺環(huán)境下,應(yīng)用gcc編譯工具和GDB調(diào)試工具測試C-modle,以及應(yīng)用Vcs仿真軟件測試

95、RTL代碼,完成C-modle和RTL代碼中除了浮點(diǎn)除、浮點(diǎn)乘加以外的所有運(yùn)算功能測試任務(wù)。</p><p>  本文進(jìn)行的主要工作有:</p><p>  1)C-modle功能部件的基本功能測試</p><p>  首先,從.c文件中取出要測試指令模塊,在代碼中編寫測試激勵(lì)和輸出語句,然后然后用gcc編譯工具將此編譯成可執(zhí)行文件,輸入測試激勵(lì),運(yùn)行該文件,得到測

96、試指令模塊的測試結(jié)果,將該結(jié)果與手算的結(jié)果進(jìn)行對比,如果不相符則報(bào)錯(cuò)。</p><p>  2)C-modle在微處理器中的聯(lián)調(diào)</p><p>  首先,讀取測試需求數(shù)據(jù)文檔,用嵌入式匯編編寫測試C語言代碼。其次,將寫好的嵌入式匯編代碼反匯編成MIPS指令隊(duì)列,將MIPS指令的隊(duì)列的編碼寫入虛擬內(nèi)存中,指令加入C-modle的虛擬內(nèi)存,運(yùn)行這個(gè)modle。在用GDB單步調(diào)試C-modle

97、,并觀察結(jié)果,并與預(yù)期結(jié)果對比,如果有錯(cuò)誤,對錯(cuò)誤進(jìn)行定位查找,并將錯(cuò)誤反饋。</p><p>  3)基于仿真軟件RTL代碼的測試</p><p>  首先編寫test_bench,即編寫測試RTL的激勵(lì)文件。將測試所需的激勵(lì)數(shù)據(jù)寫入test_bench,然后單獨(dú)運(yùn)行功能部件的模塊。應(yīng)用VCS仿真軟件,輸入指定數(shù)據(jù),在圖形化界面下查看結(jié)果,并與用IEEE-754標(biāo)準(zhǔn)手算輸出結(jié)果進(jìn)行比對,

98、結(jié)果一致這測試模塊正確可通過,不一致則說明該模塊存在問題。</p><p>  4)用功能覆蓋率的測試方法測試RTL代碼</p><p>  首先,讀取測試需求數(shù)據(jù)文檔,用嵌入式匯編編寫測試C語言代碼。其次,將寫好的嵌入式匯編代碼反匯編成MIPS指令隊(duì)列,將MIPS指令的隊(duì)列的編碼寫入虛擬內(nèi)存中。然后,用system verilog編寫覆蓋率代碼,并插入RTL代碼,將這些代碼加入RTL中

99、之后,就相當(dāng)于加入很多觀察點(diǎn)。最后,將.v文件生成功能覆蓋報(bào)告,讀取覆蓋報(bào)告中覆蓋信息,看是否功能覆蓋100%。</p><p><b>  致謝</b></p><p>  本論文是在余老師的精心指導(dǎo)下完成的。余老師認(rèn)真指導(dǎo),多方面支持,給出了許多很好的意見。在畢業(yè)設(shè)計(jì)過程中,是您的細(xì)心指導(dǎo)和關(guān)懷,使我能夠順利的完成畢業(yè)設(shè)計(jì)。在我的學(xué)業(yè)和畢設(shè)的工作中無不傾注著老師們

100、辛勤的汗水和心血。您的嚴(yán)謹(jǐn)治學(xué)態(tài)度、淵博的知識、無私的奉獻(xiàn)精神使我深受啟迪。從尊敬的余老師身上,我不僅學(xué)到了扎實(shí)、寬廣的專業(yè)知識,也學(xué)到了做人的道理。您的嚴(yán)格,讓我學(xué)會了做人;您的關(guān)懷,使我不斷成長。在此我要向她致以最衷心的感謝和深深的敬意。</p><p>  感謝賈文華學(xué)長在我論文過程為我答疑解惑,他一絲不茍的工作作風(fēng),豐富的實(shí)踐經(jīng)驗(yàn)都給我留下了深深的印象,對我今后的工作和學(xué)習(xí)產(chǎn)生了深厚的影響。</p&

101、gt;<p>  在畢業(yè)設(shè)計(jì)過程中,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學(xué)。與此同時(shí),還得到509和707教研室的學(xué)長們大力支持與幫助。在此一并表示感謝!</p><p><b>  參考文獻(xiàn) </b></p><p>  SoC Level Verification using

102、 System Verilog[J].Purvi D. Mulani. Lecturer, EC Dept, Charotar Institute of Technology, Changa.2008</p><p>  雷紹充,邵志標(biāo),梁峰. VLSI測試方法學(xué)和可測試性設(shè)計(jì)[M].北京:電子工業(yè)出版社,2005年1月</p><p>  羅渂. 高性能浮點(diǎn)處理單元的研究與設(shè)計(jì)[D] ,

103、西北工業(yè)大學(xué)博士論文,2004</p><p>  David Money Harris Sarah L.Harris. 數(shù)字設(shè)計(jì)和計(jì)算機(jī)體系結(jié)構(gòu)[M].北京:機(jī)械工業(yè)出版社,2009年5月</p><p>  李鵬,鮑崢,石洋. MIPS體系結(jié)構(gòu)透視[M].北京:機(jī)械工業(yè)出版社,2008年5月</p><p>  Prof. W. Kahan. IEEE Stan

104、dard 754 for Binary Floating-Point[P] Arithmetic. Elect. Eng. & Computer Science.University of California Berkeley CA 94720-1776</p><p>  何立強(qiáng). IEEE754標(biāo)準(zhǔn)浮點(diǎn)測試向量的生成[J].中國科學(xué)院計(jì)算技術(shù)研究所,2004年10月</p>&l

105、t;p>  徐盛. 覆蓋率導(dǎo)向的驗(yàn)證方法的研究與實(shí)現(xiàn)[D].同濟(jì)大學(xué)碩士論文</p><p>  張蓓莉. 微處理器基于功能覆蓋率的偽隨機(jī)驗(yàn)證方法[J]. 國家高性能集成電路(上海)設(shè)計(jì)中心</p><p>  譚浩強(qiáng). C語言設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005年11月</p><p>  黃永勤,朱英,巨鵬錦,吳志勇,陳誠. 申威-1號高性能微處理器

106、的功能驗(yàn)證[Z],國家高性能集成電路(上海)設(shè)計(jì)中心</p><p>  王俊,文延華,漆鋒濱. 計(jì)算機(jī)浮點(diǎn)功能測試方法[Z]. 江南計(jì)算技術(shù)研究所,2006年6月</p><p>  張健. GDB簡明教程[M]. 加拿大達(dá)內(nèi)科技有限公,2004</p><p>  范長永. 32位RISC微處理器模塊設(shè)計(jì)[C],2003</p><p>

107、  閆沫,張媛. 基于SystemVerilog語言的設(shè)計(jì)驗(yàn)證技術(shù)[J].現(xiàn)代電子技術(shù),2007年第6期</p><p>  維加亞拉哈文. System Verilog Assertions應(yīng)用指南[M].北京:清華大學(xué)出版社,2006</p><p>  李揚(yáng). 高性能面積敏感浮點(diǎn)乘加部件設(shè)計(jì)及可信性測試體系[D]. 微電子與固體電子學(xué),2010</p><p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論