diff --git a/vvp/vthread.cc b/vvp/vthread.cc index b9803289b..835a0ce3b 100644 --- a/vvp/vthread.cc +++ b/vvp/vthread.cc @@ -1380,7 +1380,14 @@ bool of_FORK(vthread_t thr, vvp_code_t cp) thr->fork_count += 1; - schedule_vthread(child, 0, true); + /* If the new child was created to evaluate a function, + run it immediately, then return to this thread. */ + if (cp->scope->base.vpi_type->type_code == vpiFunction) { + child->is_scheduled = 1; + vthread_run(child); + } else { + schedule_vthread(child, 0, true); + } return true; }