简介
sequence library是一系列sequence的集合,派生自sequence。它可以根据特定的算法随机选择注册在其中的的一些sequence,并且在body内执行这些sequence。
相关宏
uvm_add_to_seq_lib:在一个sequence定义时,通过该宏将sequence加入到某个sequence library中;
一个sequence可以加入到多个不同的sequence library中;
显然,多个sequence可以加入到一个sequence library中;
控制选择算法
通过selection_mode来选择算法类型:
类型 | 含义 |
---|---|
UVM_SEQ_LIB_RAND | 完全随机 |
UVM_SEQ_LIB_RANDC | 先将sequence随机排一个顺序,后按此顺序执行 |
UVM_SEQ_LIB_ITEM | 不执行其sequence队列中的sequence,而自己产生transaction |
UVM_SEQ_LIB_USER | 用户自定义选择算法,需要重载select_sequence,产生sequence的index |
控制参数
int unsigned min_random_count=10;
int unsigned max_random_count=10;
上文代码来源自UVM源代码,min_random_count和max_random_count控制sequence library的执行次数;分别表示最大执行次数和最小执行次数;可以同过uvm_config_db来设置;
注意事项
1.派生自uvm_sequence时需要注明此sequence library所产生的transaction类型;
2.在其new函数中调用init_sequence_library,否则内部候选sequence队列就是空队列;
3.需要调用uvm_sequence_library_utils注册;