verilator/test_regress/t/t_scope_map.v

61 lines
1.3 KiB
Systemverilog

// DESCRIPTION: Verilator: Test symbol table scope map and general public
// signal reflection
//
// This file ONLY is placed under the Creative Commons Public Domain.
// SPDX-FileCopyrightText: 2015 Todd Strader
// SPDX-License-Identifier: CC0-1.0
module t (
input wire CLK
);
foo #(.WIDTH(1)) foo1 (.*);
foo #(.WIDTH(7)) foo7 (.*);
foo #(.WIDTH(8)) foo8 (.*);
foo #(.WIDTH(32)) foo32 (.*);
foo #(.WIDTH(33)) foo33 (.*);
foo #(.WIDTH(40)) foo40 (.*);
foo #(.WIDTH(41)) foo41 (.*);
foo #(.WIDTH(64)) foo64 (.*);
foo #(.WIDTH(65)) foo65 (.*);
foo #(.WIDTH(96)) foo96 (.*);
foo #(.WIDTH(97)) foo97 (.*);
foo #(.WIDTH(128)) foo128 (.*);
foo #(.WIDTH(256)) foo256 (.*);
foo #(.WIDTH(1024)) foo1024 (.*);
bar #(.WIDTH(1024)) bar1024 (.*);
endmodule
module foo #(
parameter WIDTH = 32
) (
input CLK
);
logic [( ( WIDTH + 7 ) / 8 ) * 8 - 1 : 0] initial_value;
logic [WIDTH - 1 : 0] value_q /* verilator public */;
integer i;
initial begin
initial_value = '1;
for (i = 0; i < WIDTH / 8; i++) initial_value[i*8+:8] = i[7 : 0];
value_q = initial_value[WIDTH-1 : 0];
end
always @(posedge CLK) value_q <= ~value_q;
endmodule
module bar #(
parameter WIDTH = 32
) (
input CLK
);
foo #(.WIDTH(WIDTH)) foo (.*);
endmodule