微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > env的run_phase中加入打印信息能正常打印,发现当启动sequence时就卡死了

env的run_phase中加入打印信息能正常打印,发现当启动sequence时就卡死了

时间:10-02 整理:3721RD 点击:
在UVM搭建验证环境。现在遇到一个问题,环境跑起来之后,就卡在开始的零时刻,env的run_phase中加入打印信息能正常打印,agent中的run_phase也能正常打印,driver中的run_phase没有运行,通过调试,发现当启动sequence时就卡死了。sequence中的body不会被执行到。调试了好几天,纠结啊 。

raise_objection/drop_objection 加在哪里?

能否把一部分代码贴上来,方便讨论。

raise_objection和drop_objection 是放在env 中的。
classmy_envextendsuvm_env;
`uvm_component_utils(my_env)
virtualdfe_ifdfe_bfm;
dfe_agentagent1;
functionnew(string name,uvm_component parent=null);
super.new(name,parent);
endfunction
functionvoid build_phase(uvm_phase phase);
super.build_phase(phase);
if(!uvm_config_db#(virtual dfe_if)::get(this,"","dfe_bfm",dfe_bfm))
`uvm_fatal("env","BFM not set")
uvm_config_db#(virtual dfe_if)::set(this,"agent1","bfm",dfe_bfm)
endfunction
taskrun_phase(uvm_phase phase);
my_sequenceseq;
seuper.run_phase(phase);
seq=my_sequence::tpyeid::create("seq");
seq.addr_low=1;
seq.addr_high='h100;
seq.length=10000;
phase.raise_objection(this);
fork
seq.start(agent1.sequencer);
join
phase.drop_objection(this);
endtask
endclass

这个问题我解决掉了,我在monitor中忘记加时序的工作了。

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

网站地图

Top