blob: 0e914b62e11104aafe3c7eaa8383acb1b277783b [file] [log] [blame]
Tim Edwards581068f2020-11-19 12:45:25 -05001// `default_nettype none
shalan0d14e6e2020-08-31 16:50:48 +02002`ifndef TOP_ROUTING
Tim Edwards9eda80d2020-10-08 21:36:44 -04003 `define USER1_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -04004 .AMUXBUS_A(analog_a),\
5 .AMUXBUS_B(analog_b),\
6 .VSSA(vssa1),\
7 .VDDA(vdda1),\
8 .VSWITCH(vddio),\
9 .VDDIO_Q(vddio_q),\
10 .VCCHIB(vccd),\
11 .VDDIO(vddio),\
12 .VCCD(vccd1),\
13 .VSSIO(vssio),\
14 .VSSD(vssd1),\
15 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040016
17 `define USER2_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040018 .AMUXBUS_A(analog_a),\
19 .AMUXBUS_B(analog_b),\
20 .VSSA(vssa2),\
21 .VDDA(vdda2),\
22 .VSWITCH(vddio),\
23 .VDDIO_Q(vddio_q),\
24 .VCCHIB(vccd),\
25 .VDDIO(vddio),\
26 .VCCD(vccd2),\
27 .VSSIO(vssio),\
28 .VSSD(vssd2),\
29 .VSSIO_Q(vssio_q),
Tim Edwards9eda80d2020-10-08 21:36:44 -040030
31 `define MGMT_ABUTMENT_PINS \
Tim Edwards4c733352020-10-12 16:32:36 -040032 .AMUXBUS_A(analog_a),\
33 .AMUXBUS_B(analog_b),\
34 .VSSA(vssa),\
35 .VDDA(vdda),\
36 .VSWITCH(vddio),\
37 .VDDIO_Q(vddio_q),\
38 .VCCHIB(vccd),\
39 .VDDIO(vddio),\
40 .VCCD(vccd),\
41 .VSSIO(vssio),\
Tim Edwards21a9aac2020-10-12 22:05:18 -040042 .VSSD(vssd),\
Tim Edwards4c733352020-10-12 16:32:36 -040043 .VSSIO_Q(vssio_q),
shalan0d14e6e2020-08-31 16:50:48 +020044`else
Tim Edwards9eda80d2020-10-08 21:36:44 -040045 `define USER1_ABUTMENT_PINS
46 `define USER2_ABUTMENT_PINS
47 `define MGMT_ABUTMENT_PINS
shalan0d14e6e2020-08-31 16:50:48 +020048`endif
49
Tim Edwardsf645a842020-10-10 21:36:49 -040050`define HVCLAMP_PINS(H,L) \
Tim Edwards4c733352020-10-12 16:32:36 -040051 .DRN_HVC(H), \
52 .SRC_BDY_HVC(L)
Tim Edwards9eda80d2020-10-08 21:36:44 -040053
Tim Edwardsf645a842020-10-10 21:36:49 -040054`define LVCLAMP_PINS(H1,L1,H2,L2,L3) \
Tim Edwards4c733352020-10-12 16:32:36 -040055 .BDY2_B2B(L3), \
56 .DRN_LVC1(H1), \
57 .DRN_LVC2(H2), \
58 .SRC_BDY_LVC1(L1), \
59 .SRC_BDY_LVC2(L2)
Tim Edwards9eda80d2020-10-08 21:36:44 -040060
shalan0d14e6e2020-08-31 16:50:48 +020061`define INPUT_PAD(X,Y) \
62 wire loop_``X; \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +020063 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -040064 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +020065 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -040066 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +020067 `endif \
Tim Edwards21a9aac2020-10-12 22:05:18 -040068 .OUT(vssd), \
Tim Edwards4c733352020-10-12 16:32:36 -040069 .OE_N(vccd), \
Tim Edwards21a9aac2020-10-12 22:05:18 -040070 .HLD_H_N(vddio), \
Tim Edwards4c733352020-10-12 16:32:36 -040071 .ENABLE_H(porb_h), \
72 .ENABLE_INP_H(loop_``X), \
73 .ENABLE_VDDA_H(porb_h), \
74 .ENABLE_VSWITCH_H(vssa), \
75 .ENABLE_VDDIO(vccd), \
76 .INP_DIS(por), \
Tim Edwards21a9aac2020-10-12 22:05:18 -040077 .IB_MODE_SEL(vssd), \
78 .VTRIP_SEL(vssd), \
79 .SLOW(vssd), \
80 .HLD_OVR(vssd), \
81 .ANALOG_EN(vssd), \
82 .ANALOG_SEL(vssd), \
83 .ANALOG_POL(vssd), \
84 .DM({vssd, vssd, vccd}), \
Tim Edwards4c733352020-10-12 16:32:36 -040085 .PAD_A_NOESD_H(), \
86 .PAD_A_ESD_0_H(), \
87 .PAD_A_ESD_1_H(), \
88 .IN(Y), \
89 .IN_H(), \
90 .TIE_HI_ESD(), \
Tim Edwards21a9aac2020-10-12 22:05:18 -040091 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +020092
Tim Edwardse2ef6732020-10-12 17:25:12 -040093`define OUTPUT_PAD(X,Y,INPUT_DIS,OUT_EN_N) \
shalan0d14e6e2020-08-31 16:50:48 +020094 wire loop_``X; \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +020095 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -040096 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +020097 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -040098 .PAD(X), \
shalan0d14e6e2020-08-31 16:50:48 +020099 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -0400100 .OUT(Y), \
101 .OE_N(OUT_EN_N), \
102 .HLD_H_N(vddio), \
103 .ENABLE_H(porb_h), \
104 .ENABLE_INP_H(loop_``X), \
105 .ENABLE_VDDA_H(porb_h), \
106 .ENABLE_VSWITCH_H(vssa), \
107 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400108 .INP_DIS(INPUT_DIS), \
Tim Edwards21a9aac2020-10-12 22:05:18 -0400109 .IB_MODE_SEL(vssd), \
110 .VTRIP_SEL(vssd), \
111 .SLOW(vssd), \
112 .HLD_OVR(vssd), \
113 .ANALOG_EN(vssd), \
114 .ANALOG_SEL(vssd), \
115 .ANALOG_POL(vssd), \
116 .DM({vccd, vccd, vssd}), \
Tim Edwards4c733352020-10-12 16:32:36 -0400117 .PAD_A_NOESD_H(), \
118 .PAD_A_ESD_0_H(), \
119 .PAD_A_ESD_1_H(), \
120 .IN(), \
121 .IN_H(), \
122 .TIE_HI_ESD(), \
123 .TIE_LO_ESD(loop_``X))
shalan0d14e6e2020-08-31 16:50:48 +0200124
Tim Edwardse2ef6732020-10-12 17:25:12 -0400125`define INOUT_PAD(X,Y,Y_OUT,INPUT_DIS,OUT_EN_N,MODE) \
Ahmed Ghazydf4dd882020-11-25 18:38:42 +0200126 wire loop_``X; \
127 sky130_ef_io__gpiov2_pad_wrapped X``_pad ( \
Tim Edwards9eda80d2020-10-08 21:36:44 -0400128 `MGMT_ABUTMENT_PINS \
shalan0d14e6e2020-08-31 16:50:48 +0200129 `ifndef TOP_ROUTING \
Tim Edwards4c733352020-10-12 16:32:36 -0400130 .PAD(X),\
shalan0d14e6e2020-08-31 16:50:48 +0200131 `endif \
Tim Edwards4c733352020-10-12 16:32:36 -0400132 .OUT(Y_OUT), \
133 .OE_N(OUT_EN_N), \
134 .HLD_H_N(vddio), \
135 .ENABLE_H(porb_h), \
136 .ENABLE_INP_H(loop_``X), \
137 .ENABLE_VDDA_H(porb_h), \
138 .ENABLE_VSWITCH_H(vssa), \
139 .ENABLE_VDDIO(vccd), \
Tim Edwardse2ef6732020-10-12 17:25:12 -0400140 .INP_DIS(INPUT_DIS), \
Tim Edwards21a9aac2020-10-12 22:05:18 -0400141 .IB_MODE_SEL(vssd), \
142 .VTRIP_SEL(vssd), \
143 .SLOW(vssd), \
144 .HLD_OVR(vssd), \
145 .ANALOG_EN(vssd), \
146 .ANALOG_SEL(vssd), \
147 .ANALOG_POL(vssd), \
Tim Edwards4c733352020-10-12 16:32:36 -0400148 .DM(MODE), \
149 .PAD_A_NOESD_H(), \
150 .PAD_A_ESD_0_H(), \
151 .PAD_A_ESD_1_H(), \
152 .IN(Y), \
153 .IN_H(), \
154 .TIE_HI_ESD(), \
155 .TIE_LO_ESD(loop_``X) )
shalan0d14e6e2020-08-31 16:50:48 +0200156
Tim Edwards581068f2020-11-19 12:45:25 -0500157// `default_nettype wire