blob: a5235189aada58d9ca13cc0485750bb42d6e06d5 [file] [log] [blame]
agorararmard6c766a82020-12-10 18:13:12 +02001// SPDX-FileCopyrightText: 2020 Efabless Corporation
agorararmarde5780bf2020-12-09 21:27:56 +00002//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
agorararmardafa96ea2020-12-09 23:37:31 +020014// SPDX-License-Identifier: Apache-2.0
agorararmarde5780bf2020-12-09 21:27:56 +000015
Tim Edwards581068f2020-11-19 12:45:25 -050016// `default_nettype none
shalan0d14e6e2020-08-31 16:50:48 +020017`ifndef TOP_ROUTING
Tim Edwards9eda80d2020-10-08 21:36:44 -040018 `define USER1_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040019 .AMUXBUS_A(analog_a),\
20 .AMUXBUS_B(analog_b),\
21 .VSSA(vssa1),\
22 .VDDA(vdda1),\
23 .VSWITCH(vddio),\
24 .VDDIO_Q(vddio_q),\
25 .VCCHIB(vccd),\
26 .VDDIO(vddio),\
27 .VCCD(vccd1),\
28 .VSSIO(vssio),\
29 .VSSD(vssd1),\
30 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040031
32 `define USER2_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040033 .AMUXBUS_A(analog_a),\
34 .AMUXBUS_B(analog_b),\
35 .VSSA(vssa2),\
36 .VDDA(vdda2),\
37 .VSWITCH(vddio),\
38 .VDDIO_Q(vddio_q),\
39 .VCCHIB(vccd),\
40 .VDDIO(vddio),\
41 .VCCD(vccd2),\
42 .VSSIO(vssio),\
43 .VSSD(vssd2),\
44 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040045
46 `define MGMT_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040047 .AMUXBUS_A(analog_a),\
48 .AMUXBUS_B(analog_b),\
49 .VSSA(vssa),\
50 .VDDA(vdda),\
51 .VSWITCH(vddio),\
52 .VDDIO_Q(vddio_q),\
53 .VCCHIB(vccd),\
54 .VDDIO(vddio),\
55 .VCCD(vccd),\
56 .VSSIO(vssio),\
Tim Edwards21a9aac2020-10-12 22:05:18 -040057 .VSSD(vssd),\
Tim Edwards4c733352020-10-12 16:32:36 -040058 .VSSIO_Q(vssio_q),
shalan0d14e6e2020-08-31 16:50:48 +020059`else
Tim Edwards9eda80d2020-10-08 21:36:44 -040060 `define USER1_ABUTMENT_PINS
61 `define USER2_ABUTMENT_PINS
62 `define MGMT_ABUTMENT_PINS
shalan0d14e6e2020-08-31 16:50:48 +020063`endif
64
Tim Edwardsf645a842020-10-10 21:36:49 -040065`define HVCLAMP_PINS(H,L) \
Tim Edwards4c733352020-10-12 16:32:36 -040066 .DRN_HVC(H), \
67 .SRC_BDY_HVC(L)
Tim Edwards9eda80d2020-10-08 21:36:44 -040068
Tim Edwardsf645a842020-10-10 21:36:49 -040069`define LVCLAMP_PINS(H1,L1,H2,L2,L3) \
Tim Edwards4c733352020-10-12 16:32:36 -040070 .BDY2_B2B(L3), \
71 .DRN_LVC1(H1), \
72 .DRN_LVC2(H2), \
73 .SRC_BDY_LVC1(L1), \
74 .SRC_BDY_LVC2(L2)
Tim Edwards9eda80d2020-10-08 21:36:44 -040075
shalan0d14e6e2020-08-31 16:50:48 +020076`define INPUT_PAD(X,Y) \
77 wire loop_``X; \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +020078 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -040079 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +020080 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -040081 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +020082 `endif \
Tim Edwards21a9aac2020-10-12 22:05:18 -040083 .OUT(vssd), \
Tim Edwards4c733352020-10-12 16:32:36 -040084 .OE_N(vccd), \
Tim Edwards21a9aac2020-10-12 22:05:18 -040085 .HLD_H_N(vddio), \
Tim Edwards4c733352020-10-12 16:32:36 -040086 .ENABLE_H(porb_h), \
87 .ENABLE_INP_H(loop_``X), \
88 .ENABLE_VDDA_H(porb_h), \
89 .ENABLE_VSWITCH_H(vssa), \
90 .ENABLE_VDDIO(vccd), \
91 .INP_DIS(por), \
Tim Edwards21a9aac2020-10-12 22:05:18 -040092 .IB_MODE_SEL(vssd), \
93 .VTRIP_SEL(vssd), \
94 .SLOW(vssd), \
95 .HLD_OVR(vssd), \
96 .ANALOG_EN(vssd), \
97 .ANALOG_SEL(vssd), \
98 .ANALOG_POL(vssd), \
99 .DM({vssd, vssd, vccd}), \
Tim Edwards4c733352020-10-12 16:32:36 -0400100 .PAD_A_NOESD_H(), \
101 .PAD_A_ESD_0_H(), \
102 .PAD_A_ESD_1_H(), \
103 .IN(Y), \
104 .IN_H(), \
105 .TIE_HI_ESD(), \
Tim Edwards21a9aac2020-10-12 22:05:18 -0400106 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +0200107
Tim Edwardse2ef6732020-10-12 17:25:12 -0400108`define OUTPUT_PAD(X,Y,INPUT_DIS,OUT_EN_N) \
shalan0d14e6e2020-08-31 16:50:48 +0200109 wire loop_``X; \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +0200110 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -0400111 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +0200112 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -0400113 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +0200114 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -0400115 .OUT(Y), \
116 .OE_N(OUT_EN_N), \
117 .HLD_H_N(vddio), \
118 .ENABLE_H(porb_h), \
119 .ENABLE_INP_H(loop_``X), \
120 .ENABLE_VDDA_H(porb_h), \
121 .ENABLE_VSWITCH_H(vssa), \
122 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400123 .INP_DIS(INPUT_DIS), \
Tim Edwards21a9aac2020-10-12 22:05:18 -0400124 .IB_MODE_SEL(vssd), \
125 .VTRIP_SEL(vssd), \
126 .SLOW(vssd), \
127 .HLD_OVR(vssd), \
128 .ANALOG_EN(vssd), \
129 .ANALOG_SEL(vssd), \
130 .ANALOG_POL(vssd), \
131 .DM({vccd, vccd, vssd}), \
Tim Edwards4c733352020-10-12 16:32:36 -0400132 .PAD_A_NOESD_H(), \
133 .PAD_A_ESD_0_H(), \
134 .PAD_A_ESD_1_H(), \
135 .IN(), \
136 .IN_H(), \
137 .TIE_HI_ESD(), \
138 .TIE_LO_ESD(loop_``X))
shalan0d14e6e2020-08-31 16:50:48 +0200139
Tim Edwardse2ef6732020-10-12 17:25:12 -0400140`define INOUT_PAD(X,Y,Y_OUT,INPUT_DIS,OUT_EN_N,MODE) \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +0200141 wire loop_``X; \
142 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -0400143 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +0200144 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -0400145 .PAD(X),\
shalan0d14e6e2020-08-31 16:50:48 +0200146 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -0400147 .OUT(Y_OUT), \
148 .OE_N(OUT_EN_N), \
149 .HLD_H_N(vddio), \
150 .ENABLE_H(porb_h), \
151 .ENABLE_INP_H(loop_``X), \
152 .ENABLE_VDDA_H(porb_h), \
153 .ENABLE_VSWITCH_H(vssa), \
154 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400155 .INP_DIS(INPUT_DIS), \
Tim Edwards21a9aac2020-10-12 22:05:18 -0400156 .IB_MODE_SEL(vssd), \
157 .VTRIP_SEL(vssd), \
158 .SLOW(vssd), \
159 .HLD_OVR(vssd), \
160 .ANALOG_EN(vssd), \
161 .ANALOG_SEL(vssd), \
162 .ANALOG_POL(vssd), \
Tim Edwards4c733352020-10-12 16:32:36 -0400163 .DM(MODE), \
164 .PAD_A_NOESD_H(), \
165 .PAD_A_ESD_0_H(), \
166 .PAD_A_ESD_1_H(), \
167 .IN(Y), \
168 .IN_H(), \
169 .TIE_HI_ESD(), \
170 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +0200171
Tim Edwards581068f2020-11-19 12:45:25 -0500172// `default_nettype wire