cast.sv 2.03 KB
Newer Older
1
module top;
2

3
    parameter WIDTH = 32;
4 5 6 7 8
    generate
        begin : A
            int x = -235;
        end
    endgenerate
9 10 11 12 13
    initial begin
        logic [31:0] w = 1234;
        int y = 1234;
        logic [4:0] z = y;
        $display("%0d %0d", w, 5'(w));
14
        $display("%0d %0d", A.x, 5'(A.x));
15 16 17
        $display("%0d %0d", y, 5'(y));
        $display("%0d %0d", z, 5'(z));
        $display("%0d %0d", w+1, 5'(w+1));
18
        $display("%0d %0d", A.x+1, 5'(A.x+1));
19 20 21
        $display("%0d %0d", y+1, 5'(y+1));
        $display("%0d %0d", z+1, 5'(z+1));
        $display("%b %b", w, 40'(w));
22
        $display("%b %b", A.x, 40'(A.x));
23 24
        $display("%b %b", y, 40'(y));
        $display("%b %b", z, 40'(z));
25
        $display("%0d %0d", w, ($clog2(WIDTH))'(w));
26
        $display("%0d %0d", A.x, ($clog2(WIDTH))'(A.x));
27 28
        $display("%0d %0d", y, ($clog2(WIDTH))'(y));
        $display("%0d %0d", z, ($clog2(WIDTH))'(z));
29
        $display("%b", 32'(4));
30 31 32 33 34 35
        $display("%b", 33'(4));
        $display("%b", 33'(64'hFFFF_FFFF_FFFF_FFFF));
        $display("%b", 32'(4294967296));
        $display("%b", 33'(4294967296));
        $display("%b", 32'(4294967297));
        $display("%b", 33'(4294967297));
36
    end
37

38 39 40
    localparam bit foo = '0;
    localparam logic [31:0] bar = 32'(foo);
    initial $display("%b %b", foo, bar);
41 42 43 44 45 46

    initial begin
        $display("%b", 5'('1));
        $display("%b", 5'(1'sb1));
    end

47 48 49 50 51 52 53 54
    parameter W = 9;
    initial begin
        byte i = -1;
        byte unsigned j = -1;
        $display("%b", W'(i));
        $display("%b", W'(j));
    end

55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
    typedef integer T1;
    typedef integer signed T2;
    typedef integer unsigned T3;
    initial begin
        $display("T1 %0d", T1'(1'sb1));
        $display("T2 %0d", T2'(1'sb1));
        $display("T3 %0d", T3'(1'sb1));
        $display("T1 %0d", T1'(32'sd1));
        $display("T2 %0d", T2'(32'sd1));
        $display("T3 %0d", T3'(32'sd1));
        $display("T1 %0d", T1'(32'd1));
        $display("T2 %0d", T2'(32'd1));
        $display("T3 %0d", T3'(32'd1));
    end

70
endmodule