In reply to ben@SystemVerilog.us:
Ben, with all due respect, I disagree with your disagreement.
You are forgetting that the introduction of a time literal imposes a time scale factor, and we are trying to normalize the magnitude of the value to a fixed timescale value. When you write #(Value), Verilog implicitly multiplies Value by the current timescale unit, yielding a value with a unit scale.
When you make assignment of a Value to a time variable or parameter, there is no unit scale associated with the Value, it is just a unit-less value. However, if we make an agreement that the delay expression will be written as #(Value * 1ps), then Value is expected to be units of picoseconds.
I could have written
parameter int Period = 1560; // value in ps
meaning that Period is implicitly defined with a ps unit.
Writing
parameter int Period = 1560ps; // value in ps
will be incorrect because the value will be scaled unless the current timescale is 1ps.