日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

基于ovl斷言的微處理器流水線驗證方法

文檔序號:10570152閱讀:797來源:國知局
基于ovl斷言的微處理器流水線驗證方法
【專利摘要】本發(fā)明公開了一種基于OVL斷言的微處理器流水線驗證方法,該方法至少包括如下步驟:步驟1:將OVL斷言插入于微處理器的5級流水線的RTL中,實時監(jiān)測其關(guān)鍵信號是否滿足預(yù)期。步驟2:取指令階段關(guān)鍵信號驗證。步驟3:指令譯碼階段關(guān)鍵信號驗證。步驟4:指令執(zhí)行階段關(guān)鍵信號驗證。步驟5:存儲器訪問階段關(guān)鍵信號驗證。步驟6:結(jié)果寫回階段關(guān)鍵信號驗證。本發(fā)明在微處理器設(shè)計流水線的RTL代碼中插入OVL斷言,并結(jié)合動態(tài)仿真器實時監(jiān)測內(nèi)部信號設(shè)計是否滿足預(yù)期,仿真結(jié)束后可以在log里面得到相應(yīng)的斷言報告信息,快速定位到設(shè)計的bug所在,極大的提高驗證效率,增強(qiáng)驗證的透明性和可靠性。
【專利說明】
基于OVL斷言的微處理器流水線驗證方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及一種微處理器流水線的驗證方法,尤其涉及一種基于0VL斷言的微處 理器流水線驗證方法。
[0002]
【背景技術(shù)】
[0003] 傳統(tǒng)的微處理器驗證方法一般是通過搭建基于verilog語言的驗證平臺,對設(shè)計 打入相應(yīng)的激勵,但隨著集成電路規(guī)模的增加,其功能復(fù)雜度劇增,導(dǎo)致驗證功能點以冪函 數(shù)形式增加,單純依靠觀察輸出波形是否滿足預(yù)期來確定設(shè)計能否正確實現(xiàn)是非常不可靠 的。這樣的驗證方法可觀察性低,并且不能保證驗證的完備性。曾經(jīng)有實驗表明,依賴于輸 出是否滿足預(yù)期來判定微處理器驗證是否完備可能會造成許多設(shè)計上的錯誤不能被成功 驗證,從而不能保證微處理器產(chǎn)品的正確實現(xiàn)。微處理器流水線能否正確的實現(xiàn)是微處理 器設(shè)計是否成功的關(guān)鍵,因此必須保證微處理器流水線得到正確有效地驗證。
[0004] 微處理器指令的流水線化將指令分成取指(IF)、譯碼(ID)、執(zhí)行(EXE)、訪存 (MEM)、寫回(WB)五級流水處理。微處理器流水線能否正確的實現(xiàn)是微處理器設(shè)計中最為重 要的環(huán)節(jié)。而傳統(tǒng)的驗證方法由于只能從輸出端口得到信息,其內(nèi)部的流水線是否真正的 滿足預(yù)期實現(xiàn)就無從得知。而且一旦出現(xiàn)流水線實現(xiàn)錯誤,從輸出直接定位到內(nèi)部的設(shè)計 錯誤位置對于驗證人員是一個非常大的挑戰(zhàn)。
[0005]

【發(fā)明內(nèi)容】

[0006] 本發(fā)明的目的:提供一種基于0VL斷言的微處理器流水線驗證方法,將斷言技術(shù)插 入于流水線的各個階段,實時監(jiān)測流水線的仿真情況,增加驗證的可觀察性和可靠性。
[0007] 為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案是: 一種基于0VL斷言的微處理器流水線驗證方法,該方法至少包括如下步驟: 步驟1:將0VL斷言插入于微處理器的5級流水線的RTL中,實時監(jiān)測其關(guān)鍵信號是否滿 足預(yù)期。
[0008] 步驟2:取指令階段關(guān)鍵信號驗證。
[0009] 步驟3:指令譯碼階段關(guān)鍵信號驗證。
[0010] 步驟4:指令執(zhí)行階段關(guān)鍵信號驗證。
[0011] 步驟5:存儲器訪問階段關(guān)鍵信號驗證。
[0012] 步驟6:結(jié)果寫回階段關(guān)鍵信號驗證。
[0013]上述的基于0VL斷言的微處理器流水線驗證方法,其中,在所述的步驟2中,還包括 如下分步驟: 步驟2.1:計算下一條指令的指令地址PC值,若排除分支指令或跳轉(zhuǎn)指令,對PC指針做 簡單的加4即可得到下一跳指令的地址。
[0014]步驟2.2:若微處理器流水線正常實現(xiàn),則需要得到的關(guān)鍵信號輸出wpc應(yīng)為1,多 路選擇器控制信號pcsource應(yīng)為0,alusrcb應(yīng)為1,指令控制器wir輸出應(yīng)為1〇 [0015]上述的基于0VL斷言的微處理器流水線驗證方法,其中,在所述的步驟3中,還包括 如下分步驟: 步驟3.1:除了步驟2中跳轉(zhuǎn)的三條指令外,其他指令需要在這一階段首先根據(jù)RS和RT 從register file中讀出32位的操作數(shù)。
[0016]步驟3.2:同時若為轉(zhuǎn)移指令(beq或bne)需要ALU在這一階段計算出偏移地址,此 時需要得到的關(guān)鍵信號輸出包括:wir=0;wpc=0。
[0017]步驟3.3:若為跳轉(zhuǎn)指令中的jr指令,由于jr指令為無條件跳轉(zhuǎn)指令,所以得到的 輸出wpc應(yīng)為1。
[0018]步驟3 ? 4:若為跳轉(zhuǎn)指令中的J指令,則輸出pcsource應(yīng)為2 ' h3。
[0019]步驟3.5:若為跳轉(zhuǎn)指令中的Jal指令,需要保存返回地址,則需要得到的關(guān)鍵信號 輸出 jal=l,wreg=l〇
[0020]步驟3 ? 6:若為跳轉(zhuǎn)指令中的jr指令,則輸出pcsource應(yīng)為2 ' h2,輸出wpc應(yīng)為1 〇 [0021]上述的基于0VL斷言的微處理器流水線驗證方法,其中,在所述的步驟4中,還包括 如下分步驟: 步驟4.1:若為條件轉(zhuǎn)移指令,則需要alu來計算出兩個寄存器中的值是否相等來決定 是否跳轉(zhuǎn)到目的地址,判斷結(jié)果用來控制wpc信號,若結(jié)果滿足,則得到的輸出wpc應(yīng)為1, pcsource 也應(yīng)為1。
[0022]步驟4.2:若指令為立即數(shù)類型的指令,則需要得到的輸出alusrcb應(yīng)2,表示選擇 立即數(shù)。
[0023]步驟4.3:若指令為移位指令,則輸出shift應(yīng)為1。
[0024]上述的基于0VL斷言的微處理器流水線驗證方法,其中,在所述的步驟5中,還包括 如下分步驟: 步驟5.1:通過一個多路選擇器控制信號來確定是從存儲器取出數(shù)據(jù),還是將數(shù)據(jù)存入 存儲器,該控制信號為iord。
[0025]步驟5.2:若從存儲器取出數(shù)據(jù)得到的該信號輸出應(yīng)為1反之應(yīng)為0。
[0026]上述的基于0VL斷言的微處理器流水線驗證方法,其中,在所述的步驟6中,還包括 如下分步驟: 步驟6.1:在結(jié)果寫回階段要把前面執(zhí)行指令階段alu的計算結(jié)果和存儲器中取得的數(shù) 據(jù)放入寄存器堆中。
[0027]步驟6.2:需要得到regrt控制信號輸出為1來選擇相應(yīng)的目的寄存器,同時由于 wreg信號為register file的寫使能端,同樣需要得到輸出1。
[0028] 本發(fā)明在微處理器設(shè)計流水線的RTL代碼中插入0VL斷言,并結(jié)合動態(tài)仿真器實時 監(jiān)測內(nèi)部信號設(shè)計是否滿足預(yù)期,仿真結(jié)束后可以在log里面得到相應(yīng)的斷言報告信息,快 速定位到設(shè)計的bug所在,極大的提高驗證效率,增強(qiáng)驗證的透明性和可靠性。
[0029]
【附圖說明】
[0030] 圖1是本發(fā)明基于0VL斷言的微處理器流水線驗證方法的流程圖。
[0031]
【具體實施方式】
[0032]以下結(jié)合附圖進(jìn)一步說明本發(fā)明的實施例。
[0033]請參見附圖1所示,一種基于0VL斷言的微處理器流水線驗證方法,該方法至少包 括如下步驟: 步驟1:將0VL斷言插入于微處理器的5級流水線的RTL中,實時監(jiān)測其關(guān)鍵信號是否滿 足預(yù)期。
[0034]步驟2:取指令階段關(guān)鍵信號驗證。
[0035]步驟3:指令譯碼階段關(guān)鍵信號驗證。
[0036]步驟4:指令執(zhí)行階段關(guān)鍵信號驗證。
[0037]步驟5:存儲器訪問階段關(guān)鍵信號驗證。
[0038]步驟6:結(jié)果寫回階段關(guān)鍵信號驗證。
[0039] 在所述的步驟2中,還包括如下分步驟: 步驟2.1:計算下一條指令的指令地址PC值,若排除分支指令或跳轉(zhuǎn)指令,對PC指針做 簡單的加4即可得到下一跳指令的地址。
[0040] 步驟2.2:若微處理器流水線正常實現(xiàn),則需要得到的關(guān)鍵信號輸出wpc應(yīng)為1,多 路選擇器控制信號pcsource應(yīng)為0,alusrcb應(yīng)為1,指令控制器wir輸出應(yīng)為1。在本發(fā)明中, 將斷言插入于該階段,用于監(jiān)測這些內(nèi)部信號是否滿足預(yù)期來判斷流水線取指令階段是否 正確實現(xiàn)。
[0041 ]在所述的步驟3中,還包括如下分步驟: 步驟3.1:除了步驟2中跳轉(zhuǎn)的三條指令外,其他指令需要在這一階段首先根據(jù)RS和RT 從register file中讀出32位的操作數(shù)。
[0042]步驟3.2:同時若為轉(zhuǎn)移指令(beq或bne)需要ALU在這一階段計算出偏移地址,此 時需要得到的關(guān)鍵信號輸出包括:wir=0;wpc=0。
[0043]步驟3.3:若為跳轉(zhuǎn)指令中的jr指令,由于jr指令為無條件跳轉(zhuǎn)指令,所以得到的 輸出wpc應(yīng)為1。
[0044]步驟3 ? 4:若為跳轉(zhuǎn)指令中的J指令,則輸出pcsource應(yīng)為2 ' h3。
[0045] 步驟3.5:若為跳轉(zhuǎn)指令中的Jal指令,需要保存返回地址,則需要得到的關(guān)鍵信號 輸出 jal=l,wreg=l〇
[0046] 步驟3.6:若為跳轉(zhuǎn)指令中的jr指令,則輸出pcsource應(yīng)為2 ' h2,輸出wpc應(yīng)為1。同 樣將相應(yīng)的斷言插入于此階段,判斷指令譯碼階段的關(guān)鍵信號是否滿足預(yù)期。
[0047] 在所述的步驟4中,還包括如下分步驟: 步驟4.1:若為條件轉(zhuǎn)移指令,則需要alu來計算出兩個寄存器中的值是否相等來決定 是否跳轉(zhuǎn)到目的地址,判斷結(jié)果用來控制wpc信號,若結(jié)果滿足,則得到的輸出wpc應(yīng)為1, pcsource 也應(yīng)為1。
[0048] 步驟4.2:若指令為立即數(shù)類型的指令,則需要得到的輸出alusrcb應(yīng)2,表示選擇 立即數(shù)。
[0049] 步驟4.3:若指令為移位指令,則輸出shift應(yīng)為1。將相應(yīng)的斷言插入于此階段,判 斷指令執(zhí)行階段關(guān)鍵信號是否滿足預(yù)期。
[0050] 在所述的步驟5中,還包括如下分步驟: 步驟5.1:通過一個多路選擇器控制信號來確定是從存儲器取出數(shù)據(jù),還是將數(shù)據(jù)存入 存儲器,該控制信號為iord。
[0051] 步驟5.2:若從存儲器取出數(shù)據(jù)得到的該信號輸出應(yīng)為1反之應(yīng)為0。
[0052]只有l(wèi)oad指令和store指令會進(jìn)入到存儲器訪問階段。由于在上一級EXE階段我們 已經(jīng)計算出了要訪問的存儲器的地址,load指令就是從該地址中取出數(shù)據(jù),store指令就是 向該地址存儲數(shù)據(jù)。將斷言插入該階段,用來監(jiān)測iord信號是否正確。
[0053]在所述的步驟6中,還包括如下分步驟: 步驟6.1:在結(jié)果寫回階段要把前面執(zhí)行指令階段alu的計算結(jié)果和存儲器中取得的數(shù) 據(jù)放入register file(寄存器堆)中。
[0054]步驟6.2:需要得到regrt控制信號輸出為1來選擇相應(yīng)的目的寄存器,同時由于 wreg信號為register file的寫使能端,同樣需要得到輸出1。同樣將斷言插入該階段,用來 監(jiān)測關(guān)鍵信號是否正確。
[0055]為了監(jiān)測上述提到的5級流水線關(guān)鍵信號,將相應(yīng)的0VL斷言插入這5級流水線的 RTL中,在動態(tài)仿真的過程中來實時的判斷每級流水線內(nèi)部關(guān)鍵控制信號輸出是否滿足預(yù) 期。
[0056] 實施例1:將下述代碼插入到相應(yīng)的RTL當(dāng)中。
[0057] ovl_always #( .severity_level ( 0VL_ERR0R), .property_type ('0VL_ASSERT), ?msg ("Error:state=IF,signal wir not correct"), .coverage_leve1 ('0VL_C0VER_DEFAULT), .clock_edge ('0VL_P0SEDGE), .reset_polarity ( 0VL_ACTIVE_L0ff), ,gating_type ('0VL_GATE_CL0CK)) Assert if_wir( .clock (clock), .reset (resetn), .Gn£ib 1 g (s t&t e---s i f), .test_expr (wir===l), ? fire〇); 0vl_always #( .severity_level ( 0VL_ERR0R), .property_type ('0VL_ASSERT), ?msg ("Error:state=IF,signal wpc not correct"), .coverage_leve1 ('0VL_C0VER_DEFAULT), .clock_edge ('0VL_P0SEDGE), .reset_polarity ( OVL_ACTIVE_LOff), ,gating_type ('OVL_GATE_CLOCK)) Assert if_wir( .clock (clock), .reset (resetn), .Gn£ib 1 g (s t&t e s i f), .test_expr (wir===l), ? fire〇); 該例中,clock為斷言的時鐘,reset為復(fù)位信號,enable信號為1時對test_expr做斷言 check,teSt_eXpr填入需要驗證的邏輯,即取指令時關(guān)鍵信號應(yīng)該滿足的輸出。滿足預(yù)期 時,斷言驗證成功,fire=0,否則斷言驗證失敗,fire輸出1。
[0058] 其中severity_level用來描述設(shè)計的報錯優(yōu)先級,一般使用1級的0VL_ERR0R,貝1J 仿真時assert fail時會繼續(xù)仿真。property_type用來描述斷言的property,msg用來輸出 斷言驗證失敗后的log信息,一旦仿真時關(guān)鍵信號不符合預(yù)期,則會打印出msg中的錯誤log 信息,這樣可以快速定位設(shè)計中的錯誤所在,提高驗證效率。
[0059]本發(fā)明引入0VL斷言的方式來驗證微處理器的好處在于其可以增強(qiáng)驗證的可觀察 性,提高驗證效率。如果本實驗未引入斷言,那么一旦仿真到設(shè)計錯誤,僅從頂層輸出很難 定位到bug的所在,執(zhí)行ori指令的頂層輸出信號。若未加入斷言,一旦流水線設(shè)計出現(xiàn)錯 誤,只能從頂層的輸出結(jié)果不符合預(yù)期得出,不能直接定位問題所在。為了確定bug所在,我 們需要從頂層經(jīng)過大量的代碼排查(例如tb/mccpu/alunit/slect/alunit/alu_b/ countro l_uni t/wreg)定位問題所在,無形中極大地增加了驗證工作量。
[0060]若使用斷言,wreg信號設(shè)計錯誤時,仿真后可以直接在log里得到"〃Error: state =WB , IR = lw , signal wreg not correct",通過log中的信息定位mutiple_cpu_ tb.mccomp j .mccpu.wreg,直接定位到頂層下的第三級,找出bug所在,極大地提高了驗證 效率。
[00611下表為以ori指令為例,比較了普通驗證與斷言驗證兩種驗證方法針對內(nèi)部信號 有誤情況下的排查難度。其中,wreg,regrt,alusrcb,aluarca,pcsource分別為可能出錯的 關(guān)鍵信號,表中第一行為采用斷言驗證的情況下可以直接定位到錯誤所在。而表中第二行 表示普通情況驗證下,需要從頂層信號依次排查到關(guān)進(jìn)信號所用的代碼階數(shù)。從下表中我 們可以很清楚的得出,斷言驗證在微處理器流水線驗證的應(yīng)用可以極大地提高驗證效率。 [0062] 有無斷言對比表
綜上所述,本發(fā)明在微處理器設(shè)計流水線的RTL代碼中插入0VL斷言,并結(jié)合動態(tài)仿真 器實時監(jiān)測內(nèi)部信號設(shè)計是否滿足預(yù)期,仿真結(jié)束后可以在log里面得到相應(yīng)的斷言報告 信息,快速定位到設(shè)計的bug所在,極大的提高驗證效率,增強(qiáng)驗證的透明性和可靠性。 [0063]以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用 本發(fā)明說明書內(nèi)容所作的等效結(jié)構(gòu)變換,或直接或間接運用附屬在其他相關(guān)產(chǎn)品的技術(shù)領(lǐng) 域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【主權(quán)項】
1. 一種基于OVL斷言的微處理器流水線驗證方法,其特征在于:該方法至少包括如下步 驟: 步驟1:將OVL斷言插入于微處理器的5級流水線的RTL中,實時監(jiān)測其關(guān)鍵信號是否滿 足預(yù)期; 步驟2:取指令階段關(guān)鍵信號驗證; 步驟3:指令譯碼階段關(guān)鍵信號驗證; 步驟4:指令執(zhí)行階段關(guān)鍵信號驗證; 步驟5:存儲器訪問階段關(guān)鍵信號驗證; 步驟6:結(jié)果寫回階段關(guān)鍵信號驗證。2. 根據(jù)權(quán)利要求1所述的基于OVL斷言的微處理器流水線驗證方法,其特征在于:在所 述的步驟2中,還包括如下分步驟: 步驟2.1:計算下一條指令的指令地址PC值,若排除分支指令或跳轉(zhuǎn)指令,對PC指針做 簡單的加4即可得到下一跳指令的地址; 步驟2.2:若微處理器流水線正常實現(xiàn),則需要得到的關(guān)鍵信號輸出wpc應(yīng)為1,多路選 擇器控制信號pcsource應(yīng)為0,alusrcb應(yīng)為1,指令控制器wir輸出應(yīng)為1〇3. 根據(jù)權(quán)利要求2所述的基于OVL斷言的微處理器流水線驗證方法,其特征在于:在所 述的步驟3中,還包括如下分步驟: 步驟3.1:除了步驟2中跳轉(zhuǎn)的三條指令外,其他指令需要在這一階段首先根據(jù)RS和RT 從register file中讀出32位的操作數(shù); 步驟3.2:同時若為轉(zhuǎn)移指令(beq或bne)需要ALU在這一階段計算出偏移地址,此時需 要得到的關(guān)鍵信號輸出包括:wir=0; wpc=0; 步驟3.3:若為跳轉(zhuǎn)指令中的jr指令,由于jr指令為無條件跳轉(zhuǎn)指令,所以得到的輸出 wpc應(yīng)為1; 步驟3 · 4:若為跳轉(zhuǎn)指令中的J指令,則輸出pcsource應(yīng)為2 ' h3; 步驟3.5:若為跳轉(zhuǎn)指令中的Jal指令,需要保存返回地址,則需要得到的關(guān)鍵信號輸出 jal=l,wreg=l; 步驟3 · 6:若為跳轉(zhuǎn)指令中的jr指令,則輸出pcsource應(yīng)為2 ' h2,輸出wpc應(yīng)為I 〇4. 根據(jù)權(quán)利要求1所述的基于OVL斷言的微處理器流水線驗證方法,其特征在于:在所 述的步驟4中,還包括如下分步驟: 步驟4.1:若為條件轉(zhuǎn)移指令,則需要alu來計算出兩個寄存器中的值是否相等來決定 是否跳轉(zhuǎn)到目的地址,判斷結(jié)果用來控制wpc信號,若結(jié)果滿足,則得到的輸出wpc應(yīng)為1, pcsource 也應(yīng)為1; 步驟4.2:若指令為立即數(shù)類型的指令,則需要得到的輸出alusrcb應(yīng)2,表示選擇立即 數(shù); 步驟4.3:若指令為移位指令,則輸出shift應(yīng)為1。5. 根據(jù)權(quán)利要求1所述的基于OVL斷言的微處理器流水線驗證方法,其特征在于:在所 述的步驟5中,還包括如下分步驟: 步驟5.1:通過一個多路選擇器控制信號來確定是從存儲器取出數(shù)據(jù),還是將數(shù)據(jù)存入 存儲器,該控制信號為iord; 步驟5.2:若從存儲器取出數(shù)據(jù)得到的該信號輸出應(yīng)為1反之應(yīng)為0。6.根據(jù)權(quán)利要求1所述的基于OVL斷言的微處理器流水線驗證方法,其特征在于:在所 述的步驟6中,還包括如下分步驟: 步驟6.1:在結(jié)果寫回階段要把前面執(zhí)行指令階段alu的計算結(jié)果和存儲器中取得的數(shù) 據(jù)放入寄存器堆中; 步驟6.2:需要得到regrt控制信號輸出為1來選擇相應(yīng)的目的寄存器,同時由于wreg信 號為register fi Ie的寫使能端,同樣需要得到輸出1。
【文檔編號】G06F17/50GK105930590SQ201610254284
【公開日】2016年9月7日
【申請日】2016年4月24日
【發(fā)明人】焦芳
【申請人】焦芳
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1