RE: [sv-ec] Re: [sv-bc] Issues on Queue Operators

From: Rich, Dave <Dave_Rich_at_.....>
Date: Tue May 30 2006 - 16:52:33 PDT
I agree that the style of this section could have been greatly improved,
but those *examples* start out by "as defined below" and could easily
have been converted to a table.

The ambiguities are no different than those for computing the width of
an expression; you look at the assignment context to resolve them. I
think some people just have a problem with the idea of overloading the
{} operator.

In any case, there are two implementations out there that have been able
to support this without requiring the ' mark, and one of them doesn't
even allow the ' mark. I would rather spend the time to clarify the text
in the LRM than change the syntax for the users once again.

Dave


> -----Original Message-----
> From: Steven Sharp [mailto:sharp@cadence.com]
> Sent: Tuesday, May 30, 2006 3:57 PM
> To: Brad.Pierce@synopsys.com; sv-ec@eda.org; Rich, Dave
> Subject: RE: [sv-ec] Re: [sv-bc] Issues on Queue Operators
> 
> 
> >From: "Rich, Dave" <Dave_Rich@mentor.com>
> 
> >I disagree. We have {} working on strings, which are not integral
> >values. The {} on queue types are effectively applying concatenation
to
> >that type.
> 
> You can't just "apply concatenation" to a type.  The operation has to
be
> defined for that type in the LRM.  For strings, concatenation is
defined
> in Table 4-2.  For queues, there are just some examples, with the
intent
> described in comments.
> 
> Also, Table 4-2 defines how you distinguish the string concatenation
> operator from the integral concatenation operator.  This depends only
> on the operands.  This means that it does not create the ambiguities
> that occurred for the old array literal syntax used in port
expressions,
> which required knowing the type of the port declaration.  With queues,
> there are no such rules defined.  Curly braces containing numbers
could
> be a queue concatenation or an integral concatenation operator.  Some
> cases would require the LHS or the port declaration to disambiguate.
> This would get us right back into the situations that the new
assignment
> pattern syntax resolved.
> 
> The statement in 5.14 that "The empty array literal {} is used to
denote
> an empty queue" indicates that the intent was for the curly braces
used
> in this section to be array literals.  It seems pretty clear that this
> syntax did not get updated when the syntax for array literals (which
are
> assignment patterns) got changed.  The text indicates that these are
> intended to be assignment patterns, not concatenations.  The syntax
just
> needs to be brought up to date.  Then we can deal with the fact that
it
> assumes some incorrect things about assignment patterns.
> 
> Steven Sharp
> sharp@cadence.com
Received on Tue May 30 16:52:14 2006

This archive was generated by hypermail 2.1.8 : Tue May 30 2006 - 16:52:18 PDT