劉 婧,王天成,王 健,3,李華偉
(1.湘潭大學(xué)信息工程學(xué)院,湖南 湘潭411105;2.中國(guó)科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京100190;3.中國(guó)科學(xué)院大學(xué),北京100049)
基于指令模板的通用處理器約束隨機(jī)指令生成方法
劉 婧1,王天成2,王 健2,3,李華偉2
(1.湘潭大學(xué)信息工程學(xué)院,湖南 湘潭411105;2.中國(guó)科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京100190;3.中國(guó)科學(xué)院大學(xué),北京100049)
隨著集成電路設(shè)計(jì)的復(fù)雜度越來(lái)越高,功能驗(yàn)證成為設(shè)計(jì)流程中的瓶頸。而通用處理器是集成電路中功能最為復(fù)雜的設(shè)計(jì)之一,對(duì)其功能驗(yàn)證提出更高要求。為此,給出一種約束隨機(jī)指令生成方法,對(duì)ARM v8處理器進(jìn)行模擬驗(yàn)證。從指令集中提取指令模板,用指令模板生成合法的ARM v8指令,通過(guò)調(diào)整約束支持各種功能場(chǎng)景的驗(yàn)證?;诮Y(jié)果自動(dòng)比對(duì)的驗(yàn)證環(huán)境,對(duì)處理器進(jìn)行充分驗(yàn)證,發(fā)現(xiàn)58處設(shè)計(jì)錯(cuò)誤,可用在后續(xù)的FPGA硬件仿真中。驗(yàn)證結(jié)果表明,該方法可得到90%的結(jié)構(gòu)覆蓋率。
功能驗(yàn)證;通用處理器;指令模板;指令生成;約束隨機(jī)指令
DO I:10.3969/j.issn.1000-3428.2015.10.058
隨著現(xiàn)代集成電路工藝的不斷發(fā)展,芯片規(guī)模越來(lái)越大,復(fù)雜度越來(lái)越高。特別是在通用處理器領(lǐng)域,處理器的設(shè)計(jì)日趨復(fù)雜,功能驗(yàn)證已經(jīng)成為設(shè)計(jì)流程中的瓶頸[1]。目前常用的功能驗(yàn)證方法有模擬驗(yàn)證和形式化驗(yàn)證。模擬驗(yàn)證通過(guò)生成驗(yàn)證激勵(lì)分別施加于處理器設(shè)計(jì)和參考模型,通過(guò)將得到的模擬結(jié)果與參考結(jié)果進(jìn)行對(duì)比,從而發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤。形式化驗(yàn)證通過(guò)數(shù)學(xué)的方法證明被驗(yàn)證系統(tǒng)滿足設(shè)計(jì)規(guī)范。形式化驗(yàn)證存在狀態(tài)空間爆炸的問(wèn)題只能處理較小的設(shè)計(jì)規(guī)模[2],現(xiàn)在工業(yè)界主流的功能驗(yàn)證方法還是模擬驗(yàn)證。
對(duì)于模擬驗(yàn)證,得到高效的測(cè)試激勵(lì)成為研究熱
點(diǎn)。國(guó)內(nèi)外很多研究機(jī)構(gòu)也都在這個(gè)方面提出了眾多的解決方法并開發(fā)相應(yīng)的工具[3]。IBM HAIFA研究中心研發(fā)的Genesys-Pro[4],為基于模型的隨機(jī)程序生成器。加州大學(xué)歐文分校的學(xué)者提出一種體系結(jié)構(gòu)描述語(yǔ)言驅(qū)動(dòng)的驗(yàn)證激勵(lì)生成方法[5],該方法針對(duì)流水線處理器的驗(yàn)證。中國(guó)科學(xué)院計(jì)算技術(shù)研究所龍芯驗(yàn)證組提出了一種可配置隨機(jī)測(cè)試程序生成器(Configurable Random test Program Generator,CRPG)[6],它包含配置規(guī)范模型、參考指令集仿真器測(cè)試生成模型以及驗(yàn)證環(huán)境4個(gè)基本組件。國(guó)防科技大學(xué)提出了一種由體系結(jié)構(gòu)描述驅(qū)動(dòng)的基于約束求解的微處理器體系結(jié)構(gòu)級(jí)測(cè)試程序自動(dòng)生成的方法,并基于此開發(fā)了原型系統(tǒng)——MA2TG[7]。對(duì)于難達(dá)狀態(tài)的覆蓋,中國(guó)科學(xué)院計(jì)算技術(shù)研究所集成電路實(shí)驗(yàn)室研究了半形式化驗(yàn)證方法。先后提出了通過(guò)路徑約束引導(dǎo)驗(yàn)證激勵(lì)生成到達(dá)難達(dá)狀態(tài)的方法[8]和通過(guò)抽象引導(dǎo)生成驗(yàn)證激勵(lì)到達(dá)難達(dá)狀態(tài)的方法[9]。
本文提出一種基于指令模板的通用處理器約束隨機(jī)指令生成方法。該方法基于ARM v8指令集構(gòu)建指令模板,編寫合法性約束,指導(dǎo)生成合法的指令序列。在此基礎(chǔ)上通過(guò)約束的調(diào)整可以生成針對(duì)特定場(chǎng)景的指令序列。
本文驗(yàn)證的對(duì)象為一款基于ARM v8指令集的通用處理器核的設(shè)計(jì),其結(jié)構(gòu)如圖1所示。
圖1 ARM v8整體結(jié)構(gòu)
該處理器特性如下:
(1)處理器采用12級(jí)流水結(jié)構(gòu)。
(2)處理器支持四線程。
(3)處理器主要部件包括取指單元(IFU)、Instruction Buff(IB)、取指分發(fā)單元(IFU)、指令譯碼單元(DC)、運(yùn)算邏輯單元(ALU)、浮點(diǎn)運(yùn)算單元(FPU)、存儲(chǔ)單元(LSU)。
(4)處理器包含4個(gè)通用寄存器堆和浮點(diǎn)寄存器堆,對(duì)應(yīng)4個(gè)線程。
(5)處理器采用32位簡(jiǎn)單指令集結(jié)構(gòu),共支持指令220條。
(6)處理器集成了16 KB一級(jí)I-Cache和16 KB一級(jí)D-Cache,同時(shí)通過(guò)interface連接128 KB二級(jí)Cache。
如上所述,待驗(yàn)證處理器結(jié)構(gòu)復(fù)雜,指令集龐大,即驗(yàn)證向量空間大,使得用手寫激勵(lì)覆蓋所有的功能點(diǎn)實(shí)現(xiàn)困難。本文提取處理器功能點(diǎn),采用約束隨機(jī)的方法自動(dòng)生成大量的合法指令覆蓋這些功能點(diǎn)的方法對(duì)待驗(yàn)證處理器進(jìn)行驗(yàn)證。
3.1 驗(yàn)證框架
本文提出一種基于指令模板的約束隨機(jī)指令生成方法,并使用System Verilog語(yǔ)言實(shí)現(xiàn)了指令生成平臺(tái)。采用模擬驗(yàn)證的方法,搭建驗(yàn)證平臺(tái)對(duì)一款A(yù)RM v8處理器進(jìn)行了驗(yàn)證。整個(gè)驗(yàn)證框架結(jié)構(gòu)如圖2所示。
圖2 約束隨機(jī)指令生成的驗(yàn)證框架
通過(guò)指令生成得到的驗(yàn)證激勵(lì)分別施加于處理器核設(shè)計(jì)和參考模型,然后將得到的模擬結(jié)果和參考結(jié)果進(jìn)行對(duì)比,以判斷處理器核的行為是否正確。同時(shí)分析模擬過(guò)程中的覆蓋率信息,根據(jù)覆蓋率反饋的驗(yàn)證漏洞來(lái)創(chuàng)建新的驗(yàn)證場(chǎng)景,以生成新的驗(yàn)證激勵(lì)提高驗(yàn)證覆蓋率,加速驗(yàn)證的收斂。
3.2 指令模板
因?yàn)橛糜隍?yàn)證的指令必須符合ARM v8指令語(yǔ)法結(jié)構(gòu),所以本平臺(tái)構(gòu)建了能指導(dǎo)生成合法指令的指令模板,用于指導(dǎo)生成合法的指令。一條ARM v8匯編指令可能包含的各字段如圖3所示。
圖3 ARM v8指令各字段
在圖3中,opcode為操作碼,cond為條件碼,dst0、dst1分別為第0號(hào)、第1號(hào)目的寄存器號(hào),scr0、scr1分別為第0號(hào)、第1號(hào)源寄存器號(hào),immd為立即數(shù)。
為了構(gòu)建指令模板,本文對(duì)DUV已實(shí)現(xiàn)的所有ARM v8指令進(jìn)行了分類。為了在驗(yàn)證過(guò)程中能控制驗(yàn)證的方向,在指令分類時(shí)有必要考慮到指令的功能。同時(shí)為了使指令模板的構(gòu)建工作盡量簡(jiǎn)單,指令語(yǔ)法格式接近的指令,即圖3中各字段內(nèi)容及數(shù)量接近的指令也應(yīng)歸為一類。根據(jù)這2個(gè)標(biāo)準(zhǔn)本文最終對(duì)指令的分類情況如表1所示[10]。
表1 ARM v8指令分類
根據(jù)每類指令的特點(diǎn)約束其各字段在合法的范圍內(nèi),拼接各字段成一條合法指令后輸出[11]。對(duì)于每類指令都有的共性,定義了BaseInstruction類。其他各類指令對(duì)BaseInstruction類進(jìn)行擴(kuò)展,實(shí)現(xiàn)其特有的屬性。圖4為指令模板指導(dǎo)Load/Store Single Register類指令生成的過(guò)程[12]。
圖4 指令模板指導(dǎo)Load/Store Single Register類指令生成
在BaseInstruction中確定可能用到的4個(gè)寄存器的編號(hào),可選范圍均為[0:31]。然后進(jìn)入子類,Load/Single Register子類特有屬性包括:
(1)目的寄存器數(shù)目,該子類只有一個(gè)目的寄存器。
(2)該類獨(dú)有的操作碼,可選范圍為0~8,不同
的操作碼隱含了傳輸字寬,由此可確定目的寄存器的位寬,32位及以下的數(shù)據(jù)的存儲(chǔ)目的寄存器表示為W d,64位數(shù)據(jù)的存儲(chǔ)目的寄存器表示為Xd。
(3)尋址方式,該類指令根據(jù)不同的尋址方式使用不同的源寄存器,當(dāng)尋址方式是1時(shí),基址寄存器(即源寄存器)為64位寄存器,偏移值為可擴(kuò)充的12位無(wú)符號(hào)立即數(shù)或9位不可擴(kuò)充的有符號(hào)立即數(shù)。當(dāng)尋址方式是6時(shí),基址寄存器為PC,偏移地址為19位有符號(hào)立即數(shù),尋址范圍為程序存儲(chǔ)范圍。
3.3 各功能場(chǎng)景下的指令生成
在生成指令前,在指令類層次上可對(duì)最終生成的指令序列中各指令類所占比例進(jìn)行配置。在指令級(jí)層次上,可根據(jù)操作碼的不同,對(duì)每條指令在本類指令中所占比例進(jìn)行配置。也可根據(jù)驗(yàn)證重點(diǎn)的不同生成指令序列觸發(fā)相應(yīng)的功能場(chǎng)景,下文對(duì)本平臺(tái)實(shí)現(xiàn)的幾個(gè)重要的功能場(chǎng)景進(jìn)行介紹。
3.3.1 數(shù)據(jù)相關(guān)指令生成
DUV采用12級(jí)流水結(jié)構(gòu),為了驗(yàn)證DUV在流水線存在資源讀寫沖突的情況下的行為是否符合設(shè)計(jì)規(guī)范的約定,本平臺(tái)隨機(jī)生成存在寄存器相關(guān)的指令序列以激活這一場(chǎng)景,以驗(yàn)證DUV的正確性。
數(shù)據(jù)相關(guān)指令生成方法需要完成下列任務(wù):
(1)考慮到所有的相關(guān)模式。本指令的每個(gè)寄存器與其他指令的寄存器之間的相關(guān)性共有3種情況,本指令的寄存器與目標(biāo)指令的源寄存器相關(guān),本指令的寄存器與目標(biāo)指令的目的寄存器相關(guān),本指令與目標(biāo)指令不存在寄存器相關(guān)。本指令的寄存器分為源寄存器和目的寄存器。當(dāng)存在相關(guān)性時(shí)還分為與第0號(hào)和第1號(hào)寄存器相關(guān)2種情況。
(2)指定相關(guān)深度,2條存在相關(guān)性的指令之間的最大跨度,根據(jù)DUV流水線深度確定。
(3)能實(shí)現(xiàn)相關(guān)模式各類情況概率的可控性。
數(shù)據(jù)相關(guān)指令生成方法的關(guān)鍵在于編寫合法性約束以及維護(hù)歷史使用寄存器隊(duì)列。在生成指令序列前,合法性約束能實(shí)現(xiàn)根據(jù)不同的驗(yàn)證要求對(duì)指令間相關(guān)性種類、各相關(guān)性種類的概率進(jìn)行配置。
生成數(shù)據(jù)相關(guān)指令的寄存器編號(hào)通過(guò)如下所示的程序偽碼得到:
foreach reg
//不存在相關(guān)性或相關(guān)深度所指記錄無(wú)效則該寄存器編//號(hào)為隨機(jī)值
if c-m-sel==‵N||hist-q.regs[c-d].f==0;gen-reg-num=reg-num;//查詢歷史寄存器隊(duì)列else
gen-reg-num=hist-q.regs[c-d].c-m-sel;
hist-q.regs.push-front(regs-info);
hist-q.regs.pop-back;
在生成指令時(shí)對(duì)于指令中的各寄存器,如果不存在相關(guān)性或者相關(guān)深度(c-d)所指的記錄中有效性標(biāo)志f為 0,則寄存器編號(hào)為 0~31的一個(gè)隨機(jī)值reg-num,否則,寄存器編號(hào)為歷史使用寄存器隊(duì)列(hist-q)中相關(guān)深度、相關(guān)模式(c-m-sel)所指的寄存器的編號(hào)。最后把本條指令使用到的寄存器信息reg-info壓入到hist-q隊(duì)頭。hist-q中的每條記錄regs-info包括7個(gè)元素{f,dest-cnt,scr-cnt,dest-0,dest-1,scr-0,scr-1},它們分別代表此條記錄的有效性、目的寄存器數(shù)目、源寄存器數(shù)目、第0個(gè)目的寄存器的寄存器號(hào)、第1個(gè)目的寄存器的寄存器號(hào)、第0個(gè)源寄存器的寄存器號(hào)、第1個(gè)源寄存器的寄存器號(hào)。3.3.2 跳轉(zhuǎn)指令生成
跳轉(zhuǎn)指令關(guān)系到處理器轉(zhuǎn)移預(yù)測(cè)、跳轉(zhuǎn)預(yù)判、流水線等功能的實(shí)現(xiàn)是否符合要求。所以本文搭建的指令生成平臺(tái)對(duì)跳轉(zhuǎn)指令進(jìn)行了重點(diǎn)驗(yàn)證。
生成跳轉(zhuǎn)指令時(shí)很容易生成非法指令,為了生成合法指令,需要注意以下3點(diǎn):
(1)每類跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍是一定的,所以在生成指令時(shí)要添加約束保證跳轉(zhuǎn)范圍的合法性。
(2)因?yàn)樯傻闹噶钚蛄惺且欢ǖ?,所以跳轉(zhuǎn)所指向的目標(biāo)地址應(yīng)該存儲(chǔ)了指令,需要添加約束使得跳轉(zhuǎn)的范圍在生成的指令序列范圍內(nèi)。
(3)跳轉(zhuǎn)指令目標(biāo)地址不能是綁定為一個(gè)指令包的中間指令,如要實(shí)現(xiàn)帶寄存器的跳轉(zhuǎn)指令(BR)要先向寄存器中寫入跳轉(zhuǎn)目標(biāo)地址。本文用2條指令(mov、movk)完成寫目標(biāo)地址的寫操作。因此BR指令的功能由這2條寫地址指令后跟著實(shí)際的跳轉(zhuǎn)指令(br)組成的指令包來(lái)完成。顯然當(dāng)其他跳轉(zhuǎn)指令的目標(biāo)地址指向該指令包的后2條指令時(shí)會(huì)發(fā)生錯(cuò)誤。為了解決這個(gè)問(wèn)題,本指令生成平臺(tái)對(duì)生成的指令數(shù)進(jìn)行計(jì)數(shù),然后將跳轉(zhuǎn)指令的目標(biāo)地址和指令包起始地址都放置在指令序號(hào)模3為1的位置。
3.3.3 Load Forward指令生成
指令生成流程如圖5所示。
圖5 load forward指令生成流程
在訪存指令中,如果 Load指令要取的數(shù)據(jù)在Store Buffer中,則直接從store buffer中forward到寄存器,而不訪問(wèn)內(nèi)存。為了驗(yàn)證DUV在滿足條件的情況下是否能成功實(shí)現(xiàn)forward功能,以及在條件不成立的情況下是否會(huì)出現(xiàn)forward紊亂,本文提出了一種控制激活load forward的方法:維護(hù)一個(gè)store指令(str-ins)歷史訪問(wèn)地址隊(duì)列(q-fwd)來(lái)存儲(chǔ)str-ins歷史訪問(wèn)的內(nèi)存地址(mem-addr)。q-fwd共存儲(chǔ)了指定條數(shù)(根據(jù)Store Buffer的長(zhǎng)度而定)記錄。
首先對(duì)load forward與q-fwd中各記錄的相關(guān)概率進(jìn)行配置,然后開始生成指令。若當(dāng)前指令為str-ins則將mem-addr壓入q-fwd隊(duì)頭,q-fwd隊(duì)尾元素彈出,否則為load指令。若此load指令不激活load forward,此指令的mem-addr為隨機(jī)值,否則mem-addr為q-fwd中相應(yīng)記錄,然后根據(jù)指令訪存數(shù)據(jù)寬度對(duì)mem-addr進(jìn)行對(duì)齊處理,此mem-addr拼接上指令其他字段,指令生成完成。
因?yàn)榇鎯?chǔ)一致性的驗(yàn)證比較復(fù)雜,本平臺(tái)對(duì)于四線程的驗(yàn)證采用生成4個(gè)指令序列,存儲(chǔ)在互不重疊的內(nèi)存單元以供給4個(gè)相應(yīng)的線程的方式進(jìn)行驗(yàn)證。
本文針對(duì)前述一款A(yù)RM v8處理器,搭建了指令生成平臺(tái)和驗(yàn)證平臺(tái)對(duì)其進(jìn)行驗(yàn)證。在驗(yàn)證過(guò)程中,通過(guò)分析每個(gè)階段的覆蓋率報(bào)告,對(duì)該階段未能覆蓋到的功能,本平臺(tái)采取添加約束,引導(dǎo)指令生成平臺(tái)生成能激活這些功能的指令以達(dá)到提高覆蓋,加速驗(yàn)證收斂的目的。在驗(yàn)證工作結(jié)束時(shí),約束隨機(jī)指令要求覆蓋到的功能點(diǎn)全部覆蓋到,即功能覆蓋率達(dá)到100%。結(jié)構(gòu)覆蓋率達(dá)到了90%,對(duì)覆蓋率進(jìn)行分析后,發(fā)現(xiàn)關(guān)于中斷與異常處理的模塊未能覆蓋到,而這些模塊不通過(guò)隨機(jī)約束指令來(lái)進(jìn)行驗(yàn)證,所以采取定向激勵(lì)來(lái)對(duì)其進(jìn)行驗(yàn)證,使得結(jié)構(gòu)覆蓋率達(dá)到了100%。本平臺(tái)在約束隨機(jī)驗(yàn)證過(guò)程中幫助設(shè)計(jì)人員發(fā)現(xiàn)了58處設(shè)計(jì)錯(cuò)誤,根據(jù)功能單元的不同,下面對(duì)錯(cuò)誤出處進(jìn)行了分類,如圖6所示。
圖6 各單元bug數(shù)
本文以每周發(fā)現(xiàn)錯(cuò)誤為單位,對(duì)設(shè)計(jì)錯(cuò)誤數(shù)進(jìn)行了統(tǒng)計(jì),如圖7所示。從圖中曲線趨勢(shì)可以看出,隨著驗(yàn)證過(guò)程的持續(xù)深入和時(shí)間的推移,錯(cuò)誤數(shù)逐漸收斂。此后將有信心將驗(yàn)證的過(guò)程從模擬驗(yàn)證過(guò)度到后續(xù)的FPGA硬件仿真和原型驗(yàn)證,進(jìn)行更大規(guī)模和更快速度的集成驗(yàn)證。
圖7 每周發(fā)現(xiàn)的bug數(shù)
本文提出了一種基于指令模板的隨機(jī)指令生成方法,搭建了指令生成平臺(tái)并利用其對(duì)一款A(yù)RM v8處理器進(jìn)行了驗(yàn)證。該指令生成平臺(tái)具有較強(qiáng)的靈活性和易操作性。最終取得了結(jié)構(gòu)覆蓋率90%、發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤58處的驗(yàn)證效果,為處理器進(jìn)入后續(xù)的FPGA硬件仿真奠定了良好的基礎(chǔ)。
[1] ITRS.ITRS2008[EB/OL].(2008-02-08).http://pub lic.itrs.net/.
[2] 李曉維.集成電路設(shè)計(jì)驗(yàn)證[M].北京:科學(xué)出版社,2010.
[3] 沈海華.覆蓋率驅(qū)動(dòng)的隨機(jī)測(cè)試生成技術(shù)綜述[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2009,21(4):419-430.
[4] Adir A.,Almog E,F(xiàn)ournler L,et al.Genesys-Pro:Innovations in Test Program Generation for Functional Processor Verification[J].IEEE Design&Test of Computers,2004,21(2):84-93.
[5] Mishra P,Dutt N.Graph-based Functional Test Program Generation for Pipelined Processors[C]//Proceedings of Design Automation and Test in Europe Conference. Paris,F(xiàn)rance:[s.n.],2004:182-187.
[6] Shen H H,CRPG:A Configurable Random Test-program Generator for Microprocessors[C]//Proceedings of IEEE International Symposium on Circuits and Systems. Washington D.C.,USA:IEEE Press,2005:4171-4174.
[7] 朱 丹.微處理器體系結(jié)構(gòu)級(jí)測(cè)試程序自動(dòng)生成技術(shù)[J].軟件學(xué)報(bào),2005,16(12):2172-2180.
[8] Zhou Yanhong,Wang Tiancheng.Path Constraint Solving Based Test Generation for Hard-to-Reach States[C]//Proceedings of the 22nd Asian Test Symposium.New York,USA:ACM Press,2013:239-244.
[9] Wang Jian.Functional Test Generation Guided by Steady-state Probabilities of Abstract Design[C]// Proceedings of Conference on Design Automation and Test in Europe.Berlin,Germ any:Springer,2014:5-13.
[10] 顧震宇.基于仿真的32位RISC微處理器的功能驗(yàn)證方法[J].小型微型計(jì)算機(jī)系統(tǒng),2004,25(4):752-756.
[11] 段博海.銀河飛騰 DSP模擬驗(yàn)證平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.
[12] 羅漢青,梁利平,葉甜春.DSP隨機(jī)測(cè)試程序自動(dòng)生成技術(shù)[J].微電子學(xué)與計(jì)算機(jī),2013,30(11):154-159.
編輯 顧逸斐
Constraint Random Instruction Generation Method for General Processor Based on Instruction Template
LIU Jing1,WANG Tiancheng2,WANG Jian2,3,LI Huawei2
(1.College of Information Engineering,Xiangtan University,Xiangtan 411105,China;2.State Key Laboratory of Computer Architecture,Institute of Computing Technology,Chinese Academy of Sciences,Beijing 100190,China;3.University of Chinese Academy of Sciences,Beijing 100049,China)
Due to the increasing system complexity of hardware design,functional verification becomes the bottleneck of the design flow.General processor is one of the most complex designs of integrated circuits,and it brings a huge challenge on its functional verification.This paper proposes a constraint random instruction generation method,for the simulation-based verification of an ARM v8 processor.This instruction generation method is based on the templates that are extracted from the instruction set,which guide the valid ARM v8 instructions’generation,and can support a variety of functional scenarios’verification by adjusting the constraints.Based on automatically comparison of the results produced by the validation environment,it achieves fully verification of the processor,and 58 design mistakes are found.The achievement has a good foundation,for the subsequent FPGA hardware emulation.The verification results show that the method can obtain the structural coverage of 90%.
functional verification;general processor;instruction template;instruction generation;constraint random instruction
劉 婧,王天成,王 健,等.基于指令模板的通用處理器約束隨機(jī)指令生成方法[J].計(jì)算機(jī)工程,2015,41(10):309-313.
英文引用格式:Liu Jing,Wang Tiancheng,Wang Jian,et al.Constraint Random Instruction Generation Method for General Processor Based on Instruction Template[J].Computer Engineering,2015,41(10):309-313.
1000-3428(2015)10-0309-05
A
TP031.6
國(guó)家自然科學(xué)基金資助項(xiàng)目(61176040)。
劉 婧(1989-),女,碩士研究生,主研方向:集成電路驗(yàn)證;王天成,工程師、碩士;王 健,博上研究生;李華偉,研究員。
2014-09-03
2014-11-05E-mail:liujing@ict.ac.cn