<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      uvm學習雜記

      一個類,只定義了而沒有實例化,是沒有任何意義的,但也有特殊情況,對于一個靜態類,即其成員變量都是靜態的,不實例化也可以正常使用;

      類要想和DUT通信,不能在類里定義接口,會報錯,只能在類里定義虛擬接口;若直接基于sv的測試平臺中是在new函數中調用接口,在UVM中則通過uvm_config_db::get來得到從top module傳遞而來的interface;

      UVM中,各個component(driver,monitor等功能部件)通信使用TLM事務級模型方式,其中要發送信息的一方,使用uvm_analysis_port#(my_transaction),是UVM庫中的一個參數化的類;

      driver是最底層的,這里不必進行實例化,只需在build_phase中,也要完成類的實例化工作,只需調用super.build_phase(phase);In_agent實現driver,monitor,sequencer的實例化,而In_agent的實例化則在env的build_phase中完成;

      build_phase中除了完成實例化之外,還要完成config_db機制的get行為,即把其它component設置給此component的一些參數接收過來;

      任何一個派生自uvm_component類的主要的動作都是在main_phase中完成的,main_phase的第一句話是super.main_phase,即調用父類的main_phase;seq_item_port是用于連接driver和sequencer的一個端口,driver如果想要發送數據就要從這個端口獲得;sequence如果有數據要給driver,也要通過這個端口給driver;seq_item_port中my_driver的父類中,即uvm_driver類中,它的實例化也是在uvm_driver的build_phase中完成的;

      agent有兩種形式,UVM_PASSIVE和UVM_ACTIVE,以前者方式運轉的agent只監測總線而不驅動總線;以后者方式運行的agent驅動總線,也可以監測總線;

      uvm_blocking_get_port也是一個TLM事務級端口,用來接收一個uvm_analysis_port發送的信息,而uvm_analysis_port是發送信息的;uvm驗證平臺的各個組件之間通過這兩個端口來實現事務級別通信;

      scoreboard中一般使用一個隊列來暫存從reference model得到的期望數據;

      uvm驗證平臺可以使用uvm_tlm_analysis_fifo把uvm_blocking_get_port和uvm_analysis_port連接;

      在uvm中,即使driver,monitor,reference model和scoreboard的main_phase都是無限循環的,但是也不需要顯式的調用finish,只需要使用objection機制即可。在發包之前,通過調用startingphase.raiseobjection(this)告訴UVM可以開始發包了,當包發送完后,調用startingphase.dropobjection(this)來告訴UVM可以使用finish,只需要使用objection機制即可。在發包之前,通過調用startingphase.raiseobjection(this)告訴UVM可以開始發包了,當包發送完后,調用startingphase.dropobjection(this)來告訴UVM可以使用finish了;當調用drop_objection時,UVM會檢查其它的component的objection是否已經被drop了,直到被drop后,才會調用$finish.

      在program頂層,調用run_test()函數會create tc-->create env。調用run_test后,會自動創建一個env的實例,會自動調用env中的main_phase。所有派生自uvm_component及其派生類的類,都應該使用uvm_component_utils宏來注冊。在uvm驗證平臺中,只要一個類使用uvm_component_utils注冊,切此類被實例化了,那么這個類的main_phase會自動被調用。

      uvm驗證平臺的開啟和關閉,一般是在main_phase中,通過raise_objection和drop_objection來開啟和關閉。

      在uvm的build_phase中,一定要使用super.build_phase(phase);語句來聲明,否則的話,uvm的樹形結構就無法建立起來,這一點要牢記。

      使用uvm進行編程,要對uvm的基類比較熟悉。想實現一個功能的時候,首先要知道從uvm的哪個基類里面來派生。比如說,所有的transaction,都必須從uvm_sequence_item這個uvm的基類來派生。

      uvm_driver中預先定義好了一個任務,叫做main_phase,UVM由phase來管理驗證平臺的運行。可以簡單地認為,實現一個driver,就是實現uvm_driver::main_phase這個task任務。

      有時候如果不知道當前代碼的層次結構,可以使用get_full_name函數來獲取。不過get_full_name函數只能用于component組件,無法應用于object組件,因為只有component組件才構成了uvm的樹形結構。可以使用`uvm_info("DEBUG",get_full_name(),UVM_LOW)在uvm component組件中。

       

      posted @ 2018-01-21 22:38  宙斯黃  閱讀(2207)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 18女下面流水不遮图| 在线播放亚洲成人av| 男人的天堂va在线无码| 国产精品久久久久aaaa| 国产av黄色一区二区三区| 亚洲国产天堂久久综合226114 | 亚洲高清国产自产拍av| 国产成人精品亚洲资源| 中文国产不卡一区二区| 国产欧亚州美日韩综合区| 公天天吃我奶躁我的在线观看| 精品久久久久久久中文字幕| 成人午夜污一区二区三区| 国产精品高清国产三级囯产AV| 高清无码爆乳潮喷在线观看| 日韩精品国产二区三区| 人妻精品动漫h无码| 亚洲一区成人在线视频| 国产日韩av一区二区在线| 色道久久综合亚洲精品蜜桃| 国产天美传媒性色av高清| 国内精品无码一区二区三区| 黄石市| 少妇特黄a一区二区三区| 色色97| 内射少妇一区27p| 美女黄18以下禁止观看| 久章草在线毛片视频播放| 麻豆人人妻人人妻人人片av | 精品午夜福利在线视在亚洲| 日韩成av在线免费观看| 国产精品18久久久久久麻辣| 国产精品综合色区在线观| 无码熟妇人妻AV影音先锋| 国产亚洲精品VA片在线播放| 精品人妻二区中文字幕| 亚洲精品免费一二三区| 亚洲一区二区在线av| julia无码中文字幕一区| 国产国产人免费人成免费| 无码人妻一区二区三区免费N鬼沢|