Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 1 | ### |
| 2 | ### Source file sky130_setup.tcl |
| 3 | ### Process this file with the preproc.py processor |
| 4 | ### |
| 5 | #--------------------------------------------------------------- |
| 6 | # Setup file for netgen LVS |
| 7 | # SkyWater TECHNAME |
| 8 | #--------------------------------------------------------------- |
| 9 | permute default |
| 10 | property default |
| 11 | property parallel none |
| 12 | |
Tim Edwards | 828a78d | 2021-01-11 09:42:49 -0500 | [diff] [blame] | 13 | # Allow override of default #columns in the output format. |
| 14 | catch {format $env(NETGEN_COLUMNS)} |
| 15 | |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 16 | #--------------------------------------------------------------- |
| 17 | # For the following, get the cell lists from |
| 18 | # circuit1 and circuit2. |
| 19 | #--------------------------------------------------------------- |
| 20 | |
| 21 | set cells1 [cells list -all -circuit1] |
| 22 | set cells2 [cells list -all -circuit2] |
| 23 | |
| 24 | # NOTE: In accordance with the LVS manager GUI, the schematic is |
| 25 | # always circuit2, so some items like property "par1" only need to |
| 26 | # be specified for circuit2. |
| 27 | |
| 28 | #------------------------------------------- |
| 29 | # Resistors (except metal) |
| 30 | #------------------------------------------- |
| 31 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 32 | set devices {} |
| 33 | lappend devices sky130_fd_pr__res_iso_pw |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 34 | lappend devices sky130_fd_pr__res_high_po_0p35 |
| 35 | lappend devices sky130_fd_pr__res_high_po_0p69 |
| 36 | lappend devices sky130_fd_pr__res_high_po_1p41 |
| 37 | lappend devices sky130_fd_pr__res_high_po_2p85 |
| 38 | lappend devices sky130_fd_pr__res_high_po_5p73 |
| 39 | lappend devices sky130_fd_pr__res_high_po |
| 40 | lappend devices sky130_fd_pr__res_xhigh_po_0p35 |
| 41 | lappend devices sky130_fd_pr__res_xhigh_po_0p69 |
| 42 | lappend devices sky130_fd_pr__res_xhigh_po_1p41 |
| 43 | lappend devices sky130_fd_pr__res_xhigh_po_2p85 |
| 44 | lappend devices sky130_fd_pr__res_xhigh_po_5p73 |
| 45 | lappend devices sky130_fd_pr__res_xhigh_po |
| 46 | lappend devices sky130_fd_pr__res_generic_nd |
| 47 | lappend devices sky130_fd_pr__res_generic_pd |
Tim Edwards | 6ead3cf | 2020-12-20 12:07:20 -0500 | [diff] [blame] | 48 | lappend devices sky130_fd_pr__res_generic_nd__hv |
| 49 | lappend devices sky130_fd_pr__res_generic_pd__hv |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 50 | lappend devices mrdn_hv mrdp_hv |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 51 | |
| 52 | foreach dev $devices { |
| 53 | if {[lsearch $cells1 $dev] >= 0} { |
| 54 | permute "-circuit1 $dev" 1 2 |
| 55 | property "-circuit1 $dev" series enable |
| 56 | property "-circuit1 $dev" series {w critical} |
| 57 | property "-circuit1 $dev" series {l add} |
| 58 | property "-circuit1 $dev" parallel enable |
| 59 | property "-circuit1 $dev" parallel {l critical} |
| 60 | property "-circuit1 $dev" parallel {w add} |
| 61 | property "-circuit1 $dev" parallel {value par} |
| 62 | property "-circuit1 $dev" tolerance {l 0.01} {w 0.01} |
| 63 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 64 | property "-circuit1 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 65 | } |
| 66 | if {[lsearch $cells2 $dev] >= 0} { |
| 67 | permute "-circuit2 $dev" 1 2 |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 68 | property "-circuit2 $dev" series enable |
| 69 | property "-circuit2 $dev" series {w critical} |
| 70 | property "-circuit2 $dev" series {l add} |
| 71 | property "-circuit2 $dev" parallel enable |
| 72 | property "-circuit2 $dev" parallel {l critical} |
| 73 | property "-circuit2 $dev" parallel {w add} |
| 74 | property "-circuit2 $dev" parallel {value par} |
| 75 | property "-circuit2 $dev" tolerance {l 0.01} {w 0.01} |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 76 | # Ignore these properties |
Tim Edwards | 23c9766 | 2020-08-09 11:57:32 -0400 | [diff] [blame] | 77 | property "-circuit2 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 78 | } |
| 79 | } |
| 80 | |
| 81 | #------------------------------------------- |
Tim Edwards | c686c10 | 2021-02-19 12:16:05 -0500 | [diff] [blame] | 82 | # MRM (metal) resistors and poly resistor |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 83 | #------------------------------------------- |
| 84 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 85 | set devices {} |
Tim Edwards | c686c10 | 2021-02-19 12:16:05 -0500 | [diff] [blame] | 86 | lappend devices sky130_fd_pr__res_generic_po |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 87 | lappend devices sky130_fd_pr__res_generic_l1 |
| 88 | lappend devices sky130_fd_pr__res_generic_m1 |
| 89 | lappend devices sky130_fd_pr__res_generic_m2 |
| 90 | lappend devices sky130_fd_pr__res_generic_m3 |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 91 | #ifdef METAL5 |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 92 | lappend devices sky130_fd_pr__res_generic_m4 |
| 93 | lappend devices sky130_fd_pr__res_generic_m5 |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 94 | #endif (METAL5) |
| 95 | |
| 96 | foreach dev $devices { |
| 97 | if {[lsearch $cells1 $dev] >= 0} { |
Tim Edwards | c686c10 | 2021-02-19 12:16:05 -0500 | [diff] [blame] | 98 | permute "-circuit1 $dev" end_a end_b |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 99 | property "-circuit1 $dev" series enable |
| 100 | property "-circuit1 $dev" series {w critical} |
| 101 | property "-circuit1 $dev" series {l add} |
| 102 | property "-circuit1 $dev" parallel enable |
| 103 | property "-circuit1 $dev" parallel {l critical} |
| 104 | property "-circuit1 $dev" parallel {w add} |
| 105 | property "-circuit1 $dev" parallel {value par} |
| 106 | property "-circuit1 $dev" tolerance {l 0.01} {w 0.01} |
| 107 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 108 | property "-circuit1 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 109 | } |
| 110 | if {[lsearch $cells2 $dev] >= 0} { |
Tim Edwards | c686c10 | 2021-02-19 12:16:05 -0500 | [diff] [blame] | 111 | permute "-circuit2 $dev" end_a end_b |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 112 | property "-circuit2 $dev" series enable |
| 113 | property "-circuit2 $dev" series {w critical} |
| 114 | property "-circuit2 $dev" series {l add} |
| 115 | property "-circuit2 $dev" parallel enable |
| 116 | property "-circuit2 $dev" parallel {l critical} |
| 117 | property "-circuit2 $dev" parallel {w add} |
| 118 | property "-circuit2 $dev" parallel {value par} |
| 119 | property "-circuit2 $dev" tolerance {l 0.01} {w 0.01} |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 120 | # Ignore these properties |
Tim Edwards | 23c9766 | 2020-08-09 11:57:32 -0400 | [diff] [blame] | 121 | property "-circuit2 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 122 | } |
| 123 | } |
| 124 | |
| 125 | #------------------------------------------- |
| 126 | # (MOS) transistors |
| 127 | #------------------------------------------- |
| 128 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 129 | set devices {} |
| 130 | lappend devices sky130_fd_pr__nfet_01v8 |
| 131 | lappend devices sky130_fd_pr__nfet_01v8_lvt |
| 132 | lappend devices sky130_fd_bs_flash__special_sonosfet_star |
Tim Edwards | d53c800 | 2020-11-22 15:07:06 -0500 | [diff] [blame] | 133 | lappend devices sky130_fd_pr__nfet_g5v0d10v5 |
Tim Edwards | 5dca478 | 2020-12-21 22:51:04 -0500 | [diff] [blame] | 134 | lappend devices sky130_fd_pr__nfet_05v0_nvt |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 135 | lappend devices sky130_fd_pr__pfet_01v8 |
| 136 | lappend devices sky130_fd_pr__pfet_01v8_lvt |
| 137 | lappend devices sky130_fd_pr__pfet_01v8_mvt |
| 138 | lappend devices sky130_fd_pr__pfet_01v8_hvt |
Tim Edwards | d53c800 | 2020-11-22 15:07:06 -0500 | [diff] [blame] | 139 | lappend devices sky130_fd_pr__pfet_g5v0d10v5 |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 140 | lappend devices sky130_fd_pr__special_pfet_pass |
| 141 | lappend devices sky130_fd_pr__special_nfet_pass |
| 142 | lappend devices sky130_fd_pr__special_nfet_latch |
| 143 | lappend devices sky130_fd_pr__cap_var_lvt |
| 144 | lappend devices sky130_fd_pr__cap_var_hvt |
| 145 | lappend devices sky130_fd_pr__cap_var |
Tim Edwards | 6ead3cf | 2020-12-20 12:07:20 -0500 | [diff] [blame] | 146 | lappend devices sky130_fd_pr__nfet_20v0_nvt |
| 147 | lappend devices sky130_fd_pr__nfet_20v0 |
| 148 | lappend devices sky130_fd_pr__pfet_20v0 |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 149 | |
| 150 | foreach dev $devices { |
| 151 | if {[lsearch $cells1 $dev] >= 0} { |
| 152 | permute "-circuit1 $dev" 1 3 |
| 153 | property "-circuit1 $dev" parallel enable |
| 154 | property "-circuit1 $dev" parallel {l critical} |
| 155 | property "-circuit1 $dev" parallel {w add} |
| 156 | property "-circuit1 $dev" tolerance {w 0.01} {l 0.01} |
| 157 | # Ignore these properties |
Tim Edwards | 1134fbc | 2020-10-12 22:35:42 -0400 | [diff] [blame] | 158 | property "-circuit1 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 159 | } |
| 160 | if {[lsearch $cells2 $dev] >= 0} { |
| 161 | permute "-circuit2 $dev" 1 3 |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 162 | property "-circuit2 $dev" parallel enable |
| 163 | property "-circuit2 $dev" parallel {l critical} |
| 164 | property "-circuit2 $dev" parallel {w add} |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 165 | property "-circuit2 $dev" tolerance {w 0.01} {l 0.01} |
| 166 | # Ignore these properties |
Tim Edwards | 1134fbc | 2020-10-12 22:35:42 -0400 | [diff] [blame] | 167 | property "-circuit2 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 168 | } |
| 169 | } |
| 170 | |
| 171 | #------------------------------------------- |
| 172 | # diodes |
| 173 | #------------------------------------------- |
| 174 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 175 | set devices {} |
| 176 | lappend devices sky130_fd_pr__diode_pw2nd_05v5 |
| 177 | lappend devices sky130_fd_pr__diode_pw2nd_05v5_lvt |
| 178 | lappend devices sky130_fd_pr__diode_pw2nd_05v5_nvt |
| 179 | lappend devices sky130_fd_pr__diode_pd2nw_05v5 |
| 180 | lappend devices sky130_fd_pr__diode_pd2nw_05v5_lvt |
| 181 | lappend devices sky130_fd_pr__diode_pd2nw_05v5_hvt |
| 182 | lappend devices sky130_fd_pr__diode_pw2nd_11v0 |
| 183 | lappend devices sky130_fd_pr__diode_pd2nw_11v0 |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 184 | |
| 185 | foreach dev $devices { |
| 186 | if {[lsearch $cells1 $dev] >= 0} { |
| 187 | property "-circuit1 $dev" parallel enable |
| 188 | property "-circuit1 $dev" parallel {area add} |
| 189 | property "-circuit1 $dev" parallel {value add} |
| 190 | property "-circuit1 $dev" tolerance {area 0.02} |
| 191 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 192 | property "-circuit1 $dev" delete mult perim |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 193 | } |
| 194 | if {[lsearch $cells2 $dev] >= 0} { |
| 195 | property "-circuit2 $dev" parallel enable |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 196 | property "-circuit2 $dev" parallel {area add} |
| 197 | property "-circuit2 $dev" parallel {value add} |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 198 | property "-circuit2 $dev" tolerance {area 0.02} |
| 199 | # Ignore these properties |
Tim Edwards | 23c9766 | 2020-08-09 11:57:32 -0400 | [diff] [blame] | 200 | property "-circuit2 $dev" delete mult perim |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 201 | } |
| 202 | } |
| 203 | |
| 204 | #------------------------------------------- |
| 205 | # capacitors |
| 206 | # MiM capacitors |
| 207 | #------------------------------------------- |
| 208 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 209 | set devices {} |
| 210 | lappend devices sky130_fd_pr__cap_mim_m3_1 |
| 211 | lappend devices sky130_fd_pr__cap_mim_m3_2 |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 212 | |
| 213 | foreach dev $devices { |
| 214 | if {[lsearch $cells1 $dev] >= 0} { |
| 215 | property "-circuit1 $dev" parallel enable |
| 216 | property "-circuit1 $dev" parallel {area add} |
| 217 | property "-circuit1 $dev" parallel {value add} |
| 218 | property "-circuit1 $dev" tolerance {l 0.01} {w 0.01} |
| 219 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 220 | property "-circuit1 $dev" delete mult perim mf |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 221 | } |
| 222 | if {[lsearch $cells2 $dev] >= 0} { |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 223 | property "-circuit2 $dev" parallel enable |
| 224 | property "-circuit2 $dev" parallel {area add} |
| 225 | property "-circuit2 $dev" parallel {value add} |
| 226 | property "-circuit2 $dev" tolerance {l 0.01} {w 0.01} |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 227 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 228 | property "-circuit2 $dev" delete mult perim mf |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 229 | } |
| 230 | } |
| 231 | |
| 232 | #------------------------------------------- |
| 233 | # Fixed-layout devices |
| 234 | # bipolar transistors, |
| 235 | # VPP capacitors |
| 236 | #------------------------------------------- |
| 237 | |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 238 | set devices {} |
| 239 | lappend devices sky130_fd_pr__npn_05v5_W1p00L1p00 |
| 240 | lappend devices sky130_fd_pr__npn_05v5_W1p00L2p00 |
Tim Edwards | 6547ee3 | 2020-11-25 17:17:01 -0500 | [diff] [blame] | 241 | lappend devices sky130_fd_pr__pnp_05v5_W0p68L0p68 |
| 242 | lappend devices sky130_fd_pr__pnp_05v5_W3p40L3p40 |
Tim Edwards | 6ead3cf | 2020-12-20 12:07:20 -0500 | [diff] [blame] | 243 | lappend devices sky130_fd_pr__npn_05v5 |
| 244 | lappend devices sky130_fd_pr__pnp_05v5 |
| 245 | lappend devices sky130_fd_pr__npn_11v0 |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 246 | |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 247 | #ifdef METAL5 |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 248 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield |
| 249 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield |
| 250 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield |
| 251 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield |
| 252 | lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield |
| 253 | lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield |
| 254 | lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_polym4_shield |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 255 | #endif (METAL5) |
Tim Edwards | d7289eb | 2020-09-10 21:48:31 -0400 | [diff] [blame] | 256 | lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield |
| 257 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield |
| 258 | lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield |
| 259 | lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_li_shield |
| 260 | lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield |
| 261 | lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield |
| 262 | lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield |
| 263 | lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield |
| 264 | lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield |
| 265 | #ifdef REDISTRIBUTION |
| 266 | lappend devices sky130_fd_pr__ind_04_01 |
| 267 | lappend devices sky130_fd_pr__ind_04_02 |
| 268 | #endif (REDISTRIBUTION) |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 269 | |
| 270 | foreach dev $devices { |
| 271 | if {[lsearch $cells1 $dev] >= 0} { |
| 272 | property "-circuit1 $dev" parallel enable |
| 273 | # Ignore these properties |
Tim Edwards | 2d61360 | 2020-10-02 09:03:27 -0400 | [diff] [blame] | 274 | property "-circuit1 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 275 | } |
| 276 | if {[lsearch $cells2 $dev] >= 0} { |
| 277 | property "-circuit2 $dev" parallel enable |
| 278 | # Ignore these properties |
Tim Edwards | 23c9766 | 2020-08-09 11:57:32 -0400 | [diff] [blame] | 279 | property "-circuit2 $dev" delete mult |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 280 | } |
| 281 | } |
| 282 | |
| 283 | #--------------------------------------------------------------- |
Tim Edwards | 5dca478 | 2020-12-21 22:51:04 -0500 | [diff] [blame] | 284 | # Schematic cells which are not extractable |
| 285 | #--------------------------------------------------------------- |
| 286 | |
Tim Edwards | 2548294 | 2020-12-24 11:01:14 -0500 | [diff] [blame] | 287 | set devices {sky130_fd_io__condiode sky130_fd_io__tap_1} |
Tim Edwards | 5dca478 | 2020-12-21 22:51:04 -0500 | [diff] [blame] | 288 | |
| 289 | foreach dev $devices { |
| 290 | if {[lsearch $cells1 $dev] >= 0} { |
| 291 | ignore class "-circuit1 $dev" |
| 292 | } |
| 293 | if {[lsearch $cells2 $dev] >= 0} { |
| 294 | ignore class "-circuit2 $dev" |
| 295 | } |
| 296 | } |
| 297 | |
| 298 | #--------------------------------------------------------------- |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 299 | # Digital cells (ignore decap, fill, and tap cells) |
| 300 | # Make a separate list for each supported library |
| 301 | #--------------------------------------------------------------- |
Tim Edwards | 320242b | 2020-10-21 10:11:37 -0400 | [diff] [blame] | 302 | # e.g., ignore class "-circuit2 sky130_fc_sc_hd__decap_3" |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 303 | #--------------------------------------------------------------- |
| 304 | |
Mitch Bailey | 44b715a | 2020-12-19 21:48:18 +0900 | [diff] [blame] | 305 | if { [info exist ::env(MAGIC_EXT_USE_GDS)] && $::env(MAGIC_EXT_USE_GDS) } { |
| 306 | foreach cell $cells1 { |
| 307 | # if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} { |
| 308 | # ignore class "-circuit1 $cell" |
| 309 | # } |
| 310 | if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} { |
| 311 | ignore class "-circuit1 $cell" |
| 312 | } |
| 313 | if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} { |
| 314 | ignore class "-circuit1 $cell" |
| 315 | } |
Tim Edwards | a6180a9 | 2021-06-14 12:07:33 -0400 | [diff] [blame] | 316 | if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} { |
| 317 | ignore class "-circuit1 $cell" |
| 318 | } |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 319 | } |
Mitch Bailey | 44b715a | 2020-12-19 21:48:18 +0900 | [diff] [blame] | 320 | foreach cell $cells2 { |
| 321 | # if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} { |
| 322 | # ignore class "-circuit2 $cell" |
| 323 | # } |
| 324 | if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} { |
| 325 | ignore class "-circuit2 $cell" |
| 326 | } |
| 327 | if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} { |
| 328 | ignore class "-circuit2 $cell" |
| 329 | } |
Tim Edwards | a6180a9 | 2021-06-14 12:07:33 -0400 | [diff] [blame] | 330 | if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} { |
| 331 | ignore class "-circuit2 $cell" |
| 332 | } |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 333 | } |
| 334 | } |
| 335 | |
| 336 | #--------------------------------------------------------------- |
Tim Edwards | 2e6d629 | 2021-03-01 16:03:39 -0500 | [diff] [blame] | 337 | # Allow the fill, decap, etc., cells to be parallelized |
| 338 | #--------------------------------------------------------------- |
| 339 | |
| 340 | foreach cell $cells1 { |
| 341 | if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} { |
| 342 | property "-circuit1 $cell" parallel enable |
| 343 | } |
| 344 | if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} { |
| 345 | property "-circuit1 $cell" parallel enable |
| 346 | } |
| 347 | if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} { |
| 348 | property "-circuit1 $cell" parallel enable |
| 349 | } |
| 350 | if {[regexp {sky130_fd_sc_[^_]+__diode_[[:digit:]]+} $cell match]} { |
| 351 | property "-circuit1 $cell" parallel enable |
| 352 | } |
| 353 | if {[regexp {sky130_fd_sc_[^_]+__fill_diode_[[:digit:]]+} $cell match]} { |
| 354 | property "-circuit1 $cell" parallel enable |
| 355 | } |
Ahmed Ghazy | cfd5844 | 2021-03-02 11:05:11 +0200 | [diff] [blame] | 356 | if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} { |
| 357 | property "-circuit1 $cell" parallel enable |
| 358 | } |
Tim Edwards | 2e6d629 | 2021-03-01 16:03:39 -0500 | [diff] [blame] | 359 | } |
| 360 | foreach cell $cells2 { |
| 361 | if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} { |
| 362 | property "-circuit2 $cell" parallel enable |
| 363 | } |
| 364 | if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} { |
| 365 | property "-circuit2 $cell" parallel enable |
| 366 | } |
| 367 | if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} { |
| 368 | property "-circuit2 $cell" parallel enable |
| 369 | } |
| 370 | if {[regexp {sky130_fd_sc_[^_]+__diode_[[:digit:]]+} $cell match]} { |
| 371 | property "-circuit2 $cell" parallel enable |
| 372 | } |
| 373 | if {[regexp {sky130_fd_sc_[^_]+__fill_diode_[[:digit:]]+} $cell match]} { |
| 374 | property "-circuit2 $cell" parallel enable |
| 375 | } |
Ahmed Ghazy | cfd5844 | 2021-03-02 11:05:11 +0200 | [diff] [blame] | 376 | if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} { |
| 377 | property "-circuit2 $cell" parallel enable |
| 378 | } |
Tim Edwards | 2e6d629 | 2021-03-01 16:03:39 -0500 | [diff] [blame] | 379 | } |
| 380 | |
| 381 | #--------------------------------------------------------------- |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 382 | # Handle cells captured from Electric |
| 383 | # |
| 384 | # Find cells of the form "<library>__<cellname>" in the netlist |
| 385 | # from Electric where the extracted layout netlist has only |
| 386 | # "<cellname>". Cross-check by ensuring that the full name |
| 387 | # "<library>__<cellname>" does not exist in both cells, and that |
| 388 | # the truncated name "<cellname>" does not exist in both cells. |
| 389 | #--------------------------------------------------------------- |
| 390 | # e.g., hydra_spi_controller__hydra_spi_controller |
| 391 | #--------------------------------------------------------------- |
Ahmed Ghazy | 32982b7 | 2020-07-27 14:46:07 +0200 | [diff] [blame] | 392 | |
Tim Edwards | 55f4d0e | 2020-07-05 15:41:02 -0400 | [diff] [blame] | 393 | foreach cell $cells1 { |
| 394 | if {[regexp "(.+)__(.+)" $cell match library cellname]} { |
| 395 | if {([lsearch $cells2 $cell] < 0) && \ |
| 396 | ([lsearch $cells2 $cellname] >= 0) && \ |
| 397 | ([lsearch $cells1 $cellname] < 0)} { |
| 398 | equate classes "-circuit1 $cell" "-circuit2 $cellname" |
| 399 | puts stdout "Matching pins of $cell in circuit 1 and $cellname in circuit 2" |
| 400 | equate pins "-circuit1 $cell" "-circuit2 $cellname" |
| 401 | } |
| 402 | } |
| 403 | } |
| 404 | |
| 405 | foreach cell $cells2 { |
| 406 | if {[regexp "(.+)__(.+)" $cell match library cellname]} { |
| 407 | if {([lsearch $cells1 $cell] < 0) && \ |
| 408 | ([lsearch $cells1 $cellname] >= 0) && \ |
| 409 | ([lsearch $cells2 $cellname] < 0)} { |
| 410 | equate classes "-circuit1 $cellname" "-circuit2 $cell" |
| 411 | puts stdout "Matching pins of $cellname in circuit 1 and $cell in circuit 2" |
| 412 | equate pins "-circuit1 $cellname" "-circuit2 $cell" |
| 413 | } |
| 414 | } |
| 415 | } |
| 416 | |
| 417 | # Match pins on black-box cells if LVS is called with "-blackbox" |
| 418 | if {[model blackbox]} { |
| 419 | foreach cell $cells1 { |
| 420 | if {[model "-circuit1 $cell"] == "blackbox"} { |
| 421 | if {[lsearch $cells2 $cell] >= 0} { |
| 422 | puts stdout "Matching pins of $cell in circuits 1 and 2" |
| 423 | equate pins "-circuit1 $cell" "-circuit2 $cell" |
| 424 | } |
| 425 | } |
| 426 | } |
| 427 | } |
| 428 | |
| 429 | #--------------------------------------------------------------- |