RE: [vhdl-200x] LRM bugs

From: Peter Ashenden <peter@ashenden.com.au>
Date: Sun Nov 28 2004 - 16:20:10 PST

Tristan,

Thanks for your comprehensive list of issues. I will generate an Issue
Report for the Issues Screening and Analysis Committee (ISAC) to review.
You should get a response in the near future.

Meanwhile, if you uncover further issues we need to consider, you can report
them using the form at www.eda.org/vasg/bugrep.htm. Many thanks.

Cheers,

PA

--
Dr. Peter J. Ashenden                        peter@ashenden.com.au
Ashenden Designs Pty. Ltd.                   www.ashenden.com.au
PO Box 640                                   Ph:  +61 8 8339 7532
Stirling, SA 5152                            Fax: +61 8 8339 2616
Australia                                    Mobile: +61 414 70 9106
> -----Original Message-----
> From: owner-vhdl-200x@eda.org 
> [mailto:owner-vhdl-200x@eda.org] On Behalf Of tgingold@free.fr
> Sent: Monday, 29 November 2004 04:45
> To: vhdl-200x@eda.org
> Cc: tgingold@free.fr
> Subject: [vhdl-200x] LRM bugs
> 
> 
> During the development of ghdl (http://ghdl.free.fr), I think 
> I have found severals errors in the VHDL LRM.  Here is a 
> priliminary list with some propositions to fix the bugs. I 
> hope these bugs could be clarified or fixed for the next LRM version.
> 
> 1) The return type of a function can be a file type.
>    However, it is of course not possible to write a correct 
> body for such
>    a declaration.
> 
>    Proposition: The return type of a function must denote 
> neither a file type
>    nor a protected type.
> 
> 2) An alias of a physical type is not possible, although 
> described in the LRM.
>    Indeed, a physical type is always an anonymous type.  Only physical
>    subtypes can be aliased.
> 
>    Proposition: Are non-object aliases really used ?  
> Non-object aliases were
>    added to be able to re-export declarations, but they 
> cannot be used for
>    this purpose.
> 
> 3) Character literal can be decorated through an attribute 
> specification,
>    but the 'decoration' cannot be referenced (because the prefix of an
>    attribute cannot be a character).
> 
> 4) It is possible to write pure functions that do not return 
> the same value:
>    type string_acc is access string;
> 
>    pure function alloc (str : string) return string_acc is
>    begin
>       return new string'(str);
>    end alloc;
> 
>    Proposition: forbid allocators in pure functions (directly 
> or indirectly)
>    as well as calls to the implicit deallocate procedures.
> 
> 5) Some trivial expressions are not valid:
>       constant c : integer := -3;
>    The expression is ambiguous, since the "-" can either that 
> of the integer
>    type or that of the universal integer type.
>    For sure, in this example the result is the same, but what about:
>      function "-" (v : integer) return integer is begin return 0; end;
>      constant c : integer := -3;
> 
>    Proposition: Do like Ada: preference for universal operators.
> 
> 6) Does a generate statement have a declarative part ?
>    No, according to grammar from 9.7, but some of the 
> block_declarative_item
>    are specifications which are valid only inside declarative part...
> 
>    Propostion: Replace "{ block_declarative_item }" with
>    "block_declarative_part".
> 
> 7) What is the meaning of:
>    type t is array (boolean) of bit;
>    signal s : t;
>    ...
>    wait on s (time < 10 ns);
> 
>    Suppose the wait statement starts to execute at 9 ns, and 
> there is an
>    event at 11 ns on s (true).  Does the wait statement finish ?
>    This bug is due to the fact that globally static 
> expression are not static.
> 
>    Proposition: why the time function is pure ?
> 
> 8) What is the meaning of 'signature' in 'INSTANCE_NAME and 
> 'PATH_NAME ?
>    What is the signature of function f return natural ?  
> [return natural] or
>    [return integer].  At least, the use of these attributes 
> is nonportable.
> 
> 9) The default entity aspect is ambiguous, because rules a) 
> and c) or b) and c)
>    of 5.2.2 can results in two visible entity declaration.
>    Proposition: Remove rules a) and b), that are neither intuitive
>    nor understandable.
> 
> 10) Constant parameter of access types are implicitly allowed:
>       type line is access string;
>     seems to implicitly define:
>       function "=" (constant <anon> : line; constant <anon> : line)
>         return boolean;
>     These functions (if they really exist) are of course not 
> overloadable.
>     The restriction (constant parameter cannot be of access 
> type) was not
>     well considered (remember the endline function of std.textio).
>     Although this is not explained, I suppose the reason why 
> this restriction
>     exists is because it prevents from defining pure function 
> that returns
>     different values when called with the same parameters.
> 
>     Proposition:
>      1) allow constant parameter of access types for 
> procedures and impure
>         functions.
>      2) Allow constant parameter of access types for pure 
> functions but forbid
>         to dereference such parameters in pure functions.
> 
> Extra bugs:
> 11a) There is a missing ';' in example of E'PATH_NAME after 
> the generic clause
>     of component BComp declared inside architecture top of top.
> 
> 11b) There is a missing ':' before gbottom'path_name.
> 
> 12) Names of protected type examples in 3.5.1 and 3.5.2 do not match:
>   VariableSizedBitArray vs VariableSizeBitArray.
> 
> Tristan.
> 
Received on Sun Nov 28 16:20:09 2004

This archive was generated by hypermail 2.1.8 : Sun Nov 28 2004 - 16:20:52 PST