sv2v/test/core/bits_scope.sv

55 lines
1.6 KiB
Systemverilog

module top;
parameter WIDTH = 1;
if (1) begin : a
localparam tmp = WIDTH * 2;
if (1) begin : c
localparam WIDTH = tmp * 3;
reg [WIDTH-1:0] x;
end
end
if (1) begin : b
localparam tmp = WIDTH * 5;
if (1) begin : d
localparam WIDTH = tmp * 7;
reg [WIDTH-1:0] x;
end
end
reg [$bits(a.c.x):0] a_c_x;
reg [$bits(b.d.x):0] b_d_x;
if (1) begin : e
localparam tmp = WIDTH * 11;
if (1) begin : f
localparam WIDTH = tmp * 13;
reg [WIDTH-1:0] x;
reg [$bits(a.c.x):0] a_c_x;
reg [$bits(b.d.x):0] b_d_x;
initial begin
a_c_x = 1;
b_d_x = 1;
$display("B a.c.x %b", a.c.x);
$display("B a_c_x %b", a_c_x);
$display("B b.d.x %b", b.d.x);
$display("B b_d_x %b", b_d_x);
end
end
end
reg [$bits(e.f.x):0] e_f_x;
reg [$bits(e.f.a_c_x):0] e_f_a_c_x;
reg [$bits(e.f.b_d_x):0] e_f_b_d_x;
initial begin
e_f_x = 1'sb1;
e_f_a_c_x = 1'sbx;
e_f_b_d_x = 1'sbz;
$display("A a.c.x %b", a.c.x);
$display("A a_c_x %b", a_c_x);
$display("A b.d.x %b", b.d.x);
$display("A b_d_x %b", b_d_x);
$display("A e.f.x %b", e.f.x);
$display("A e_f_x %b", e_f_x);
$display("A e.f.a_c_x %b", e.f.a_c_x);
$display("A e_f_a_c_x %b", e_f_a_c_x);
$display("A e.f.b_d_x %b", e.f.b_d_x);
$display("A e_f_b_d_x %b", e_f_b_d_x);
end
endmodule