www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 電源 > 電源
[導讀]1 簡介隨著設計的復雜程度不斷增加,要求把更多的資源放到驗證上,不但要求驗證能夠覆蓋所有的功能,還希望能夠給出大量的異常情況來檢查DUT對應異常的處理狀態(tài),這在傳統(tǒng)測

1 簡介

隨著設計的復雜程度不斷增加,要求把更多的資源放到驗證上,不但要求驗證能夠覆蓋所有的功能,還希望能夠給出大量的異常情況來檢查DUT對應異常的處理狀態(tài),這在傳統(tǒng)測試方法下往往是難以實現的。此外,設計不斷地重用,而驗證也希望能夠重用一樣的驗證模塊,這就催生了層次化的驗證方法。Synopsys的 VMM驗證方法學提供了基于SystemVerilog的驗證方法,包括了有約束的隨機數生成,層次化的驗證結構,以及以功能覆蓋率為指標的驗證流程。在本文中,圍繞Synopsys的VMM(Verification Methodology Manual)構建了一個MCU驗證環(huán)境。

2 DUT

在這個環(huán)境中驗證了一個8位MCU,該CPU時鐘周期即為指令周期,兼容MCU指令集,包含8位的運算邏輯單元,包含了ACC、B、PSW等常用的寄存器,4組R0-R7的R寄存器,支持直接,間接尋址,支持位操作,跳轉指令可以為8位有符號相對地址跳轉或者11位,16位無符號絕對地址跳轉。

4個優(yōu)先級12個中斷,中斷包括外部輸入中斷,以及串口和計數器等的內部中斷,15位可編程Watchdog,另外包含程序ROM接口,外部RAM接口,內部RAM以及SFR接口。MCU本身并不包含memory,所有的ROM以及RAM都是通過外部接口進行通信,這里在VMM環(huán)境里實現了行為級的 memory model,來保存程序代碼和數據。以下是MCU的簡要模塊框圖。

圖1 MCU內部結構

這個MCU也是在原有基礎上改進了指令周期,減少了大部分指令執(zhí)行所需的指令周期。因為部分指令所需要的指令周期的縮短,很多原有采樣和賦值時間相應發(fā)生較大變化,在功能驗證的基礎上,需要關注是否因此對下一條指令產生影響,特別是中斷和部分指令同時發(fā)生時的一些特殊情況。

MCU的指令執(zhí)行都會通過讀寫RAM memory來實現,另外所有的外設都會通過配置SFR memory來啟動相應功能,并會對相應的SFR置位來顯示外設的工作結果或是狀態(tài),這里RAM memory和SFR memory內容就是需要關注的檢測點,只要保證RAM memory以及SFR memory內容的正確,就可以驗證MCU的所有功能正確。

3 基于VMM的MCU驗證結構

基于VMM的MCU驗證就需要充分利用VMM的特點,即為有約束的隨機數生成、自動數據對比檢查,和功能覆蓋率收集。

3.1 有約束的隨機指令生成

傳統(tǒng)的MCU驗證,需要寫匯編代碼,注入MCU程序ROM進行仿真,匯編代碼的質量和覆蓋率是影響驗證的主要因素。除了可以將應用程序作為 TestCase,只能根據驗證目標編寫對應的TestCase。這樣的TestCase屬于Direct TestCase,只能覆蓋一部分功能,尤其是MCU有指令組合的情況,以及除了ALU單元的外設單元,當外設單元與內部指令并行工作,Direct TestCase往往是不能滿足要求的。這里,VMM提供了有約束的隨機數生成,可以將MCU指令集進行分類,將同一格式的指令歸為一類,這樣可以通過一定的約束隨機的生成指令以及指令所需的參數,在下一節(jié)的指令類中會詳細講解關于指令的分類與生成。指令生成后,實現了一個匯編器,這個匯編器是由C代碼實現的,通過DPI將MCU的C模型接入驗證環(huán)境中,這樣生成的匯編指令可以實時轉化為16進制代碼,并且直接讀入MCU的ROM進行仿真。隨機指令生成,可以添加節(jié)省人力,并且給出更加特殊的TestCase,此外還可以對易錯的情況添加額外的約束,讓邊緣情況測試幾率更大,從而做到更多的驗證。

3.2 自動數據對比檢查

寫匯編代碼,讀入程序ROM,通過仿真來觀測結果,結果的正確性通過波形觀察,這種驗證方法測試數量比較有限,只能在人力控制范圍內進行驗證,不適合于遞歸以及大量TestCase的驗證。此外,在以往的MCU驗證中,一旦發(fā)生功能錯誤,真正的錯誤點有可能是多個指令之前,需要往前查找波形,往往 debug時候查找問題源會耗費大量時間,甚至有些深層次的問題因為不屬于驗證目標,或者不在觀測點內,往往會被忽略。在環(huán)境里,已經引入的隨機的指令生成,這就需要一個參照模型能夠生成對應的參照結果。這里實現一個用C語言描述的MCU參照模型,同樣通過DPI將MCU的C模型接入驗證環(huán)境中,這個模型以16進制代碼作為輸入,可以在每一條指令執(zhí)行寫出一個參照結果。MCU的都是通過RAM保存數據,SFR寄存器來保存狀態(tài),可以通過對比memory中的數據,來保證MCU的每一條指令的工作狀態(tài)都是和參考模型是一致的。而且每次添加TestCase后都不需要觀測波形或是生成參照結果,甚至可以直接將應用程序放入環(huán)境中加以測試。在環(huán)境里通過C參考模型寫出的每一條指令后的狀態(tài)會保存下來,由ScoreBoard來讀入,環(huán)境可以讀出MCU執(zhí)行程序 ROM后RAM和SFR的值并傳遞給ScoreBoard,由ScoreBoard來進行自檢,并且在log中寫出自檢結果。

3.3 功能覆蓋率收集

在Direct TestCase下,匯編代碼都是特定目的的測試代碼,所關注的寄存器狀態(tài),或是真實指令執(zhí)行情況往往很難統(tǒng)計,代碼覆蓋率能提供的信息相當有限。在 VMM環(huán)境中,可以通過模型的執(zhí)行結果來統(tǒng)計指令的執(zhí)行情況,因為模型和RTL是功能一致的,內部數據每條指令之后都會對比自檢,可以將模型運行的結果和模型內部對應的SFR狀態(tài)位作為功能覆蓋率收集點,將關注的功能寫為覆蓋率模型,在仿真中自動收集,并在仿真所有TestCase后將覆蓋率結果合并在一起,給出一個最終的功能覆蓋率,這里要求功能覆蓋率和代碼覆蓋率都為100%。

4 驗證功能模塊的具體實現

4.1 簡介

以VMM為基礎,實現了一個驗證8位MCU的平臺,這個平臺可以隨機生成一系列的指令,并且在每個指令后進行自檢。下面就這個平臺的詳細實現加以介紹,4.2小節(jié)將會介紹隨機指令生成,以及Scenario約束的實現,4.3小節(jié)將會介紹Driver部分,這里Driver實現了Transactor的任務,除了實現匯編,將16進制代碼讀入ROM模型中,還要調用MCU的C模型并產生結果供后續(xù)ScoreBoard對比。 4.4小節(jié)將會介紹MCU的C模型,C模型行為是直接影響MCU是否正確的保證。4.5小節(jié)將會介紹memory模型的實現,包括Internal SFR、Internal RAM、External SFR以及External RAM。4.6小節(jié)介紹過于ScoreBoard的自檢機制,以及自動終止仿真的方法。4.7小節(jié)將會介紹關于功能覆蓋率模型的建立。

4.2 指令數據包以及Scenario Generator

在VMM環(huán)境中,所有的數據都是擴展vmm_data得到,在這里首先對指令分類,相同格式的指令皆為同一類型,具體部分分類表格如表1中所示。

分類的依據在于指令格式,例如對從工作寄存器Rn到A的操作,或是從直接地址Rx到A的操作,這樣可以通過約束一個種類來隨機化指令格式,生成指令格式以后可以根據指令格式來填入相應的隨機值。首先就是約束指令格式對應的指令,代碼如:

constraint add_mode_decide_kind{

(addr_mode==RN_A) -> kind inside {MOV, ADD, ADDC, SUBB, XCH, ANL, ORL, XRL};

(addr_mode==RX_A) -> kind inside {MOV, ADD, ADDC, SUBB, XCH, ANL, ORL, XRL};

…………}

然后約束對應的寄存器地址,立即數,相對地址等,代碼如:

constraint inst_valid{

di_x inside {[0:255]};

reg_y inside {[0:255]};

reg_i inside {0, 1};

reg_n inside {[0: 7]};

…。}

得到了指令的格式,隨機得到指令,指令參數,在以上約束下就可以生成一條符合語法的指令。通過在TestCase中約束指令格式,或是地址數據就可以在TestCase中控制Generator生成的指令,通過變換隨機種子就可以生成不同類型的指令集合。

使用宏定義對數據類擴展就可以得到數據類的Generator和Channel:

`vmm_channel(inst)

`vmm_scenario_gen(inst, “inst”)

每次scenario Generator生成一條指令,并且通過channel傳遞給Driver??梢詫⒁幌盗屑s束做為一個scenario,這樣可以控制指令與指令之間的關系,將一系列scenario合并可以生成更多的隨機組合,例如:

$void(scenario_kind) == R0_OP -> {

foreach(items[i]){

items[i].addr_mode inside {0,1,2,4,5,6,7,8,10,11,12,13,14,21,22,23,24,26,27,28=};

items[i].reg_x inside {0};

items[i].reg_n inside {0};

items[i].reg_i inside {0};

}

}

驗證這里能夠做到盡可能大量重復地測試某些指令的集合,以便將一些邊緣情況測到,例如實際應用上會反復使用累加器或是反復調用R0-R7,都可以通過約束來實現。大量隨機的代碼測試下,可以給出更邊緣的TestCase,盡可能地測試到一些邊緣情況。

4.3 Driver

這里Driver實現了Transactor的功能,除了實現將asm代碼匯編,將16進制代碼讀入ROM模型中,還要調用MCU的C模型并產生結果,供后續(xù)ScoreBoard對比。

由于匯編器需要將所有指令代碼讀入進行統(tǒng)一匯編,由Generator生成的所有指令代碼在Driver中會被寫入asm文件,通過DPI調用一個匯編的 C function來處理這個asm文件,生成一個HEX 代碼文件,Driver可以讀入這個HEX 代碼,并且寫入一個用SystemVerilog實現的ROM模型中,另外通過DPI調用一個C的MCU仿真器,可以實時寫出每一條指令MCU的SFR、 RAM狀態(tài),同樣這些狀態(tài)都保留在單獨的文件中,以作為ScoreBoard的輸入。

因為MCU的指令組合可以說是無法測全的,真正的測試往往要發(fā)生在應用代碼測試上,Driver除了可以接受從channel中得到的指令,也可以直接從外部文件得到asm代碼或是1

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉