1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
// DESCRIPTION: Verilator: Large test for SystemVerilog
// This file ONLY is placed into the Public Domain, for any use,
// without warranty, 2012.
// SPDX-License-Identifier: CC0-1.0
// Contributed by M W Lund, Atmel Corporation.
module pads
#( parameter
NUMPADS = $size( pinout )
)
(
// ***************************************************************************
// Module Interface
// ***************************************************************************
// **** Interfaces ****
pads_if.mp_pads padsif,
// **** Pinout ****
`ifdef VERILATOR // see t_tri_array
inout wire [NUMPADS:1] pad,
`else
inout wire pad [1:NUMPADS],
`endif
// **** Inputs ****
input logic clk,
input logic rst
);
// ***************************************************************************
// Code Section
// ***************************************************************************
`ifdef VERILATOR // see t_tri_array
tri [NUMPADS:1] _anahack;
`endif
genvar i;
for ( i = 1; i <= NUMPADS; i++ )
begin
`ifdef VCS
localparam t_padtype p_type = t_padtype'(pinout_wa[i][pinout_wa_padtype]);
localparam t_pinid p_id = t_pinid'(pinout_wa[i][pinout_wa_id]);
`else
localparam t_padtype p_type = pinout[i].padtype;
localparam t_pinid p_id = pinout[i].id;
`endif
case ( p_type )
PADTYPE_GPIO:
pad_gpio #( .ID( i ) )
i_pad_gpio(
.pad (pad [i]),
// Outputs
.input_val (padsif.input_val [i]),
// Inouts
`ifdef VERILATOR // see t_tri_array
.ana (_anahack [i]),
`else
.ana (padsif.ana [i]),
`endif
// Inputs
.pullup_en (padsif.pullup_en [i]),
.pulldown_en (padsif.pulldown_en [i]),
.output_en (padsif.output_en [i]),
.output_val (padsif.output_val [i]),
.slew_limit_en (padsif.slew_limit_en[i]),
.input_en (padsif.input_en [i])
/*AUTOINST*/);
PADTYPE_VDD:
begin
pad_vdd #( .ID( i ) )
i_pad_vdd(
.pad (pad[i])
/*AUTOINST*/);
// Not SV standard, yet... assign padsif.input_val[i] = ();
end
PADTYPE_GND:
begin
pad_gnd #( .ID( i ) )
i_pad_gnd(.pad (pad[i])
/*AUTOINST*/);
end
endcase
end
endmodule // pads
|