enum_scope.sv 1.51 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
module top;
    if (1) begin : blkA
        typedef enum {
            X = 2, Y
        } E;
        initial $display("blkA X=%0d Y=%0d", X, Y);
    end
    if (1) begin : blkB
        typedef enum {
            X, Y
        } E;
        initial $display("blkB X=%0d Y=%0d", X, Y);
        initial begin : blk1
            localparam Y = 100;
            $display("blkB.blk1 X=%0d Y=%0d", X, Y);
        end
        initial begin : blk2
            integer Y;
            Y = 101;
            Y++;
            $display("blkB.blk2 X=%0d Y=%0d", X, Y);
        end
        initial begin : blk3
            localparam type Y = byte;
            $display("blkB.blk3 $bits(X)=%0d $bits(Y)=%0d", $bits(X), $bits(Y));
        end
        if (1) begin : blk4
            genvar X;
            for (X = 0; X < 2; X = X + 1)
                initial $display("blkB.blk4 X=%0d Y=%0d", X, Y);
        end
        if (1) begin : blk5
            wire [3:0] X = 7;
            initial $display("blkB.blk5 X=%0d Y=%0d", X, Y);
        end
    end
    typedef enum [5:0] {
         X = 22, Y
    } E;
    initial $display("X=%b Y=%b", X, Y);
    if (1) begin : blkC
        typedef byte T;
        localparam A = 1;
        localparam B = 2;
        typedef enum T {
            X = A, Y = B
        } E;
        initial $display("blkC X=%b Y=%b", X, Y);
        initial begin : blk1
            localparam type T = shortint;
            localparam A = 2;
            localparam B = 3;
            $display("blkC.blk1 X=%b Y=%b", X, Y);
        end
    end
endmodule