uvm_sequence_library是從uvm_sequence擴(kuò)展而來的,它是一個容納了一系列其它sequences類型的容器,在啟動時,它會根據(jù)模式從這系列sequences中選擇并執(zhí)行它們。
如果處于UVM_SEQ_LIB_RAND模式,它的select_rand屬性將會隨機(jī)并作為選擇sequences的索引。
如果處于UVM_SEQ_LIB_RANDC模式,它的selec_randc屬性將會隨機(jī)并作為索引。
如果處于UVM_SEQ_LIB_ITEM模式,僅生成并執(zhí)行REQ類型的sequence items。
如果處于UVM_SEQ_LIB_USER模式時,select_sequence()方法用來獲取下一個執(zhí)行sequence的索引,用戶可以在子類中overwrite這個方法來實(shí)現(xiàn)自定義的選擇算法。
既然uvm_sequence_library是一系列sequences類型的集合,那么如何將sequences類型添加或注冊到sequence library里呢?UVM提供兩類方式:全局方式和私有方式。
1. 全局方式
全局方式添加到uvm_sequence_library的sequences類型會被該類的所有實(shí)例(instances)選擇,也就是所有實(shí)例里都會注冊了這些sequences類型。與這功能相關(guān)的函數(shù)和變量有:
從上述變量和函數(shù)可以看出,UVM是利用systemverilog的static機(jī)制來實(shí)現(xiàn)全局注冊方式,sequences類型必須在sequence library被創(chuàng)建之前都注冊進(jìn)去。
需要注意的是,要用這種方式,在創(chuàng)建sequence library的子類時,必須需要在其聲明中調(diào)用uvm_sequence_library_utils宏,并在其構(gòu)造函數(shù)中調(diào)用init_sequence_library()方法。
另外,全局的注冊方式也可以使用uvm_add_to_seq_lib(TYPE,LIBTYPE)宏來完成。
2. 私有方式
私有方式添加到uvm_sequence_library的sequences類型會被該類的每個實(shí)例(instances)獨(dú)享,也就是每個實(shí)例注冊的sequences類型互不影響。與這功能相關(guān)的函數(shù)和變量有:
從上述變量和函數(shù)可以看出,它們都不是static的,也就是必須要等sequence library創(chuàng)建出實(shí)例后,才能注冊到實(shí)例里,因此每個實(shí)例注冊的sequences類型可以互不影響了。
3. 總結(jié)
這兩種方式都有自己的使用場景,如果想讓所有sequence library的實(shí)例都有的sequence類型,那么使用全局方式會更方便點(diǎn)。
如果想讓sequence library的實(shí)例想有一些額外的sequence類型,那么私有方式是最好的選擇。下圖總結(jié)了注冊的兩種方式以及涉及到的相關(guān)變量和函數(shù)。
-
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19236 -
sequence
+關(guān)注
關(guān)注
0文章
23瀏覽量
2868
發(fā)布評論請先 登錄
相關(guān)推薦
急急急,如何將modbus library加載到lv的express vis中
如何將簇里不同數(shù)據(jù)類型的數(shù)據(jù)批量讀寫到ini文件里?
如何將兩個或多個相同類型的記錄寫入動態(tài)NFC標(biāo)簽?
簡單的LED如何將庫添加進(jìn)去 ?
如何將gdb移植到嵌入式板子上單獨(dú)運(yùn)行呢
請問一下在UVM中的UVMsequences是什么意思啊
如何配置sequence的仲裁算法和優(yōu)先級及中斷sequence的執(zhí)行
如何將RAFL添加到我的項(xiàng)目的適當(dāng)示例和/或文檔?
如何將FPGA里的數(shù)據(jù)導(dǎo)入dsp板子里去呢?
UVM中seq.start()和default_sequence執(zhí)行順序
如何將TDM業(yè)務(wù)添加到WiMAX平臺上
如何將Crosswalk添加到Cordova應(yīng)用程序中
如何將WizFi360 EVB Mini添加到樹莓派Pico Python
![<b class='flag-5'>如何將</b>WizFi360 EVB Mini<b class='flag-5'>添加</b>到樹莓派Pico Python](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何將Klayout Cell動態(tài)導(dǎo)入Lumerical Multiphysics
![<b class='flag-5'>如何將</b>Klayout Cell動態(tài)導(dǎo)入Lumerical Multiphysics](https://file1.elecfans.com/web2/M00/BE/AE/wKgaomWuCyyADTvNAAApyulFE8I582.png)
評論