diff --git a/vvp/vpi_callback.cc b/vvp/vpi_callback.cc index b9f9b1e60..3ee85f2f4 100644 --- a/vvp/vpi_callback.cc +++ b/vvp/vpi_callback.cc @@ -316,7 +316,9 @@ void sync_cb::run_run() if (cur->cb_data.cb_rtn != 0) { assert(vpi_mode_flag == VPI_MODE_NONE); vpi_mode_flag = sync_flag? VPI_MODE_ROSYNC : VPI_MODE_RWSYNC; + vpip_cur_task = dynamic_cast<__vpiSysTaskCall*>(cur->cb_data.obj); (cur->cb_data.cb_rtn)(&cur->cb_data); + vpip_cur_task = 0; vpi_mode_flag = VPI_MODE_NONE; } diff --git a/vvp/vpi_tasks.cc b/vvp/vpi_tasks.cc index 31368b391..b0aa19bfa 100644 --- a/vvp/vpi_tasks.cc +++ b/vvp/vpi_tasks.cc @@ -978,6 +978,7 @@ void vpip_execute_vpi_call(vthread_t thr, vpiHandle ref) else if (sysfunc_vec4*func_vec4 = dynamic_cast(ref)) { vthread_push_vec4(thr, func_vec4->return_value()); } + vpip_cur_task = 0; } /*