ISSUE 619

Number 619
Notify-List
Category errata
Synopsis What is the width of a range with z and x's in the bounds?
State etfpassed
Class errata-discuss
Arrival-DateAug 12 2004
Originator Francoise Martinolle
Release
Environment
Description
The Verilog LRM does not specify what happens if an data declaration
uses a range which left and or right bound has x or z bits.

example:
reg [7:1'bz] r;
parameter [2'bxz: 8] p = 33;
function [7:1'bx] set;
wire [4:1'bz] w;

Verilog xl accepts all of the above and apparently ignores the x or z bits.
In the above the register has a width [7:0]

I suppose that we should describe this behaviour in the LRM?
Fix
In 3.3.1, REPLACE

"The msb and lsb constant expressions may be any integer value -- positive, negative or zero."

WITH

"The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."


In 3.9, REPLACE

"The value of the constant expression can be a positive integer, a negative integer or zero."

WITH

"The constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."



Audit-Trail
From: Shalom.Bresticker@freescale.com
To: fm@cadence.com
Cc: etf-bugs@boyd.com
Subject: Re: errata/619: what is the width of a range with z and x's in the
bounds
Date: Fri, 13 Aug 2004 06:21:29 +0300 (IDT)

In the 1364-2005 draft, we added language to say that the range values have
to be integral values. We added that in order to exclude real values.
I would say that excludes x and z values as well, making such declarations
simply illegal. Any implementation accepting such a declaration does so on
its own responsibility.

Shalom

From: Francoise Martinolle <fm@cadence.com>
To: Shalom.Bresticker@freescale.com, fm@cadence.com
Cc: etf-bugs@boyd.com
Subject: Re: errata/619: what is the width of a range with z and x's in
the bounds
Date: Fri, 13 Aug 2004 09:37:00 -0400

When we added " integral values", we wanted to exclude real values and I
don't know if we actually thought about ranges using z and x's at that time.
Yes the language excludes it with this latest addition,and it could be a
logical thing to exclude z and x in the ranges, but my concern is if there
is any user code which expects these ranges to work?
I think that someone may not use directly x and z in the ranges but may
have use them indirectly if the range bounds are specified via parameters.

Francoise
'


did we really think that it would exclue At 06:21 AM 8/13/2004 +0300,
Shalom.Bresticker@freescale.com wrote:
>In the 1364-2005 draft, we added language to say that the range values have
>to be integral values. We added that in order to exclude real values.
>I would say that excludes x and z values as well, making such declarations
>simply illegal. Any implementation accepting such a declaration does so on
>its own responsibility.
>
>Shalom

From: Steven Sharp <sharp@cadence.com>
To: etf-bugs@boyd.com, Shalom.Bresticker@freescale.com
Cc:
Subject: Re: errata/619: what is the width of a range with z and x's in the bounds
Date: Fri, 13 Aug 2004 13:50:13 -0400 (EDT)

> In the 1364-2005 draft, we added language to say that the range values have
> to be integral values. We added that in order to exclude real values.
> I would say that excludes x and z values as well, making such declarations
> simply illegal. Any implementation accepting such a declaration does so on
> its own responsibility.

The term "integer value" does not clearly exclude x and z values. The
term "integer" is used many places in the LRM where x and z values are
included.

For example, section 2.5.1 on integer constants clearly includes constants
containing x and z values. The description of integer division includes
values that contain x. The description of part selects states that the
base expression shall be a positive constant integer expression, and then
later describes the behavior when it is x or z. The description of array
addressing is similar.

Steven Sharp
sharp@cadence.com

From: Shalom.Bresticker@freescale.com
To: Francoise Martinolle <fm@cadence.com>
Cc: etf-bugs@boyd.com
Subject: Re: errata/619: what is the width of a range with z and x's in the
bounds
Date: Sat, 14 Aug 2004 21:26:03 +0300 (IDT)

It would be very strange if a parameter had an x or z value.
It would be even stranger if there was an x or z value in a range and
some actually expected it to work.

Shalom

> When we added " integral values", we wanted to exclude real values and I
> don't know if we actually thought about ranges using z and x's at that time.
> Yes the language excludes it with this latest addition,and it could be a
> logical thing to exclude z and x in the ranges, but my concern is if there
> is any user code which expects these ranges to work?
> I think that someone may not use directly x and z in the ranges but may
> have use them indirectly if the range bounds are specified via parameters.


Analyzed by bineet.srivastava@st.com on Thu Sep 9 04:55:52 2004
As per LRM 1364-2001 of Verilog HDL

in module declaration

module same_input (a,a);
input a; // This is legal. The inputs are ored together.


If u use the same kind of construct & simulate with VCS
it doesn't reflect the 'or'ing of inputs

inputs output
0 0 0
1 1 1
0 1 x
1 x x
0 x x
1 0 x


any comments.......


Analyzed by bineet.srivastava@st.com on Thu Sep 9 04:56:19 2004
As per LRM 1364-2001 of Verilog HDL

in module declaration

module same_input (a,a);
input a; // This is legal. The inputs are ored together.


If u use the same kind of construct & simulate with VCS
it doesn't reflect the 'or'ing of inputs

inputs output
0 0 0
1 1 1
0 1 x
1 x x
0 x x
1 0 x


any comments.......


Fix replaced by etf@boyd.com;bineet.srivastava@st.com on Mon Oct 4 04:39:11 2004
Hi,
In section 10.3.5 Use of constant functions (IEEE P1364-2005/D3, 5/6/04)
1) Any function invoked within a constant function shall be a constant function local to the current module.
2)* They shall not themselves use constant functions in any context requiring a constant expression.

Point 2) needs to be explained , seems like contradicting 1) point.

As suggestion, may be rephrased as
They shall not themselves use constant functions in context of port/variable/net declaration requiring constant expression.

Any comments??

regards
bineet


Fix replaced by Shalom.Bresticker@freescale.com on Mon Oct 18 08:05:52 2004

This issue was accidentally overwritten.
I return it to its orginal subject.
There is no proposal currently.




Fix replaced by Shalom.Bresticker@freescale.com on Mon Oct 18 08:24:03 2004
This issue was accidentally overwritten.
I try to return it to its orginal subject.
There is no proposal currently.




Fix replaced by brad.pierce@synopsys.com on Sat Feb 5 20:00:11 2005
In 3.3.1, REPLACE

"The msb and lsb constant expressions may be any integer value -- positive, negative or zero."

WITH

"The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown or high-impedance bits."





From: Shalom.Bresticker@freescale.com
To: brad.pierce@synopsys.com
Cc: etf-bugs@boyd.com
Subject: Re: errata/619: PROPOSAL - What is the width of a range with z and
x's in the bounds?
Date: Sun, 6 Feb 2005 14:03:49 +0200 (IST)

This is OK, but a similar change should be made in 3.9 ("Arrays") as well.

> In 3.3.1, REPLACE
>
> "The msb and lsb constant expressions may be any integer value -- positive, negative or zero."
>
> WITH
>
> "The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown or high-impedance bits."


Fix replaced by brad.pierce@synopsys.com on Sun Feb 6 21:44:38 2005
In 3.3.1, REPLACE

"The msb and lsb constant expressions may be any integer value -- positive, negative or zero."

WITH

"The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."


In 3.9, REPLACE

"The value of the constant expression can be a positive integer, a negative integer or zero."

WITH

"The value of the constant expression can be a positive integer, a negative integer or zero. It shall be illegal for it to contain any unknown (x) or high-impedance bits."



From: Shalom Bresticker <Shalom.Bresticker@freescale.com>
To: brad.pierce@synopsys.com
Cc: etf-bugs@boyd.com
Subject: Re: errata/619: PROPOSAL - What is the width of a range with z and x's
in the bounds?
Date: Mon, 07 Feb 2005 09:38:03 +0200

Friendly amendment proposal:

As long as we are already touching this text, let us make the language of 3.9 similar to that of 3.3.1.
Specifically, I propose:

In 3.9, REPLACE

"The value of the constant expression can be a positive integer, a negative integer or zero."

WITH

"The constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."

Shalom


brad.pierce@synopsys.com wrote:

> In 3.3.1, REPLACE
>
> "The msb and lsb constant expressions may be any integer value -- positive, negative or zero."
>
> WITH
>
> "The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."
>
> In 3.9, REPLACE
>
> "The value of the constant expression can be a positive integer, a negative integer or zero."
>
> WITH
>
> "The value of the constant expression can be a positive integer, a negative integer or zero. It shall be illegal for it to contain any unknown (x) or high-impedance bits."
>
>
> http://boydtechinc.com/cgi-bin/issueproposal.pl?cmd=view&database=default&pr=619

--
Shalom Bresticker Shalom.Bresticker @freescale.com
Design & Verification Methodology Tel: +972 9 9522268
Freescale Semiconductor Israel, Ltd. Fax: +972 9 9522890
POB 2208, Herzlia 46120, ISRAEL Cell: +972 50 5441478

[ ]Freescale Internal Use Only [ ]Freescale Confidential Proprietary




Fix replaced by brad.pierce@synopsys.com on Mon Feb 7 06:17:04 2005
In 3.3.1, REPLACE

"The msb and lsb constant expressions may be any integer value -- positive, negative or zero."

WITH

"The msb and lsb constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."


In 3.9, REPLACE

"The value of the constant expression can be a positive integer, a negative integer or zero."

WITH

"The constant expressions may be any integer values -- positive, negative or zero. It shall be illegal for them to contain any unknown (x) or high-impedance bits."





Unformatted





?

Hosted by Boyd Technology