errata/428: PROPOSAL - 2.5.1, value of 16'shc, request for clarification

From: Brad.Pierce@synopsys.com
Date: Sun Nov 02 2003 - 21:54:58 PST

  • Next message: Shalom Bresticker: "errata/428: Re: errata/428: PROPOSAL - 2.5.1, value of 16'shc, request for clarification"

    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.