default_sequence的作用?

default_sequence的作用?
1、default_sequence最大的作用就是隐式地启动sequence,然后利用uvm_sequence的成员变量starting_phase(类型为uvm_phase)来挂起与释放objection,从而控制phase的运行,这里的starting_phase实际上是一个指针,指向其挂载的sqr的confidure_phase上,这样就解决了sequence不能使用phase与objection的问题,因为sequence是object类而,phase与objection的概念是对component而言的,因此UVM内置成员变量starting_phase,将其指向有phase概念的component类的sqr,便可将objection与sequence完全联系起来
2、简化了sequence的挂载启动(即指明sequence产生的transaction要发送给哪个sequencer)

具体而言
1)就是在某个component的build phase阶段使用config_db与default sequence替代了在某个component的main phase阶段利用seq.start(i_agt.sqr)启动sequence。

//component的build phase阶段使用default_sequence启动sequence
//default_sequence要使用config_db,而build_phase一般用于config_db配置信息及变量的实例化
virtual function void build_phase(uvm_phase phase);
	super.build_phase(phase);
	uvm_config_db# uvm_objection_wrapper) ::set(this,
												"i_agt.sqr.main_phase",
												"default_sequence",
											  my_sequence::type_id::get());
	endfunction
//component的main phase阶段用seq.start(i_agt.sqr)启动sequence
task my_env::main_phase(uvm_phase phase)
	my_sequence seq;
	phase.raise_objection(this);
	seq = my_sequence::type_id::creat("seq");
	seq.start(i_agt.sqr);
	phase.drop_objection(this)
endtask

2)使用config_db与default sequence指定sequencer启动sequence时,会将uvm_sequence的类型为uvm_phase的成员变量starting_phase赋以当前的phase。

task 
	my_sequencer::main_phase(uvm_phase phase)
	...
	seq.starting_phase = phase;
	seq.start(this);
	...
endtask

从上可知使用default_sequence其实还是需要执行seq.start(**)(指明sequence产生的transaction要发送给哪个sequencer)但不需要用户手工定义与调用,使用default_sequence时UVM会自动调用。并且为了bjection与sequence完全联系起来,还用到了seq.starting_phase。

class my_sequence extends uvm_sequnce #(my_transcation);
	my_transaction m_trans;
	...
	virtual task body();
		if(starting_phase != null)
		starting_phase.raise_objection(this);//uvm_sequence的成员变量starting_phase,在sequencer的main_phase已经被赋值为main_phase
		repeat (10) begin
		`uvm_do(m_trans)//产生且随机化并发送transation
		end
		#1000;
	 	if(starting_phase != null)
	    starting_phase.drop_objection(this);
  	  endtask
  `uvm_objection_utils(my_sequence)
 endclass

这样就将在定义sequence类时就囊括了objection将objection与sequence完全联系

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 1 这是一个什么样的故事...........................................................................................................6 2 这是关于谁的故事...................................................................................................................8 2.1 sequence........................................................................................................................8 2.2 sequence_item...............................................................................................................8 2.3 sequencer.....................................................................................................................10 3 故事背后的故事.....................................................................................................................13 3.1 整体架构.....................................................................................................................14 3.2 sequence_item生成.....................................................................................................14 3.2.1 my_sequence_item..........................................................................................14 3.2.2 òvm_object_utils_begin.................................................................................16 3.2.3 òvm_field_utils_begin...................................................................................18 3.2.4 òvm_object_utils_end....................................................................................19 3.3 sequencer的生成.........................................................................................................20 3.3.1 my_sequnecer..................................................................................................20 3.3.2 òvm_sequencer_utils.....................................................................................20 3.3.3 òvm_sequencer_utils_begin...........................................................................21 3.3.4 òvm_componen

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值