1800: 16.11 Calling subroutines on match of a sequence
Tasks, task methods, void functions, void function methods, and system tasks can be called at the end of a successful nonempty match of a sequence.
…Assertion evaluation does not wait on or receive data back from any attached subroutine. The subroutines are scheduled in the Reactive region, like an action block.
Thus, Tasks, task methods, void functions, void function methods, and system tasks (e.g., $display()) execute in the Reactive region.
If I write an implicit void function, is it also executed in the Reactive region.
1800 does not care about side effects, function is a function… But it may flag your non-void function if it does not return anything.
e.g., function f(); sig=1; endunction // In Reactive region
If it is not void, but has a side effect? // Since non-void then processed where seen
function bit f(a);
sig=1;
return !a;
endunction
Ben