專利名稱:基于vmm驗(yàn)證方法學(xué)的mcu驗(yàn)證平臺(tái)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉 及一種8位MCU (微控制器)的驗(yàn)證測(cè)試方法,特別是涉及一種可以自動(dòng) 高效率嚴(yán)格驗(yàn)證MCU的基于VMM (VerificationMethodology Manual驗(yàn)證方法學(xué)手冊(cè))的 MCU驗(yàn)證平臺(tái)實(shí)現(xiàn)方法。
背景技術(shù):
以MCU作為芯片核心,MCU的功能正確性往往是至關(guān)重要的,尤其每款重新設(shè)計(jì)或 者設(shè)計(jì)改動(dòng)的MCU都需要經(jīng)過大量的回歸測(cè)試,甚至多次流片才能夠真正使用到項(xiàng)目中。 因此MCU的驗(yàn)證通常需要大量時(shí)間和人力投入。通常驗(yàn)證MCU都會(huì)將應(yīng)用程序讀入ROM中,通過仿真觀察波形以及輸出來確認(rèn)功 能正確;每次只能根據(jù)實(shí)際應(yīng)用程序測(cè)試對(duì)應(yīng)的一部分MCU功能,缺少一個(gè)量化的指標(biāo);而 且每次改動(dòng)MCU需要重新檢查結(jié)果,效率比較低,驗(yàn)證質(zhì)量無法保證。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種基于VMM驗(yàn)證方法學(xué)的MCU驗(yàn)證平臺(tái)實(shí)現(xiàn)方 法,能夠搭建一個(gè)可移植,重用,擴(kuò)展,完全自動(dòng)檢查的具有層次化結(jié)構(gòu)的MCU驗(yàn)證平臺(tái)。為解決上述技術(shù)問題,本發(fā)明的基于VMM驗(yàn)證方法學(xué)的MCU驗(yàn)證平臺(tái)實(shí)現(xiàn)方法 是待驗(yàn)證模塊MCU采用Verilog (硬件描述語言)代碼編寫,MCU的參照模型(或稱 MCU的C模型)采用C語言編寫,通過SystemVerilog(系統(tǒng)硬件描述語言)的直接程序接 口(DPI)調(diào)用待驗(yàn)證模塊MCU或MCU的參照模型;使用文件讀寫方式,用磁盤文件作為中介進(jìn)行待驗(yàn)證模塊的自檢;整體驗(yàn)證環(huán)境 使用 SystemVerilog 編寫;SystemVerilog提供有約束的隨機(jī)數(shù)生成,將MCU指令集進(jìn)行分類,將同一格式的 指令歸為一類;根據(jù)測(cè)試用例的約束,隨機(jī)生成指令以及指令所需的參數(shù),將所有指令數(shù)據(jù) 放入數(shù)據(jù)類VMM_DATA中;所述指令通過通道傳遞到執(zhí)行模塊;所述執(zhí)行模塊中采用C語言編寫一個(gè)匯編 器,當(dāng)通過直接程序接口將MCU的參照模型接入驗(yàn)證環(huán)境中時(shí),匯編器將生成的匯編指令 實(shí)時(shí)轉(zhuǎn)化為十六進(jìn)制代碼;當(dāng)通過直接程序接口將MCU的參照模型接入驗(yàn)證環(huán)境中時(shí),在每一條指令執(zhí)行后 寫出一個(gè)參照結(jié)果;MCU的參照模型通過存儲(chǔ)單元保存數(shù)據(jù),內(nèi)部特殊功能寄存器單元保 存寄存器值,通過對(duì)比MCU的參照模型與待驗(yàn)證模塊MCU的存儲(chǔ)單元和特殊功能寄存器單 元中的數(shù)據(jù),來保證待驗(yàn)證模塊MCU的每一條指令的工作狀態(tài)和參照模型都是一致的;實(shí)現(xiàn)包括ROM,RAM的SystemVerilog行為模型,并且通過后門直接將寄存器值通 過通道傳遞給自檢記分板;通過MCU的參照模型寫出每一條指令后的寄存器值會(huì)保存下 來,由自檢記分板通過讀取磁盤文件來讀入,并同從存儲(chǔ)單元行為模型通道傳輸過來的寄存器值進(jìn)行自檢; 將MCU的參照模型運(yùn)行的結(jié)果和MCU的參照模型內(nèi)部對(duì)應(yīng)的特殊功能寄存器置位 作為功能覆蓋率模塊的收集點(diǎn),將關(guān)注的特殊功能寄存器值描述為功能覆蓋模型,在仿真 中自動(dòng)監(jiān)測(cè),并在所有測(cè)試用例通過后給出一個(gè)最終的功能覆蓋率。本發(fā)明用SystemVerilog來搭建一個(gè)基于VMM驗(yàn)證方法學(xué)的可移植,重用,擴(kuò)展, 完全自動(dòng)檢查,具有層次化結(jié)構(gòu)的MCU驗(yàn)證平臺(tái)。本發(fā)明運(yùn)用VMM驗(yàn)證方法學(xué),能夠?qū)崿F(xiàn)年 一個(gè)層次化的驗(yàn)證結(jié)構(gòu),可以較簡(jiǎn)單的移植并驗(yàn)證其他類型的MCU,抽象了 MCU指令,并且 通過約束產(chǎn)生隨機(jī)指令激勵(lì),可以實(shí)現(xiàn)遍歷所有指令以及地址,另外功能覆蓋率模型能夠 收集并監(jiān)測(cè)覆蓋率。本發(fā)明能節(jié)約驗(yàn)證時(shí)間,更快完成驗(yàn)證計(jì)劃。
下面結(jié)合附圖與具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明圖1是VMM簡(jiǎn)要框架結(jié)構(gòu)圖;圖2是本發(fā)明的驗(yàn)證平臺(tái)框圖。
具體實(shí)施例方式隨著SystemVerilog成為IEEE(美國(guó)電氣電子工程師學(xué)會(huì))的P1800規(guī)范,越來 越多的項(xiàng)目開始采用基于SystemVerilog的驗(yàn)證方法學(xué)來獲得更多的重用擴(kuò)展性,更全面 的功能覆蓋率,以及更合理的層次化驗(yàn)證結(jié)構(gòu)。隨著設(shè)計(jì)的復(fù)雜程度不斷增加,需要把更多的資源放到驗(yàn)證上,不但要求驗(yàn)證能 夠覆蓋所有的功能,還希望能夠給出大量的異常情況來檢查待驗(yàn)證模塊對(duì)應(yīng)異常的處理狀 態(tài)。在傳統(tǒng)測(cè)試方法下,上述要求往往是難以實(shí)現(xiàn)的。此外設(shè)計(jì)不斷地重用,而驗(yàn)證也希 望能夠重用類似的驗(yàn)證模塊,這就催生了層次化的驗(yàn)證方法。VMM驗(yàn)證方法學(xué)提供了基于 SystemVerilog的驗(yàn)證方法,包括了有約束的隨機(jī)數(shù)生成,層次化的驗(yàn)證結(jié)構(gòu),以及以功能 覆蓋率為指標(biāo)的驗(yàn)證流程。VMM是Verification Methodology Manual (驗(yàn)證方法學(xué)手冊(cè))的縮寫,是由新 思科技提出的基于SystemVerilog驗(yàn)證語言分支的方法學(xué),其前身是基于Open Vera的 RVM(Reference Verification Methodology)(參考驗(yàn)證方法學(xué))。VMM 提供了一整套驗(yàn)證 的基礎(chǔ)類庫(kù)以及一個(gè)完整的驗(yàn)證流程,在這個(gè)流程里已經(jīng)做好了相應(yīng)的功能劃分,并且已 經(jīng)做好基本類。從基本類可以擴(kuò)展出針對(duì)項(xiàng)目的類,這樣更加關(guān)注于功能驗(yàn)證而不必花費(fèi) 時(shí)間在驗(yàn)證環(huán)境的基礎(chǔ)框架上。VMM提出了層次化的驗(yàn)證方法,可以有效的提高驗(yàn)證模塊的 移植性和繼承性。另外利用SystemVerilog的有約束的隨機(jī)數(shù)據(jù)生成的功能,配合功能覆 蓋率能夠很快達(dá)到需要的驗(yàn)證目標(biāo),即100%的功能覆蓋率。VMM的簡(jiǎn)要的框架結(jié)構(gòu)如圖1 所示。VMM提供了最基本的數(shù)據(jù)類VMM_DATA,可以把所有的數(shù)據(jù)和流程控制都放在VMM_ DATA的擴(kuò)展類里。另外可以在VMM_DATA的擴(kuò)展類中封裝對(duì)所述數(shù)據(jù)和流程控制的一些基 本操作的函數(shù)和任務(wù);通過對(duì)VMM_DATA的約束可以生成相應(yīng)的數(shù)據(jù)包,這些數(shù)據(jù)包就封裝 在相應(yīng)的類里面,隨時(shí)可以通過內(nèi)部的函數(shù)和任務(wù)對(duì)這些數(shù)據(jù)進(jìn)行處理。這個(gè)封裝了數(shù)據(jù)和函數(shù)的類就是執(zhí)行模塊。在圖1中,執(zhí)行模塊層次中所有的經(jīng)過通道傳遞的數(shù)據(jù)類都是 從VMM_DATA擴(kuò)展出來的數(shù)據(jù)類。所述的通道可以根據(jù)數(shù)據(jù)類用宏定義生成。通道類似于 SystemVerilog中的信箱(mailbox),僅傳輸數(shù)據(jù)類也就是執(zhí)行模塊的通道。圖1中所有實(shí) 心粗箭頭都為通道,在執(zhí)行模塊層次中所有的數(shù)據(jù)和流程控制都在VMM_DATA的擴(kuò)展類中, 通過控制擴(kuò)展類里面的約束,甚至直接賦值來控制整個(gè)驗(yàn)證流程。在VMM_DATA的擴(kuò)展類里 做對(duì)應(yīng)的約束,也就是作為測(cè)試用例;不同的約束也就給出了不同的配置,形成針對(duì)各個(gè)功 能的測(cè)試用例。此外會(huì)有一個(gè)配置模塊,針對(duì)整個(gè)驗(yàn)證環(huán)境配置數(shù)據(jù)都可以存放在這里,配 置模塊會(huì)控制數(shù)據(jù)包產(chǎn)生數(shù)量,以及基本的配置信息,用來控制整個(gè)驗(yàn)證流程的進(jìn)度。有了 這些配置信息和約束,接下來數(shù)據(jù)產(chǎn)生模塊就會(huì)不斷生成數(shù)據(jù)包,這些數(shù)據(jù)包都是在約束 范圍內(nèi)的隨機(jī)化的數(shù)據(jù)。數(shù)據(jù)包在執(zhí)行模塊中被執(zhí)行,也可以認(rèn)為是解包。數(shù)據(jù)包被執(zhí)行不但要取出對(duì)應(yīng) 的數(shù)據(jù)包,還要根據(jù)數(shù)據(jù)包中的流程控制標(biāo)志位來確定配置流程或者是工作模式,同時(shí)會(huì) 把數(shù)據(jù)包通過回調(diào)的方式發(fā)送給自檢記分板做自檢或是覆蓋率模塊做功能覆蓋率收集。在 圖1中回調(diào)都以空心粗箭頭描述,回調(diào)提供了一個(gè)簡(jiǎn)單的入口,通過這個(gè)入口可以任意添 加或取消回調(diào),對(duì)數(shù)據(jù)包進(jìn)行復(fù)制,傳遞,更改?;卣{(diào)可以在不影響驗(yàn)證環(huán)境流程本身產(chǎn)生 的同時(shí),插入額外的操作。執(zhí)行模塊解析數(shù)據(jù)包后,對(duì)應(yīng)的驅(qū)動(dòng)模塊就會(huì)根據(jù)配置流程對(duì)待 驗(yàn)證模塊的輸入輸出端口進(jìn)行讀寫,這里的驅(qū)動(dòng)模塊可以為BFM(Bus Function Model總線 行為模型)。經(jīng)待驗(yàn)證模塊響應(yīng)灌入的激勵(lì),接收模塊就可以從待驗(yàn)證模塊輸出讀出響應(yīng), 將數(shù)據(jù)重新賦予數(shù)據(jù)類,并通過通道傳遞給自檢記分板進(jìn)行自檢,或者通過回調(diào)傳遞給覆 蓋率模塊統(tǒng)計(jì)覆蓋率。VMM中主要就是由自檢記分板的自檢來保證數(shù)據(jù)的正確性,由功能覆 蓋率模塊來監(jiān)測(cè)驗(yàn)證的進(jìn)度,只有在功能覆蓋率模塊達(dá)到100%,并且代碼覆蓋率模塊也達(dá) 到一個(gè)較高的百分率的情況下,才能認(rèn)為整個(gè)驗(yàn)證是通過的。VMM方法學(xué)提出了一種層次化的驗(yàn)證結(jié)構(gòu),即將驗(yàn)證分為不同抽象層次,如圖1中 所標(biāo)示。在測(cè)試用例中都是抽象層次最高的約束,在數(shù)據(jù)產(chǎn)生模塊中會(huì)由這些約束生成數(shù) 據(jù),這就是通常所說的執(zhí)行層。各個(gè)驗(yàn)證模塊之間傳遞的都是數(shù)據(jù)類,之后驅(qū)動(dòng)模塊會(huì)再 次根據(jù)數(shù)據(jù)產(chǎn)生配置流程或是根據(jù)協(xié)議發(fā)送數(shù)據(jù),同時(shí)也就是從執(zhí)行層到信號(hào)層的一個(gè)轉(zhuǎn) 換。接收模塊會(huì)根據(jù)端口協(xié)議再次將數(shù)據(jù)組合成數(shù)據(jù)包,也就是從信號(hào)層到執(zhí)行層的轉(zhuǎn)換, 接下來傳遞給執(zhí)行模塊來處理,實(shí)際上又回到了執(zhí)行層。當(dāng)數(shù)據(jù)回到高抽象度層次,數(shù)據(jù)或 是控制位比對(duì)都不牽涉具體的時(shí)序關(guān)系,而所有的時(shí)序關(guān)系正確性可以在信號(hào)層通過總線 行為模型以及斷言(Assertion)驗(yàn)證接口協(xié)議。這種結(jié)構(gòu)就帶來較為清晰的層次,可以將 整個(gè)驗(yàn)證分劃為不同的驗(yàn)證模塊,帶來更高的效率,更好的繼承移植性,對(duì)于同類型待驗(yàn)證 模塊可以重用執(zhí)行層,對(duì)于系統(tǒng)級(jí)可以重用信號(hào)層。此外VMM方法學(xué)提出了以覆蓋率為目標(biāo),有約束的隨機(jī)激勵(lì)為途徑的驗(yàn)證方法。 在約束的控制下,可以產(chǎn)生隨機(jī)組合的激勵(lì),隨機(jī)激勵(lì)在觸碰到更多難以用直接測(cè)試用例 驗(yàn)證的一些邊界情況,能夠利用VMM驗(yàn)證環(huán)境驗(yàn)證更多的測(cè)試用例。這里的覆蓋率除了常 用的代碼覆蓋率還有功能覆蓋率,只要將所有需要驗(yàn)證的功能點(diǎn)都轉(zhuǎn)化為功能覆蓋率模 型,那么在整個(gè)驗(yàn)證過程中,仿真工具會(huì)收集覆蓋率信息。最后可以將功能覆蓋率結(jié)果合 并,只有100%的功能覆蓋率才代表驗(yàn)證過程結(jié)束。VMM方法學(xué)不但提供了建立驗(yàn)證環(huán)境的方法學(xué),也提供了 一整套驗(yàn)證基本類庫(kù),包
5含了驗(yàn)證模塊的基本類,以及驗(yàn)證的流程的框架,另外包含了一些宏定義和消息機(jī)制。類庫(kù) 可以很快建立自己的驗(yàn)證環(huán)境,只要關(guān)注功能驗(yàn)證本身,而不需要過多考慮環(huán)境的底層運(yùn) 作。基于VMM的MCU驗(yàn)證就需要充分利用VMM的特點(diǎn),即有約束的隨機(jī)數(shù)生成,自動(dòng)數(shù) 據(jù)對(duì)比檢查,和功能覆蓋率收集。圖2是本發(fā)明的一實(shí)施例,其中最上層區(qū)域是所有測(cè)試用例,最下部分是待測(cè)的 MCU(待驗(yàn)證模塊),整個(gè)中間部分即為驗(yàn)證環(huán)境。待驗(yàn)證模塊采用Verilog代碼編寫,MCU參照模型采用C代碼編寫,通過 SystemVerilog 的 DPI (Direct Program Interface 直接程序接口)調(diào)用待驗(yàn)證模塊或 MCU 參照模型??紤]到存儲(chǔ)單元數(shù)據(jù)量大,所述驗(yàn)證環(huán)境使用文件讀寫方式,用磁盤文件作為 中介來進(jìn)行自檢。整體驗(yàn)證環(huán)境都使用SystemVerilog編寫,包括測(cè)試用例,指令生成,端 口驅(qū)動(dòng)模塊,ROM行為模型,RAM行為模型,寄存器行為模型,自檢記分板以及功能覆蓋率模 塊。所述驗(yàn)證環(huán)境中VMM提供了有約束的隨機(jī)數(shù)生成,可以將MCU指令集進(jìn)行分類,將 同一格式的指令歸為一類,如表1所示,這樣就可以將指令抽象化,通過一定的約束,隨機(jī) 生成指令以及指令所需的參數(shù),將所有指令數(shù)據(jù)放入VMM_DATA中。表 權(quán)利要求
1.一種基于VMM驗(yàn)證方法學(xué)的MCU驗(yàn)證平臺(tái)實(shí)現(xiàn)方法,其特征在于待驗(yàn)證模塊采用Verilog代碼編寫,MCU的參照模型采用C語言編寫,通過 SystemVerilog的直接程序接口調(diào)用待驗(yàn)證模塊或MCU的參照模型;使用文件讀寫方式,用磁盤文件作為中介進(jìn)行待驗(yàn)證模塊的自檢;整體驗(yàn)證環(huán)境使用 SystemVerilog 編寫;SystemVerilog提供有約束的隨機(jī)數(shù)生成,將MCU指令集進(jìn)行分類,將同一格式的指令 歸為一類;根據(jù)測(cè)試用例的約束,隨機(jī)生成指令以及指令所需的參數(shù),將所有指令數(shù)據(jù)放入 數(shù)據(jù)類VMM_DATA中;所述指令通過通道傳遞到執(zhí)行模塊;所述執(zhí)行模塊中采用C語言編寫一個(gè)匯編器,當(dāng) 通過直接程序接口將MCU的參照模型接入驗(yàn)證環(huán)境中時(shí),匯編器將生成的匯編指令實(shí)時(shí)轉(zhuǎn) 化為十六進(jìn)制代碼;當(dāng)通過直接程序接口將MCU的參照模型接入驗(yàn)證環(huán)境中時(shí),在每一條指令執(zhí)行后寫出 一個(gè)參照結(jié)果;MCU參照模型通過存儲(chǔ)單元保存數(shù)據(jù),內(nèi)部特殊功能寄存器單元保存寄存 器值,通過對(duì)比所述參照模型與待驗(yàn)證模塊的存儲(chǔ)單元和特殊功能寄存器單元中的數(shù)據(jù), 來保證待驗(yàn)證模塊MCU的每一條指令的工作狀態(tài)和參照模型都是一致的;實(shí)現(xiàn)包括ROM,RAM的SystemVerilog行為模型,并且通過后門直接將寄存器值通過通 道傳遞給自檢記分板;通過MCU的參照模型寫出每一條指令后的寄存器值會(huì)保存下來,由 自檢記分板通過讀取磁盤文件來讀入,并同從存儲(chǔ)單元行為模型通道傳輸過來的寄存器值 進(jìn)行自檢;將MCU的參照模型運(yùn)行的結(jié)果和MCU的參照模型內(nèi)部對(duì)應(yīng)的特殊功能寄存器置位作為 功能覆蓋率模塊的收集點(diǎn),將關(guān)注的特殊功能寄存器值描述為功能覆蓋模型,在仿真中自 動(dòng)監(jiān)測(cè),并在所有測(cè)試用例通過后給出一個(gè)最終的功能覆蓋率。
2.如權(quán)利要求1所述的方法,其特征在于每次添加測(cè)試用例后都不需要觀測(cè)波形或 是生成參照結(jié)果,甚至直接將應(yīng)用程序放入驗(yàn)證環(huán)境中加以測(cè)試。
3.如權(quán)利要求1所述的方法,其特征在于所述自檢有一定模糊性,在幾個(gè)時(shí)鐘周期內(nèi) 值能夠一致則通過檢查,最后輸出結(jié)果中寫出自檢結(jié)果。
4.如權(quán)利要求1所述的方法,其特征在于所述驗(yàn)證環(huán)境要求功能覆蓋率和代碼覆蓋 率都為100%,功能覆蓋率是所有從MCU特性中提煉出來的目標(biāo),是必須達(dá)到的全覆蓋。
5.如權(quán)利要求1所述的方法,其特征在于所述執(zhí)行模塊、MCU參照模型和待驗(yàn)證模塊 可以選擇使用隨機(jī)生成的匯編指令,或外部輸入的匯編指令文件。
全文摘要
本發(fā)明公開了一種基于VMM驗(yàn)證方法學(xué)的MCU驗(yàn)證平臺(tái)實(shí)現(xiàn)方法,輸入所有可用應(yīng)用程序代碼或是由平臺(tái)自身產(chǎn)生可約束的隨機(jī)指令;實(shí)現(xiàn)MCU的C模型并給出所有存儲(chǔ)單元以及特殊功能寄存器的值,通過直接程序接口(DPI)調(diào)用;根據(jù)存儲(chǔ)單元模型為參照進(jìn)行自動(dòng)自檢;描述各種功能覆蓋率模型,并可以給出功能覆蓋率結(jié)果。本發(fā)明能夠搭建一個(gè)可移植,重用,擴(kuò)展,完全自動(dòng)檢查的具有層次化結(jié)構(gòu)的MCU驗(yàn)證平臺(tái)。
文檔編號(hào)G06F11/36GK102096628SQ200910201938
公開日2011年6月15日 申請(qǐng)日期2009年12月15日 優(yōu)先權(quán)日2009年12月15日
發(fā)明者朱思良 申請(qǐng)人:上海華虹集成電路有限責(zé)任公司