uvm_sequence_library

编写测试用例时,针对不同的场景构造不同的sequence.功能测试稳定后,可以将不同的测试场景组合起来构造新的测试场景,在这里将可以用到uvm_sequence_library.
1.uvm_sequence_library
顾名思义,uvm_sequence_library是uvm_sequence的集合,它也派生于uvm_sequence;本质上也是uvm_sequence;不过它可以根据不同的算法,选择要执行的sequence.
2.注册
a.在构造uvm_sequence_library时,需要制定它所产生的xaction类型;在new函数中添加init_sequence_library;调用uvm_sequece_library_utils注册;不要定义空的body函数,定义空的body函数会导致任何数据都不会发送;
b.在uvm_sequence中调用uvm_add_seq_lib将此sequence添加到对应的uvm_sequence_library中;
3.控制选择算法
uvm_sequence_library支持的控制算法有4种,分别是UVM_SEQ_LIB_RAND、UVM_SEQ_LIB_RANDC、UVM_SEQ_LIB_ITEM、UVM_SEQ_LIB_USER;
UVM_SEQ_LIB_RAND:随机选择sequence;
UVM_SEQ_LIB_RANDC:将加入的sequence随机排列顺序,按照此顺序执行,在此顺序执行完成之前,执行过的sequence不会执行第二次;
UVM_SEQ_LIB_USER:用户自定义的顺序,需要在uvm_sequence_library中重写select_sequence;
UVM_SEQ_LIB_ITEM:将uvm_sequence_library当做一般的sequence使用.
4.select_sequence
a.获取注册的sequence数量
uvm_sequence_library定义了sequences变量,可以通过sequences.size()获取对应的个数
b.get_type_name
借助于sequences[i].get_type_nane获取对应sequence的名字,方便后续做灵活处理.
在这里插入图片描述
5.uvm_sequence_library_cfg
uvm_sequence_library_cfg定义了min_random_count、max_random_count和selection_mode;可以单独利用uvm_config_db对相应参数设置,也可以通过实例化uvm_sequence_library_cfg对其中的参数修改之后,借助于uvm_config_db将uvm_sequence_library_cfg传递到uvm_sequence_library,实现参数的设置.
在这里插入图片描述

6.示例
构造两个sequence,分别发送长包和短包,图一是UVM_SEQ_LIB_RAND,可以看出长包和短包随机调度,会出现连续三个短包的情况;图而是UVM_SEQ_LIB_RANDC,可以看出长包和短包循环调度,每次调度时隙内,短包和长包各会调度一次,调度完成后再修改调度顺序,最多出现连续两个长包或者两个短包的情况.
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值