In Verilog, the most important difference between a task and a function is that a function cannot consume time (delays, blocking statements, or call a task). Additionally, a Verilog function must return a value, and the value must be used, as in an assignment statement.