Re: [sv-bc] Issues on Queue Operators

From: Steven Sharp <sharp_at_.....>
Date: Sat May 27 2006 - 19:48:03 PDT
>From: Sharmistha Rakshit <srakshit@cal.interrasystems.com>

>1. Here it has been stated
>    "The empty array literal {} is used to denote an empty queue."
>my query :: Should this empty  array literal syntax not be treated as an 
>assignment pattern and
>          be preceded by an apostrophe( ' ) ?

Yes, I believe so.

>2.
>Further , for the example given in section 5.14.1 to explain Queue 
>Operators ( which are not applicable to normal arrays )
>    q ={q,6} ;
>    q = {e,q};
>    q = { q[0:pos-1], e, q[pos,$] };
>    q = { q[0:pos], e, q[pos+1,$] };
>
>Now, we can't have a unsized constant as a member of concat expression .
>should the RHS be treated as concatenation or  assignment pattern  ?

Since it is also illegal to use concatenation on anything but integral
types, these clearly need to be changed to be assignment patterns.
However, even then they do not appear to be legal.  They seem to assume
that a queue will be flattened into a list of its elements when used
inside an assignment pattern.

>3.Is the following case valid ?
>
>module T; 
>     int b[4:0];
>    int c;
>    int a[4:0] = '{b[3:0],c} ;
>endmodule

This appears to be the same issue I filed in Mantis item 801.  It is
my understanding that this is not valid.  The RHS is not an assignment
pattern containing 5 elements that can be assigned to ints.  Instead,
it is an assignment pattern containing 2 elements.  The first element
is an array of 4 ints, and the second is a single int.  The first element
cannot legally be assigned to an int, so this is illegal.

Steven Sharp
sharp@cadence.com
Received on Sat May 27 19:47:49 2006

This archive was generated by hypermail 2.1.8 : Sat May 27 2006 - 19:48:13 PDT