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

From: Shalom.Bresticker@freescale.com
Date: Mon Nov 29 2004 - 10:29:36 PST

  • Next message: Steven Sharp: "enhancement/390: PROPOSAL - as amended and passed by BTF"

    2004-11-29: This includes changes discussed in ETF meeting
    today. However, the ETF did not vote to approve it, due to
    lack of time.

    In 2.5.1:

    1. In para. 2, CHANGE

    "an optional size constant"

    TO

    "an optional size specification"

    2. At the end of the second paragraph, append
    the following sentence --

      "It shall be legal to macro substitute these
       three tokens."

    3. REPLACE

      "The first token, a size constant, shall specify
       the size of the constant in terms of its exact
       number of bits.

    WITH

      "The first token, a size specification, shall specify
       the size of the constant in terms of its exact
       number of bits."

    4. In para. 7, CHANGE

    "Simple decimal numbers without the size and the base format"

    TO

    "Simple decimal numbers without the size specification and the base format"

    5. CHANGE

    "A plus or minus operator preceding the size constant is a unary plus or minus operator."

    TO

    "A plus or minus operator preceding the size specification is a unary plus or minus operator."

    6. 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 specification
        (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."
        

    7. REPLACE

       "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 number of bits that
       make up an unsized integer constant (which is
       a simple decimal number or a based constant
       without a size specification) shall be at least 32.
       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."

    8. In Example 4

    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; // a gets 12'h xxx
           b = 'h 3x; // b gets 12'h 03x
           c = 'h z3; // c gets 12'h zz3
           d = 'h 0z3; // d gets 12'h 0z3
    end
    reg [31:0] e, f, g, h, i;
    reg signed [31:0] j, k;

           e = 'h5; // e gets 32'h0000_0005
           f = 'hx; // f gets 32'hxxxx_xxxx
           g = 'hz; // g gets 32'hzzzz_zzzz
           h = 4'hx; // h gets 32'h0000_000x
           i = 16'ox; // i gets 32'h0000_xxxx
           j = 16'sb110; // j gets 32'h0000_0006
           k = 3'sb110; // k gets 32'hffff_fffe

    8. REMOVE NOTES 2 and 3.

    http://boydtechinc.com/cgi-bin/issueproposal.pl?cmd=view&database=default&pr=428



    This archive was generated by hypermail 2.1.4 : Mon Nov 29 2004 - 10:29:44 PST and
    sponsored by Boyd Technology, Inc.