package A; localparam FOO = 37; localparam BAR = 97; endpackage package B; localparam FOO = -37; localparam BAR = -97; endpackage 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::*; export D::*; endpackage package F; localparam MAGIC = -42; localparam PIZZAZZ = -5; endpackage 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); $display("%d", D::pack(0)); $display("%d", D::pack(1)); $display("%d", E::pack(0)); $display("%d", E::pack(1)); end 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 endmodule