hw/ip/prim/abstract/prim_pad_wrapper.sv Cov: 67.9%
1: // Copyright lowRISC contributors.
2: // Licensed under the Apache License, Version 2.0, see LICENSE for details.
3: // SPDX-License-Identifier: Apache-2.0
4:
5: // TODO: This module is a hard-coded stopgap to select an implementation of an
6: // "abstract module". This module is to be replaced by generated code.
7:
8:
9: `ifndef PRIM_DEFAULT_IMPL
10: `define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
11: `endif
12:
13: module prim_pad_wrapper #(
14: parameter prim_pkg::impl_e Impl = `PRIM_DEFAULT_IMPL,
15: parameter int unsigned AttrDw = 6
16: ) (
17: inout wire inout_io, // bidirectional pad
18: output logic in_o, // input data
19: input out_i, // output data
20: input oe_i, // output enable
21: // additional attributes
22: input [AttrDw-1:0] attr_i
23: );
24:
25: import prim_pkg::*;
26:
27: // The generic implementation is NOT synthesizable
28: if (Impl == ImplGeneric) begin : gen_pad_generic
29: prim_generic_pad_wrapper #(
30: .AttrDw(AttrDw)
31: ) i_pad_wrapper (
32: .inout_io,
33: .in_o,
34: .out_i,
35: .oe_i,
36: .attr_i
37: );
38: end else if (Impl == ImplXilinx) begin : gen_pad_xilinx
39: prim_xilinx_pad_wrapper #(
40: .AttrDw(AttrDw)
41: ) i_pad_wrapper (
42: .inout_io,
43: .in_o,
44: .out_i,
45: .oe_i,
46: .attr_i
47: );
48: end else begin : gen_failure
49: // TODO: Find code that works across tools and causes a compile failure
50: end
51:
52: endmodule : prim_pad_wrapper
53: