package.sv 1.63 KB
Newer Older
1 2 3 4 5 6 7 8
package A;
    localparam FOO = 37;
    localparam BAR = 97;
endpackage
package B;
    localparam FOO = -37;
    localparam BAR = -97;
endpackage
9 10 11 12 13 14 15 16 17 18 19
package C;
    typedef logic [3:0] pack_t;
endpackage
package D;
    function C::pack_t pack;
        input logic x;
        pack = {$bits(C::pack_t){x}};
    endfunction
endpackage
package E;
    import D::*;
20 21 22 23 24
    export D::*;
endpackage
package F;
    localparam MAGIC = -42;
    localparam PIZZAZZ = -5;
25
endpackage
26 27 28 29 30 31 32 33 34 35
module top;
    import A::FOO;
    import B::BAR;
    initial begin
        $display(A::FOO);
        $display(A::BAR);
        $display(B::FOO);
        $display(B::BAR);
        $display(FOO);
        $display(BAR);
36 37 38 39
        $display("%d", D::pack(0));
        $display("%d", D::pack(1));
        $display("%d", E::pack(0));
        $display("%d", E::pack(1));
40
    end
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
    import F::*;
    initial begin
        $display("imported MAGIC %d", MAGIC);
        $display("imported MAGIC %d", F::MAGIC);
        begin
            localparam MAGIC = 42;
            $display("local MAGIC %d", MAGIC);
            $display("imported MAGIC %d", F::MAGIC);
        end
        $display("imported MAGIC %d", MAGIC);
        $display("imported MAGIC %d", F::MAGIC);
    end
    localparam PIZZAZZ = -6;
    initial begin
        $display("local PIZZAZZ %d", PIZZAZZ);
        $display("imported PIZZAZZ %d", F::PIZZAZZ);
        begin
            localparam PIZZAZZ = -7;
            $display("shadowed local PIZZAZZ %d", PIZZAZZ);
            $display("imported PIZZAZZ %d", F::PIZZAZZ);
        end
        $display("local PIZZAZZ %d", PIZZAZZ);
        $display("imported PIZZAZZ %d", F::PIZZAZZ);
    end
65
endmodule