UVM中sequence的启动方式

你是否在面试或笔试中被问到了sequence有哪些启动的方式?今天就来梳理一下sequence的启动到底有哪些。

1. start( ) 函数启动

经常用的一种就是在 test 中手动调用 start 函数启动对应的sequence,将sequence挂载在对应的sequencer上。如下:在base_test中启动

class base_test extends uvm_test;
my_env env;
...
endclass

task base_test::main_phase(uvm_phase);
	base_sequence seq;
	seq = base_sequence::type_id::create("seq");
	seq.start( env.agt.sqr);
endtask
...

2. default_sequence 启动

也可以使用default sequence的方式指定自动启动的sequencer,如下:在base_test中指定

class base_test extends uvm_test;
my_env env;
	...
endclass

function base_test::build_phase(uvm_phase phase);
	super.build_phase(phase);
	base_sequence seq = new("seq");
	
	uvm_config_db#(uvm_object_wrapper)::set(this,
											"env.agt.sqr.main_phase",
											"default_sequence",
											seq);
											
//	uvm_config_db#(uvm_object_wrapper)::set(this,
//											"env.agt.sqr.main_phase",
//											"default_sequence",
//											base_sequence::type_id::get() );


endfunction

注意:

  • config_db的set中,第二个参数需要指定到了具体的 sequencer 的phase 。

PS:虽然 `uvm_do系列的宏虽然在嵌套的sequence 和virtual sequence中可以启动对应的 element sequence ,但是最顶层的sequence还要通过上面两种方式之一来启动,所以这里不将这种方式纳入基本的sequence启动方式。

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小verifier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值