Why we should use non-blocking assignments in driver and blocking assignments in monitor?

In reply to dave_59:
Dave,
I’m trying understand your comment. Below is my clock generation in my testbench.


  initial begin
    sys_clk <= 0;
    forever #(`CYCLE/2.0) sys_clk = ~sys_clk;
  end

The clock is being written in this process. Is it because the clock is not “read” but is used as a procedural time control that it doesn’t fall under your first sentence?

Thanks,
Mark