Re: #delay

From: Kevin Cameron <edaorg_at_.....>
Date: Tue Mar 04 2008 - 20:29:16 PST
Why not use a different operator (say) '##' for unscaled times, I think 
that would be less ambiguous, i.e. '#5k' is a reasonable shorthand for 
5000 ticks, and I wouldn't like to have to explain why "#5M" isn't the 
same as "#5e6".

Kev.

Ken Kundert wrote:
> All,
>     One ugly aspect of Verilog that was inherited into Verilog-AMS is 
> its use of time units, as specified with the 'timescale directive. 
> Using time units acts to normalize time to some convenient unit. While 
> this might make sense in digital descriptions where delays are all 
> about the same size, but it almost never preferred in analog 
> descriptions. Furthermore, it makes trying to understand a module 
> difficult because you must know the time unit to understand any of the 
> delays, and the time unit can change on each module.
>
> To address this problem, I have adopted the convention of always 
> defining `tick immediately after the `timescale statement, and then I 
> use this to allow me to specify time delays in absolute times.
>
> `timescale 1ns/1ps
> `define tick 1n
> ...
> always #(50n/`tick) clk = ~clk;
>
> Even this is not so great as the time unit and `tick sometimes get out 
> of sync.
>
> I was looking in the LRM and noticed that in Section 2.6.2 on real 
> constants, the SI scale factors are specifically excluded from use in 
> digital delays (ex. #50n is illegal).
>
> Perhaps we can instead say that if a scalefactor is used in a digital 
> delay, it indicates that the delay is specified in seconds rather than 
> in multiples of the time unit. That would clean up a particularly ugly 
> aspect of Verilog-AMS and make our models much easier to read and write.
>
> -Ken
>


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Mar 4 20:30:49 2008

This archive was generated by hypermail 2.1.8 : Tue Mar 04 2008 - 20:31:08 PST