Differences
Can enable another function but not another task
Always executes in zero simulation time
Can not contain any delay, event, or timing control statements
Must have at least one input argument
Always return a single value
Can not have output or inout arguments
Can enable other tasks and functions
May execute in non-zero simulation time
May contain delay, event, or timing control statements
May have zero or more input, output, or inout arguments
Returns zero or more values