本發(fā)明涉及處理器技術(shù)領(lǐng)域,特別涉及一種處理器中斷機(jī)制的驗(yàn)證方法及驗(yàn)證裝置。
背景技術(shù):
目前,超標(biāo)量處理器本身的設(shè)計(jì)復(fù)雜,并且多個(gè)流水線(xiàn)的指令執(zhí)行,而在超標(biāo)量處理器的驗(yàn)證中,中斷會(huì)與處理器的各級(jí)流水和各種指令相結(jié)合,導(dǎo)致故驗(yàn)證的復(fù)雜度較高。具體地,由于rtl(register-transferlevel,寄存器傳輸級(jí))級(jí)的超標(biāo)量處理器每次發(fā)射并能提交多條指令,而處理器模型一般用c++,systemverilog等更高抽象級(jí)的語(yǔ)言描述為單條指令提交的參考模型,從而沒(méi)有具體的時(shí)序關(guān)系或者與rtl的實(shí)現(xiàn)不盡相同,在dut(deviceundertest,被測(cè)器件)若干條指令提交后記錄提交的個(gè)數(shù),參考模型加上提交的指令條數(shù),只對(duì)最后提交的指令條數(shù)的相應(yīng)的通用寄存器進(jìn)行對(duì)比,但是中斷是與時(shí)間相關(guān)的,只能在開(kāi)始記錄已經(jīng)執(zhí)行提交的指令條數(shù),在第n條參考模型與dut同時(shí)加中斷,才能保證dut與參考模型所執(zhí)行的指令與行為相同。
相關(guān)技術(shù)中,首先生成隨機(jī)指令,其次采樣dut中斷的相關(guān)信號(hào)作為參考模型比較指令條數(shù)的依據(jù),比如啟動(dòng)操作系統(tǒng)用真實(shí)的外設(shè)作為中斷等。然而,相關(guān)技術(shù)由于參考無(wú)法事先知道需要提交的指令條數(shù),故需要采樣dut的中斷信號(hào),但是如果參考模型采樣的中斷狀態(tài)與實(shí)際不符,易出現(xiàn)問(wèn)題。例如,如果參考模型想在第n條指令添加中斷,那么如果第n條指令是多條提交指令的第二條,那么當(dāng)中斷到來(lái)時(shí),之前的一條指令并未提交,中斷處理之后需要從第n條指令之前的那條指令開(kāi)始運(yùn)行,故處理器參考模型不能確定第n條指令是否是單個(gè)指令提交或者是多條指令提交的第一條,從而無(wú)法確定第n條指令是否適合加中斷。
具體而言,相關(guān)技術(shù)中的驗(yàn)證方法在系統(tǒng)級(jí)起操作系統(tǒng)用外設(shè)作為中斷,但難以定位bug與調(diào)試,并且起操作系統(tǒng)時(shí)間較長(zhǎng),隨機(jī)度不夠;或者先寫(xiě)好定向指令,隨機(jī)在中斷入口加中斷,參考模型采樣提交個(gè)數(shù)與dut的中斷等信號(hào),但也面臨著隨機(jī)度不夠與采樣的dut信號(hào)本身存在問(wèn)題的風(fēng)險(xiǎn),并且例外處理程序的處理過(guò)程需要較多的指令。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問(wèn)題之一。
為此,本發(fā)明的一個(gè)目的在于提出一種處理器中斷機(jī)制的驗(yàn)證方法,該驗(yàn)證方法可以不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性。
本發(fā)明的另一個(gè)目的在于提出一種處理器中斷機(jī)制的驗(yàn)證裝置。
為達(dá)到上述目的,本發(fā)明一方面實(shí)施例提出了一種處理器中斷機(jī)制的驗(yàn)證方法,包括以下步驟:隨機(jī)生成定向指令序列;根據(jù)所述指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口;在中斷處理時(shí),添加n條例外返回指令,以退出例外處理程序并且跳轉(zhuǎn)至被中斷取消的指令pc(programcounter,程序計(jì)數(shù)器),以重新執(zhí)行驗(yàn)證前的程序,其中,n為正整數(shù);在多條指令提交時(shí),對(duì)dut的寄存器的狀態(tài)進(jìn)行采樣;以及對(duì)dut加入隨機(jī)中斷,以得到加入所述隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果。
本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證方法,通過(guò)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口,從而對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果,通過(guò)對(duì)dut隨機(jī)加入中斷驗(yàn)證中斷對(duì)dut的影響,并且可以不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性,簡(jiǎn)單便捷。
另外,根據(jù)本發(fā)明上述實(shí)施例的處理器中斷機(jī)制的驗(yàn)證方法還可以具有以下附加的技術(shù)特征:
在本發(fā)明的一個(gè)實(shí)施例中,所述配置中斷處理入口,進(jìn)一步包括:設(shè)置所述中斷處理入口與例外處理程序的入口不同。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)訪(fǎng)存指令寫(xiě)所述中斷處理入口地址的數(shù)據(jù)為eret指令的編碼。
另外,在本發(fā)明的一個(gè)實(shí)施例中,在對(duì)所述dut的寄存器狀態(tài)進(jìn)行采樣之后,還包括:對(duì)pc為中斷入口指令提交的寄存器的狀態(tài)信息進(jìn)行過(guò)濾。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,其中,n為1。
為達(dá)到上述目的,本發(fā)明另一方面實(shí)施例提出了一種處理器中斷機(jī)制的驗(yàn)證裝置,包括:生成模塊,用于隨機(jī)生成定向指令序列;配置模塊,用于根據(jù)所述指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口;添加模塊,在中斷處理時(shí),用于添加n條例外返回指令,以退出例外處理程序并且跳轉(zhuǎn)至被中斷取消的指令pc,以重新執(zhí)行驗(yàn)證前的程序,其中,n為正整數(shù);采樣模塊,在多條指令提交時(shí),用于對(duì)dut的寄存器的狀態(tài)進(jìn)行采樣;以及驗(yàn)證模塊,用于對(duì)dut加入隨機(jī)中斷,以得到加入所述隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果。
本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置,通過(guò)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口,從而對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果,通過(guò)對(duì)dut隨機(jī)加入中斷驗(yàn)證中斷對(duì)dut的影響,并且可以不受中斷的影響 進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性,簡(jiǎn)單易實(shí)現(xiàn)。
另外,根據(jù)本發(fā)明上述實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置還可以具有以下附加的技術(shù)特征:
在本發(fā)明的一個(gè)實(shí)施例中,,所述配置模塊還用于設(shè)置所述中斷處理入口與例外處理程序的入口不同。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)訪(fǎng)存指令寫(xiě)所述中斷處理入口地址的數(shù)據(jù)為eret指令的編碼。
另外,在本發(fā)明的一個(gè)實(shí)施例中,還包括:過(guò)濾模塊,用于對(duì)pc為中斷入口指令提交的寄存器的狀態(tài)信息進(jìn)行過(guò)濾。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,其中,n為1。
附圖說(shuō)明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1為根據(jù)本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證方法的流程圖;
圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的不加中斷的隨機(jī)指令驗(yàn)證運(yùn)行平臺(tái)示意圖;
圖3為根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器參考模型函數(shù)調(diào)用示意圖;
圖4為根據(jù)本發(fā)明一個(gè)實(shí)施例的加入隨機(jī)中斷的隨機(jī)指令驗(yàn)證運(yùn)行平臺(tái)示意圖;
圖5為根據(jù)本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置的結(jié)構(gòu)示意圖;以及
圖6為根據(jù)本發(fā)明一個(gè)具體實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類(lèi)似的標(biāo)號(hào)表示相同或類(lèi)似的元件或具有相同或類(lèi)似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,旨在用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。
下面參照附圖描述根據(jù)本發(fā)明實(shí)施例提出的處理器中斷機(jī)制的驗(yàn)證方法及驗(yàn)證裝置,首先將參照附圖描述根據(jù)本發(fā)明實(shí)施例提出的處理器中斷機(jī)制的驗(yàn)證方法。
圖1是本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證方法的流程圖
如圖1所示,該處理器中斷機(jī)制的驗(yàn)證方法包括以下步驟:
在步驟s101中,隨機(jī)生成定向指令序列。
例如,對(duì)超標(biāo)量處理器進(jìn)行驗(yàn)證時(shí),首先待驗(yàn)證dut(designundertest)超標(biāo)量處理器可以采用verilog代碼編寫(xiě),已有的參考模型可以采用systemverilog語(yǔ)言編寫(xiě),通 過(guò)systemverilog的uvm隨機(jī)驗(yàn)證平臺(tái)連接的sequence先隨機(jī)出一種定向的指令序列。
在步驟s102中,根據(jù)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口。
進(jìn)一步地,通過(guò)上述隨機(jī)出的定向的指令序列配置dut的打開(kāi)中斷使能,并且配置中斷處理入口,因此發(fā)生中斷后不會(huì)干擾無(wú)中斷情況下的指令例外處理。
在本發(fā)明的一個(gè)實(shí)施例中,配置中斷處理入口,進(jìn)一步包括:設(shè)置中斷處理入口與例外處理程序的入口不同。
也就是說(shuō),需要將中斷處理的pc(programcounter)入口設(shè)置成與例外處理程序不同的入口,以使二者不會(huì)相互干擾,從而不會(huì)干擾無(wú)中斷情況下的指令例外處理。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)訪(fǎng)存指令寫(xiě)中斷處理入口地址的數(shù)據(jù)為eret指令的編碼。
可以理解的是,對(duì)將要進(jìn)入的例外處理程序的地址用訪(fǎng)存指令寫(xiě)此中斷處理入口地址的數(shù)據(jù)為退出并返回中斷pc(mips為eret指令)的編碼。
在步驟s103中,在中斷處理時(shí),添加n條例外返回指令,以退出例外處理程序并且跳轉(zhuǎn)至被中斷取消的指令pc,以重新執(zhí)行驗(yàn)證前的程序,其中,n為正整數(shù)。優(yōu)選地,在本發(fā)明的一個(gè)實(shí)施例中,其中,n為1。
可以理解的是,中斷處理程序不應(yīng)該影響原有的寄存器的值,因此中斷處理可以只加一條例外返回指令,退出例外處理程序并且跳轉(zhuǎn)到被中斷取消的指令pc重新執(zhí)行之前的程序。即言,為了實(shí)現(xiàn)中斷處理程序不影響原有的寄存器的值,中斷處理只加一條執(zhí)行-即返回之前中斷未提交的例外處理返回指令,退出例外處理程序并且跳轉(zhuǎn)到被中斷取消的指令pc重新執(zhí)行之前的程序。
在步驟s104中,在多條指令提交時(shí),對(duì)dut的寄存器的狀態(tài)進(jìn)行采樣。
另外,在本發(fā)明的一個(gè)實(shí)施例中,在對(duì)dut的寄存器狀態(tài)進(jìn)行采樣之后,還包括:對(duì)pc為中斷入口指令提交的寄存器的狀態(tài)信息進(jìn)行過(guò)濾。
可以理解的是,通過(guò)過(guò)濾掉參考模型沒(méi)有的中斷處理程序的指令,并將其它指令提交時(shí)的寄存器狀態(tài)送到scoreboard與參考模型的狀態(tài)進(jìn)行比較。
也就是說(shuō),在多條指令提交時(shí),對(duì)dut的寄存器狀態(tài)進(jìn)行采樣,并過(guò)濾掉pc為中斷入口指令提交的寄存器狀態(tài)信息,因此對(duì)比的指令個(gè)數(shù)與不加中斷的參考模型提交的指令個(gè)數(shù)相同,從而能夠與不加中斷的參考模型進(jìn)行指令的正確性對(duì)比。
在步驟s105中,對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果。
可以理解的是,對(duì)于dut加入隨機(jī)中斷,進(jìn)入中斷處理程序的地址入口后,從而能夠避免改寫(xiě)原有的指令寄存器狀態(tài),即能夠立即返回到中斷到來(lái)之前的處理程序接 著繼續(xù)執(zhí)行。
也就是說(shuō),最終采樣dut寄存器值的模塊需要通過(guò)判斷pc的值改造剔除中斷處理程序指令的對(duì)比。在本發(fā)明的實(shí)施例中,通過(guò)對(duì)dut隨機(jī)的加入中斷,從而可以充分驗(yàn)證加入中斷對(duì)指令流水序列的影響。
綜上所述,本發(fā)明實(shí)施例的驗(yàn)證方法的目的為克服單條指令級(jí)的參考模型中無(wú)法預(yù)先定位超標(biāo)量處理器提交的指令個(gè)數(shù),從而無(wú)法在參考模型中加中斷驗(yàn)證的問(wèn)題。本發(fā)明實(shí)施例的驗(yàn)證方法能夠在原有的隨機(jī)指令驗(yàn)證環(huán)境中加入隨機(jī)中斷,并且能夠檢查中斷是否對(duì)原有指令的執(zhí)行造成了錯(cuò)誤的影響,核心思想為:如果中斷的到來(lái)不影響之后的程序與無(wú)中斷時(shí)執(zhí)行的結(jié)果相同,那么中斷可以加在任意時(shí)刻與任意次數(shù)。
具體地,對(duì)dut加中斷,而因?yàn)橹袛嗟募尤氩粫?huì)改變處理器之后運(yùn)行的狀態(tài),故參考模型無(wú)需加中斷正常執(zhí)行即可,不但能夠在保持原有指令隨機(jī)驗(yàn)證平臺(tái)的基礎(chǔ)上加入隨機(jī)中斷,在任何指令執(zhí)行時(shí)均可發(fā)生中斷,保證了驗(yàn)證的充分性,并且在原來(lái)的驗(yàn)證環(huán)境下進(jìn)行簡(jiǎn)單修改即可,并且參考模型并沒(méi)有加入中斷,參考模型無(wú)需獲取dut的狀態(tài),保了參考模型的獨(dú)立性與正確性。
應(yīng)理解,步驟s101和步驟s105的設(shè)置僅為了描述的方便,而不用于限制方法的執(zhí)行順序。
下面以一個(gè)具體實(shí)施例對(duì)本發(fā)明的處理器中斷機(jī)制的驗(yàn)證方法進(jìn)行詳細(xì)贅述。
圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的不加中斷的隨機(jī)指令驗(yàn)證運(yùn)行平臺(tái)示意圖。
在隨機(jī)指令的驗(yàn)證平臺(tái)中,不加中斷的驗(yàn)證平臺(tái)如圖2所示的驗(yàn)證平臺(tái)。參考模型能夠在任何指令不加中斷的持續(xù)運(yùn)行。
圖2的ref_core為參考模型。此模型為單條指令運(yùn)行模型,執(zhí)行過(guò)程如圖3所示。起到了隨機(jī)指令與數(shù)據(jù)的作用,之后dut通過(guò)總線(xiàn)取得指令與數(shù)據(jù)后獨(dú)立運(yùn)行。
具體地,首先ref_core在0時(shí)刻運(yùn)行參考模型,其次ref_core通過(guò)圖2所示的指令隨機(jī)產(chǎn)生器取得指令與訪(fǎng)存數(shù)據(jù),并在參考模型中計(jì)算跳轉(zhuǎn)指令的pc并隨機(jī)填充相應(yīng)的指令,以及計(jì)算訪(fǎng)存指令的地址并計(jì)算或隨機(jī)相應(yīng)的數(shù)據(jù),最后將指令與數(shù)據(jù)填充將要獲取的總線(xiàn)模型的slavememory中,從而在參考模型運(yùn)行完畢后,dut得到能夠運(yùn)行的隨機(jī)的指令與數(shù)據(jù)。
在每條指令執(zhí)行完畢后的圖3所示的call_update_state的任務(wù)中并送到scordboard中與參考模型進(jìn)行比較。打包的寄存器狀態(tài)-包括通用定點(diǎn)寄存器、浮點(diǎn)寄存器、向量寄存器、pc、協(xié)處理器等mips協(xié)議中有的寄存器信息-打包并保存到scoreboard的隊(duì)列中。需要說(shuō)明的是,在此scoreboard中已經(jīng)獲得了需要對(duì)比的數(shù)據(jù)信息。
其中,dut能夠通過(guò)總線(xiàn)獲取ref_core隨機(jī)的指令與數(shù)據(jù)并運(yùn)行。在圖2采樣dut狀 態(tài)的模塊dut_status_monitor在指令提交時(shí)采樣dut的狀態(tài)寄存器,此采樣模塊可以通過(guò)提交的pc忽略例外處理程序所執(zhí)行的指令狀態(tài),只采樣非中斷pc所執(zhí)行的指令的狀態(tài)。
此時(shí)dut可在任意時(shí)刻加入中斷并進(jìn)入例外處理程序,如圖4所示。
根據(jù)上述的描述,本文介紹了一種超標(biāo)量處理器中斷機(jī)制的驗(yàn)證平臺(tái)實(shí)現(xiàn),包含步驟如下:
s1,圖4的隨機(jī)程序調(diào)用打開(kāi)中斷的config_sequence并且首先調(diào)用,包括填充定向程序,打開(kāi)中斷使能,設(shè)置區(qū)別于例外的中斷處理入口。
s2,用訪(fǎng)存指令寫(xiě)此中斷處理入口地址的數(shù)據(jù)為退出并返回中斷pc(mips為eret指令)的編碼。
s3,改造dut_status_monitor模塊,忽略采樣pc為中斷處理程序的pc的狀態(tài)。并采樣其pc提交的寄存器的狀態(tài)與參考模型進(jìn)行對(duì)比。
s4,圖4在config_sequence運(yùn)行完畢后,中斷的sequence中加入隨機(jī)中斷interruptgenerator驅(qū)動(dòng)dut,其延遲一個(gè)或多個(gè)指令平均執(zhí)行提交的時(shí)間隨即發(fā)生中斷。
進(jìn)一步地,下面對(duì)隨機(jī)中斷的運(yùn)行與比較機(jī)制進(jìn)行詳細(xì)贅述。
在dut先運(yùn)行的隨機(jī)環(huán)境中首先配置中斷使能,配置中斷向量模式使中斷處理入口,用訪(fǎng)存指令寫(xiě)此中斷處理入口地址的數(shù)據(jù)為eret指令的編碼。在dut的slave_monitor中過(guò)濾地址為中斷處理pc的所采樣的數(shù)據(jù),此時(shí)采樣的數(shù)據(jù)不發(fā)送到scoreboard進(jìn)行數(shù)據(jù)對(duì)比。將配置dut的指令打包成一個(gè)sequence,配置的sequence如圖4的config_sequence所示,并在所有的sequence中第一個(gè)執(zhí)行,則之后所有隨機(jī)的指令均能夠獲得相同的配置。
舉例而言,假設(shè)中斷隨機(jī)發(fā)生在第1000ns的時(shí)刻,此時(shí)在流水線(xiàn)發(fā)射的mips指令包括浮點(diǎn)指令add.fmt,定點(diǎn)指令daddiu,分支指令beq,訪(fǎng)存lw;如果中斷在此時(shí)能夠起作用使此4條指令不能提交,那么此時(shí)dutcp0(thesystemcoprocessor)的epc記錄此時(shí)未提交的第一條pc,進(jìn)入例外處理程序入口。例外處理程序只有一條指令eret,它不改變通用寄存器的值,直接將下一條pc指向發(fā)生例外的指令epc(exceptionprogramcounter)的值直接返回剛才發(fā)生例外的程序重新執(zhí)行。因此,此時(shí)除了epc其它的對(duì)比寄存器與未發(fā)生例外均為改變,則只要在scordboard屏蔽epc的對(duì)比就可以對(duì)比引入了中斷是否發(fā)生錯(cuò)誤。
可以理解的是,本發(fā)明實(shí)施例的驗(yàn)證方法相當(dāng)于具有一個(gè)獨(dú)立于中斷的比較模型,使得dut能夠隨機(jī)加入中斷,充分驗(yàn)證中斷對(duì)dut的影響,從而能夠不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,保證驗(yàn)證結(jié)果的正確性。
根據(jù)本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證方法,通過(guò)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口,從而對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水 序列的影響結(jié)果,通過(guò)對(duì)dut隨機(jī)加入中斷驗(yàn)證中斷對(duì)dut的影響,并且可以不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性,簡(jiǎn)單便捷。具體地,處理器的參考模型能夠在任何指令不加中斷的持續(xù)運(yùn)行,而處理器dut中斷設(shè)置特殊的入口與返回指令,不會(huì)改變處理器之后運(yùn)行的狀態(tài),從而不影響行為對(duì)比,不但能夠繼承的隨機(jī)指令驗(yàn)證環(huán)境中加入隨機(jī)中斷,并且能避免采樣dut的信號(hào),中斷的加入是否對(duì)原有指令的執(zhí)行造成了錯(cuò)誤的影響的對(duì)比結(jié)果可信。
其次參照附圖描述根據(jù)本發(fā)明實(shí)施例提出的處理器中斷機(jī)制的驗(yàn)證裝置。
圖5是本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置的結(jié)構(gòu)示意圖。
如圖5所示,該處理器中斷機(jī)制的驗(yàn)證裝置10包括:生成模塊100、配置模塊200、添加模塊300、采樣模塊400和驗(yàn)證模塊500。
其中,生成模塊100用于隨機(jī)生成定向指令序列。配置模塊200用于根據(jù)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口。在中斷處理時(shí),添加模塊300用于添加n條例外返回指令,以退出例外處理程序并且跳轉(zhuǎn)至被中斷取消的指令pc,以重新執(zhí)行驗(yàn)證前的程序,其中,n為正整數(shù)。在多條指令提交時(shí),采樣模塊400用于對(duì)dut的寄存器的狀態(tài)進(jìn)行采樣。驗(yàn)證模塊500用于對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果。本發(fā)明實(shí)施例的驗(yàn)證裝置10可以通過(guò)對(duì)dut隨機(jī)加入中斷驗(yàn)證中斷對(duì)dut的影響,并且可以不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性。
在本發(fā)明的一個(gè)實(shí)施例中,配置模塊200還用于設(shè)置中斷處理入口與例外處理程序的入口不同。也就是說(shuō),需要將中斷處理的pc(programcounter)入口設(shè)置成與例外處理程序不同的入口,以使二者不會(huì)相互干擾,從而不會(huì)干擾無(wú)中斷情況下的指令例外處理。
其中,在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)訪(fǎng)存指令寫(xiě)中斷處理入口地址的數(shù)據(jù)為eret指令的編碼。可以理解的是,對(duì)將要進(jìn)入的例外處理程序的地址用訪(fǎng)存指令寫(xiě)此中斷處理入口地址的數(shù)據(jù)為退出并返回中斷pc(mips為eret指令)的編碼。
另外,在本發(fā)明的一個(gè)實(shí)施例中,如圖6所示,本發(fā)明實(shí)施例的驗(yàn)證裝置10還包括:過(guò)濾模塊600。其中,過(guò)濾模塊600用于對(duì)pc為中斷入口指令提交的寄存器的狀態(tài)信息進(jìn)行過(guò)濾??梢岳斫獾氖牵ㄟ^(guò)過(guò)濾掉參考模型沒(méi)有的中斷處理程序的指令,并將其它指令提交時(shí)的寄存器狀態(tài)送到scoreboard與參考模型的狀態(tài)進(jìn)行比較。
可以理解的是,通過(guò)過(guò)濾掉參考模型沒(méi)有的中斷處理程序的指令,并將其它指令提交時(shí)的寄存器狀態(tài)送到scoreboard與參考模型的狀態(tài)進(jìn)行比較。
可選地,在本發(fā)明的一個(gè)實(shí)施例中,其中,n為1??梢岳斫獾氖牵袛嗵幚沓绦虿粦?yīng)該影響原有的寄存器的值,因此中斷處理可以只加一條例外返回指令,退出例外處理程序 并且跳轉(zhuǎn)到被中斷取消的指令pc重新執(zhí)行之前的程序。即言,為了實(shí)現(xiàn)中斷處理程序不影響原有的寄存器的值,中斷處理只加一條執(zhí)行-即返回之前中斷未提交的例外處理返回指令,退出例外處理程序并且跳轉(zhuǎn)到被中斷取消的指令pc重新執(zhí)行之前的程序。
需要說(shuō)明的是,前述對(duì)處理器中斷機(jī)制的驗(yàn)證方法實(shí)施例的解釋說(shuō)明也適用于該實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置,此處不再贅述。
根據(jù)本發(fā)明實(shí)施例的處理器中斷機(jī)制的驗(yàn)證裝置,通過(guò)指令序列配置dut的打開(kāi)中斷使能,并配置中斷處理入口,從而對(duì)dut加入隨機(jī)中斷,以得到加入隨機(jī)中斷對(duì)指令流水序列的影響結(jié)果,通過(guò)對(duì)dut隨機(jī)加入中斷驗(yàn)證中斷對(duì)dut的影響,并且可以不受中斷的影響進(jìn)行數(shù)據(jù)對(duì)比,從而保證驗(yàn)證結(jié)果的準(zhǔn)確性,提高驗(yàn)證的可靠性,簡(jiǎn)單便捷。具體地,處理器的參考模型能夠在任何指令不加中斷的持續(xù)運(yùn)行,而處理器dut中斷設(shè)置特殊的入口與返回指令,不會(huì)改變處理器之后運(yùn)行的狀態(tài),從而不影響行為對(duì)比,不但能夠繼承的隨機(jī)指令驗(yàn)證環(huán)境中加入隨機(jī)中斷,并且能避免采樣dut的信號(hào),中斷的加入是否對(duì)原有指令的執(zhí)行造成了錯(cuò)誤的影響的對(duì)比結(jié)果可信。
在本發(fā)明的描述中,需要理解的是,術(shù)語(yǔ)“中心”、“縱向”、“橫向”、“長(zhǎng)度”、“寬度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“豎直”、“水平”、“頂”、“底”“內(nèi)”、“外”、“順時(shí)針”、“逆時(shí)針”、“軸向”、“徑向”、“周向”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡(jiǎn)化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。
此外,術(shù)語(yǔ)“第一”、“第二”僅用于描述目的,而不能理解為指示或暗示相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。在本發(fā)明的描述中,“多個(gè)”的含義是至少兩個(gè),例如兩個(gè),三個(gè)等,除非另有明確具體的限定。
在本發(fā)明中,除非另有明確的規(guī)定和限定,術(shù)語(yǔ)“安裝”、“相連”、“連接”、“固定”等術(shù)語(yǔ)應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或成一體;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過(guò)中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通或兩個(gè)元件的相互作用關(guān)系,除非另有明確的限定。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語(yǔ)在本發(fā)明中的具體含義。
在本發(fā)明中,除非另有明確的規(guī)定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接觸,或第一和第二特征通過(guò)中間媒介間接接觸。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或僅僅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或僅僅表示第一特征水平高度小于第二 特征。
在本說(shuō)明書(shū)的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說(shuō)明書(shū)中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說(shuō)明書(shū)中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對(duì)本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對(duì)上述實(shí)施例進(jìn)行變化、修改、替換和變型。