Clock generator task - forever statement makes the simulator hang

In reply to ianmurph:

A forever statement is an infinite procedural loop. It will never execute the next procedural statement that follows it unless you break out of the loop. If you put the forever statement as part of a fork/join, the the statement after the join will never execute the statement that follows it (in this case, the implicit return of the task).

You probably want to use fork/join_none instead. It does not wait for any of its statements to finish before executing the next statement.