errata/76: 4.1.14: unclear examples of illegal concatenations

From: Shalom.Bresticker@motorola.com
Date: Mon Jul 22 2002 - 08:14:26 PDT


Precedence: bulk

>Number: 76
>Category: errata
>Originator: Shalom.Bresticker@motorola.com
>Description:

Section 4.1.14 contains the following:

Another form of concatenation is the replication operation.
The first expression shall be a non-zero, non-X and non-Z
constant expression, the second expression follows the rules
for concatenations. This example replicates "w" 4 times.

{4{w}} // This is equivalent to {w, w, w, w}
a[31:0] = {1`b1, {0{1`b0}} }; //illegal. RHS becomes {1`b1,;
a[31:0] = {1`b1, {1`bz{1`b0}} }; //illegal. RHS becomes {1`b1,;
a[31:0] = {1`b1, {1`bx{1`b0}} }; //illegal. RHS becomes {1`b1,;

The comments on the three examples of illegal concatenations
look strange.
"RHS becomes {1 b1,;" looks cut off.

I propose to just leave them as "illegal". Anyone who reads
the preceding paragraph will immediately understand the
reason. The existing comments are just confusing.

I also propose to change "non-zero" to "positive".

I propose the following wording:

Another form of concatenation is the replication operation.
The first expression shall be a positive, non-X and non-Z
constant expression, the second expression follows the rules
for concatenations.

The following example replicates "w" 4 times.

{4{w}} // This is equivalent to {w, w, w, w}

The following examples show illegal concatenations.

a[31:0] = {1`b1, { 0{1`b0}} }; //illegal
a[31:0] = {1`b1, {1`bz{1`b0}} }; //illegal
a[31:0] = {1`b1, {1`bx{1`b0}} }; //illegal



This archive was generated by hypermail 2.1.4 : Thu Oct 10 2002 - 09:24:26 PDT and
sponsored by Boyd Technology, Inc.