From: Brad.Pierce@synopsys.com
Date: Sun Nov 02 2003 - 21:54:58 PST
In 2.5.1, at the end of the first paragraph, append
the following sentence --
"It shall be legal to macro substitute these
three tokens."
In 2.5.1, REPLACE
"The first token, a size constant, shall specify
the size of the constant in terms of its exact
number of bits. It shall be specified as a
non-zero unsigned decimal number. For example,
the size specification for two hexadecimal
digits is 8, because one hexidecimal digit
requires 4 bits. Unsized unsigned constants
where the high order bit is unknown (X or x)
or three-state (Z or z) shall be extended to
the size of the expression containing the
constant.
WITH
"The first token, a size constant, shall specify
the size of the constant in terms of its exact
number of bits. It shall be specified as a
non-zero unsigned decimal number. For example,
the size specification for two hexadecimal
digits is 8, because one hexidecimal digit
requires 4 bits. The number of bits that
make up an unsized integer constant (which is
a simple decimal number or a based constant
without a size constant) shall be at least 32.
An unsized integer constant shall be extended to
the size of the expression that contains it by
padding to the left with the leftmost bit of the
constant, unless the constant is unsigned and its
leftmost bit is 1, in which case it shall be padded
to the left with zero. If a sized integer constant
is signed, it shall be sign-extended when assigned
to a reg data type, regardless of whether the reg
itself is signed."
In 2.5.1, REPLACE
"If the size of the unsigned number is smaller
than the size specified for the constant, the
unsigned number shall be padded to the left
with zeros. If the leftmost bit in the unsigned
number is an x or a z, then an x or a z shall
be used to pad to the left respectively."
WITH
"If a sized constant has an unsigned number
(i.e., third token) with a value that has
fewer bits than are specified by its size constant
(i.e., first token), the value of the unsigned
number shall be extended to the specified number
of bits by padding it to the left with zero (even
if the constant is signed), unless the leftmost bit
in the unsigned number is x or z, in which case
it shall be padded to the left with x or z
respectively."
In Example 4 of 2.5.1
REPLACE
reg[11:0] a, b, c, d;
initial begin
a = 'h x; // yields xxx
b = 'h 3x; // yields 03x
c = 'h z3; // yields zz3
d = 'h 0z3; // yields 0z3
end
reg [84:0] e, f, g;
e = 'h5; // yields {82{1'b0}, 3'b101}
f = 'hx; // yields {85{1'hx}}
g = 'hz; // yields {85{1'hz}}
WITH
reg[11:0] a, b, c, d;
initial begin
a = 'h x; // yields 12'h xxx
b = 'h 3x; // yields 12'h 03x
c = 'h z3; // yields 12'h zz3
d = 'h 0z3; // yields 12'h 0z3
end
reg [84:0] e, f, g, h, i;
reg signed [84:0] j, k;
e = 'h5; // yields {{82{1'b0}}, 3'b101}
f = 'hx; // yields {85{1'bx}}
g = 'hz; // yields {85{1'bz}}
h = 4'hx; // yields {{81{1'b0}}, 4'hx}
i = 16'ox; // yields {{69{1'b0}}, {16{1'bx}}}
j = 16'sb110; // yields {{82{1'b0}}, 3'b110}
k = 3'sb110; // yields {{82{1'b1}}, 3'b110}
and
REMOVE
NOTES:
1) Sized negative constant numbers and sized unsigned
constant numbers are sign-extended when assigned to a
reg data type, regardless of whether the reg itself is
signed or not.
2) Each of the three tokens for specifying a number
may be macro substituted.
3) The number of bits that make up an unsized number
(which is a simple decimal number or a number without
the size specification) shall be at least 32.
http://boydtechinc.com/cgi-bin/issueproposal.pl?cmd=view&database=default&pr=428
This archive was generated by hypermail 2.1.4
: Sun Nov 02 2003 - 21:55:01 PST
and
sponsored by Boyd Technology, Inc.