In reply to RushilMithani_37:
Can you use blocking assignment instead of non blocking inside the task. Since you are using a task which executes sequentially it is always better to use blocking assignments.
Replace
vif.cb.sig_dval <= 'b0;
with
vif.cb.sig_dval = 'b0;