ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

(7)UVM objection机制

2021-11-20 10:31:13  阅读:328  来源: 互联网

标签:run objection scoreboard UVM phase 机制 uvm


(7)UVM objection机制


UVM-1.1之后,结束仿真的机制有且只有一种,那就是利用objection挂起机制来控制仿真结束。

objection机制

参与到objection机制中的参与组件,可以独立的各自挂起objection,来防止run_phase退出,但是只有这些组件都落下objection后,uvm_objection共享的counter才会变为0,这意味run_phase退出的条件满足,因此可以退出run_phase。

task main_phase(uvm_phase phase); 
	phase.raise_objection(this); 
...
	phase.drop_objection(this); 
endtask

在run的过程中,至少要有一个组件挂起objection若没有任何一个组件举起objection,则会立刻退出uvm;退出到run_phase进行到下一个阶段;

在进入到某一phase时,UVM会收集此phase提出的所有objection,并且实时监测所有objection是否已经被撤销了,当发现所有都已经撤销后,那么就会闭此phase,开始进入下一个phase。当所有的phase都执行完毕后,就会调用Sfinish来将整个的验证平台关掉。

对于component()而言,用户可以在run_phase()中使用phase.raise_objection()/phase.drop_objection()来控制run phase退出。对于uvm_top或者uvm_test_top应该尽可能少地使用set_drain_time()。

//挂起objection 
raise_objection(uvm_object obj=null,string description="",int count=1)
//落下objection
drop_objection(uvm_object obj=null,string description="",int count=1)
//设置退出时间
set_drain_time(uvm_object obj=null,time drain)

在这里插入图片描述

控制objection的最佳选择

在monitor和reference model中,都有类似的情况,它们都是无限循环的。因此一般不会在driver和monitor中控制objection

一般来说,在一个实际的验证平台中,通常会在以下两种objection的控制策略中选择一种:

  • 第一种是在scoreboard中进行控制。,scoreboard的main_phase被做成一个无限循环。如果要在scoreboard中控制objection,则需要去除这个无限循环,通过config_db:;set的方式设置收集到的transaction的数量pkt_num,当收集到足够数量的transaction后跳出循环。
task my_scoreboard::main_phase(uvm_phase phase); 
	phase.raise_objection(this); 
	fork 
		while(1) begin 
			exp_port.get(get_expect); 
			expect_queue.push_back(get_expect); 
		end 
		for(int i=0;i<pkt_num;i++) begin 
			act_port.get(get_actual); 
	...
		end 
	join_any 
	phase.drop_objection(this); 
endtask

上述代码中将原本的fork.join语句改为了fork…join_any。当收集到足够的transaction后,第二个进程终结,从而跳出fork…join_any,执行drop_objection语句。

  • 第二种,在sequence中提起sequencer的objection,当sequence完成后,再撤销此objection。

以上两种方式在验证平台中都有应用。其中用得最多的是第二种,这种方式是UVM提倡的方式。UVM的设计哲学就是全部由sequence来控制激励的生成,因此一般情况下只在sequence中控制objection

这篇笔记参考《UVM实战》、《芯片验证漫游指南》和某验证视频整理而成,仅作学习心得交流,如果涉及侵权烦请请告知,我将第一时间处理。

标签:run,objection,scoreboard,UVM,phase,机制,uvm
来源: https://blog.csdn.net/qq_40051553/article/details/121420884

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有