微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > uvm_do 求助

uvm_do 求助

时间:10-02 整理:3721RD 点击:
uvm_do封装了包的产生过程,
tran tr;
tr=tran::type_id::create.....;
start_item(tr);
tr.randomize();
finish_item(tr);
在case里,我想在sequence发包给sequencer之前,调用某个函数,是不是就不能用uvm_do这种了,
要把包的整个过程拆开
tran tr;
tr=tran::type_id::create.....;
start_item(tr);
tr.randomize();
tr.func();//func是在包里自己定义的
finish_item(tr);
有没有类似uvm_do可以调用这个函数的?

uvm_create;
randomize;
post_randomize;
uvm_send;

什么意思?这些是UVM自自动执行的吗?那函数在哪个地方调用?

uvm_do是一个宏,里面包了new、wait_for_grant()、randomize、send的方法,他会产生一个transaction,通过sequencer的seq_item_export发给driver的seq_item_port其实 driver和seqeunce是有交互的,driver get item的时候,会让seq.starting_phase = phase, 在你的sequence里,检查starting_phase,然后raise objection, 然后 就执行`uvm_do了。执行结束之后,drop objection。所有objection都drop 进入下一个phase

2楼正解

你可以写在prerandomize和postrandomize里面吧, 他们是自动执行的

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top