Blocking or non-blocking statement (= vs. <=)

Thank you @dave_59.

An extra question popped out:
In the case of functions and tasks what would the the right assignment?

To my understanding:

  • Functions are executed in a sequence, they are synthesized as combinatorial, and in execution time they are instantaneous (do not consume time).
  • Tasks on the other hand, are executed also in a sequence but can have timing controls, so they could be synthesized both sequential (if they wait for a clock) and combinatorial (if they wait for any other signal).

So, my guess is:

  1. all functions should always use blocking assignments: =, because of their sequence, combinatorial, and instantaneous nature
  2. all tasks should also always use the blocking assignments: =, because of their sequence execution nature

Are my understanding/guess correct?
or please clarify, :) thank you