RE: [sv-bc] enumeration types

From: Michael McNamara <mac@verisity.com>
Date: Fri Dec 10 2004 - 07:38:30 PST

The reason is deep in the mists of time.

Scematic capture tools (valid) used to write out netlists and
always included a bit select of [0] with scalars; because of this,
early Verilog interpreters (Verilog-XL) accepted such references
without complaint; and 18 years later, here we are.

-- On Dec 9 2004 at 15:41, Maidment, Matthew R sent a message:
> To: fm@cadence.com, sv-bc@eda.org
> Subject: "RE: [sv-bc] enumeration types"
> I agree with your conclusions. It should not be legal to
> index into an enum if the base type is a scalar.
>
> Practically speaking, my experience is that various simulators
> consider it a "feature" to enable reference to a scalar with the index
> [0].
> Not all tools allow it and it's not in the standard AFAICT.
>
> Matt
>
>
> ________________________________
>
> From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On Behalf
> Of Francoise Martinolle
> Sent: Thursday, December 09, 2004 1:50 PM
> To: sv-bc@eda.org
> Subject: [sv-bc] enumeration types
>
>
> I think that the following is legal:
> typedef enum bit {bit0, bit1} mybit;
>
> But can I use a bit select of a variable of that type when the
> base type of the enum is just bit or logic or alias
> thereof?
>
> mybit v;
>
> initial v[0] = 1'b0;
>
>
> I think that if I define:
> typedef enum bit[0:0] {bit0, bit1} mybitvec;
>
> v[0] is legal.
>
> Francoise
> '
>
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <HTML><HEAD>
> <META http-equiv=Content-Type content="text/html; charset=us-ascii">
> <META content="MSHTML 6.00.2800.1476" name=GENERATOR></HEAD>
> <BODY>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>I agree with your conclusions.&nbsp; It should not be legal
> to</FONT></SPAN></DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>index into an </FONT></SPAN><SPAN class=974333723-09122004><FONT
> face="Courier New" color=#800080 size=2>enum if the base type is a
> scalar.</FONT></SPAN></DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2></FONT></SPAN>&nbsp;</DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>Practically speaking, my experience is that&nbsp;various simulators
> </FONT></SPAN></DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>consider it a "feature" to enable reference to </FONT></SPAN><SPAN
> class=974333723-09122004><FONT face="Courier New" color=#800080 size=2>a scalar
> with the index [0].&nbsp; </FONT></SPAN></DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>Not all tools &nbsp;allow it and </FONT></SPAN><SPAN
> class=974333723-09122004><FONT face="Courier New" color=#800080 size=2>it's not
> in the standard AFAICT.</FONT></SPAN></DIV>
> <DIV><SPAN class=974333723-09122004></SPAN><SPAN class=974333723-09122004><FONT
> face="Courier New" color=#800080 size=2></FONT></SPAN>&nbsp;</DIV>
> <DIV><SPAN class=974333723-09122004><FONT face="Courier New" color=#800080
> size=2>Matt</FONT></SPAN></DIV><BR>
> <BLOCKQUOTE dir=ltr
> style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #800080 2px solid; MARGIN-RIGHT: 0px">
> <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
> <HR tabIndex=-1>
> <FONT face=Tahoma size=2><B>From:</B> owner-sv-bc@eda.org
> [mailto:owner-sv-bc@eda.org] <B>On Behalf Of </B>Francoise
> Martinolle<BR><B>Sent:</B> Thursday, December 09, 2004 1:50 PM<BR><B>To:</B>
> sv-bc@eda.org<BR><B>Subject:</B> [sv-bc] enumeration
> types<BR></FONT><BR></DIV>
> <DIV></DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>I think that the
> following is legal:</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>typedef enum bit
> {bit0, bit1} mybit;</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>But can I use a
> bit select of a variable of that type when the base type of the enum is just
> bit or logic or alias</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004>thereof?</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>mybit
> v;</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>initial v[0] =
> 1'b0;</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>I think that if I
> define:</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>typedef enum
> bit[0:0] {bit0, bit1} mybitvec;</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN class=645404421-09122004>v[0] is
> legal.</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004></SPAN></FONT>&nbsp;</DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004>Francoise</SPAN></FONT></DIV>
> <DIV><FONT face=Arial size=2><SPAN
> class=645404421-09122004>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
> '</SPAN></FONT></DIV></BLOCKQUOTE></BODY></HTML>
Received on Fri Dec 10 07:29:57 2004

This archive was generated by hypermail 2.1.8 : Fri Dec 10 2004 - 07:30:13 PST