blob: fe6ade2e8fc988fb8a8bc83f183f06970f231382 [file] [log] [blame]
Tim Edwards55f4d0e2020-07-05 15:41:02 -04001###
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#---------------------------------------------------------------
9permute default
10property default
11property parallel none
12
Tim Edwards828a78d2021-01-11 09:42:49 -050013# Allow override of default #columns in the output format.
14catch {format $env(NETGEN_COLUMNS)}
15
Tim Edwards55f4d0e2020-07-05 15:41:02 -040016#---------------------------------------------------------------
17# For the following, get the cell lists from
18# circuit1 and circuit2.
19#---------------------------------------------------------------
20
21set cells1 [cells list -all -circuit1]
22set 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 Edwardsd7289eb2020-09-10 21:48:31 -040032set devices {}
33lappend devices sky130_fd_pr__res_iso_pw
Tim Edwardsd7289eb2020-09-10 21:48:31 -040034lappend devices sky130_fd_pr__res_high_po_0p35
35lappend devices sky130_fd_pr__res_high_po_0p69
36lappend devices sky130_fd_pr__res_high_po_1p41
37lappend devices sky130_fd_pr__res_high_po_2p85
38lappend devices sky130_fd_pr__res_high_po_5p73
39lappend devices sky130_fd_pr__res_high_po
40lappend devices sky130_fd_pr__res_xhigh_po_0p35
41lappend devices sky130_fd_pr__res_xhigh_po_0p69
42lappend devices sky130_fd_pr__res_xhigh_po_1p41
43lappend devices sky130_fd_pr__res_xhigh_po_2p85
44lappend devices sky130_fd_pr__res_xhigh_po_5p73
45lappend devices sky130_fd_pr__res_xhigh_po
46lappend devices sky130_fd_pr__res_generic_nd
47lappend devices sky130_fd_pr__res_generic_pd
Tim Edwards6ead3cf2020-12-20 12:07:20 -050048lappend devices sky130_fd_pr__res_generic_nd__hv
49lappend devices sky130_fd_pr__res_generic_pd__hv
Tim Edwardsd7289eb2020-09-10 21:48:31 -040050lappend devices mrdn_hv mrdp_hv
Tim Edwards55f4d0e2020-07-05 15:41:02 -040051
52foreach 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 Edwards2d613602020-10-02 09:03:27 -040064 property "-circuit1 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -040065 }
66 if {[lsearch $cells2 $dev] >= 0} {
67 permute "-circuit2 $dev" 1 2
Tim Edwards2d613602020-10-02 09:03:27 -040068 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 Edwards55f4d0e2020-07-05 15:41:02 -040076 # Ignore these properties
Tim Edwards23c97662020-08-09 11:57:32 -040077 property "-circuit2 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -040078 }
79}
80
81#-------------------------------------------
Tim Edwardsc686c102021-02-19 12:16:05 -050082# MRM (metal) resistors and poly resistor
Tim Edwards55f4d0e2020-07-05 15:41:02 -040083#-------------------------------------------
84
Tim Edwardsd7289eb2020-09-10 21:48:31 -040085set devices {}
Tim Edwardsc686c102021-02-19 12:16:05 -050086lappend devices sky130_fd_pr__res_generic_po
Tim Edwardsd7289eb2020-09-10 21:48:31 -040087lappend devices sky130_fd_pr__res_generic_l1
88lappend devices sky130_fd_pr__res_generic_m1
89lappend devices sky130_fd_pr__res_generic_m2
90lappend devices sky130_fd_pr__res_generic_m3
Tim Edwards55f4d0e2020-07-05 15:41:02 -040091#ifdef METAL5
Tim Edwardsd7289eb2020-09-10 21:48:31 -040092lappend devices sky130_fd_pr__res_generic_m4
93lappend devices sky130_fd_pr__res_generic_m5
Tim Edwards55f4d0e2020-07-05 15:41:02 -040094#endif (METAL5)
95
96foreach dev $devices {
97 if {[lsearch $cells1 $dev] >= 0} {
Tim Edwardsc686c102021-02-19 12:16:05 -050098 permute "-circuit1 $dev" end_a end_b
Tim Edwards55f4d0e2020-07-05 15:41:02 -040099 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 Edwards2d613602020-10-02 09:03:27 -0400108 property "-circuit1 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400109 }
110 if {[lsearch $cells2 $dev] >= 0} {
Tim Edwardsc686c102021-02-19 12:16:05 -0500111 permute "-circuit2 $dev" end_a end_b
Tim Edwards2d613602020-10-02 09:03:27 -0400112 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 Edwards55f4d0e2020-07-05 15:41:02 -0400120 # Ignore these properties
Tim Edwards23c97662020-08-09 11:57:32 -0400121 property "-circuit2 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400122 }
123}
124
125#-------------------------------------------
126# (MOS) transistors
127#-------------------------------------------
128
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400129set devices {}
130lappend devices sky130_fd_pr__nfet_01v8
131lappend devices sky130_fd_pr__nfet_01v8_lvt
132lappend devices sky130_fd_bs_flash__special_sonosfet_star
Tim Edwardsd53c8002020-11-22 15:07:06 -0500133lappend devices sky130_fd_pr__nfet_g5v0d10v5
Tim Edwards5dca4782020-12-21 22:51:04 -0500134lappend devices sky130_fd_pr__nfet_05v0_nvt
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400135lappend devices sky130_fd_pr__pfet_01v8
136lappend devices sky130_fd_pr__pfet_01v8_lvt
137lappend devices sky130_fd_pr__pfet_01v8_mvt
138lappend devices sky130_fd_pr__pfet_01v8_hvt
Tim Edwardsd53c8002020-11-22 15:07:06 -0500139lappend devices sky130_fd_pr__pfet_g5v0d10v5
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400140lappend devices sky130_fd_pr__special_pfet_pass
141lappend devices sky130_fd_pr__special_nfet_pass
142lappend devices sky130_fd_pr__special_nfet_latch
143lappend devices sky130_fd_pr__cap_var_lvt
144lappend devices sky130_fd_pr__cap_var_hvt
145lappend devices sky130_fd_pr__cap_var
Tim Edwards6ead3cf2020-12-20 12:07:20 -0500146lappend devices sky130_fd_pr__nfet_20v0_nvt
147lappend devices sky130_fd_pr__nfet_20v0
148lappend devices sky130_fd_pr__pfet_20v0
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400149
150foreach 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 Edwards1134fbc2020-10-12 22:35:42 -0400158 property "-circuit1 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400159 }
160 if {[lsearch $cells2 $dev] >= 0} {
161 permute "-circuit2 $dev" 1 3
Tim Edwards2d613602020-10-02 09:03:27 -0400162 property "-circuit2 $dev" parallel enable
163 property "-circuit2 $dev" parallel {l critical}
164 property "-circuit2 $dev" parallel {w add}
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400165 property "-circuit2 $dev" tolerance {w 0.01} {l 0.01}
166 # Ignore these properties
Tim Edwards1134fbc2020-10-12 22:35:42 -0400167 property "-circuit2 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400168 }
169}
170
171#-------------------------------------------
172# diodes
173#-------------------------------------------
174
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400175set devices {}
176lappend devices sky130_fd_pr__diode_pw2nd_05v5
177lappend devices sky130_fd_pr__diode_pw2nd_05v5_lvt
178lappend devices sky130_fd_pr__diode_pw2nd_05v5_nvt
179lappend devices sky130_fd_pr__diode_pd2nw_05v5
180lappend devices sky130_fd_pr__diode_pd2nw_05v5_lvt
181lappend devices sky130_fd_pr__diode_pd2nw_05v5_hvt
182lappend devices sky130_fd_pr__diode_pw2nd_11v0
183lappend devices sky130_fd_pr__diode_pd2nw_11v0
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400184
185foreach 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 Edwards2d613602020-10-02 09:03:27 -0400192 property "-circuit1 $dev" delete mult perim
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400193 }
194 if {[lsearch $cells2 $dev] >= 0} {
195 property "-circuit2 $dev" parallel enable
Tim Edwards2d613602020-10-02 09:03:27 -0400196 property "-circuit2 $dev" parallel {area add}
197 property "-circuit2 $dev" parallel {value add}
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400198 property "-circuit2 $dev" tolerance {area 0.02}
199 # Ignore these properties
Tim Edwards23c97662020-08-09 11:57:32 -0400200 property "-circuit2 $dev" delete mult perim
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400201 }
202}
203
204#-------------------------------------------
205# capacitors
206# MiM capacitors
207#-------------------------------------------
208
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400209set devices {}
210lappend devices sky130_fd_pr__cap_mim_m3_1
211lappend devices sky130_fd_pr__cap_mim_m3_2
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400212
213foreach 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 Edwards2d613602020-10-02 09:03:27 -0400220 property "-circuit1 $dev" delete mult perim mf
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400221 }
222 if {[lsearch $cells2 $dev] >= 0} {
Tim Edwards2d613602020-10-02 09:03:27 -0400223 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 Edwards55f4d0e2020-07-05 15:41:02 -0400227 # Ignore these properties
Tim Edwards2d613602020-10-02 09:03:27 -0400228 property "-circuit2 $dev" delete mult perim mf
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400229 }
230}
231
232#-------------------------------------------
233# Fixed-layout devices
234# bipolar transistors,
235# VPP capacitors
236#-------------------------------------------
237
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400238set devices {}
239lappend devices sky130_fd_pr__npn_05v5_W1p00L1p00
240lappend devices sky130_fd_pr__npn_05v5_W1p00L2p00
Tim Edwards6547ee32020-11-25 17:17:01 -0500241lappend devices sky130_fd_pr__pnp_05v5_W0p68L0p68
242lappend devices sky130_fd_pr__pnp_05v5_W3p40L3p40
Tim Edwards6ead3cf2020-12-20 12:07:20 -0500243lappend devices sky130_fd_pr__npn_05v5
244lappend devices sky130_fd_pr__pnp_05v5
245lappend devices sky130_fd_pr__npn_11v0
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400246
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400247#ifdef METAL5
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400248lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield
249lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield
250lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield
251lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield
252lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield
253lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield
254lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_polym4_shield
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400255#endif (METAL5)
Tim Edwardsd7289eb2020-09-10 21:48:31 -0400256lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield
257lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield
258lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield
259lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_li_shield
260lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield
261lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield
262lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield
263lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield
264lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield
265#ifdef REDISTRIBUTION
266lappend devices sky130_fd_pr__ind_04_01
267lappend devices sky130_fd_pr__ind_04_02
268#endif (REDISTRIBUTION)
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400269
270foreach dev $devices {
271 if {[lsearch $cells1 $dev] >= 0} {
272 property "-circuit1 $dev" parallel enable
273 # Ignore these properties
Tim Edwards2d613602020-10-02 09:03:27 -0400274 property "-circuit1 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400275 }
276 if {[lsearch $cells2 $dev] >= 0} {
277 property "-circuit2 $dev" parallel enable
278 # Ignore these properties
Tim Edwards23c97662020-08-09 11:57:32 -0400279 property "-circuit2 $dev" delete mult
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400280 }
281}
282
283#---------------------------------------------------------------
Tim Edwards5dca4782020-12-21 22:51:04 -0500284# Schematic cells which are not extractable
285#---------------------------------------------------------------
286
Tim Edwards25482942020-12-24 11:01:14 -0500287set devices {sky130_fd_io__condiode sky130_fd_io__tap_1}
Tim Edwards5dca4782020-12-21 22:51:04 -0500288
289foreach 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 Edwards55f4d0e2020-07-05 15:41:02 -0400299# Digital cells (ignore decap, fill, and tap cells)
300# Make a separate list for each supported library
301#---------------------------------------------------------------
Tim Edwards320242b2020-10-21 10:11:37 -0400302# e.g., ignore class "-circuit2 sky130_fc_sc_hd__decap_3"
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400303#---------------------------------------------------------------
304
Mitch Bailey44b715a2020-12-19 21:48:18 +0900305if { [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 Edwardsa6180a92021-06-14 12:07:33 -0400316 if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
317 ignore class "-circuit1 $cell"
318 }
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400319 }
Mitch Bailey44b715a2020-12-19 21:48:18 +0900320 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 Edwardsa6180a92021-06-14 12:07:33 -0400330 if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
331 ignore class "-circuit2 $cell"
332 }
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400333 }
334}
335
336#---------------------------------------------------------------
Tim Edwards2e6d6292021-03-01 16:03:39 -0500337# Allow the fill, decap, etc., cells to be parallelized
338#---------------------------------------------------------------
339
340foreach 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 Ghazycfd58442021-03-02 11:05:11 +0200356 if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
357 property "-circuit1 $cell" parallel enable
358 }
Tim Edwards2e6d6292021-03-01 16:03:39 -0500359}
360foreach 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 Ghazycfd58442021-03-02 11:05:11 +0200376 if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
377 property "-circuit2 $cell" parallel enable
378 }
Tim Edwards2e6d6292021-03-01 16:03:39 -0500379}
380
381#---------------------------------------------------------------
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400382# 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 Ghazy32982b72020-07-27 14:46:07 +0200392
Tim Edwards55f4d0e2020-07-05 15:41:02 -0400393foreach 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
405foreach 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"
418if {[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#---------------------------------------------------------------