|
From: Cary R. <cy...@ya...> - 2015-11-08 14:59:59
|
Thanks for the double check and correction Martin. I had forgotten that the assignment in the declaration changes that statement into just a regular continuous assignment. I by default only do a continuous assignments with an assign statement so had forgotten that exception.
On Sunday, November 8, 2015 2:59 AM, Martin Whitaker <mai...@ma...> wrote:
Cary R. wrote:
> I agree with Martin. I believe a non-blocking delay is the only normal RTL
> construct that does not filter pulses smaller than the delay. Specify
> blocks can also tweak this a bit using the path pulse control, but Icarus
> only supports full pulse filtering.
Yes, I should have mentioned that. If you set the pulse reject limit and error
limit both to zero, that effectively models a transport delay. But as Cary
says, Icarus doesn't support this.
> The other comment is that I think the
> code shown is describing wire delays and Icarus does not currently support
> these type of delays and if I'm reading the standard correctly they should
> filter pulses smaller than the delay so it seems like the original
> assumption is incorrect. I believe the original code shown should have
> generated a not supported message.
Icarus doesn't support net delays, so would generate a "not supported" message for
wire #delay dout;
But if the declaration includes a continuous assignment, e.g.
wire #delay dout = d;
the delay is associated with the assignment, not the net, and Icarus does
support this.
Martin
|