Set up Link to heading
In run_phase
, set_drain_time
is called from phase.phase_done
which uvm_objection
.
task run_phase(uvm_phase phase);
phase.phase_done.set_drain_time(this, 10);
endtask
The set_drain_time
sets drain in m_drain_time
which is called m_forked_drain
.
function void set_drain_time (uvm_object obj=null, time drain);
if (obj==null)
obj = m_top;
m_drain_time[obj] = drain;
m_set_hier_mode(obj);
endfunction
objection timeout Link to heading
In m_execute_scheduled_forks()
, m_forked_drain
is called
objection.m_forked_drain(ctxt.obj, ctxt.source_obj, ctxt.description, ctxt.count, 1);
and m_forked_drain
calls uvm_delay
task m_forked_drain (uvm_object obj,
uvm_object source_obj,
string description="",
int count=1,
int in_top_thread=0);
int diff_count;
if (m_drain_time.exists(obj))
`uvm_delay(m_drain_time[obj])