blob: e427b08059f7cf67eb0427bd510818019cfa13e2 [file] [log] [blame]
shalan0d14e6e2020-08-31 16:50:48 +02001`ifndef TOP_ROUTING
Tim Edwards9eda80d2020-10-08 21:36:44 -04002 `define USER1_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -04003 .AMUXBUS_A(analog_a),\
4 .AMUXBUS_B(analog_b),\
5 .VSSA(vssa1),\
6 .VDDA(vdda1),\
7 .VSWITCH(vddio),\
8 .VDDIO_Q(vddio_q),\
9 .VCCHIB(vccd),\
10 .VDDIO(vddio),\
11 .VCCD(vccd1),\
12 .VSSIO(vssio),\
13 .VSSD(vssd1),\
14 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040015
16 `define USER2_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040017 .AMUXBUS_A(analog_a),\
18 .AMUXBUS_B(analog_b),\
19 .VSSA(vssa2),\
20 .VDDA(vdda2),\
21 .VSWITCH(vddio),\
22 .VDDIO_Q(vddio_q),\
23 .VCCHIB(vccd),\
24 .VDDIO(vddio),\
25 .VCCD(vccd2),\
26 .VSSIO(vssio),\
27 .VSSD(vssd2),\
28 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040029
30 `define MGMT_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040031 .AMUXBUS_A(analog_a),\
32 .AMUXBUS_B(analog_b),\
33 .VSSA(vssa),\
34 .VDDA(vdda),\
35 .VSWITCH(vddio),\
36 .VDDIO_Q(vddio_q),\
37 .VCCHIB(vccd),\
38 .VDDIO(vddio),\
39 .VCCD(vccd),\
40 .VSSIO(vssio),\
41 .VSSD(vssa),\
42 .VSSIO_Q(vssio_q),
shalan0d14e6e2020-08-31 16:50:48 +020043`else
Tim Edwards9eda80d2020-10-08 21:36:44 -040044 `define USER1_ABUTMENT_PINS
45 `define USER2_ABUTMENT_PINS
46 `define MGMT_ABUTMENT_PINS
shalan0d14e6e2020-08-31 16:50:48 +020047`endif
48
Tim Edwardsf645a842020-10-10 21:36:49 -040049`define HVCLAMP_PINS(H,L) \
Tim Edwards4c733352020-10-12 16:32:36 -040050 .DRN_HVC(H), \
51 .SRC_BDY_HVC(L)
Tim Edwards9eda80d2020-10-08 21:36:44 -040052
Tim Edwardsf645a842020-10-10 21:36:49 -040053`define LVCLAMP_PINS(H1,L1,H2,L2,L3) \
Tim Edwards4c733352020-10-12 16:32:36 -040054 .BDY2_B2B(L3), \
55 .DRN_LVC1(H1), \
56 .DRN_LVC2(H2), \
57 .SRC_BDY_LVC1(L1), \
58 .SRC_BDY_LVC2(L2)
Tim Edwards9eda80d2020-10-08 21:36:44 -040059
shalan0d14e6e2020-08-31 16:50:48 +020060`define INPUT_PAD(X,Y) \
61 wire loop_``X; \
Tim Edwards4c733352020-10-12 16:32:36 -040062 sky130_ef_io__gpiov2_pad X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -040063 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +020064 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -040065 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +020066 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -040067 .OUT(vssa), \
68 .OE_N(vccd), \
69 .HLD_H_N(vddio), \
70 .ENABLE_H(porb_h), \
71 .ENABLE_INP_H(loop_``X), \
72 .ENABLE_VDDA_H(porb_h), \
73 .ENABLE_VSWITCH_H(vssa), \
74 .ENABLE_VDDIO(vccd), \
75 .INP_DIS(por), \
76 .IB_MODE_SEL(vssa), \
77 .VTRIP_SEL(vssa), \
78 .SLOW(vssa), \
79 .HLD_OVR(vssa), \
80 .ANALOG_EN(vssa), \
81 .ANALOG_SEL(vssa), \
82 .ANALOG_POL(vssa), \
83 .DM({vssa, vssa, vccd}), \
84 .PAD_A_NOESD_H(), \
85 .PAD_A_ESD_0_H(), \
86 .PAD_A_ESD_1_H(), \
87 .IN(Y), \
88 .IN_H(), \
89 .TIE_HI_ESD(), \
90 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +020091
Tim Edwardse2ef6732020-10-12 17:25:12 -040092`define OUTPUT_PAD(X,Y,INPUT_DIS,OUT_EN_N) \
shalan0d14e6e2020-08-31 16:50:48 +020093 wire loop_``X; \
Tim Edwards4c733352020-10-12 16:32:36 -040094 sky130_ef_io__gpiov2_pad X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -040095 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +020096 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -040097 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +020098 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -040099 .OUT(Y), \
100 .OE_N(OUT_EN_N), \
101 .HLD_H_N(vddio), \
102 .ENABLE_H(porb_h), \
103 .ENABLE_INP_H(loop_``X), \
104 .ENABLE_VDDA_H(porb_h), \
105 .ENABLE_VSWITCH_H(vssa), \
106 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400107 .INP_DIS(INPUT_DIS), \
Tim Edwards4c733352020-10-12 16:32:36 -0400108 .IB_MODE_SEL(vssa), \
109 .VTRIP_SEL(vssa), \
110 .SLOW(vssa), \
111 .HLD_OVR(vssa), \
112 .ANALOG_EN(vssa), \
113 .ANALOG_SEL(vssa), \
114 .ANALOG_POL(vssa), \
115 .DM({vccd, vccd, vssa}), \
116 .PAD_A_NOESD_H(), \
117 .PAD_A_ESD_0_H(), \
118 .PAD_A_ESD_1_H(), \
119 .IN(), \
120 .IN_H(), \
121 .TIE_HI_ESD(), \
122 .TIE_LO_ESD(loop_``X))
shalan0d14e6e2020-08-31 16:50:48 +0200123
Tim Edwardse2ef6732020-10-12 17:25:12 -0400124`define INOUT_PAD(X,Y,Y_OUT,INPUT_DIS,OUT_EN_N,MODE) \
Tim Edwards4c733352020-10-12 16:32:36 -0400125 sky130_ef_io__gpiov2_pad X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -0400126 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +0200127 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -0400128 .PAD(X),\
shalan0d14e6e2020-08-31 16:50:48 +0200129 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -0400130 .OUT(Y_OUT), \
131 .OE_N(OUT_EN_N), \
132 .HLD_H_N(vddio), \
133 .ENABLE_H(porb_h), \
134 .ENABLE_INP_H(loop_``X), \
135 .ENABLE_VDDA_H(porb_h), \
136 .ENABLE_VSWITCH_H(vssa), \
137 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400138 .INP_DIS(INPUT_DIS), \
Tim Edwards4c733352020-10-12 16:32:36 -0400139 .IB_MODE_SEL(vssa), \
140 .VTRIP_SEL(vssa), \
141 .SLOW(vssa), \
142 .HLD_OVR(vssa), \
143 .ANALOG_EN(vssa), \
144 .ANALOG_SEL(vssa), \
145 .ANALOG_POL(vssa), \
146 .DM(MODE), \
147 .PAD_A_NOESD_H(), \
148 .PAD_A_ESD_0_H(), \
149 .PAD_A_ESD_1_H(), \
150 .IN(Y), \
151 .IN_H(), \
152 .TIE_HI_ESD(), \
153 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +0200154