verilator/test_regress/t/t_param_array9.v

48 lines
982 B
Systemverilog

// DESCRIPTION: Verilator: Verilog Test module
//
// This file ONLY is placed under the Creative Commons Public Domain, for
// any use, without warranty, 2025 by Wilson Snyder.
// SPDX-License-Identifier: CC0-1.0
module p_i_match #(
parameter type S_IS_T,
parameter S_IS_T S_IS
) ();
endmodule
module ring #(
parameter type I_T
) ();
localparam int unsigned N_SS = (18 / 2) / 2;
localparam int unsigned N_P_IS = (18 / 2) - 1;
typedef int s_is_t[N_P_IS-1:0];
function automatic s_is_t gen_s_is();
for (int st = 0; st < N_SS; st++) begin
for (int i = 0; i < 2; i++) begin
if (st * 2 + i < N_P_IS) begin
int delta = ((st + 1) * 2) + i;
gen_s_is[st*2+i] = i;
end
end
end
endfunction
localparam s_is_t S_IS = gen_s_is();
p_i_match #(
.S_IS_T(s_is_t),
.S_IS(S_IS)
) p (
.*);
endmodule
module t;
typedef logic [4:0] i_t;
ring #(
.I_T(i_t)
) dut (
.*);
endmodule