專利名稱:一種在指令級隨機(jī)測試中支持ejtag測試的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微處理器驗(yàn)證技術(shù),特別涉及一種在指令級隨機(jī)測試中支持增強(qiáng)聯(lián)合測試行動組(Enhanced Joint Test Action Group,以下簡稱EJTAG)測試的方法。
背景技術(shù):
指令級隨機(jī)測試是通用微處理器驗(yàn)證的常用方法,如圖1所示,通常包括五個部分指令庫11,指令模版12、產(chǎn)生引擎13、指令級模擬器14、仿真環(huán)境15。指令庫11中包含處理器支持的所有有效指令;指令模版12是一系列配置文件,用于進(jìn)行指令的配置、規(guī)范和過濾;產(chǎn)生引擎13可以有效支持配置文件約束下的指令生成;指令級模擬器14是待驗(yàn)證的微處理器的最簡單參考模型,支持指令級仿真,提供指令的正確執(zhí)行結(jié)果;仿真環(huán)境15是包裹在待驗(yàn)證處理器外層的一系列邏輯和操作,主要包括初始化、輸入/輸出和比較邏輯,可以執(zhí)行初始化、輸入/輸出和信號比較等一系列操作。進(jìn)行指令級隨機(jī)測試時,產(chǎn)生引擎根據(jù)指令模版提供的約束從指令庫中選取符合要求的操作碼,加入符合約束的操作數(shù),產(chǎn)生出一條符合約束的指令,提供給仿真環(huán)境,經(jīng)處理器執(zhí)行后,將結(jié)果輸出到仿真環(huán)境中的比較邏輯;同時,該條指令也提供給指令級模擬器,指令的模擬結(jié)果作為參考值也提供給仿真環(huán)境中的比較邏輯,通過二者比較可以檢測處理器設(shè)計(jì)中的錯誤。
隨著嵌入式系統(tǒng)在越來越多的領(lǐng)域得到廣泛的應(yīng)用,嵌入式微處理器核的驗(yàn)證也越來越受到重視,許多原來應(yīng)用在通用處理器的驗(yàn)證技術(shù)也被移植到嵌入式微處理器核的驗(yàn)證中。然而,嵌入式微處理器核的一些特性會對通用處理器驗(yàn)證技術(shù)提出新的挑戰(zhàn)。與通用處理器不同,為了便于軟件開發(fā)和調(diào)試,嵌入式微處理器核設(shè)計(jì)時需要提供交叉調(diào)試器。交叉調(diào)試器由功能處理模塊、控制應(yīng)用程序模塊兩部分組成功能處理模塊運(yùn)行在宿主機(jī)上,控制應(yīng)用程序模塊運(yùn)行在目標(biāo)機(jī)上。交叉調(diào)試器主要功能是調(diào)試運(yùn)行在目標(biāo)機(jī)上的可執(zhí)行代碼,一般應(yīng)能夠提供執(zhí)行程序、添加刪除斷點(diǎn)、單步執(zhí)行、修改代碼、查看和修改變量值等基本調(diào)試功能。
片上調(diào)試(On Chip Debugging)是實(shí)現(xiàn)交叉調(diào)試器的常用方法。在處理器內(nèi)部嵌入額外的控制模塊,當(dāng)滿足了一定的觸發(fā)條件時進(jìn)入某種特殊狀態(tài)。在該狀態(tài)下,被調(diào)試程序停止運(yùn)行,主機(jī)的調(diào)試器可以通過處理器外部特設(shè)的通信接口訪問各種資源(寄存器、存儲器等)并執(zhí)行指令。EJTAG是嵌入式CPU上由硬件實(shí)現(xiàn)的一個模塊,用于實(shí)現(xiàn)片上調(diào)試,協(xié)助進(jìn)行開發(fā)板監(jiān)控程序和OS的移植、運(yùn)行開發(fā)板診斷程序等。EJTAG可實(shí)現(xiàn)的功能包括采用多種模式設(shè)置硬件斷點(diǎn)、單步執(zhí)行等,實(shí)現(xiàn)方式處理器在某個調(diào)試?yán)?包括單步調(diào)試,硬件斷點(diǎn)等等)產(chǎn)生以后進(jìn)入到調(diào)試模式下,一直到DERET指令執(zhí)行以后從調(diào)試模式退出來。在這段時間里,處理器執(zhí)行調(diào)試?yán)馓幚沓绦?,在例外處理程序中,可以進(jìn)行各種EJTAG操作。常見的EJTAG調(diào)試?yán)鈪⒁姳?。系統(tǒng)退出調(diào)試模式以后允許應(yīng)用程序或是系統(tǒng)代碼繼續(xù)執(zhí)行。
對于包含EJTAG片上交叉調(diào)試器的嵌入式CPU驗(yàn)證,傳統(tǒng)的指令級隨機(jī)測試技術(shù),只考慮連續(xù)指令的仿真驗(yàn)證,并未覆蓋EJTAG的測試和驗(yàn)證,而作為嵌入式CPU的一個組成部分,針對EJTAG的驗(yàn)證顯然是必不可少的。目前,測試EJTAG主要以手寫測試向量的方法來實(shí)現(xiàn),通過列舉EJTAG的各種狀態(tài),采用專家人工書寫針對各個測試點(diǎn)的測試向量,這種方法最大的缺點(diǎn)是耗費(fèi)大量的人工勞動,效率低下,同時,由于EJTAG的各種狀態(tài)組合非常復(fù)雜,難以窮舉,手寫測試向量很難均勻覆蓋所有的測試點(diǎn)。
綜上所述,由于現(xiàn)有技術(shù)的不足,人們希望提供一種改進(jìn)的指令級隨機(jī)測試嵌入式CPU的方法,在保持傳統(tǒng)指令級隨機(jī)測試優(yōu)勢的同時,有效支持包含EJTAG片上交叉調(diào)試器的微處理器核的測試和驗(yàn)證。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有的指令級隨機(jī)測試技術(shù)無法實(shí)現(xiàn)片上交叉調(diào)試器測試的不足,從而提供一種在指令級隨機(jī)測試中支持EJTAG測試的方法,該方法可以有效支持包含EJTAG片上交叉調(diào)試器的微處理器核的測試和驗(yàn)證,同時不影響指令級隨機(jī)測試原有的性能優(yōu)勢。
為了達(dá)到上述目的,本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的一種在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,包括如下步驟
a)在指令庫中添加EJTAG調(diào)試指令SDBBP/DRET,指令SDBBP用于引起EJTAG調(diào)試?yán)?,指令DRET用于調(diào)試?yán)夥祷?;b)在指令模版中加入步驟a)中所添加調(diào)試指令相關(guān)的約束;c)對指令級隨機(jī)測試產(chǎn)生引擎進(jìn)行改進(jìn),加入存取指令判斷、程序計(jì)數(shù)器(Program Counter,簡稱PC)隨機(jī)抽取、存取地址記錄、存取數(shù)據(jù)記錄、跳轉(zhuǎn)指令記錄,同時添加相應(yīng)的輸出信號;d)在指令級模擬器中加入調(diào)試指令SDBBP/DRET的執(zhí)行機(jī)制,同時加入調(diào)試控制寄存器(Debug Control Register,簡稱DCR),在系統(tǒng)進(jìn)入EJTAG調(diào)試中斷時提供正確結(jié)果;e)在仿真環(huán)境中加入信號輸入、輸出和比較邏輯;f)在仿真環(huán)境提供的存儲器中預(yù)存EJTAG調(diào)試?yán)馓幚沓绦?;在上述方案中,在所述步驟b)中,調(diào)試指令相關(guān)的約束包括一個是每一條SDBBP指令必須有一條DRET指令與之相匹配,另一個是設(shè)置新的參數(shù)用于調(diào)整調(diào)試?yán)獍l(fā)生的比例。
在上述方案中,在所述步驟c)中,指令級隨機(jī)測試產(chǎn)生引擎添加的輸出信號包括隨機(jī)提取的程序計(jì)數(shù)器(PC)有效信號、load/store指令提示信號、隨機(jī)抽取的與load/store指令相匹配的地址、隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù)、與load/store指令相匹配的程序計(jì)數(shù)器(PC)值、分支轉(zhuǎn)移指令提示信號、調(diào)試?yán)庥?jì)數(shù)信號。
在上述方案中,在所述步驟d)中,指令級模擬器提供的在系統(tǒng)進(jìn)入EJTAG調(diào)試中斷時的正確執(zhí)行結(jié)果包括一是控制寄存器(Control Register簡稱CR)的修改,二是調(diào)試控制寄存器(Debug Control Register,簡稱DCR)的修改。
在上述方案中,在所述步驟e)中,在仿真環(huán)境中添加的輸入信號即為所述步驟c)中產(chǎn)生引擎的輸出信號包括隨機(jī)提取的程序計(jì)數(shù)器(PC)有效信號、load/store指令提示信號、隨機(jī)抽取的與load/store指令相匹配的地址、隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù)、與load/store指令相匹配的PC值、分支轉(zhuǎn)移指令提示信號、調(diào)試?yán)庥?jì)數(shù)信號;
在仿真環(huán)境中添加的輸出信號包括調(diào)試指令出錯信號、程序計(jì)數(shù)器(PC)調(diào)試?yán)獬鲥e信號、地址調(diào)試?yán)獬鲥e信號、數(shù)據(jù)調(diào)試?yán)獬鲥e信號。
在上述方案中,在所述步驟e)中,在仿真環(huán)境中添加的比較邏輯包括,調(diào)試指令結(jié)果比較邏輯、程序計(jì)數(shù)器(PC)調(diào)試?yán)饨Y(jié)果比較邏輯、地址調(diào)試?yán)饨Y(jié)果比較邏輯、數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯。
在上述方案中,在所述步驟f)中,在仿真環(huán)境中預(yù)存調(diào)試?yán)馓幚沓绦虻拇鎯ζ魇侵蛔x存儲器(ROM)或隨機(jī)存儲器(RAM)。
在上述方案中,在所述步驟e)中,仿真環(huán)境中添加的比較邏輯包括所有的通用寄存器(General Register簡稱GR)、浮點(diǎn)寄存器(Float Point Register簡稱FR)、控制寄存器(Congtrol Register,簡稱CR)和調(diào)試控制寄存器(Debug Control Register,簡稱DCR)的比較。
在上述方案中,在所述步驟e)中,仿真環(huán)境中添加的比較邏輯要求數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯只在地址調(diào)試?yán)饨Y(jié)果比較邏輯生效時才生效。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是對傳統(tǒng)的指令級隨機(jī)測試技術(shù)進(jìn)行了有效改造,使之在保持傳統(tǒng)指令級隨機(jī)測試優(yōu)勢的同時,有效支持包含EJTAG片上交叉調(diào)試器的微處理器核的測試和驗(yàn)證,具體包括兩方面1)測試更全面?zhèn)鹘y(tǒng)的手寫測試向量很難做到對所有測試空間的均勻覆蓋,而依托隨機(jī)測試產(chǎn)生,可以使測試向量對測試空間的覆蓋更加全面、均勻。
2)測試效率高手寫測試向量需要大量的測試專家的人工勞動,效率低,而隨機(jī)測試產(chǎn)生基本可以實(shí)現(xiàn)測試向量的自動生成,節(jié)省大量人力資源,效率高。
圖1是現(xiàn)有技術(shù)中指令級隨機(jī)測試系統(tǒng)結(jié)構(gòu)示意圖;圖2是本發(fā)明應(yīng)用于指令級隨機(jī)測試系統(tǒng)的實(shí)施方法流程圖;圖3是本發(fā)明應(yīng)用于指令級隨機(jī)測試系統(tǒng)的一個具體實(shí)施例示意圖;圖4是本發(fā)明應(yīng)用于指令級隨機(jī)測試系統(tǒng)的執(zhí)行過程流程圖;
表1常見EJTAG調(diào)試?yán)猓槐?調(diào)試?yán)馓幚沓绦蚍祷氐刂罚?b>具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式
對本發(fā)明作進(jìn)一步詳細(xì)描述如圖2所示,一種在指令級隨機(jī)測試中支持EJTAG測試的方法,包括以下步驟步驟1,在指令庫中添加EJTAG調(diào)試指令SDBBP/DRET;步驟2,在指令模版中加入調(diào)試指令相關(guān)的約束;步驟3,對指令級隨機(jī)測試產(chǎn)生引擎進(jìn)行改進(jìn),加入存取指令判斷、程序計(jì)數(shù)器隨機(jī)抽取、存取地址記錄、存取數(shù)據(jù)記錄、跳轉(zhuǎn)指令記錄,同時添加相應(yīng)的輸出信號;步驟4,在指令級模擬器中加入調(diào)試指令SDBBP/DRET的執(zhí)行機(jī)制,同時加入調(diào)試控制寄存器(DCR),在系統(tǒng)進(jìn)入EJTAG調(diào)試中斷時提供正確結(jié)果;步驟5,在仿真環(huán)境中加入信號輸入、輸出和比較邏輯;步驟6,在仿真環(huán)境提供的存儲器中預(yù)存調(diào)試?yán)馓幚沓绦颍幌旅娼Y(jié)合圖3詳細(xì)說明對應(yīng)圖2中示出方法的各步驟在步驟1中,對于在指令庫31中添加EJTAG調(diào)試指令包括兩個方面步驟310,在指令庫中加入調(diào)試指令的指令名稱“SDBBP”和“DRET”;步驟311,在指令庫中加入調(diào)試指令SDBBP/DRET的指令碼;根據(jù)無內(nèi)部互鎖流水級的處理器(Microprocessor without Interlocked Piped Stages,簡稱MIPS)指令集的規(guī)范,32位SDBBP的指令碼格式為31 26 25 6 5 0
6 20 6
DRET的指令碼格式為3126 2524 6 50
6 119 6在步驟2中,對于在指令模版32中加入調(diào)試指令相關(guān)的約束包括兩種步驟320,一種是每一條SDBBP指令必須有一條DRET指令與之相匹配,例如“{SDBBP,DRET}”。
步驟321,另一種是設(shè)置新的參數(shù)用于調(diào)整調(diào)試?yán)獍l(fā)生的比例,參數(shù)形式可以采用絕對或相對比例數(shù)字,例如“SDBBP 1%”。
在步驟3中,對于指令級隨機(jī)測試產(chǎn)生引擎33的改進(jìn)包括如下方面步驟330,添加存取指令判斷邏輯;步驟331,通過識別操作碼標(biāo)記并記錄所有的load/store存取指令;步驟332,進(jìn)一步保存所有l(wèi)oad/store指令的存取地址記錄和存取數(shù)據(jù)記錄;步驟333,添加分支轉(zhuǎn)移指令判斷;步驟334,通過識別操作碼標(biāo)記并記錄分支轉(zhuǎn)移指令;步驟335,從程序計(jì)數(shù)器棧中隨機(jī)抽取程序計(jì)數(shù)器值并加以記錄;步驟336,添加相應(yīng)的輸出信號,輸出信號有七種一是隨機(jī)提取的PC有效信號,二是load/store指令提示信號,三是隨機(jī)抽取的與load/store指令相匹配的地址,四是隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù),五是與load/store指令相匹配的PC值,六是分支轉(zhuǎn)移指令提示信號,七是調(diào)試?yán)庥?jì)數(shù)信號。
在步驟4中,分為如下過程步驟340,對于在指令級模擬器34中加入調(diào)試指令SDBBP/DRET的執(zhí)行機(jī)制;首先添加調(diào)試指令入口,可通過標(biāo)準(zhǔn)操作碼或內(nèi)部自定義編碼標(biāo)示入口;步驟341,調(diào)試?yán)馓崾拘盘栐O(shè)置;步驟342,虛擬存儲器的修改;
步驟343,通用控制寄存器(CR)和調(diào)試控制寄存器(DCR)的修改。
在步驟5中,對于在仿真環(huán)境35中加入信號輸入、輸出和比較邏輯,具體過程如下步驟350,添加輸入信號,即為步驟3中指令級隨機(jī)測試產(chǎn)生引擎的輸出信號(即參見步驟336),共有七種一是隨機(jī)提取的PC有效信號,二是load/store指令提示信號,三是隨機(jī)抽取的與load/store指令相匹配的地址,四是隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù),五是與load/store指令相匹配的PC值,六是分支轉(zhuǎn)移指令提示信號,七是調(diào)試?yán)庥?jì)數(shù)信號;步驟351,添加比較邏輯,有四種,一是調(diào)試指令結(jié)果比較邏輯,識別SDBBP/DRET調(diào)試指令,將所有待測微處理器的GR、FR、CR和DCR的值與指令模擬器的輸出進(jìn)行比較,二是PC調(diào)試?yán)饨Y(jié)果比較邏輯,識別PC斷點(diǎn),將所有待測微處理器的GR、FR、CR和DCR的值與指令模擬器的輸出進(jìn)行比較,三是地址調(diào)試?yán)饨Y(jié)果比較邏輯,識別LOAD/STORE指令的地址,將所有待測微處理器的GR、FR、CR和DCR的值與指令模擬器的輸出進(jìn)行比較,四是數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯,在LOAD/STORE指令地址匹配的基礎(chǔ)上,識別LOAD/STORE指令的被存取數(shù)據(jù),將所有待測微處理器的GR、FR、CR和DCR的值與指令模擬器的輸出進(jìn)行比較;仿真環(huán)境中添加的比較邏輯要求數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯只在地址調(diào)試?yán)饨Y(jié)果比較邏輯生效時才生效;根據(jù)調(diào)試?yán)馓崾拘盘枺斜容^邏輯的結(jié)果送至步驟352中相應(yīng)的輸出信號。
步驟352,仿真環(huán)境中添加輸出信號,有四種,一是調(diào)試指令出錯信號,二是PC調(diào)試?yán)獬鲥e信號,三是地址調(diào)試?yán)獬鲥e信號,四是數(shù)據(jù)調(diào)試?yán)獬鲥e信號。
在步驟6中,對于在仿真環(huán)境提供的存儲器中預(yù)存調(diào)試?yán)馓幚沓绦?,在仿真環(huán)境中提供的存儲器可以是只讀存儲器(Read-only Memory,簡稱ROM),也可以是隨機(jī)存儲器(Random Access Memory,簡稱RAM);本實(shí)施例采用ROM;預(yù)存的調(diào)試?yán)馓幚沓绦蚩梢圆捎檬謱懟螂S機(jī)產(chǎn)生,但返回地址需要根據(jù)步驟5中輸入的分支轉(zhuǎn)移指令提示信號和比較邏輯的不同結(jié)果組合分別處理,參見表2。
下面結(jié)合圖4和圖2說明利用本發(fā)明提供的方法進(jìn)行嵌入式CPU驗(yàn)證的過程步驟41,首先讀取并解析指令模版;
步驟42判斷指令長度是否與指令模版中的約束參數(shù)相匹配;若是,則結(jié)束整個驗(yàn)證過程,執(zhí)行步驟48;若否,執(zhí)行步驟43;步驟43,根據(jù)指令模版中定義的各種約束從指令庫中選取指令;步驟44,隨機(jī)指令產(chǎn)生引擎產(chǎn)生指令;步驟440,分支轉(zhuǎn)移指令判斷;若是,執(zhí)行步驟441;若否,執(zhí)行步驟442;步驟441,通過識別操作碼標(biāo)記并記錄所有的分支轉(zhuǎn)移指令,執(zhí)行步驟442;步驟442,load/store存取指令判斷;若是,執(zhí)行步驟443;若否,執(zhí)行步驟444;步驟443,load/store存取指令及其存取地址記錄和存取數(shù)據(jù)記錄;步驟444,完成PC值隨機(jī)抽取和記錄;然后進(jìn)行兩個獨(dú)立運(yùn)算過程,分別執(zhí)行步驟46和步驟47;步驟46,產(chǎn)生引擎產(chǎn)生的指令被送入指令級模擬器;步驟460,判斷是否為EJTAG斷點(diǎn)指令;若是,執(zhí)行步驟461;若否執(zhí)行步驟462;步驟461,根據(jù)具體調(diào)試斷點(diǎn)類型修改相應(yīng)的CR、DCR,同時設(shè)置例外提示信號,然后執(zhí)行步驟472;步驟462,直接修改GR、FR、其他CR和內(nèi)存,然后執(zhí)行步驟472;步驟47,產(chǎn)生引擎產(chǎn)生的指令被送入方針環(huán)境;步驟470,送入仿真驗(yàn)證環(huán)境的指令被裝載入待測微處理器中運(yùn)行;步驟471,保存在寄存器和內(nèi)存中的結(jié)果由信號線輸出到仿真環(huán)境中;步驟472,同步等待模擬器結(jié)果送入仿真環(huán)境,用于后續(xù)步驟的比較操作;步驟473,在仿真環(huán)境中判斷是否發(fā)生了調(diào)試斷點(diǎn)例外;若是,執(zhí)行步驟474;若否,執(zhí)行步驟475;步驟474,比較調(diào)試?yán)膺\(yùn)行結(jié)果是否與指令級模擬器仿真結(jié)果一致?若是,執(zhí)行步驟475;若否,執(zhí)行步驟476;步驟475,比較標(biāo)準(zhǔn)指令運(yùn)行結(jié)果是否與指令級模擬器仿真結(jié)果一致?若是,則返回指令選取過程,執(zhí)行步驟42;若否,執(zhí)行步驟477;步驟476,發(fā)出調(diào)試?yán)獬鲥e警告,執(zhí)行步驟49;步驟477,發(fā)出標(biāo)準(zhǔn)指令出錯警告;執(zhí)行步驟49;步驟49,異常終止驗(yàn)證過程。
由上述可知,本發(fā)明的優(yōu)點(diǎn)是通過在指令庫和指令模版中添加EJTAG調(diào)試指令及相關(guān)約束,在指令級隨機(jī)測試產(chǎn)生引擎和仿真環(huán)境中添加少量比較邏輯和記錄操作,克服了現(xiàn)有的指令級隨機(jī)測試技術(shù)在片上交叉調(diào)試器測試領(lǐng)域的不足,有效支持EJTAG測試。
需要說明的是,本文中涉及的步驟,如果沒有特別說明,就是指按照書寫順序向下執(zhí)行。
最后應(yīng)說明的是以上實(shí)施例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍的任何修改或局部替換,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1.一種在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,包括如下步驟a)在指令庫中添加EJTAG調(diào)試指令SDBBP/DRET,指令SDBBP用于引起EJTAG調(diào)試?yán)猓噶頓RET用于調(diào)試?yán)夥祷?;b)在指令模版中加入步驟a)中所添加調(diào)試指令相關(guān)的約束;c)對指令級隨機(jī)測試產(chǎn)生引擎進(jìn)行改進(jìn),加入存取指令判斷、程序計(jì)數(shù)器隨機(jī)抽取、存取地址記錄、存取數(shù)據(jù)記錄、跳轉(zhuǎn)指令記錄,同時添加相應(yīng)的輸出信號;d)在指令級模擬器中加入調(diào)試指令SDBBP/DRET的執(zhí)行機(jī)制,同時加入調(diào)試控制寄存器,在系統(tǒng)進(jìn)入EJTAG調(diào)試中斷時提供正確結(jié)果;e)在仿真環(huán)境中加入信號輸入、輸出和比較邏輯;f)在仿真環(huán)境提供的存儲器中預(yù)存EJTAG調(diào)試?yán)馓幚沓绦颍?br>
2.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟b)中,調(diào)試指令相關(guān)的約束有一個是每一條SDBBP指令必須有一條DRET指令與之相匹配,另一個是設(shè)置新的參數(shù)用于調(diào)整調(diào)試?yán)獍l(fā)生的比例。
3.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟c)中,指令級隨機(jī)測試產(chǎn)生引擎添加的輸出信號包括隨機(jī)提取的程序計(jì)數(shù)器有效信號、load/store指令提示信號、隨機(jī)抽取的與load/store指令相匹配的地址、隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù)、與load/store指令相匹配的程序計(jì)數(shù)器、分支轉(zhuǎn)移指令提示信號、調(diào)試?yán)庥?jì)數(shù)信號。
4.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟d)中,指令級模擬器提供的在系統(tǒng)進(jìn)入EJTAG調(diào)試中斷時的正確執(zhí)行結(jié)果包括兩方面一是控制寄存器的修改,二是調(diào)試控制寄存器的修改。
5.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟e)中,在仿真環(huán)境中添加的輸入信號就是所述步驟c)中產(chǎn)生引擎的輸出信號,包括隨機(jī)提取的程序計(jì)數(shù)器有效信號、load/store指令提示信號、隨機(jī)抽取的與load/store指令相匹配的地址、隨機(jī)抽取的與load/store指令相匹配的數(shù)據(jù)、與load/store指令相匹配的PC值、分支轉(zhuǎn)移指令提示信號、調(diào)試?yán)庥?jì)數(shù)信號;在仿真環(huán)境中添加的輸出信號包括調(diào)試指令出錯信號、程序計(jì)數(shù)器調(diào)試?yán)獬鲥e信號、地址調(diào)試?yán)獬鲥e信號、數(shù)據(jù)調(diào)試?yán)獬鲥e信號。
6.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟e)中,在仿真環(huán)境中添加的比較邏輯包括調(diào)試指令結(jié)果比較邏輯、程序計(jì)數(shù)器調(diào)試?yán)饨Y(jié)果比較邏輯、地址調(diào)試?yán)饨Y(jié)果比較邏輯、數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯。
7.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟f)中,在仿真環(huán)境中預(yù)存調(diào)試?yán)馓幚沓绦虻拇鎯ζ魇侵蛔x存儲器或隨機(jī)存儲器。
8.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟e)中,仿真環(huán)境中添加的比較邏輯包括所有的通用寄存器、浮點(diǎn)寄存器、控制寄存器和調(diào)試控制寄存器的比較。
9.根據(jù)權(quán)利要求1所述在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法,其特征是,所述步驟e)中,仿真環(huán)境中添加的比較邏輯要求數(shù)據(jù)調(diào)試?yán)饨Y(jié)果比較邏輯只在地址調(diào)試?yán)饨Y(jié)果比較邏輯生效時才生效。
10.一種利用權(quán)利要求1提供的在指令級隨機(jī)測試中支持EJTAG測試的實(shí)現(xiàn)方法進(jìn)行嵌入式CPU驗(yàn)證的過程,包括如下步驟步驟41,首先讀取并解析指令模版;步驟42,判斷指令長度是否與指令模版中的約束參數(shù)相匹配若是,則結(jié)束整個驗(yàn)證過程,執(zhí)行步驟48;若否,執(zhí)行步驟43;步驟43,根據(jù)指令模版中定義的各種約束從指令庫中選取指令;步驟44,隨機(jī)指令產(chǎn)生引擎產(chǎn)生指令;步驟440,分支轉(zhuǎn)移指令判斷;若是,執(zhí)行步驟441;若否,執(zhí)行步驟442;步驟441,通過識別操作碼標(biāo)記并記錄所有的分支轉(zhuǎn)移指令,執(zhí)行步驟442;步驟442,load/store存取指令判斷;若是,執(zhí)行步驟443;若否,執(zhí)行步驟444;步驟443,load/store存取指令及其存取地址記錄和存取數(shù)據(jù)記錄;步驟444,完成PC值隨機(jī)抽取和記錄;然后進(jìn)行兩個獨(dú)立運(yùn)算過程,分別執(zhí)行步驟46和步驟47;步驟46,產(chǎn)生引擎產(chǎn)生的指令被送入指令級模擬器;步驟460,判斷是否為EJTAG斷點(diǎn)指令;若是,執(zhí)行步驟461;若否執(zhí)行步驟462;步驟461,根據(jù)具體調(diào)試斷點(diǎn)類型修改相應(yīng)的CR、DCR,同時設(shè)置例外提示信號,然后執(zhí)行步驟472;步驟462,直接修改GR、FR、其他CR和內(nèi)存,然后執(zhí)行步驟472;步驟47,產(chǎn)生引擎產(chǎn)生的指令被送入方針環(huán)境;步驟470,送入仿真驗(yàn)證環(huán)境的指令被裝載入待測微處理器中運(yùn)行;步驟471,保存在寄存器和內(nèi)存中的結(jié)果由信號線輸出到仿真環(huán)境中;步驟472,同步等待模擬器結(jié)果送入仿真環(huán)境,用于后續(xù)步驟的比較操作;步驟473,在仿真環(huán)境中判斷是否發(fā)生了調(diào)試斷點(diǎn)例外;若是,執(zhí)行步驟474;若否,執(zhí)行步驟475;步驟474,比較調(diào)試?yán)膺\(yùn)行結(jié)果是否與指令級模擬器仿真結(jié)果一致?若是,執(zhí)行步驟475;若否,執(zhí)行步驟476;步驟475,比較標(biāo)準(zhǔn)指令運(yùn)行結(jié)果是否與指令級模擬器仿真結(jié)果一致?若是,則返回指令選取過程,執(zhí)行步驟42;若否,執(zhí)行步驟477;步驟476,發(fā)出調(diào)試?yán)獬鲥e警告,執(zhí)行步驟49;步驟477,發(fā)出標(biāo)準(zhǔn)指令出錯警告;執(zhí)行步驟49;步驟49,異常終止驗(yàn)證過程。
全文摘要
本發(fā)明公開了一種在指令級隨機(jī)測試中支持EJTAG測試的方法,包括步驟a)在指令庫中添加EJTAG調(diào)試指令SDBBP/DRET;b)在指令模版中添加調(diào)試指令相關(guān)的約束;c)對指令級隨機(jī)測試產(chǎn)生引擎進(jìn)行改進(jìn);d)在指令級模擬器中加入調(diào)試指令SDBBP/DRET的執(zhí)行機(jī)制,同時添加調(diào)試控制寄存器;e)在仿真環(huán)境中加入信號輸入、輸出和比較邏輯;f)在仿真環(huán)境提供的存儲器中預(yù)存EJTAG調(diào)試?yán)馓幚沓绦?。本發(fā)明對傳統(tǒng)的指令級隨機(jī)測試技術(shù)進(jìn)行有效改造,在保持傳統(tǒng)指令級隨機(jī)測試優(yōu)勢的同時,有效支持包含EJTAG片上交叉調(diào)試器的微處理器核的測試和驗(yàn)證。
文檔編號G06F11/36GK1936860SQ20051008644
公開日2007年3月28日 申請日期2005年9月20日 優(yōu)先權(quán)日2005年9月20日
發(fā)明者沈海華, 王朋宇, 胡偉武 申請人:中國科學(xué)院計(jì)算技術(shù)研究所