RE: [sv-bc] part selects on arbitrary expressions

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Sat Feb 24 2007 - 23:39:28 PST
A syntax like $expr(a+b)[3:0] might be slightly more intuitive.

Shalom

> -----Original Message-----
> From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org]
On
> Behalf Of Korchemny, Dmitry
> Sent: Tuesday, February 20, 2007 7:12 PM
> To: Jonathan Bromley; Feldman, Yulik; sv-bc@server.eda.org
> Subject: RE: [sv-bc] part selects on arbitrary expressions
> 
> Hi all,
> 
> This problem may be overcome if a new syntax is introduced: e.g.,
> instead of $subvec(a, 3, 0) instead of (a)[3:0].
> 
> I would also like to mention that part select is important for writing
> assertions. Using a straightforward syntax causes semantic or
syntactic
> problems, as in the following example:
> 
> property p(x, y);
>    x[0] |-> y;
> edproperty
> 
> assert property (p(a[2], b));
> 
> Writing it as
> 
> property p(x, y);
>    $subvec(x, 0, 0) |-> y;
> endproperty
> 
> will do the work.
> 
> Thanks,
> Dmitry
> 
> -----Original Message-----
> From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org]
On
> Behalf Of Jonathan Bromley
> Sent: Tuesday, February 20, 2007 5:34 PM
> To: Feldman, Yulik; sv-bc@server.eda.org
> Subject: RE: [sv-bc] part selects on arbitrary expressions
> 
> [Yulik]
> > I would like to propose to make part selects operators and
> > to allow them to select parts of arbitrary expressions.
> 
> I think this leads to many difficulties.
> 
> Verilog vector subscripts can have ascending or descending
> ranges, and need not be based at 0.  To allow subscripting
> of expressions we must make a decision about the subscript
> bouunds of the expression.
> 
> For example, what happens here?
> 
> logic [1:15] a; logic [2:5] b;
> $display( {a, b}[5:2] );
> 
> It's worth noting that VHDL got itself into quite serious
> trouble over exactly this issue (subscript range of a
> concatenation).
> 
> The only reasonable answer is to give the expression a
> self-determined range such as [N-1:0].  But that would
> cause further trouble.  Given the definition of 'a' above,
> it's clear that
> 
>   a[3:0]
> 
> is illegal.  But what about
> 
>   (a)[3:0]
> 
> ?? Is (a) an expression, or merely a syntactic wrapper
> for the variable a?  It would be very confusing for them
> to be different.
> 
> Given all of this, I think that the existing requirement
> to use a temporary variable (or an alias) is entirely
> reasonable and is not a serious limitation.
> --
> Jonathan Bromley, Consultant
> 
> DOULOS - Developing Design Know-how
> VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
> 
> Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, Hampshire, BH24
> 1AW, UK
> Tel: +44 (0)1425 471223                   Email:
> jonathan.bromley@doulos.com
> Fax: +44 (0)1425 471573                           Web:
> http://www.doulos.com
> 
> The contents of this message may contain personal views which
> are not the views of Doulos Ltd., unless specifically stated.
> 
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
> 
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Sat Feb 24 23:40:32 2007

This archive was generated by hypermail 2.1.8 : Sat Feb 24 2007 - 23:40:40 PST