RE: [sv-bc] E-mail Ballot: Respond by 8am PDT, Tuesday, March 25

From: Stuart Sutherland <stuart_at_.....>
Date: Tue Mar 25 2008 - 12:19:35 PDT
Shalom,

I know its long after the meeting (2 or 3 hours after), so my remarks might
me moot at this point.  Never-the-less, they are embedded, below.

Stu
~~~~~~~~~~~~~~~~~~~~~~~~~
Stuart Sutherland
stuart@sutherland-hdl.com
+1-503-692-0898

> -----Original Message-----
> From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On Behalf Of
> Bresticker, Shalom
> Sent: Tuesday, March 25, 2008 8:36 AM
> To: stuart@sutherland-hdl.com; sv-bc@eda.org
> Subject: RE: [sv-bc] E-mail Ballot: Respond by 8am PDT, Tuesday, March
> 25
> 
> Hi, Stu.
> 
> > > SVDB 1769 ___Yes   _X_No
> > I vote no because the syntax for an elaboration $fatal task
> > is not the same as for a run-time $fatal task. The former
> > does not have a "finish_number"
> > argument.  I will change my vote to yes if the two versions
> > of $fatal are made consistent (and backward compatible).
> 
> There is no backward compatibility problem because the run-time $fatal
> is not being changed. The reason the elab $fatal omits the finish
> number
> argument is that it has no meaning at elab time. What would you
> suggest?

[SS] My concern is having two different syntax definitions for $fatal.  The
same system task name should have the same syntax whether executed by the
elaborator or at run time.  I personally find no value in $fatal having a
"finish_number" argument, but removing this argument from the run-time
version of $fatal would not be backward compatible.  Therefore, I will only
vote yes on 1769 if the elaboration-time version of $fatal also requires a
"finish_number" argument.

> 
> 
> > >SVDB 2269 ___Yes   _X_No
> > The proposal would have any size cast result in an [n-1:0]
> > size.  I do not think this rule is intuitive or what users
> > would want every time. Consider the following:
> >
> > logic [0:47] foo;
> > 32'(foo) // results in an expression of [31:0] -- which bit
> > of foo goes to which bit of the operation result?
> 
> result[31:0] = foo[16:47].
> 
> But remember that there is no variable called "result". 32'(foo) is
> just
> an abstract expression. You can't directly access its bits. If you
> wrote
> {foo}[0], {foo} is a [47:0] vector, so you will get {foo}[0] ==
> foo[47].
> 

Another already approved Mantis item does allow bit and part-selects of
abstract expressions.  Therefore it is important that the standard does
define the bit numbering of a size cast (which the proposal does), and that
the bit numbering be intuitive (which I feel the proposal fails to do).

What I think is intuitive is:
- A size cast of a little-endian expression (e.g. logic [47:0] foo;) should
return a little-endian expression (e.g. 32'(foo) returns an expression the
bit numbering [31:0]).  Note that the LARGEST-numbered LEFT-most bits (the
MSB's) of foo are what is affected by the cast.

- A size cast of a big-endian expression (e.g. logic [0:47] foo;) should
return a big-endian expression.  What I am undecided on is if a size cast of
a big-endian expression affects the SMALLEST-numbered LEFT-most bits (e.g.
32'(foo) returns an expression with the bit numbering [16:47]) or the
LARGEST-numbered RIGHT-most bits (e.g 32'(foo) returns an expression with
the bit numbering [0:31]).

I am open to discussion on what is most useful and intuitive.


> 
> struct packed { logic [0:47] foo; } will also give you a [47:0] entity.
> This is no different.

I agree that this example turns a big-endian vector into a little-endian
representation.  However, I think it is extremely rare that users will
reference packed-structures by bit number instead of member name.  I think
it is even more rare that users will create a structure with a single
member.  Thus, this is a corner case that will seldom, if ever, come up in
real code.

On the other hand, size casting of a single expression will be used very
often to eliminate warnings from lint programs and synthesis compilers about
size mismatches in assignment statements or port connections.

My main concern, once again, is when a user does do a bit- or part-select of
an expression, thinking the expression is big-endian, and the cast result is
actually little-endian.

> 
> Regards,
> Shalom
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
> 
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> 
> 
> --
> 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 Tue Mar 25 12:22:10 2008

This archive was generated by hypermail 2.1.8 : Tue Mar 25 2008 - 12:22:50 PDT