p_sequencer与m_sequecer用法梳理

1.m_sequencer定义
在uvm_sequence_item中定义了protected变量m_sequencer,它的类型是uvm_sequencer_base;我们常用的uvm_sequence继承于uvm_sequence_item,那么所有的sequence都是可以看到m_sequencer的.
在这里插入图片描述
2.m_sequencer获取
通常有两种方法启动sequence,一种是通过uvm_config_db设置default sequence来实现.在环境中会自动get来获取对应的参数.获取成功之后,通过sequence中的set_sequencer将sequencer设置给m_sequecer.
在这里插入图片描述
3.set_sequencer函数
通过以上的分析可知m_sequecer实际上指向实际运行的sequencer的指针.
在这里插入图片描述
在这里插入图片描述
4.p_sequencer引入
我们知道uvm_sequencer是uvm_component类型,uvm_sequence是uvm_sequence_item类型;uvm_component可以通过树形组织结构管理,可以很方便的通过uvm_config_db实现对其类成员的参数设置.
uvm_sequence产生的xaction会通过uvm_sequencer最终发送到driver.在发送xaction时,会对其进行随机,有时候需要相应的参数对随机结果控制.此时,可能会想到通过sequencer来传递对应的参数.
因为sequence中看到了是指向m_sequencer的指针,不能直接使用sequencer中的类成员.一个简单的办法便是将m_sequencer赋给实际的sequencer,这样便可以使用其类成员了.环境中定义了
uvm_declare_p_sequencer宏,在相应的sequence中使用即可.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值