diff --git a/signoff/cdrc.log b/signoff/cdrc.log
new file mode 100644
index 0000000..d07ac82
--- /dev/null
+++ b/signoff/cdrc.log
@@ -0,0 +1,2 @@
+caldrc-put: caravel_18000abd.oas 2b2307ad510ee4cd3f8652040b20f0a41eed2ebd 2022-12-13.08:15:11.UTC md5=f6344099ee7a25bdb62e8c21ad88b408 /mnt/shuttles/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas [no-git-push]
+caldrc-post: caravel_18000abd.gds put=2b2307ad 2022-12-13.08:28:24.UTC md5=(no-gds-file) output3341_pdk100-ga2322ad13_drc3241-g2b2307ad_prj3241-g2b2307ad_caravel_18000abd
diff --git a/signoff/drc.log b/signoff/drc.log
new file mode 100644
index 0000000..c857526
--- /dev/null
+++ b/signoff/drc.log
@@ -0,0 +1,5377 @@
+13-Dec-2022 07:38:20 | INFO    | Your Klayout version is: KLayout 0.28
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['comp.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['contact.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dnwell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['drc_bjt.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dualgate.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dummy_exclude.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['efuse.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['esd.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['geom.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['hres.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lres.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lvpwell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lvs_bjt.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['main.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['mcell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal1.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal2.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal3.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal4.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal5.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metaltop.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['mim.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['nat.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['nplus.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['otp_mk.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['poly2.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['pplus.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['pres.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['sab.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['sram.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['tail.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via1.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via2.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via3.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via4.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via5.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['ymtp_mk.drc']
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design comp on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design contact on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dnwell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design drc_bjt on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dualgate on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dummy_exclude on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design efuse on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design esd on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design geom on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design hres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lvpwell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lvs_bjt on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design main on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design mcell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal1 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal3 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal4 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal5 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metaltop on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design mim on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design nat on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design nplus on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design otp_mk on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design poly2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design pplus on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design pres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design sab on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design sram on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design tail on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via1 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via3 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via4 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via5 on cell caravel_18000abd:
+2022-12-13 07:38:24 +0000: Memory Usage (557316K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557312K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557388K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557296K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557340K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557384K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557160K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557284K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557156K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557504K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557324K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557160K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557152K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557336K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557328K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557308K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557388K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557312K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557316K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_dualgate.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557340K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_dnwell.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_comp.lyrdb
+2022-12-13 07:38:24 +0000: Memory Usage (557296K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557384K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_contact.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_esd.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_hres.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Wedge enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_drc_bjt.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Wedge enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557284K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_geom.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : connectivity rules are disabled.
+2022-12-13 07:38:24 +0000: Memory Usage (557156K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Evaluate switches.
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Wedge enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557504K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557160K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_lvpwell.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Ball enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557324K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_lres.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : connectivity rules are disabled.
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557300K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Gold enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_mcell.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_main.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : MIM Option selected B
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_dummy_exclude.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_lvs_bjt.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_mim.lyrdb
+2022-12-13 07:38:24 +0000: Memory Usage (557332K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:24 +0000: Memory Usage (557152K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : MIM Option selected B
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Gold enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Evaluate switches.
+2022-12-13 07:38:24 +0000: Memory Usage (557348K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557344K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metal2.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metal1.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metaltop.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Number of threads to use 4
+2022-12-13 07:38:24 +0000: Memory Usage (557336K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:24 +0000: Memory Usage (557160K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metal5.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_efuse.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_poly2.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557308K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Ball enabled  true
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_nat.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metal3.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_otp_mk.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Loading database to memory is complete.
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_via5.lyrdb
+2022-12-13 07:38:24 +0000: Memory Usage (557320K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_nplus.lyrdb
+2022-12-13 07:38:24 +0000: Memory Usage (557328K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_tail.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_metal4.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_pplus.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_via2.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Loading database to memory is complete.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_sab.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_via3.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_pres.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_via1.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_via4.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_sram.lyrdb
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Evaluate switches.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : connectivity rules are disabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Wedge enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Ball enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Gold enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : MIM Option selected B
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Offgrid enabled  true
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Number of threads to use 4
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Verbose mode: false
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : deep  mode is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_TOP Selected is 9K
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : METAL_STACK Selected is 5LM
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : FEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : BEOL is enabled.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750692K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760848K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750872K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761028K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750672K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750924K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760828K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761080K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760860K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750756K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750608K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (751104K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760912K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760764K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750736K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761260K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750604K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750680K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750740K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750700K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760760K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760924K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750724K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750696K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750720K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750732K) : Read in polygons from layers.
+2022-12-13 07:38:27 +0000: Memory Usage (750676K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760880K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760848K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750716K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760852K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : comp has 675304 polygons
+2022-12-13 07:38:27 +0000: Memory Usage (750764K) : Read in polygons from layers.
+2022-12-13 07:38:28 +0000: Memory Usage (760888K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760920K) : comp has 675304 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761028K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760828K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761080K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760860K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760764K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761260K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760912K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760924K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760760K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760848K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760880K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760852K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760888K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761028K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761080K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760920K) : dnwell has 0 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760828K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760860K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761260K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760764K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760912K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760924K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760848K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760760K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760880K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760852K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760888K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761080K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761028K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760920K) : nwell has 221165 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760828K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760860K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761260K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760912K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760764K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760760K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760924K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760880K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760888K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760852K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760848K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760920K) : lvpwell has 245301 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760876K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761080K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761028K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760828K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760856K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760860K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760912K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (761260K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760764K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760836K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760896K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760832K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : dualgate has 251510 polygons
+2022-12-13 07:38:28 +0000: Memory Usage (760872K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760924K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760760K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760888K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760880K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760852K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760848K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760920K) : dualgate has 251510 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761080K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761028K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760828K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760860K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760912K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761260K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760764K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760924K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760880K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760760K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760888K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760852K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760848K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760920K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : poly2 has 928772 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761080K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760828K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761028K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760860K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760912K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761260K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760764K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760848K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760924K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760920K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761080K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760880K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761028K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760828K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760760K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760888K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760852K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760848K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : nplus has 257767 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761080K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760828K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761028K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760912K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760860K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761260K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760764K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760912K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760860K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761260K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760764K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760924K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760880K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760920K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760888K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : pplus has 269125 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760852K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : pplus has 269125 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760760K) : pplus has 269125 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760876K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760848K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : pplus has 269125 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760872K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761080K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760828K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : sab has 1921 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761028K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760856K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : sab has 1921 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760912K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (761260K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760764K) : esd has 0 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760860K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760832K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760836K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : resistor has 1 polygons
+2022-12-13 07:38:29 +0000: Memory Usage (760896K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : esd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : resistor has 1 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fhres has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : fusetop has 9 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : fusewindow_d has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : polyfuse has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : mvsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : mvpsd has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : nat has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : comp_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : poly2_dummy has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : schottky_diode has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760848K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760924K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761080K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760828K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760880K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761028K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760912K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : ndmy has 8 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760920K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760852K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760876K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (761260K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760888K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760872K) : zener has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760856K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760764K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ndmy has 8 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760760K) : zener has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : res_mk has 945 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760860K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : res_mk has 945 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ndmy has 8 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760836K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760832K) : opc_drc has 0 polygons
+2022-12-13 07:38:30 +0000: Memory Usage (760896K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : opc_drc has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : ndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : pmndmy has 8 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : v5_xtor has 205372 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : cap_mk has 9 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : latchup_mk has 90 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : otp_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760860K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760764K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761028K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : mtpmark has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761080K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : latchup_mk has 90 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : latchup_mk has 90 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760848K) : latchup_mk has 90 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760912K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (761260K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760828K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : drc_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760924K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760880K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760888K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760920K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : otp_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760852K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : latchup_mk has 90 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760896K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : diode_mk has 2669 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760760K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : otp_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:31 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : diode_mk has 2669 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : drc_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_bjt has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mim_l_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : latchup_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : guard_ring_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : otp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mtpmark has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : neo_ee_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : sramcore has 20840 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_rf has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_drain has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ind_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : hvpolyrs has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_io has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : probe_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : esd_mk has 90 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : plfuse has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : lvs_source has 900 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760920K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760880K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760888K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760852K) : efuse_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760760K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760880K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760888K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : well_diode_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760888K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760880K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : ldmos_xtor has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : plfuse has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760888K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760880K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : efuse_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : ymtp_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : dev_wf_mk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : comp_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : comp_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760848K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : poly2_label has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : poly2_label has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760872K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761080K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760856K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761260K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760828K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760860K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (761028K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760912K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760836K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760876K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760764K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760896K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760924K) : mdiode has 0 polygons
+2022-12-13 07:38:32 +0000: Memory Usage (760832K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760888K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760880K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760836K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760872K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760920K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760852K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760896K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760760K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760856K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760876K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (760832K) : mdiode has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762968K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762980K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762988K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766820K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763004K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762984K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763008K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762964K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763212K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762960K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762988K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763392K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767052K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762964K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766824K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766800K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763008K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767424K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763160K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762964K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762896K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762964K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763024K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763044K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767000K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766996K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763052K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766884K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766868K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766736K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767088K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763004K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762968K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763020K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770852K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763012K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763004K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770852K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762968K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766860K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763052K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766852K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763008K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763004K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766892K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762984K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766820K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763028K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766824K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763008K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762892K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766868K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770888K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762988K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766732K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (763008K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770888K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770888K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (762964K) : contact has 8949189 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770888K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767052K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766824K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770904K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766800K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771100K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770904K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767424K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770864K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771100K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766868K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771256K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766736K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770848K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770864K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767088K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (767000K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770776K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770848K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771256K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766996K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766804K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766884K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771056K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770776K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770784K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770844K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770936K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771056K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770784K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770844K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770936K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770904K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770904K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766860K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766852K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770896K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766892K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770900K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766808K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770896K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770900K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766844K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770944K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_label has 19 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766868K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766824K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766732K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770880K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770944K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766828K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (766848K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770880K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770932K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770804K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (766804K) : metal1_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770804K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770932K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770872K) : metal1_label has 19 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770872K) : metal1_slot has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770852K) : metal1_blk has 0 polygons
+2022-12-13 07:38:33 +0000: Memory Usage (770888K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770904K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771100K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770864K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771256K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770848K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770776K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (771056K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770784K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770936K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770924K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770904K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770844K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770896K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770900K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770944K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770884K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770868K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770880K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770888K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770804K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770932K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770908K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770872K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (770892K) : metal1_blk has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775888K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (784164K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775924K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775924K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775940K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (776136K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775928K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775904K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775904K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775904K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (776292K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784216K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784412K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775924K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775900K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775884K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775812K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784568K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775960K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784176K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775972K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784160K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (776092K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784088K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775820K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784236K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784164K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775960K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784248K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775940K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775920K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784368K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787264K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784096K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784236K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787264K) : metal2_slot has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775932K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784196K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784216K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775936K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775928K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784208K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775980K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775880K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775920K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784212K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775904K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784256K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775924K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784156K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784196K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775920K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_label has 2097 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775840K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_label has 2097 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775944K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775968K) : via1 has 1473783 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775944K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784192K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784116K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784220K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784244K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775908K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784220K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784216K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784412K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784184K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787516K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_label has 2097 polygons
+2022-12-13 07:38:34 +0000: Memory Usage (775928K) : via1 has 1473783 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784568K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787516K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784176K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784160K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787668K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784088K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_drawn has 506494 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787260K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784236K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787276K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787668K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784248K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787188K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787260K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784368K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787276K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787348K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787188K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784096K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787468K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784236K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787348K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784216K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784196K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787196K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787468K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787196K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784208K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784256K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784196K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784212K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784156K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787356K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784180K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787256K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787356K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784200K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787256K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784192K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784220K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784116K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784244K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784220K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787216K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787344K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784184K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787216K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787344K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (784204K) : metal2_dummy has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_label has 2097 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_slot has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787264K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787516K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787188K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787276K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787668K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787260K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787280K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787348K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787468K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787196K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787316K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787336K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787356K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (793408K) : via2 has 1870904 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787256K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795540K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787300K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787296K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787216K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787312K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787344K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787320K) : metal2_blk has 0 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787284K) : metal2_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793444K) : via2 has 1870904 polygons
+2022-12-13 07:38:35 +0000: Memory Usage (787304K) : metal2_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793444K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793660K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793460K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793448K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793428K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795788K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793424K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795592K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793444K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793332K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793404K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793812K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793420K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793424K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793492K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793480K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795540K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795536K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795464K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795944K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795552K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795624K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795612K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793612K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793340K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793460K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795744K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795472K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793440K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793456K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795592K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795572K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795584K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793448K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793504K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793440K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793428K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795632K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793400K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795572K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793480K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795532K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793444K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795612K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793440K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793360K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793456K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793464K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793488K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795568K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795588K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795596K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793428K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795492K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795620K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795788K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795592K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795560K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793464K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795596K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (793448K) : via2 has 1870904 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797236K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_drawn has 277166 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797004K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797236K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797028K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795464K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795944K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795536K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795612K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797004K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795624K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795552K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797028K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797048K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796940K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797384K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797012K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797048K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795472K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795744K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797032K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797064K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797000K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797384K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796940K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795592K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797012K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795572K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797032K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797064K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795584K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797000K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796980K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797184K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797184K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796980K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797060K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795632K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797060K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795556K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795572K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795532K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797080K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795612K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795576K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797048K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797004K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797080K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797008K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797004K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795596K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795588K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797048K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795568K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797008K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795492K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797016K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795620K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797056K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795560K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797016K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797032K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797044K) : metal3_label has 494 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795596K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (796936K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797004K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797032K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797068K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797044K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (796936K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797004K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797068K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (795580K) : metal3_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797024K) : metal3_label has 494 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797024K) : metal3_slot has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801500K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797020K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797004K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797236K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801504K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801716K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801516K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797028K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801508K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796940K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797384K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797012K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797000K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797056K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797064K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_label has 360 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797032K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801420K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801864K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801492K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797036K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801480K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797184K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801544K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (796980K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801512K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801516K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797016K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797060K) : metal3_blk has 0 polygons
+2022-12-13 07:38:36 +0000: Memory Usage (797048K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801664K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801460K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801540K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801528K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797056K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801500K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797080K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797048K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797004K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797008K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797056K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801560K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801528K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797016K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801488K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801504K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (796936K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797004K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797032K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801716K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801516K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801520K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802152K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802384K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797068K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801416K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801512K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797040K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802152K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801508K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802384K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797024K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801548K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802176K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (797044K) : metal3_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801520K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801504K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801492K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801420K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801864K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802176K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801544K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801480K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801524K) : metal4_drawn has 142068 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802088K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801512K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802532K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802212K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802144K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801516K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802088K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802532K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802180K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802212K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802144K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801664K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802180K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801540K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802332K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801460K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802208K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802332K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802132K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801528K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802208K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801528K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801560K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802132K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801488K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802228K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802148K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801536K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801496K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802228K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802148K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801520K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801484K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802188K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801512K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801416K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802152K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801548K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802188K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802180K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802084K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801520K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801504K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802152K) : metal4_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802212K) : metal4_label has 360 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802180K) : metal4_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802084K) : metal4_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802188K) : metal4_label has 360 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802172K) : metal4_label has 360 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802212K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (801524K) : metal4_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802188K) : metal4_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802172K) : metal4_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802192K) : metal4_label has 360 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802192K) : metal4_slot has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802168K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802152K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802384K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802176K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802088K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : via4 has 9157574 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802532K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802180K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802212K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802144K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802184K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802208K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802332K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : via4 has 9157574 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802228K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802148K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802156K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : via4 has 9157574 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802204K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802164K) : metal4_blk has 0 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802132K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808100K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802188K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:37 +0000: Memory Usage (802196K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808100K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802152K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802084K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802180K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802188K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802172K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802212K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807804K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808248K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (802192K) : metal4_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807804K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807928K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808248K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807928K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807876K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808048K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807924K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808048K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807876K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807944K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807924K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807944K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807872K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807884K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808100K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807872K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807848K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807848K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807800K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807888K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807932K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807800K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal1_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807804K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807888K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807932K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal2_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808248K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807928K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807896K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807908K) : via4 has 9157574 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal3_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808396K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807908K) : metal5_drawn has 84478 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808840K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal4_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808520K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808484K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808396K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808488K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808456K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808840K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808520K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808484K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808048K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808488K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808456K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal1_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807924K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807876K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal2_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808644K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808396K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal3_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807944K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808520K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808516K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808396K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808644K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : metal1_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808468K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808840K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808488K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808484K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal4_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808456K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal1_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808516K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808396K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808692K) : metal2_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808840K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808468K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808520K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808488K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807864K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807872K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808484K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808460K) : metal1_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808476K) : metal5_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808536K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : metal5_blk has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808492K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808456K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808512K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal2_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807920K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808692K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807880K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : pad has 63 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807848K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807912K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808692K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808644K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmpperi has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807868K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807800K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808692K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmparray has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807888K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_slot has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807932K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal5_res has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807900K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807904K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal5_label has 510 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (807908K) : metal5_dummy has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmeplate has 0 polygons
+2022-12-13 07:38:38 +0000: Memory Usage (808472K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal5_label has 510 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal5_slot has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal5_blk has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : pad has 63 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : ubmpperi has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808692K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808752K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : ubmparray has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808476K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808752K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : ubmeplate has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808968K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808752K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal1_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808968K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal2_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808968K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808396K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal3_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808488K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808484K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808840K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808456K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal4_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808672K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal5_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (809116K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808732K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808672K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808796K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (809116K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808732K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808796K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808672K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808516K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (809116K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808732K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808796K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808644K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808468K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808536K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808792K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808744K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808792K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808464K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808512K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808920K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808812K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808792K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808744K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808440K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808740K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808472K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808812K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808504K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808920K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808744K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808492K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808740K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808920K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808812K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808496K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808392K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808716K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808460K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808740K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808716K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808520K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808480K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808668K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808716K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808668K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808800K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808500K) : metal6_res has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808800K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808668K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808800K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808776K) : pr_bndry has 218642 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808776K) : border has 0 polygons
+2022-12-13 07:38:39 +0000: Memory Usage (808776K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Starting deriving base layers.
+2022-12-13 07:39:28 +0000: Memory Usage (1445564K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:28 +0000: Memory Usage (1445564K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:28 +0000: Memory Usage (1445564K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Starting deriving base layers.
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808752K) : Starting deriving base layers.
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : Running all BEOL rules
+2022-12-13 07:39:28 +0000: Memory Usage (1445544K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:28 +0000: Memory Usage (1445544K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:28 +0000: Memory Usage (1445544K) : Running all FEOL rules
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : Executing rule DN.1
+2022-12-13 07:39:28 +0000: Memory Usage (1445544K) : Running all BEOL rules
+2022-12-13 07:39:28 +0000: Memory Usage (1445540K) : CONNECTIVITY_RULES disabled section
+2022-12-13 07:39:29 +0000: Memory Usage (1445544K) : Executing rule ESD.1
+2022-12-13 07:39:29 +0000: Memory Usage (1445544K) : Executing rule ESD.2
+2022-12-13 07:39:29 +0000: Memory Usage (1445544K) : Executing rule ESD.3a
+2022-12-13 07:39:29 +0000: Memory Usage (1445544K) : Executing rule ESD.3b
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Starting deriving base layers.
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445560K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : Starting deriving base layers.
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:29 +0000: Memory Usage (1445560K) : Starting GF180MCU DRC rules.
+2022-12-13 07:38:39 +0000: Memory Usage (808668K) : Starting deriving base layers.
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Running all FEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445576K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445560K) : Running all FEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445464K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Running all FEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Running all BEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445576K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:29 +0000: Memory Usage (1445464K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808764K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808968K) : Starting deriving base layers.
+2022-12-13 07:39:29 +0000: Memory Usage (1445464K) : Running all FEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445576K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808716K) : Starting deriving base layers.
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Executing rule DV.1
+2022-12-13 07:39:29 +0000: Memory Usage (1445560K) : Running all BEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445556K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445464K) : Running all BEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445760K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:29 +0000: Memory Usage (1445576K) : Running all BEOL rules
+2022-12-13 07:39:29 +0000: Memory Usage (1445512K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445464K) : tail DRC Total Run time 65.305700 seconds
+2022-12-13 07:39:30 +0000: Memory Usage (1445556K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:29 +0000: Memory Usage (1445560K) : Executing rule LPW.1_3.3V
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445512K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445556K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808748K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.1_5V
+2022-12-13 07:39:30 +0000: Memory Usage (1445512K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445540K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808732K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : CONNECTIVITY_RULES disabled section
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445512K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:38:39 +0000: Memory Usage (808672K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808796K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (809116K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : OFFGRID-ANGLES section
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445540K) : Starting GF180MCU DRC rules.
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445468K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445592K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.2a_3.3V_
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445540K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808792K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445592K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445468K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.2a_5V_
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:38:39 +0000: Memory Usage (808744K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445468K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445592K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445592K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.3_3.3V
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808736K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445528K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Executing rule MC.1
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445528K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Executing rule BJT.1
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.4
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Executing rule MC.2
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Executing rule comp_OFFGRID
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : MetalTop thickness 9k/11k section
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445528K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808788K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Executing rule MC.3
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Executing rule dnwell_OFFGRID
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.5
+2022-12-13 07:39:30 +0000: Memory Usage (1445528K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808756K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445584K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445548K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445584K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.11
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Executing rule MC.4
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808812K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445548K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445584K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445608K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445548K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445584K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445608K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445548K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808780K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Executing rule SB.1
+2022-12-13 07:39:30 +0000: Memory Usage (1445608K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808772K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808800K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445608K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445568K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445512K) : Executing rule DE.2
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445568K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808776K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445568K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Running all BEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808740K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445568K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Executing rule SB.2
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Running all FEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445576K) : via5 DRC Total Run time 65.268391 seconds
+2022-12-13 07:39:30 +0000: Memory Usage (1445464K) : tail DRC Total Run time 65.330620 seconds
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Running all FEOL rules
+2022-12-13 07:38:39 +0000: Memory Usage (808920K) : Starting deriving base layers.
+2022-12-13 07:38:39 +0000: Memory Usage (808768K) : Starting deriving base layers.
+2022-12-13 07:39:30 +0000: Memory Usage (1445900K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Total area of the design is 19856543.89999999 um^2.
+13-Dec-2022 07:39:30 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design ymtp_mk on cell caravel_18000abd:
+2022-12-13 07:39:30 +0000: Memory Usage (1445900K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Starting GF180MCU DRC rules.
+2022-12-13 07:39:31 +0000: Memory Usage (1445900K) : Running all FEOL rules
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Running all FEOL rules
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Running all BEOL rules
+2022-12-13 07:39:31 +0000: Memory Usage (1445900K) : Running all BEOL rules
+2022-12-13 07:39:30 +0000: Memory Usage (1446012K) : Executing rule DE.3
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Executing rule O.DF.3a
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : mcell DRC Total Run time 65.764913 seconds
+2022-12-13 07:39:31 +0000: Memory Usage (1445900K) : Executing rule DF.1a_3.3V
+2022-12-13 07:39:31 +0000: Memory Usage (1446696K) : Executing rule DE.4
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Executing rule O.DF.6
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Executing rule O.DF.9
+2022-12-13 07:39:29 +0000: Memory Usage (1445544K) : Executing rule ESD.4a
+2022-12-13 07:39:31 +0000: Memory Usage (1446420K) : Executing rule ESD.4b
+2022-12-13 07:39:31 +0000: Memory Usage (1446420K) : Executing rule ESD.5a
+2022-12-13 07:39:31 +0000: Memory Usage (1446420K) : Executing rule ESD.5b
+2022-12-13 07:39:30 +0000: Memory Usage (1445532K) : Executing rule M5.1
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Executing rule MT.1
+2022-12-13 07:39:31 +0000: Memory Usage (1445900K) : Executing rule DF.1a_5V
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Executing rule M4.1
+2022-12-13 07:39:31 +0000: Memory Usage (1446696K) : dummy_exclude DRC Total Run time 66.497270 seconds
+2022-12-13 07:39:31 +0000: Memory Usage (1445900K) : Executing rule DF.1c_3.3V
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Executing rule SB.3
+2022-12-13 07:39:32 +0000: Memory Usage (557316K) : Starting running GF180MCU Klayout DRC runset on /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas
+2022-12-13 07:39:30 +0000: Memory Usage (1445560K) : Executing rule LPW.12
+2022-12-13 07:39:30 +0000: Memory Usage (1445584K) : Executing rule PL.1_3.3V
+2022-12-13 07:39:30 +0000: Memory Usage (1445592K) : MIM Capacitor Option B section
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Executing rule EF.01
+2022-12-13 07:39:32 +0000: Memory Usage (1445560K) : lvpwell DRC Total Run time 67.941976 seconds
+2022-12-13 07:39:30 +0000: Memory Usage (1445912K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:39:32 +0000: Memory Usage (1455468K) : Executing rule MIMTM.1
+2022-12-13 07:39:31 +0000: Memory Usage (1450156K) : Executing rule M5.2a
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Loading database to memory is complete.
+2022-12-13 07:39:31 +0000: Memory Usage (1450188K) : Executing rule MT.2a
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_main.lyrdb
+2022-12-13 07:39:32 +0000: Memory Usage (1445580K) : Executing rule SB.4
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1112: warning: already initialized constant DRC::DRCEngine::CONNECTIVITY_RULES
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:76: warning: previous definition of CONNECTIVITY_RULES was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Evaluate switches.
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1120: warning: already initialized constant DRC::DRCEngine::WEDGE
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:84: warning: previous definition of WEDGE was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : connectivity rules are disabled.
+2022-12-13 07:39:33 +0000: Memory Usage (1448572K) : Executing rule EF.02
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1129: warning: already initialized constant DRC::DRCEngine::BALL
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:93: warning: previous definition of BALL was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Wedge enabled  true
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1138: warning: already initialized constant DRC::DRCEngine::GOLD
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:102: warning: previous definition of GOLD was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Ball enabled  true
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1144: warning: already initialized constant DRC::DRCEngine::MIM_OPTION
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:108: warning: previous definition of MIM_OPTION was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Gold enabled  true
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1155: warning: already initialized constant DRC::DRCEngine::OFFGRID
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:119: warning: previous definition of OFFGRID was here
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : MIM Option selected B
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Offgrid enabled  true
+2022-12-13 07:39:33 +0000: Memory Usage (1626508K) : Number of threads to use 4
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : Verbose mode: false
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1195: warning: already initialized constant DRC::DRCEngine::METAL_TOP
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:159: warning: previous definition of METAL_TOP was here
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : deep  mode is enabled.
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1204: warning: already initialized constant DRC::DRCEngine::METAL_LEVEL
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:168: warning: previous definition of METAL_LEVEL was here
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : METAL_TOP Selected is 9K
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1216: warning: already initialized constant DRC::DRCEngine::FEOL
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:180: warning: previous definition of FEOL was here
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : METAL_STACK Selected is 5LM
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1225: warning: already initialized constant DRC::DRCEngine::BEOL
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:189: warning: previous definition of BEOL was here
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : FEOL is enabled.
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : BEOL is enabled.
+2022-12-13 07:39:30 +0000: Memory Usage (1445528K) : Executing rule M3.1
+2022-12-13 07:39:31 +0000: Memory Usage (1455252K) : Executing rule M4.2a
+2022-12-13 07:39:34 +0000: Memory Usage (1626508K) : Read in polygons from layers.
+2022-12-13 07:39:34 +0000: Memory Usage (1630520K) : comp has 675304 polygons
+2022-12-13 07:39:32 +0000: Memory Usage (1448928K) : Executing rule PL.1_5V
+2022-12-13 07:39:34 +0000: Memory Usage (1449736K) : Executing rule PL.1a_3.3V
+2022-12-13 07:39:34 +0000: Memory Usage (1449736K) : Executing rule PL.1a_5V
+2022-12-13 07:39:34 +0000: Memory Usage (1630520K) : dnwell has 0 polygons
+2022-12-13 07:39:30 +0000: Memory Usage (1445548K) : Executing rule NAT.1
+2022-12-13 07:39:33 +0000: Memory Usage (1450156K) : Executing rule M5.2b
+2022-12-13 07:39:31 +0000: Memory Usage (1445560K) : Executing rule O.PL.2
+2022-12-13 07:39:35 +0000: Memory Usage (1450156K) : Executing rule M5.3
+2022-12-13 07:39:33 +0000: Memory Usage (1450188K) : Executing rule MT.2b
+2022-12-13 07:39:35 +0000: Memory Usage (1446212K) : Executing rule NAT.2
+2022-12-13 07:39:35 +0000: Memory Usage (1446212K) : Executing rule NAT.3
+2022-12-13 07:39:35 +0000: Memory Usage (1450188K) : Executing rule MT.4
+2022-12-13 07:39:35 +0000: Memory Usage (1630520K) : nwell has 221165 polygons
+2022-12-13 07:39:32 +0000: Memory Usage (557316K) : Ruby Version for klayout: 2.0.0
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Loading database to memory is complete.
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : GF180MCU Klayout DRC runset output at: /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/caravel_18000abd_ymtp_mk.lyrdb
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Evaluate switches.
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : connectivity rules are disabled.
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Wedge enabled  true
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Ball enabled  true
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Gold enabled  true
+2022-12-13 07:39:35 +0000: Memory Usage (1630520K) : lvpwell has 245301 polygons
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : MIM Option selected B
+2022-12-13 07:39:33 +0000: Memory Usage (1448572K) : Executing rule EF.03
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Offgrid enabled  true
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Number of threads to use 4
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : Verbose mode: false
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : deep  mode is enabled.
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : METAL_TOP Selected is 9K
+2022-12-13 07:39:35 +0000: Memory Usage (1448572K) : Executing rule EF.04a
+2022-12-13 07:39:35 +0000: Memory Usage (1630520K) : dualgate has 251510 polygons
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : METAL_STACK Selected is 5LM
+2022-12-13 07:39:35 +0000: Memory Usage (1450156K) : metal5 DRC Total Run time 70.509163 seconds
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : FEOL is enabled.
+2022-12-13 07:39:35 +0000: Memory Usage (750712K) : BEOL is enabled.
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Executing rule M2.1
+2022-12-13 07:39:35 +0000: Memory Usage (1450188K) : metaltop DRC Total Run time 70.659481 seconds
+2022-12-13 07:39:30 +0000: Memory Usage (1445556K) : Running all BEOL rules
+2022-12-13 07:39:36 +0000: Memory Usage (1447984K) : Executing rule LRES.1
+2022-12-13 07:39:35 +0000: Memory Usage (1630520K) : poly2 has 928772 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1447984K) : Executing rule LRES.2
+2022-12-13 07:39:36 +0000: Memory Usage (1447984K) : Executing rule LRES.3
+2022-12-13 07:39:35 +0000: Memory Usage (1448572K) : Executing rule EF.04b
+2022-12-13 07:39:36 +0000: Memory Usage (750712K) : Read in polygons from layers.
+2022-12-13 07:39:36 +0000: Memory Usage (760868K) : comp has 675304 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1630520K) : nplus has 257767 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1449304K) : Executing rule EF.04c
+2022-12-13 07:39:36 +0000: Memory Usage (1449304K) : Executing rule EF.04d
+2022-12-13 07:39:36 +0000: Memory Usage (760868K) : dnwell has 0 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1630520K) : pplus has 269125 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1630520K) : sab has 1921 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (760868K) : nwell has 221165 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1630520K) : esd has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : resistor has 1 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (760868K) : lvpwell has 245301 polygons
+2022-12-13 07:39:31 +0000: Memory Usage (1446420K) : Executing rule ESD.6
+2022-12-13 07:39:37 +0000: Memory Usage (1459004K) : Executing rule ESD.7
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : fhres has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : fusetop has 9 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : fusewindow_d has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : polyfuse has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (760868K) : dualgate has 251510 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : mvsd has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : mvpsd has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : nat has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : comp_dummy has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : poly2_dummy has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : schottky_diode has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (760868K) : poly2 has 928772 polygons
+2022-12-13 07:39:34 +0000: Memory Usage (1455252K) : Executing rule M4.2b
+2022-12-13 07:39:34 +0000: Memory Usage (1480304K) : Executing rule M3.2a
+2022-12-13 07:39:30 +0000: Memory Usage (1445540K) : Running all BEOL rules
+2022-12-13 07:39:37 +0000: Memory Usage (1455252K) : Executing rule M4.3
+2022-12-13 07:39:37 +0000: Memory Usage (1446344K) : Executing rule PRES.1
+2022-12-13 07:39:30 +0000: Memory Usage (1445760K) : Executing rule nwell_OFFGRID
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : zener has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (760868K) : nplus has 257767 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : res_mk has 945 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1446344K) : Executing rule PRES.2
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Executing rule NP.1
+2022-12-13 07:39:37 +0000: Memory Usage (760868K) : pplus has 269125 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1630520K) : opc_drc has 0 polygons
+2022-12-13 07:39:30 +0000: Memory Usage (1445608K) : Executing rule PP.1
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : sab has 1921 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : ndmy has 8 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1446344K) : Executing rule PRES.3
+2022-12-13 07:39:32 +0000: Memory Usage (1447452K) : Executing rule DF.1c_5V
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : esd has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1455252K) : metal4 DRC Total Run time 73.058885 seconds
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : resistor has 1 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : pmndmy has 8 polygons
+2022-12-13 07:39:30 +0000: Memory Usage (1445580K) : Executing rule CO.1
+2022-12-13 07:39:36 +0000: Memory Usage (1447984K) : Executing rule LRES.4
+2022-12-13 07:39:35 +0000: Memory Usage (1446796K) : Executing rule O.PL.3a
+2022-12-13 07:39:38 +0000: Memory Usage (1450180K) : Executing rule O.PL.4
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : v5_xtor has 205372 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1450180K) : Executing rule O.SB.2
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : fhres has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : fusetop has 9 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : cap_mk has 9 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : fusewindow_d has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : polyfuse has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : mvsd has 0 polygons
+2022-12-13 07:39:33 +0000: Memory Usage (1445580K) : Executing rule SB.5a
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : mvpsd has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : nat has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (760868K) : comp_dummy has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : poly2_dummy has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : schottky_diode has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1630520K) : ind_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : diode_mk has 2669 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : drc_bjt has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : lvs_bjt has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : zener has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : res_mk has 945 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : mim_l_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : latchup_mk has 90 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : guard_ring_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : otp_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : mtpmark has 0 polygons
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Executing rule V1.1
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : opc_drc has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : ndmy has 8 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1449304K) : Executing rule EF.05
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : neo_ee_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : sramcore has 20840 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : lvs_rf has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : pmndmy has 8 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : lvs_drain has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : ind_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1452252K) : Executing rule EF.06
+2022-12-13 07:39:38 +0000: Memory Usage (1672964K) : Executing rule CO.2a
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : hvpolyrs has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : lvs_io has 90 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : v5_xtor has 205372 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (760868K) : cap_mk has 9 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1630520K) : probe_mk has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1447452K) : Executing rule DF.2a_3.3V
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : mos_cap_mk has 34420 polygons
+2022-12-13 07:39:33 +0000: Memory Usage (1455468K) : Executing rule MIMTM.2
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : esd_mk has 90 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1450180K) : Executing rule O.SB.3
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : lvs_source has 900 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : well_diode_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1450180K) : Executing rule O.SB.4
+2022-12-13 07:39:28 +0000: Memory Usage (1445564K) : Running all BEOL rules
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : ldmos_xtor has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : plfuse has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : ind_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : efuse_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : diode_mk has 2669 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : drc_bjt has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : lvs_bjt has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : ymtp_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : dev_wf_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : mim_l_mk has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1452252K) : Executing rule EF.07
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : latchup_mk has 90 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : comp_label has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : guard_ring_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : poly2_label has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : otp_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : mtpmark has 0 polygons
+2022-12-13 07:39:39 +0000: Memory Usage (1776876K) : Executing rule V1.2a
+2022-12-13 07:39:38 +0000: Memory Usage (1446344K) : Executing rule PRES.4
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : neo_ee_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1534496K) : Executing rule MIMTM.3
+2022-12-13 07:39:40 +0000: Memory Usage (1452252K) : Executing rule EF.08
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : sramcore has 20840 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : lvs_rf has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : lvs_drain has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : ind_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : hvpolyrs has 0 polygons
+2022-12-13 07:39:30 +0000: Memory Usage (1445468K) : Running all BEOL rules
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : mdiode has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : lvs_io has 90 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1479328K) : Executing rule LVS_BJT.1
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : probe_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1452252K) : Executing rule EF.09
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : esd_mk has 90 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1452252K) : Executing rule EF.10
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : lvs_source has 900 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1448304K) : Executing rule HRES.1
+2022-12-13 07:39:40 +0000: Memory Usage (1452252K) : Executing rule EF.11
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : well_diode_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : ldmos_xtor has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1448304K) : Executing rule HRES.2
+2022-12-13 07:39:29 +0000: Memory Usage (1445548K) : Executing rule DV.2
+2022-12-13 07:39:40 +0000: Memory Usage (1452252K) : Executing rule EF.12
+2022-12-13 07:39:40 +0000: Memory Usage (760868K) : plfuse has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : efuse_mk has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.13
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : mcell_feol_mk has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : ymtp_mk has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1448304K) : Executing rule HRES.3
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.14
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : dev_wf_mk has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.15
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : comp_label has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.16a
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : poly2_label has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1630520K) : contact has 8949189 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1534496K) : Executing rule MIMTM.4
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.16b
+2022-12-13 07:39:41 +0000: Memory Usage (1634700K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.17
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.18
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.19
+2022-12-13 07:39:41 +0000: Memory Usage (760868K) : mdiode has 0 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1479328K) : lvs_bjt DRC Total Run time 76.199034 seconds
+2022-12-13 07:39:41 +0000: Memory Usage (1634700K) : metal1_dummy has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1636936K) : metal1_label has 19 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1448304K) : Executing rule HRES.4
+2022-12-13 07:39:41 +0000: Memory Usage (1636936K) : metal1_slot has 0 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1452424K) : Executing rule SB.5b
+2022-12-13 07:39:41 +0000: Memory Usage (763000K) : contact has 8949189 polygons
+2022-12-13 07:39:35 +0000: Memory Usage (1446212K) : Executing rule NAT.4
+2022-12-13 07:39:42 +0000: Memory Usage (766840K) : metal1_drawn has 2416945 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1636936K) : metal1_blk has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452424K) : Executing rule SB.6
+2022-12-13 07:39:42 +0000: Memory Usage (766840K) : metal1_dummy has 0 polygons
+2022-12-13 07:39:42 +0000: Memory Usage (770872K) : metal1_label has 19 polygons
+2022-12-13 07:39:42 +0000: Memory Usage (770872K) : metal1_slot has 0 polygons
+2022-12-13 07:39:42 +0000: Memory Usage (1452424K) : Executing rule SB.7
+2022-12-13 07:39:41 +0000: Memory Usage (1448304K) : Executing rule HRES.5
+2022-12-13 07:39:42 +0000: Memory Usage (1641032K) : via1 has 1473783 polygons
+2022-12-13 07:39:40 +0000: Memory Usage (1450180K) : Executing rule O.SB.5b_3.3V
+2022-12-13 07:39:42 +0000: Memory Usage (1645128K) : metal2_drawn has 506494 polygons
+2022-12-13 07:39:42 +0000: Memory Usage (770872K) : metal1_blk has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1452252K) : Executing rule EF.20
+2022-12-13 07:39:42 +0000: Memory Usage (1645128K) : metal2_dummy has 0 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (1645128K) : metal2_label has 2097 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (1645128K) : metal2_slot has 0 polygons
+2022-12-13 07:39:36 +0000: Memory Usage (1502396K) : Executing rule M2.2a
+2022-12-13 07:39:42 +0000: Memory Usage (1450476K) : Executing rule O.SB.9
+2022-12-13 07:39:43 +0000: Memory Usage (1450476K) : Executing rule O.SB.11
+2022-12-13 07:39:43 +0000: Memory Usage (1450476K) : Executing rule O.SB.13_3.3V
+2022-12-13 07:39:43 +0000: Memory Usage (1450476K) : Executing rule O.SB.13_5V
+2022-12-13 07:39:42 +0000: Memory Usage (775912K) : via1 has 1473783 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (784184K) : metal2_drawn has 506494 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (1645128K) : metal2_blk has 0 polygons
+2022-12-13 07:39:42 +0000: Memory Usage (1452652K) : Executing rule EF.21
+2022-12-13 07:39:43 +0000: Memory Usage (784184K) : metal2_dummy has 0 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (787288K) : metal2_label has 2097 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (787288K) : metal2_slot has 0 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (1645128K) : via2 has 1870904 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (1452652K) : Executing rule EF.22a
+2022-12-13 07:39:44 +0000: Memory Usage (1645128K) : metal3_drawn has 277166 polygons
+2022-12-13 07:39:43 +0000: Memory Usage (787288K) : metal2_blk has 0 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (1645128K) : metal3_dummy has 0 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (1645128K) : metal3_label has 494 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (1452652K) : Executing rule EF.22b
+2022-12-13 07:39:44 +0000: Memory Usage (1645128K) : metal3_slot has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1498720K) : Executing rule lvpwell_OFFGRID
+2022-12-13 07:39:44 +0000: Memory Usage (793432K) : via2 has 1870904 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (795564K) : metal3_drawn has 277166 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (795564K) : metal3_dummy has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (797036K) : metal3_label has 494 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (797036K) : metal3_slot has 0 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (1645128K) : metal3_blk has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (1645128K) : metal4_drawn has 142068 polygons
+2022-12-13 07:39:44 +0000: Memory Usage (1452652K) : efuse DRC Total Run time 79.937047 seconds
+2022-12-13 07:39:45 +0000: Memory Usage (1645128K) : metal4_dummy has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (1645128K) : metal4_label has 360 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (1645128K) : metal4_slot has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (797036K) : metal3_blk has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (801516K) : metal4_drawn has 142068 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (1645128K) : metal4_blk has 0 polygons
+2022-12-13 07:39:45 +0000: Memory Usage (801516K) : metal4_dummy has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (802184K) : metal4_label has 360 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (802184K) : metal4_slot has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : via4 has 9157574 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1498504K) : Executing rule PP.2
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : metal5_drawn has 84478 polygons
+2022-12-13 07:39:38 +0000: Memory Usage (1496536K) : Executing rule NP.2
+2022-12-13 07:39:42 +0000: Memory Usage (1452424K) : Executing rule SB.8
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : metal5_dummy has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (802184K) : metal4_blk has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : metal5_label has 510 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : metal5_slot has 0 polygons
+2022-12-13 07:39:37 +0000: Memory Usage (1459004K) : Executing rule ESD.8
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : metal5_blk has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : pad has 63 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : ubmpperi has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : ubmparray has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1645128K) : ubmeplate has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (807900K) : via4 has 9157574 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal1_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (807900K) : metal5_drawn has 84478 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal2_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal3_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal4_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal5_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (807900K) : metal5_dummy has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal5_label has 510 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal5_slot has 0 polygons
+2022-12-13 07:39:34 +0000: Memory Usage (1449736K) : Executing rule PL.2_3.3V
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal5_blk has 0 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1487920K) : Executing rule SB.9
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : pad has 63 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : ubmpperi has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : ubmparray has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : ubmeplate has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1459660K) : Executing rule PL.2_5V
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : metal6_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal1_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal2_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : pr_bndry has 218642 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal3_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : border has 0 polygons
+2022-12-13 07:39:41 +0000: Memory Usage (1534496K) : Executing rule MIMTM.5
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal4_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal5_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:39:47 +0000: Memory Usage (1534496K) : Executing rule MIMTM.6
+2022-12-13 07:39:47 +0000: Memory Usage (1534496K) : Executing rule MIMTM.7
+2022-12-13 07:39:47 +0000: Memory Usage (808492K) : metal6_res has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (808700K) : pr_bndry has 218642 polygons
+2022-12-13 07:39:46 +0000: Memory Usage (1490436K) : Executing rule ESD.pl
+2022-12-13 07:39:47 +0000: Memory Usage (808700K) : border has 0 polygons
+2022-12-13 07:39:47 +0000: Memory Usage (1498708K) : Executing rule ESD.9
+2022-12-13 07:39:47 +0000: Memory Usage (808700K) : Total no. of polygons in the design is 28217102
+2022-12-13 07:39:40 +0000: Memory Usage (1449452K) : Executing rule PRES.5
+2022-12-13 07:39:47 +0000: Memory Usage (1498708K) : Executing rule ESD.10
+2022-12-13 07:39:47 +0000: Memory Usage (1534496K) : Executing rule MIMTM.8a
+2022-12-13 07:39:48 +0000: Memory Usage (1534496K) : Executing rule MIMTM.8b
+2022-12-13 07:39:47 +0000: Memory Usage (1499824K) : Executing rule PRES.6
+2022-12-13 07:39:42 +0000: Memory Usage (1448304K) : Executing rule HRES.6
+2022-12-13 07:39:43 +0000: Memory Usage (1450476K) : Executing rule O.CO.7
+2022-12-13 07:39:47 +0000: Memory Usage (1498708K) : esd DRC Total Run time 83.327961 seconds
+2022-12-13 07:39:48 +0000: Memory Usage (1534496K) : Executing rule MIMTM.9
+2022-12-13 07:39:42 +0000: Memory Usage (1451152K) : Executing rule NAT.5
+2022-12-13 07:39:48 +0000: Memory Usage (1451316K) : Executing rule NAT.7
+2022-12-13 07:39:30 +0000: Memory Usage (1445524K) : Executing rule BJT.2
+2022-12-13 07:39:43 +0000: Memory Usage (1502396K) : Executing rule M2.2b
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : Executing rule NAT.8
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : Executing rule NAT.9
+2022-12-13 07:39:49 +0000: Memory Usage (1479808K) : Executing rule BJT.3
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : Executing rule NAT.10
+2022-12-13 07:39:49 +0000: Memory Usage (1502396K) : Executing rule M2.3
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : Executing rule NAT.11
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : Executing rule NAT.12
+2022-12-13 07:39:38 +0000: Memory Usage (1449968K) : Executing rule LRES.5
+2022-12-13 07:39:47 +0000: Memory Usage (1487920K) : Executing rule SB.10
+2022-12-13 07:39:49 +0000: Memory Usage (1479808K) : drc_bjt DRC Total Run time 84.618810 seconds
+2022-12-13 07:39:49 +0000: Memory Usage (1487920K) : Executing rule SB.11
+2022-12-13 07:39:49 +0000: Memory Usage (1451316K) : nat DRC Total Run time 84.706300 seconds
+2022-12-13 07:39:49 +0000: Memory Usage (1502396K) : metal2 DRC Total Run time 84.613809 seconds
+2022-12-13 07:39:49 +0000: Memory Usage (1487920K) : Executing rule SB.12
+2022-12-13 07:39:51 +0000: Memory Usage (1487920K) : Executing rule SB.13
+2022-12-13 07:39:39 +0000: Memory Usage (1672964K) : Executing rule CO.2b
+2022-12-13 07:39:40 +0000: Memory Usage (1776876K) : Executing rule V1.2b
+2022-12-13 07:39:47 +0000: Memory Usage (1459660K) : Executing rule PL.3a_3.3V
+2022-12-13 07:39:44 +0000: Memory Usage (1498720K) : Executing rule dualgate_OFFGRID
+2022-12-13 07:39:48 +0000: Memory Usage (1489256K) : Executing rule O.PL.ORT
+2022-12-13 07:39:40 +0000: Memory Usage (1450172K) : Executing rule DF.2a_5V
+2022-12-13 07:39:53 +0000: Memory Usage (1535976K) : otp_mk DRC Total Run time 88.906669 seconds
+2022-12-13 07:39:49 +0000: Memory Usage (1449968K) : Executing rule LRES.6
+2022-12-13 07:39:53 +0000: Memory Usage (1485080K) : Executing rule poly2_OFFGRID
+2022-12-13 07:39:51 +0000: Memory Usage (1672964K) : Executing rule CO.3
+2022-12-13 07:39:37 +0000: Memory Usage (1480304K) : Executing rule M3.2b
+2022-12-13 07:39:55 +0000: Memory Usage (1873520K) : Executing rule M3.3
+2022-12-13 07:39:51 +0000: Memory Usage (1459660K) : Executing rule PL.3a_5V
+2022-12-13 07:39:41 +0000: Memory Usage (1511084K) : Executing rule DV.3
+2022-12-13 07:39:56 +0000: Memory Usage (1873520K) : metal3 DRC Total Run time 91.319535 seconds
+2022-12-13 07:39:55 +0000: Memory Usage (1672964K) : Executing rule CO.4
+2022-12-13 07:39:48 +0000: Memory Usage (1499824K) : Executing rule PRES.7
+2022-12-13 07:39:30 +0000: Memory Usage (1445588K) : Executing rule S.DF.4c_MV
+2022-12-13 07:39:48 +0000: Memory Usage (1534496K) : Executing rule MIMTM.10
+2022-12-13 07:39:58 +0000: Memory Usage (1546272K) : Executing rule MIMTM.11
+2022-12-13 07:39:57 +0000: Memory Usage (1507052K) : Executing rule PRES.9a
+2022-12-13 07:39:58 +0000: Memory Usage (1507052K) : Executing rule PRES.9b
+2022-12-13 07:39:54 +0000: Memory Usage (1449968K) : Executing rule LRES.7
+2022-12-13 07:39:58 +0000: Memory Usage (1546272K) : mim DRC Total Run time 93.452517 seconds
+2022-12-13 07:39:48 +0000: Memory Usage (1448304K) : Executing rule HRES.7
+2022-12-13 07:39:58 +0000: Memory Usage (1507052K) : pres DRC Total Run time 93.688718 seconds
+2022-12-13 07:39:56 +0000: Memory Usage (1459660K) : Executing rule PL.4_3.3V
+2022-12-13 07:39:51 +0000: Memory Usage (1776876K) : Executing rule V1.3a
+2022-12-13 07:39:57 +0000: Memory Usage (1672964K) : Executing rule CO.5a
+2022-12-13 07:39:58 +0000: Memory Usage (1449968K) : Executing rule LRES.9a
+2022-12-13 07:39:51 +0000: Memory Usage (1487920K) : Executing rule SB.14a
+2022-12-13 07:39:59 +0000: Memory Usage (1449968K) : Executing rule LRES.9b
+2022-12-13 07:39:46 +0000: Memory Usage (1564040K) : Executing rule PP.3a
+2022-12-13 07:39:57 +0000: Memory Usage (1500480K) : Executing rule S.DF.6_MV
+2022-12-13 07:40:00 +0000: Memory Usage (1500480K) : Executing rule S.DF.7_MV
+2022-12-13 07:39:59 +0000: Memory Usage (1449968K) : lres DRC Total Run time 95.325687 seconds
+2022-12-13 07:40:00 +0000: Memory Usage (1500480K) : Executing rule S.DF.8_MV
+2022-12-13 07:40:00 +0000: Memory Usage (1498504K) : Executing rule PP.3bi
+2022-12-13 07:39:59 +0000: Memory Usage (1459660K) : Executing rule PL.4_5V
+2022-12-13 07:39:55 +0000: Memory Usage (1496512K) : Executing rule nplus_OFFGRID
+2022-12-13 07:40:01 +0000: Memory Usage (1459660K) : Executing rule PL.5a_3.3V
+2022-12-13 07:39:59 +0000: Memory Usage (1502408K) : Executing rule HRES.8
+2022-12-13 07:39:30 +0000: Memory Usage (1445536K) : Executing rule M1.1
+2022-12-13 07:39:59 +0000: Memory Usage (1487920K) : Executing rule SB.14b
+2022-12-13 07:40:02 +0000: Memory Usage (1459660K) : Executing rule PL.5a_5V
+2022-12-13 07:40:02 +0000: Memory Usage (1502408K) : Executing rule HRES.9
+2022-12-13 07:39:46 +0000: Memory Usage (1562072K) : Executing rule NP.3a
+2022-12-13 07:40:03 +0000: Memory Usage (1459660K) : Executing rule PL.5b_3.3V
+2022-12-13 07:39:59 +0000: Memory Usage (1672964K) : Executing rule CO.5b
+2022-12-13 07:40:01 +0000: Memory Usage (1499132K) : Executing rule pplus_OFFGRID
+2022-12-13 07:40:06 +0000: Memory Usage (1502704K) : Executing rule sab_OFFGRID
+2022-12-13 07:40:06 +0000: Memory Usage (1502704K) : Executing rule esd_OFFGRID
+2022-12-13 07:40:04 +0000: Memory Usage (1526144K) : Executing rule NP.3bi
+2022-12-13 07:40:00 +0000: Memory Usage (1498504K) : Executing rule PP.3bii
+2022-12-13 07:40:06 +0000: Memory Usage (1502704K) : Executing rule contact_OFFGRID
+2022-12-13 07:40:00 +0000: Memory Usage (1500480K) : Executing rule S.DF.16_MV
+2022-12-13 07:40:05 +0000: Memory Usage (1672964K) : Executing rule CO.6
+2022-12-13 07:40:12 +0000: Memory Usage (1504696K) : Executing rule S.PL.5a_MV
+2022-12-13 07:40:03 +0000: Memory Usage (1502408K) : Executing rule HRES.10
+2022-12-13 07:40:05 +0000: Memory Usage (1459660K) : Executing rule PL.5b_5V
+2022-12-13 07:40:13 +0000: Memory Usage (1544696K) : Executing rule HRES.12a
+2022-12-13 07:40:14 +0000: Memory Usage (1544696K) : Executing rule HRES.12b
+2022-12-13 07:39:30 +0000: Memory Usage (1445564K) : Executing rule V4.1
+2022-12-13 07:40:13 +0000: Memory Usage (1504696K) : Executing rule S.PL.5b_MV
+2022-12-13 07:40:15 +0000: Memory Usage (1544696K) : hres DRC Total Run time 110.583216 seconds
+2022-12-13 07:40:15 +0000: Memory Usage (1838952K) : Executing rule V4.2a
+2022-12-13 07:40:14 +0000: Memory Usage (1459660K) : Executing rule PL.6
+2022-12-13 07:40:19 +0000: Memory Usage (1459660K) : Executing rule PL.7_3.3V
+2022-12-13 07:40:08 +0000: Memory Usage (1526144K) : Executing rule NP.3bii
+2022-12-13 07:39:47 +0000: Memory Usage (808700K) : Starting deriving base layers.
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Starting GF180MCU DRC rules.
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Running all FEOL rules
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Running all BEOL rules
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Executing rule Y.NW.2b_3.3V
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Executing rule Y.NW.2b_5V
+2022-12-13 07:40:09 +0000: Memory Usage (1502024K) : Executing rule PP.3ci
+2022-12-13 07:40:24 +0000: Memory Usage (1445564K) : Executing rule Y.DF.6_5V
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:2056: warning: already initialized constant DRC::DRCEngine::CHIP
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc:1020: warning: previous definition of CHIP was here
+2022-12-13 07:39:47 +0000: Memory Usage (1645128K) : Starting deriving base layers.
+2022-12-13 07:40:25 +0000: Memory Usage (1737204K) : Total area of the design is 19856543.89999999 um^2.
+2022-12-13 07:40:25 +0000: Memory Usage (1737204K) : Starting GF180MCU DRC rules.
+2022-12-13 07:40:25 +0000: Memory Usage (1737204K) : Running all FEOL rules
+2022-12-13 07:40:25 +0000: Memory Usage (1737204K) : Running all BEOL rules
+2022-12-13 07:40:25 +0000: Memory Usage (1502840K) : Executing rule PP.3cii
+2022-12-13 07:40:25 +0000: Memory Usage (1737204K) : main DRC Total Run time 55.360298 seconds
+2022-12-13 07:40:15 +0000: Memory Usage (1504696K) : Executing rule S.CO.4_MV
+2022-12-13 07:40:17 +0000: Memory Usage (1838952K) : Executing rule V4.2b
+2022-12-13 07:40:21 +0000: Memory Usage (1528304K) : Executing rule PL.7_5V
+2022-12-13 07:40:26 +0000: Memory Usage (1502840K) : Executing rule PP.3d
+2022-12-13 07:40:25 +0000: Memory Usage (1445564K) : Executing rule Y.DF.16_3.3V
+2022-12-13 07:40:10 +0000: Memory Usage (1512228K) : Executing rule metal1_OFFGRID
+2022-12-13 07:40:31 +0000: Memory Usage (1448636K) : Executing rule Y.DF.16_5V
+2022-12-13 07:40:34 +0000: Memory Usage (1448636K) : Executing rule Y.PL.1_3.3V
+2022-12-13 07:40:35 +0000: Memory Usage (1448636K) : Executing rule Y.PL.1_5V
+2022-12-13 07:40:23 +0000: Memory Usage (1526144K) : Executing rule NP.3ci
+2022-12-13 07:40:30 +0000: Memory Usage (1510872K) : Executing rule PP.3e
+2022-12-13 07:40:33 +0000: Memory Usage (1668644K) : Executing rule via1_OFFGRID
+2022-12-13 07:40:35 +0000: Memory Usage (1526144K) : Executing rule NP.3cii
+2022-12-13 07:40:35 +0000: Memory Usage (1448636K) : Executing rule Y.PL.2_3.3V
+2022-12-13 07:40:36 +0000: Memory Usage (1526144K) : Executing rule NP.3d
+2022-12-13 07:40:30 +0000: Memory Usage (1536664K) : Executing rule PL.9
+2022-12-13 07:40:36 +0000: Memory Usage (1668644K) : Executing rule metal2_OFFGRID
+2022-12-13 07:40:38 +0000: Memory Usage (1448636K) : Executing rule Y.PL.2_5V
+2022-12-13 07:40:41 +0000: Memory Usage (1448636K) : Executing rule Y.PL.4_5V
+2022-12-13 07:40:41 +0000: Memory Usage (1448636K) : Executing rule Y.PL.5a_3.3V
+2022-12-13 07:40:41 +0000: Memory Usage (1448636K) : Executing rule Y.PL.5a_5V
+2022-12-13 07:40:41 +0000: Memory Usage (1448636K) : Executing rule Y.PL.5b_3.3V
+2022-12-13 07:40:41 +0000: Memory Usage (1448636K) : Executing rule Y.PL.5b_5V
+2022-12-13 07:40:39 +0000: Memory Usage (1526144K) : Executing rule NP.3e
+2022-12-13 07:40:42 +0000: Memory Usage (1448636K) : ymtp_mk DRC Total Run time 69.537688 seconds
+2022-12-13 07:40:30 +0000: Memory Usage (1838952K) : Executing rule V4.3a
+2022-12-13 07:40:43 +0000: Memory Usage (1838952K) : Executing rule V4.3c
+2022-12-13 07:40:36 +0000: Memory Usage (1510872K) : Executing rule PP.4a
+2022-12-13 07:40:50 +0000: Memory Usage (1510872K) : Executing rule PP.4b
+2022-12-13 07:40:41 +0000: Memory Usage (1686888K) : Executing rule via2_OFFGRID
+2022-12-13 07:40:40 +0000: Memory Usage (1536664K) : Executing rule PL.11
+2022-12-13 07:40:42 +0000: Memory Usage (1526144K) : Executing rule NP.4a
+2022-12-13 07:40:52 +0000: Memory Usage (1686888K) : Executing rule metal3_OFFGRID
+2022-12-13 07:40:55 +0000: Memory Usage (1526144K) : Executing rule NP.4b
+2022-12-13 07:40:29 +0000: Memory Usage (1506068K) : Executing rule S.DF.4c_LV
+2022-12-13 07:40:48 +0000: Memory Usage (1838952K) : Executing rule V4.3d
+2022-12-13 07:40:53 +0000: Memory Usage (1613404K) : Executing rule PL.12
+2022-12-13 07:41:00 +0000: Memory Usage (1615644K) : poly2 DRC Total Run time 155.632743 seconds
+2022-12-13 07:40:56 +0000: Memory Usage (1686888K) : Executing rule via3_OFFGRID
+2022-12-13 07:41:04 +0000: Memory Usage (1686888K) : Executing rule metal4_OFFGRID
+2022-12-13 07:41:00 +0000: Memory Usage (1838952K) : Executing rule V4.4a
+2022-12-13 07:40:57 +0000: Memory Usage (1507456K) : Executing rule S.DF.16_LV
+2022-12-13 07:41:06 +0000: Memory Usage (1838952K) : Executing rule V4.4b
+2022-12-13 07:39:29 +0000: Memory Usage (1445540K) : Executing rule DN.2b_
+2022-12-13 07:41:09 +0000: Memory Usage (1868064K) : Executing rule DN.3
+2022-12-13 07:41:06 +0000: Memory Usage (1686888K) : Executing rule via4_OFFGRID
+2022-12-13 07:41:09 +0000: Memory Usage (1868064K) : dnwell DRC Total Run time 165.093473 seconds
+2022-12-13 07:41:09 +0000: Memory Usage (1686888K) : Executing rule metal5_OFFGRID
+2022-12-13 07:41:07 +0000: Memory Usage (1507456K) : Executing rule S.CO.3_LV
+2022-12-13 07:40:56 +0000: Memory Usage (1526144K) : Executing rule NP.5a
+2022-12-13 07:41:10 +0000: Memory Usage (1686888K) : Executing rule pad_OFFGRID
+2022-12-13 07:41:10 +0000: Memory Usage (1686888K) : Executing rule resistor_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule fhres_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule fusetop_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule fusewindow_d_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule polyfuse_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule mvsd_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule mvpsd_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule nat_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule comp_dummy_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule poly2_dummy_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule metal1_dummy_OFFGRID
+2022-12-13 07:41:11 +0000: Memory Usage (1686888K) : Executing rule metal1_label_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal1_slot_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal1_blk_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal2_dummy_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal2_label_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal2_slot_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal2_blk_OFFGRID
+2022-12-13 07:40:02 +0000: Memory Usage (1658900K) : Executing rule M1.2a
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal3_dummy_OFFGRID
+2022-12-13 07:41:12 +0000: Memory Usage (1686888K) : Executing rule metal3_label_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal3_slot_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal3_blk_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal4_dummy_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal4_label_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal4_slot_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal4_blk_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal5_dummy_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal5_label_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal5_slot_OFFGRID
+2022-12-13 07:41:08 +0000: Memory Usage (1838952K) : Executing rule V4.4c
+2022-12-13 07:41:13 +0000: Memory Usage (1686888K) : Executing rule metal5_blk_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule comp_label_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule poly2_label_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule ubmpperi_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule ubmparray_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule ubmeplate_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule schottky_diode_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule zener_OFFGRID
+2022-12-13 07:41:13 +0000: Memory Usage (1838952K) : via4 DRC Total Run time 169.215588 seconds
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule res_mk_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule opc_drc_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule ndmy_OFFGRID
+2022-12-13 07:41:14 +0000: Memory Usage (1686888K) : Executing rule pmndmy_OFFGRID
+2022-12-13 07:41:10 +0000: Memory Usage (1507456K) : Executing rule S.CO.4_LV
+2022-12-13 07:40:51 +0000: Memory Usage (1510872K) : Executing rule PP.5a
+2022-12-13 07:39:30 +0000: Memory Usage (1445568K) : Executing rule V3.1
+2022-12-13 07:41:15 +0000: Memory Usage (1686888K) : Executing rule v5_xtor_OFFGRID
+2022-12-13 07:41:19 +0000: Memory Usage (1686888K) : Executing rule cap_mk_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule mos_cap_mk_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule ind_mk_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule diode_mk_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule drc_bjt_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule lvs_bjt_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule mim_l_mk_OFFGRID
+2022-12-13 07:41:20 +0000: Memory Usage (1686888K) : Executing rule latchup_mk_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule guard_ring_mk_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule otp_mk_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule mtpmark_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule neo_ee_mk_OFFGRID
+2022-12-13 07:41:16 +0000: Memory Usage (1839488K) : Executing rule V3.2a
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule sramcore_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule lvs_rf_OFFGRID
+2022-12-13 07:41:21 +0000: Memory Usage (1686888K) : Executing rule lvs_drain_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule ind_mk_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule hvpolyrs_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule lvs_io_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule probe_mk_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule esd_mk_OFFGRID
+2022-12-13 07:41:22 +0000: Memory Usage (1686888K) : Executing rule lvs_source_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule well_diode_mk_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule ldmos_xtor_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule plfuse_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule efuse_mk_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule mcell_feol_mk_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule ymtp_mk_OFFGRID
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule dev_wf_mk_OFFGRID
+2022-12-13 07:39:59 +0000: Memory Usage (1776876K) : Executing rule V1.3c
+2022-12-13 07:41:23 +0000: Memory Usage (1686888K) : Executing rule pr_bndry_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule mdiode_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal1_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal2_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal3_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal4_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal5_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule metal6_res_OFFGRID
+2022-12-13 07:41:33 +0000: Memory Usage (1686888K) : Executing rule border_OFFGRID
+2022-12-13 07:41:34 +0000: Memory Usage (1686888K) : geom DRC Total Run time 189.399458 seconds
+2022-12-13 07:41:21 +0000: Memory Usage (1839488K) : Executing rule V3.2b
+2022-12-13 07:41:10 +0000: Memory Usage (1526144K) : Executing rule NP.5b
+2022-12-13 07:41:15 +0000: Memory Usage (1507456K) : Executing rule S.CO.6_ii_LV
+2022-12-13 07:40:12 +0000: Memory Usage (1672964K) : Executing rule CO.6a
+2022-12-13 07:41:42 +0000: Memory Usage (1668352K) : Executing rule S.M1.1_LV
+2022-12-13 07:41:37 +0000: Memory Usage (1839488K) : Executing rule V3.3a
+2022-12-13 07:41:43 +0000: Memory Usage (1668352K) : sram DRC Total Run time 199.056071 seconds
+2022-12-13 07:41:31 +0000: Memory Usage (1796872K) : Executing rule V1.3d
+2022-12-13 07:41:41 +0000: Memory Usage (1591680K) : Executing rule NP.5ci
+2022-12-13 07:41:44 +0000: Memory Usage (1839488K) : Executing rule V3.3c
+2022-12-13 07:41:51 +0000: Memory Usage (1796872K) : Executing rule V1.4a
+2022-12-13 07:41:15 +0000: Memory Usage (1510872K) : Executing rule PP.5b
+2022-12-13 07:41:55 +0000: Memory Usage (1796872K) : Executing rule V1.4b
+2022-12-13 07:41:42 +0000: Memory Usage (1798548K) : Executing rule CO.6b
+2022-12-13 07:41:57 +0000: Memory Usage (1530440K) : Executing rule PP.5ci
+2022-12-13 07:41:53 +0000: Memory Usage (1839488K) : Executing rule V3.3d
+2022-12-13 07:42:09 +0000: Memory Usage (1864084K) : Executing rule CO.7
+2022-12-13 07:41:53 +0000: Memory Usage (1591680K) : Executing rule NP.5cii
+2022-12-13 07:42:15 +0000: Memory Usage (1798548K) : Executing rule CO.8
+2022-12-13 07:42:18 +0000: Memory Usage (1798548K) : Executing rule CO.9
+2022-12-13 07:42:13 +0000: Memory Usage (1839488K) : Executing rule V3.4a
+2022-12-13 07:42:20 +0000: Memory Usage (1798548K) : Executing rule CO.10
+2022-12-13 07:42:20 +0000: Memory Usage (1798548K) : Executing rule CO.11
+2022-12-13 07:42:23 +0000: Memory Usage (1798548K) : contact DRC Total Run time 238.465909 seconds
+2022-12-13 07:42:08 +0000: Memory Usage (1796872K) : Executing rule V1.4c
+2022-12-13 07:42:20 +0000: Memory Usage (1839488K) : Executing rule V3.4b
+2022-12-13 07:42:24 +0000: Memory Usage (1796872K) : via1 DRC Total Run time 239.885386 seconds
+2022-12-13 07:42:13 +0000: Memory Usage (1530440K) : Executing rule PP.5cii
+2022-12-13 07:42:25 +0000: Memory Usage (1839488K) : Executing rule V3.4c
+2022-12-13 07:42:34 +0000: Memory Usage (1839488K) : via3 DRC Total Run time 249.316764 seconds
+2022-12-13 07:42:28 +0000: Memory Usage (1530440K) : Executing rule PP.5di
+2022-12-13 07:42:42 +0000: Memory Usage (1530440K) : Executing rule PP.5dii
+2022-12-13 07:42:16 +0000: Memory Usage (1526144K) : Executing rule NP.5di
+2022-12-13 07:42:44 +0000: Memory Usage (1591680K) : Executing rule NP.5dii
+2022-12-13 07:39:30 +0000: Memory Usage (1445572K) : Executing rule V2.1
+2022-12-13 07:42:43 +0000: Memory Usage (1530440K) : Executing rule PP.6
+2022-12-13 07:42:48 +0000: Memory Usage (1530440K) : Executing rule PP.7
+2022-12-13 07:42:49 +0000: Memory Usage (1530440K) : Executing rule PP.8a
+2022-12-13 07:42:49 +0000: Memory Usage (1530440K) : Executing rule PP.8b
+2022-12-13 07:42:47 +0000: Memory Usage (1828304K) : Executing rule V2.2a
+2022-12-13 07:42:49 +0000: Memory Usage (1530440K) : Executing rule PP.9
+2022-12-13 07:42:44 +0000: Memory Usage (1591680K) : Executing rule NP.6
+2022-12-13 07:42:54 +0000: Memory Usage (1530772K) : Executing rule NP.7
+2022-12-13 07:42:54 +0000: Memory Usage (1530772K) : Executing rule NP.8a
+2022-12-13 07:42:54 +0000: Memory Usage (1530772K) : Executing rule NP.8b
+2022-12-13 07:42:55 +0000: Memory Usage (1530772K) : Executing rule NP.9
+2022-12-13 07:42:56 +0000: Memory Usage (1530772K) : Executing rule NP.10
+2022-12-13 07:43:03 +0000: Memory Usage (1530772K) : Executing rule NP.11
+2022-12-13 07:42:52 +0000: Memory Usage (1530440K) : Executing rule PP.10
+2022-12-13 07:43:03 +0000: Memory Usage (1530440K) : Executing rule PP.11
+2022-12-13 07:43:03 +0000: Memory Usage (1530772K) : Executing rule NP.12
+2022-12-13 07:43:03 +0000: Memory Usage (1530440K) : Executing rule PP.12
+2022-12-13 07:43:04 +0000: Memory Usage (1530772K) : nplus DRC Total Run time 280.203177 seconds
+2022-12-13 07:43:05 +0000: Memory Usage (1530440K) : pplus DRC Total Run time 280.659053 seconds
+2022-12-13 07:42:52 +0000: Memory Usage (1828304K) : Executing rule V2.2b
+2022-12-13 07:43:07 +0000: Memory Usage (1828304K) : Executing rule V2.3a
+2022-12-13 07:43:12 +0000: Memory Usage (1828304K) : Executing rule V2.3c
+2022-12-13 07:41:12 +0000: Memory Usage (1789972K) : Executing rule M1.2b
+2022-12-13 07:43:23 +0000: Memory Usage (1828304K) : Executing rule V2.3d
+2022-12-13 07:43:39 +0000: Memory Usage (3706836K) : Executing rule M1.3
+2022-12-13 07:43:42 +0000: Memory Usage (3706836K) : metal1 DRC Total Run time 317.567171 seconds
+2022-12-13 07:43:41 +0000: Memory Usage (1828304K) : Executing rule V2.4a
+2022-12-13 07:43:44 +0000: Memory Usage (1828304K) : Executing rule V2.4b
+2022-12-13 07:43:52 +0000: Memory Usage (1828304K) : Executing rule V2.4c
+2022-12-13 07:44:15 +0000: Memory Usage (1893840K) : via2 DRC Total Run time 350.961929 seconds
+2022-12-13 07:39:56 +0000: Memory Usage (1486452K) : Executing rule DV.5
+2022-12-13 07:45:37 +0000: Memory Usage (1515124K) : Executing rule DV.6
+2022-12-13 07:45:48 +0000: Memory Usage (1515124K) : Executing rule DV.7
+2022-12-13 07:45:58 +0000: Memory Usage (1515124K) : Executing rule DV.8
+2022-12-13 07:46:25 +0000: Memory Usage (1580660K) : Executing rule DV.9
+2022-12-13 07:46:36 +0000: Memory Usage (1580660K) : dualgate DRC Total Run time 492.058868 seconds
+2022-12-13 07:40:03 +0000: Memory Usage (1487920K) : Executing rule SB.15a
+2022-12-13 07:52:04 +0000: Memory Usage (1503892K) : Executing rule SB.15b
+2022-12-13 07:52:04 +0000: Memory Usage (1503892K) : Executing rule SB.16
+2022-12-13 07:52:08 +0000: Memory Usage (1503892K) : sab DRC Total Run time 824.112896 seconds
+2022-12-13 07:39:54 +0000: Memory Usage (1559356K) : Executing rule DF.2b_3.3V
+2022-12-13 07:54:51 +0000: Memory Usage (1559356K) : Executing rule DF.2b_5V
+2022-12-13 08:09:12 +0000: Memory Usage (1559356K) : Executing rule DF.3a_3.3V
+2022-12-13 08:09:13 +0000: Memory Usage (1559356K) : Executing rule DF.3a_5V
+2022-12-13 08:09:43 +0000: Memory Usage (1559356K) : Executing rule DF.3b_3.3V
+2022-12-13 08:09:43 +0000: Memory Usage (1559356K) : Executing rule DF.3b_5V
+2022-12-13 08:09:43 +0000: Memory Usage (1559356K) : Executing rule DF.3c_3.3V
+2022-12-13 08:09:43 +0000: Memory Usage (1559356K) : Executing rule DF.3c_5V
+2022-12-13 08:09:44 +0000: Memory Usage (1559356K) : Executing rule DF.4a_3.3V
+2022-12-13 08:09:44 +0000: Memory Usage (1559356K) : Executing rule DF.4a_5V
+2022-12-13 08:09:44 +0000: Memory Usage (1559356K) : Executing rule DF.4b_3.3V
+2022-12-13 08:09:46 +0000: Memory Usage (1559356K) : Executing rule DF.4b_5V
+2022-12-13 08:09:47 +0000: Memory Usage (1559356K) : Executing rule DF.4c_3.3V
+2022-12-13 08:09:59 +0000: Memory Usage (1559356K) : Executing rule DF.4c_5V
+2022-12-13 08:10:07 +0000: Memory Usage (1559356K) : Executing rule DF.4d_3.3V
+2022-12-13 08:10:11 +0000: Memory Usage (1559356K) : Executing rule DF.4d_5V
+2022-12-13 08:10:15 +0000: Memory Usage (1559356K) : Executing rule DF.4e_3.3V
+2022-12-13 08:10:15 +0000: Memory Usage (1559356K) : Executing rule DF.4e_5V
+2022-12-13 08:10:15 +0000: Memory Usage (1559356K) : Executing rule DF.5_3.3V
+2022-12-13 08:10:25 +0000: Memory Usage (1559356K) : Executing rule DF.5_5V
+2022-12-13 08:10:35 +0000: Memory Usage (1559356K) : Executing rule DF.6_3.3V
+2022-12-13 08:10:51 +0000: Memory Usage (1690428K) : Executing rule DF.6_5V
+2022-12-13 08:11:11 +0000: Memory Usage (1690428K) : Executing rule DF.7_3.3V
+2022-12-13 08:11:11 +0000: Memory Usage (1690428K) : Executing rule DF.7_5V
+2022-12-13 08:11:12 +0000: Memory Usage (1690428K) : Executing rule DF.8_3.3V
+2022-12-13 08:11:12 +0000: Memory Usage (1690428K) : Executing rule DF.8_5V
+2022-12-13 08:11:12 +0000: Memory Usage (1690428K) : Executing rule DF.9_3.3V
+2022-12-13 08:11:12 +0000: Memory Usage (1690428K) : Executing rule DF.9_5V
+2022-12-13 08:11:12 +0000: Memory Usage (1690428K) : Executing rule DF.10_3.3V
+2022-12-13 08:12:53 +0000: Memory Usage (2561824K) : Executing rule DF.10_5V
+2022-12-13 08:14:34 +0000: Memory Usage (2561872K) : Executing rule DF.11_3.3V
+2022-12-13 08:14:34 +0000: Memory Usage (2561872K) : Executing rule DF.11_5V
+2022-12-13 08:14:34 +0000: Memory Usage (2561872K) : Executing rule DF.12_3.3V
+2022-12-13 08:20:02 +0000: Memory Usage (2561872K) : Executing rule DF.12_5V
+2022-12-13 08:25:45 +0000: Memory Usage (2561872K) : Executing rule DF.13_3.3V
+2022-12-13 08:26:44 +0000: Memory Usage (2627408K) : Executing rule DF.13_5V
+2022-12-13 08:27:12 +0000: Memory Usage (2561872K) : Executing rule DF.14_3.3V
+2022-12-13 08:28:41 +0000: Memory Usage (2561872K) : Executing rule DF.14_5V
+2022-12-13 08:29:36 +0000: Memory Usage (2561872K) : Executing rule DF.16_3.3V
+2022-12-13 08:29:38 +0000: Memory Usage (2561872K) : Executing rule DF.16_5V
+2022-12-13 08:29:45 +0000: Memory Usage (2561872K) : Executing rule DF.17_3.3V
+2022-12-13 08:29:48 +0000: Memory Usage (2561872K) : Executing rule DF.17_5V
+2022-12-13 08:29:52 +0000: Memory Usage (2561872K) : Executing rule DF.18_3.3V
+2022-12-13 08:29:52 +0000: Memory Usage (2561872K) : Executing rule DF.18_5V
+2022-12-13 08:29:52 +0000: Memory Usage (2561872K) : Executing rule DF.19_3.3V
+2022-12-13 08:29:52 +0000: Memory Usage (2561872K) : Executing rule DF.19_5V
+2022-12-13 08:29:52 +0000: Memory Usage (2561872K) : comp DRC Total Run time 3087.807918 seconds
+13-Dec-2022 08:29:53 | INFO    | Klayout DRC run is clean. GDS has no DRC violations.
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc
+16914.21user 236.03system 51:32.69elapsed 554%CPU (0avgtext+0avgdata 4336180maxresident)k
+8256inputs+3576outputs (0major+44643008minor)pagefaults 0swaps
diff --git a/signoff/klayout_drc_version b/signoff/klayout_drc_version
new file mode 100644
index 0000000..62170cc
--- /dev/null
+++ b/signoff/klayout_drc_version
@@ -0,0 +1 @@
+KLayout 0.28
diff --git a/signoff/make_final_oas b/signoff/make_final_oas
new file mode 100644
index 0000000..4052412
--- /dev/null
+++ b/signoff/make_final_oas
@@ -0,0 +1 @@
+a07b77370e92897171c8ff06afd0d00224755742  ./tapeout/outputs/oas/caravel_18000abd.oas
diff --git a/tapeout/logs/oasis.info b/tapeout/logs/oasis.info
index a91f24c..ac3011c 100644
--- a/tapeout/logs/oasis.info
+++ b/tapeout/logs/oasis.info
@@ -1 +1 @@
-caravel_18000abd.oas: 1daba046c467e91d7b742ceaa6da87f35f04f556
+caravel_18001e9a.oas: a07b77370e92897171c8ff06afd0d00224755742
diff --git a/tapeout/outputs/drc/caravel_18000abd.drc.summary b/tapeout/outputs/drc/caravel_18000abd.drc.summary
new file mode 100644
index 0000000..fd794d8
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd.drc.summary
@@ -0,0 +1 @@
+ERROR, too few arguments. Usage: kmHist.rb [options] <markerDBfileIn>
diff --git a/tapeout/outputs/drc/caravel_18000abd_comp.lyrdb b/tapeout/outputs/drc/caravel_18000abd_comp.lyrdb
new file mode 100644
index 0000000..7468267
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_comp.lyrdb
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/comp.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>DF.1a_3.3V</name>
+   <description>DF.1a_3.3V : Min. COMP Width. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.1a_5V</name>
+   <description>DF.1a_5V : Min. COMP Width. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.1c_3.3V</name>
+   <description>DF.1c_3.3V : Min. COMP Width for MOSCAP. : 1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.1c_5V</name>
+   <description>DF.1c_5V : Min. COMP Width for MOSCAP. : 1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.2a_3.3V</name>
+   <description>DF.2a_3.3V : Min Channel Width. : nil,0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.2a_5V</name>
+   <description>DF.2a_5V : Min Channel Width. : nil,0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.2b_3.3V</name>
+   <description>DF.2b_3.3V : Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.2b_5V</name>
+   <description>DF.2b_5V : Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3a_3.3V</name>
+   <description>DF.3a_3.3V : Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3a_5V</name>
+   <description>DF.3a_5V : Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. : 0.36µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3b_3.3V</name>
+   <description>DF.3b_3.3V : Min./Max. NCOMP Space to PCOMP in the same well for butted COMP (MOSCAP butting is not allowed).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3b_5V</name>
+   <description>DF.3b_5V : Min./Max. NCOMP Space to PCOMP in the same well for butted COMP(MOSCAP butting is not allowed).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3c_3.3V</name>
+   <description>DF.3c_3.3V : Min. COMP Space in BJT area (area marked by DRC_BJT layer). : 0.32µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.3c_5V</name>
+   <description>DF.3c_5V : Min. COMP Space in BJT area (area marked by DRC_BJT layer) hasn’t been assessed.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4a_3.3V</name>
+   <description>DF.4a_3.3V : Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4a_5V</name>
+   <description>DF.4a_5V : Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4b_3.3V</name>
+   <description>DF.4b_3.3V : Min. DNWELL overlap of NCOMP well tap. : 0.62µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4b_5V</name>
+   <description>DF.4b_5V : Min. DNWELL overlap of NCOMP well tap. : 0.66µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4c_3.3V</name>
+   <description>DF.4c_3.3V : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.43µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4c_5V</name>
+   <description>DF.4c_5V : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4d_3.3V</name>
+   <description>DF.4d_3.3V : Min. (Nwell overlap of NCOMP) outside DNWELL. : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4d_5V</name>
+   <description>DF.4d_5V : Min. (Nwell overlap of NCOMP) outside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4e_3.3V</name>
+   <description>DF.4e_3.3V : Min. DNWELL overlap of PCOMP. : 0.93µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.4e_5V</name>
+   <description>DF.4e_5V : Min. DNWELL overlap of PCOMP. : 1.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.5_3.3V</name>
+   <description>DF.5_3.3V : Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.5_5V</name>
+   <description>DF.5_5V : Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.6_3.3V</name>
+   <description>DF.6_3.3V : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.6_5V</name>
+   <description>DF.6_5V : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.7_3.3V</name>
+   <description>DF.7_3.3V : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.43µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.7_5V</name>
+   <description>DF.7_5V : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.8_3.3V</name>
+   <description>DF.8_3.3V : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.43µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.8_5V</name>
+   <description>DF.8_5V : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.9_3.3V</name>
+   <description>DF.9_3.3V : Min. COMP area (um2). : 0.2025µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.9_5V</name>
+   <description>DF.9_5V : Min. COMP area (um2). : 0.2025µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.10_3.3V</name>
+   <description>DF.10_3.3V : Min. field area (um2). : 0.26µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.10_5V</name>
+   <description>DF.10_5V : Min. field area (um2). : 0.26µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.11_3.3V</name>
+   <description>DF.11_3.3V : Min. Length of butting COMP edge. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.11_5V</name>
+   <description>DF.11_5V : Min. Length of butting COMP edge. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.12_3.3V</name>
+   <description>DF.12_3.3V : COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.12_5V</name>
+   <description>DF.12_5V : COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.13_3.3V</name>
+   <description>DF.13_3.3V : Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.13_5V</name>
+   <description>DF.13_5V : Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.14_3.3V</name>
+   <description>DF.14_3.3V : Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.14_5V</name>
+   <description>DF.14_5V : Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.16_3.3V</name>
+   <description>DF.16_3.3V : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.43µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.16_5V</name>
+   <description>DF.16_5V : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.17_3.3V</name>
+   <description>DF.17_3.3V : Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.17_5V</name>
+   <description>DF.17_5V : Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.18_3.3V</name>
+   <description>DF.18_3.3V : Min. DNWELL space to (PCOMP outside Nwell and DNWELL). : 2.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.18_5V</name>
+   <description>DF.18_5V : Min. DNWELL space to (PCOMP outside Nwell and DNWELL). : 2.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.19_3.3V</name>
+   <description>DF.19_3.3V : Min. DNWELL space to (NCOMP outside Nwell and DNWELL). : 3.2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DF.19_5V</name>
+   <description>DF.19_5V : Min. DNWELL space to (NCOMP outside Nwell and DNWELL). : 3.28µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_contact.lyrdb b/tapeout/outputs/drc/caravel_18000abd_contact.lyrdb
new file mode 100644
index 0000000..283ec2b
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_contact.lyrdb
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/contact.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>CO.1</name>
+   <description>CO.1 : Min/max contact size. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.2a</name>
+   <description>CO.2a : min. contact spacing : 0.25µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.2b</name>
+   <description>CO.2b : Space in 4x4 or larger contact array. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.3</name>
+   <description>CO.3 : Poly2 overlap of contact. : 0.07µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.4</name>
+   <description>CO.4 : COMP overlap of contact. : 0.07µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.5a</name>
+   <description>CO.5a : Nplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.5b</name>
+   <description>CO.5b : Pplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.6</name>
+   <description>CO.6 : Metal1 overlap of contact &gt;= 0.005 um</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.6a</name>
+   <description>CO.6a : (i) Metal1 (&lt; 0.34um) end-of-line overlap contact : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.6b</name>
+   <description>CO.6b : (ii) If Metal1 overlaps contact by &lt; 0.04um on one side, adjacent metal1 edges overlap : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.7</name>
+   <description>CO.7 : Space from COMP contact to Poly2 on COMP. : 0.15µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.8</name>
+   <description>CO.8 : Space from Poly2 contact to COMP. : 0.17µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.9</name>
+   <description>CO.9 : Contact on NCOMP to PCOMP butting edge is forbidden (contact must not straddle butting edge).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.10</name>
+   <description>CO.10 : Contact on Poly2 gate over COMP is forbidden.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>CO.11</name>
+   <description>CO.11 : Contact on field oxide is forbidden.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_dnwell.lyrdb b/tapeout/outputs/drc/caravel_18000abd_dnwell.lyrdb
new file mode 100644
index 0000000..6f5cb4e
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_dnwell.lyrdb
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/dnwell.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>DN.1</name>
+   <description>DN.1 : Min. DNWELL Width : 1.7µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DN.2b_</name>
+   <description>DN.2b_ : Min. DNWELL Space (Different potential) : 5.42µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DN.3</name>
+   <description>DN.3 : Each DNWELL shall be directly surrounded by PCOMP guard ring tied to the P-substrate potential.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_drc_bjt.lyrdb b/tapeout/outputs/drc/caravel_18000abd_drc_bjt.lyrdb
new file mode 100644
index 0000000..578d0e1
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_drc_bjt.lyrdb
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/drc_bjt.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>BJT.1</name>
+   <description>BJT.1 : Min. DRC_BJT overlap of DNWELL for NPN BJT.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>BJT.2</name>
+   <description>BJT.2 : Min. DRC_BJT overlap of PCOM in Psub.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>BJT.3</name>
+   <description>BJT.3 : Minimum space of DRC_BJT layer to unrelated COMP. : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_dualgate.lyrdb b/tapeout/outputs/drc/caravel_18000abd_dualgate.lyrdb
new file mode 100644
index 0000000..5b7c5eb
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_dualgate.lyrdb
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/dualgate.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>DV.1</name>
+   <description>DV.1 : Min. Dualgate enclose DNWELL. : 0.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.2</name>
+   <description>DV.2 : Min. Dualgate Space. Merge if Space is less than this design rule. : 0.44µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.3</name>
+   <description>DV.3 : Min. Dualgate to COMP space [unrelated]. : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.5</name>
+   <description>DV.5 : Min. Dualgate width. : 0.7µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.6</name>
+   <description>DV.6 : Min. Dualgate enclose COMP (except substrate tap). : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.7</name>
+   <description>DV.7 : COMP (except substrate tap) can not be partially overlapped by Dualgate.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.8</name>
+   <description>DV.8 : Min Dualgate enclose Poly2. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DV.9</name>
+   <description>DV.9 : 3.3V and 5V/6V PMOS cannot be sitting inside same NWELL.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_dummy_exclude.lyrdb b/tapeout/outputs/drc/caravel_18000abd_dummy_exclude.lyrdb
new file mode 100644
index 0000000..48044ce
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_dummy_exclude.lyrdb
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/dummy_exclude.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>DE.2</name>
+   <description>DE.2 : Minimum NDMY or PMNDMY size (x or y dimension in um). : 0.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DE.3</name>
+   <description>DE.3 : If size greater than 15000 um2 then two sides should not be greater than (um).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>DE.4</name>
+   <description>DE.4 : Minimum NDMY to NDMY space (Merge if space is less). : 20µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_efuse.lyrdb b/tapeout/outputs/drc/caravel_18000abd_efuse.lyrdb
new file mode 100644
index 0000000..fd156c5
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_efuse.lyrdb
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/efuse.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>EF.01</name>
+   <description>EF.01 : Min. (Poly2 butt PLFUSE) within EFUSE_MK and Pplus.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.02</name>
+   <description>EF.02 : Min. Max. PLFUSE width. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.03</name>
+   <description>EF.03 : Min. Max. PLFUSE length. : 1.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.04a</name>
+   <description>EF.04a : Min. Max. PLFUSE overlap Poly2 (coinciding permitted) and touch cathode and anode.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.04b</name>
+   <description>EF.04b : PLFUSE must be rectangular. : -µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.04c</name>
+   <description>EF.04c : Cathode Poly2 must be rectangular. : -µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.04d</name>
+   <description>EF.04d : Anode Poly2 must be rectangular. : -µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.05</name>
+   <description>EF.05 : Min./Max. LVS_Source overlap Poly2 (at Anode).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.06</name>
+   <description>EF.06 : Min./Max. Cathode Poly2 width. : 2.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.07</name>
+   <description>EF.07 : Min./Max. Cathode Poly2 length. : 1.84µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.08</name>
+   <description>EF.08 : Min./Max. Anode Poly2 width. : 1.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.09</name>
+   <description>EF.09 : Min./Max. Anode Poly2 length. : 2.43µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.10</name>
+   <description>EF.10 : Min. Cathode Poly2 to Poly2 space. : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.11</name>
+   <description>EF.11 : Min. Anode Poly2 to Poly2 space. : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.12</name>
+   <description>EF.12 : Min. Space of Cathode Contact to PLFUSE end.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.13</name>
+   <description>EF.13 : Min. Space of Anode Contact to PLFUSE end.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.14</name>
+   <description>EF.14 : Min. EFUSE_MK enclose LVS_Source.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.15</name>
+   <description>EF.15 : NO Contact is allowed to touch PLFUSE.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.16a</name>
+   <description>EF.16a : Cathode must contain exact number of Contacts at each ends. : 4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.16b</name>
+   <description>EF.16b : Anode must contain exact number of Contacts at each ends. : 4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.17</name>
+   <description>EF.17 : Min. Space of EFUSE_MK to EFUSE_MK. : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.18</name>
+   <description>EF.18 : PLFUSE must sit on field oxide (NOT COMP), no cross with any COMP, Nplus, Pplus, ESD, SAB, Resistor, Metal1, Metal2.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.19</name>
+   <description>EF.19 : Min. PLFUSE space to Metal1, Metal2.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.20</name>
+   <description>EF.20 : Min. PLFUSE space to COMP, Nplus, Pplus, Resistor, ESD, SAB. : 2.73µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.21</name>
+   <description>EF.21 : Min./Max. eFUSE Poly2 length. : 5.53µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.22a</name>
+   <description>EF.22a : Min./Max. Cathode Poly2 overlap with PLFUSE in width direction. : 1.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>EF.22b</name>
+   <description>EF.22b : Min./Max. Anode Poly2 overlap with PLFUSE in width direction. : 0.44µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_esd.lyrdb b/tapeout/outputs/drc/caravel_18000abd_esd.lyrdb
new file mode 100644
index 0000000..cd63e13
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_esd.lyrdb
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/esd.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>ESD.1</name>
+   <description>ESD.1 : Minimum width of an ESD implant area. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.2</name>
+   <description>ESD.2 : Minimum space between two ESD implant areas. (Merge if the space is less than 0.6um). : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.3a</name>
+   <description>ESD.3a : Minimum space to NCOMP. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.3b</name>
+   <description>ESD.3b : Min/max space to a butted PCOMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.4a</name>
+   <description>ESD.4a : Extension beyond NCOMP. : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.4b</name>
+   <description>ESD.4b : Minimum overlap of an ESD implant edge to a COMP. : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.5a</name>
+   <description>ESD.5a : Minimum ESD area (um2). : 0.49µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.5b</name>
+   <description>ESD.5b : Minimum field area enclosed by ESD implant (um2). : 0.49µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.6</name>
+   <description>ESD.6 : Extension perpendicular to Poly2 gate. : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.7</name>
+   <description>ESD.7 : No ESD implant inside PCOMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.8</name>
+   <description>ESD.8 : Minimum space to Nplus/Pplus. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.pl</name>
+   <description>ESD.pl : Minimum gate length of 5V/6V gate NMOS. : 0.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.9</name>
+   <description>ESD.9 : ESD implant layer must be overlapped by Dualgate layer (as ESD implant option is only for 5V/6V devices).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ESD.10</name>
+   <description>ESD.10 : LVS_IO shall be drawn covering I/O MOS active area by minimum overlap.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_geom.lyrdb b/tapeout/outputs/drc/caravel_18000abd_geom.lyrdb
new file mode 100644
index 0000000..075dd9c
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_geom.lyrdb
@@ -0,0 +1,1221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/geom.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>comp_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on comp</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>comp_angle</name>
+   <description>ACUTE : non 45 degree angle comp</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dnwell_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on dnwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dnwell_angle</name>
+   <description>ACUTE : non 45 degree angle dnwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nwell_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on nwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nwell_angle</name>
+   <description>ACUTE : non 45 degree angle nwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvpwell_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvpwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvpwell_angle</name>
+   <description>ACUTE : non 45 degree angle lvpwell</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dualgate_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on dualgate</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dualgate_angle</name>
+   <description>ACUTE : non 45 degree angle dualgate</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on poly2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_angle</name>
+   <description>ACUTE : non 45 degree angle poly2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nplus_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on nplus</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nplus_angle</name>
+   <description>ACUTE : non 45 degree angle nplus</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pplus_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on pplus</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pplus_angle</name>
+   <description>ACUTE : non 45 degree angle pplus</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>sab_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on sab</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>sab_angle</name>
+   <description>ACUTE : non 45 degree angle sab</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>esd_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on esd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>esd_angle</name>
+   <description>ACUTE : non 45 degree angle esd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>contact_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on contact</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>contact_angle</name>
+   <description>ACUTE : non 45 degree angle contact</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_angle</name>
+   <description>ACUTE : non 45 degree angle metal1</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via1_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on via1</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via1_angle</name>
+   <description>ACUTE : non 45 degree angle via1</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_angle</name>
+   <description>ACUTE : non 45 degree angle metal2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via2_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on via2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via2_angle</name>
+   <description>ACUTE : non 45 degree angle via2</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_angle</name>
+   <description>ACUTE : non 45 degree angle metal3</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via3_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on via3</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via3_angle</name>
+   <description>ACUTE : non 45 degree angle via3</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_angle</name>
+   <description>ACUTE : non 45 degree angle metal4</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via4_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on via4</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>via4_angle</name>
+   <description>ACUTE : non 45 degree angle via4</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_angle</name>
+   <description>ACUTE : non 45 degree angle metal5</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pad_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on pad</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pad_angle</name>
+   <description>ACUTE : non 45 degree angle pad</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>resistor_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on resistor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>resistor_angle</name>
+   <description>ACUTE : non 45 degree angle resistor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fhres_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on fhres</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fhres_angle</name>
+   <description>ACUTE : non 45 degree angle fhres</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fusetop_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on fusetop</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fusetop_angle</name>
+   <description>ACUTE : non 45 degree angle fusetop</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fusewindow_d_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on fusewindow_d</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>fusewindow_d_angle</name>
+   <description>ACUTE : non 45 degree angle fusewindow_d</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>polyfuse_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on polyfuse</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>polyfuse_angle</name>
+   <description>ACUTE : non 45 degree angle polyfuse</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mvsd_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mvsd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mvsd_angle</name>
+   <description>ACUTE : non 45 degree angle mvsd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mvpsd_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mvpsd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mvpsd_angle</name>
+   <description>ACUTE : non 45 degree angle mvpsd</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nat_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on nat</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>nat_angle</name>
+   <description>ACUTE : non 45 degree angle nat</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>comp_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on comp_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>comp_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle comp_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on poly2_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle poly2_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle metal1_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_label_angle</name>
+   <description>ACUTE : non 45 degree angle metal1_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_slot_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_slot_angle</name>
+   <description>ACUTE : non 45 degree angle metal1_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_blk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_blk_angle</name>
+   <description>ACUTE : non 45 degree angle metal1_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle metal2_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_label_angle</name>
+   <description>ACUTE : non 45 degree angle metal2_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_slot_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_slot_angle</name>
+   <description>ACUTE : non 45 degree angle metal2_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_blk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_blk_angle</name>
+   <description>ACUTE : non 45 degree angle metal2_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle metal3_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_label_angle</name>
+   <description>ACUTE : non 45 degree angle metal3_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_slot_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_slot_angle</name>
+   <description>ACUTE : non 45 degree angle metal3_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_blk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_blk_angle</name>
+   <description>ACUTE : non 45 degree angle metal3_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle metal4_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_label_angle</name>
+   <description>ACUTE : non 45 degree angle metal4_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_slot_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_slot_angle</name>
+   <description>ACUTE : non 45 degree angle metal4_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_blk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_blk_angle</name>
+   <description>ACUTE : non 45 degree angle metal4_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_dummy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_dummy_angle</name>
+   <description>ACUTE : non 45 degree angle metal5_dummy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_label_angle</name>
+   <description>ACUTE : non 45 degree angle metal5_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_slot_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_slot_angle</name>
+   <description>ACUTE : non 45 degree angle metal5_slot</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_blk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_blk_angle</name>
+   <description>ACUTE : non 45 degree angle metal5_blk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>comp_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on comp_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>comp_label_angle</name>
+   <description>ACUTE : non 45 degree angle comp_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_label_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on poly2_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>poly2_label_angle</name>
+   <description>ACUTE : non 45 degree angle poly2_label</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmpperi_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ubmpperi</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmpperi_angle</name>
+   <description>ACUTE : non 45 degree angle ubmpperi</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmparray_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ubmparray</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmparray_angle</name>
+   <description>ACUTE : non 45 degree angle ubmparray</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmeplate_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ubmeplate</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ubmeplate_angle</name>
+   <description>ACUTE : non 45 degree angle ubmeplate</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>schottky_diode_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on schottky_diode</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>schottky_diode_angle</name>
+   <description>ACUTE : non 45 degree angle schottky_diode</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>zener_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on zener</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>zener_angle</name>
+   <description>ACUTE : non 45 degree angle zener</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>res_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on res_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>res_mk_angle</name>
+   <description>ACUTE : non 45 degree angle res_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>opc_drc_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on opc_drc</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>opc_drc_angle</name>
+   <description>ACUTE : non 45 degree angle opc_drc</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ndmy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ndmy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ndmy_angle</name>
+   <description>ACUTE : non 45 degree angle ndmy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pmndmy_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on pmndmy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pmndmy_angle</name>
+   <description>ACUTE : non 45 degree angle pmndmy</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>v5_xtor_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on v5_xtor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>v5_xtor_angle</name>
+   <description>ACUTE : non 45 degree angle v5_xtor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>cap_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on cap_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>cap_mk_angle</name>
+   <description>ACUTE : non 45 degree angle cap_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mos_cap_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mos_cap_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mos_cap_mk_angle</name>
+   <description>ACUTE : non 45 degree angle mos_cap_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ind_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ind_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ind_mk_angle</name>
+   <description>ACUTE : non 45 degree angle ind_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>diode_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on diode_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>diode_mk_angle</name>
+   <description>ACUTE : non 45 degree angle diode_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>drc_bjt_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on drc_bjt</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>drc_bjt_angle</name>
+   <description>ACUTE : non 45 degree angle drc_bjt</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_bjt_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvs_bjt</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_bjt_angle</name>
+   <description>ACUTE : non 45 degree angle lvs_bjt</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mim_l_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mim_l_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mim_l_mk_angle</name>
+   <description>ACUTE : non 45 degree angle mim_l_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>latchup_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on latchup_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>latchup_mk_angle</name>
+   <description>ACUTE : non 45 degree angle latchup_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>guard_ring_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on guard_ring_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>guard_ring_mk_angle</name>
+   <description>ACUTE : non 45 degree angle guard_ring_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>otp_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on otp_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>otp_mk_angle</name>
+   <description>ACUTE : non 45 degree angle otp_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mtpmark_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mtpmark</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mtpmark_angle</name>
+   <description>ACUTE : non 45 degree angle mtpmark</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>neo_ee_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on neo_ee_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>neo_ee_mk_angle</name>
+   <description>ACUTE : non 45 degree angle neo_ee_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>sramcore_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on sramcore</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>sramcore_angle</name>
+   <description>ACUTE : non 45 degree angle sramcore</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_rf_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvs_rf</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_rf_angle</name>
+   <description>ACUTE : non 45 degree angle lvs_rf</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_drain_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvs_drain</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_drain_angle</name>
+   <description>ACUTE : non 45 degree angle lvs_drain</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ind_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ind_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ind_mk_angle</name>
+   <description>ACUTE : non 45 degree angle ind_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>hvpolyrs_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on hvpolyrs</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>hvpolyrs_angle</name>
+   <description>ACUTE : non 45 degree angle hvpolyrs</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_io_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvs_io</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_io_angle</name>
+   <description>ACUTE : non 45 degree angle lvs_io</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>probe_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on probe_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>probe_mk_angle</name>
+   <description>ACUTE : non 45 degree angle probe_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>esd_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on esd_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>esd_mk_angle</name>
+   <description>ACUTE : non 45 degree angle esd_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_source_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on lvs_source</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>lvs_source_angle</name>
+   <description>ACUTE : non 45 degree angle lvs_source</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>well_diode_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on well_diode_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>well_diode_mk_angle</name>
+   <description>ACUTE : non 45 degree angle well_diode_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ldmos_xtor_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ldmos_xtor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ldmos_xtor_angle</name>
+   <description>ACUTE : non 45 degree angle ldmos_xtor</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>plfuse_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on plfuse</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>plfuse_angle</name>
+   <description>ACUTE : non 45 degree angle plfuse</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>efuse_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on efuse_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>efuse_mk_angle</name>
+   <description>ACUTE : non 45 degree angle efuse_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mcell_feol_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mcell_feol_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mcell_feol_mk_angle</name>
+   <description>ACUTE : non 45 degree angle mcell_feol_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ymtp_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on ymtp_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>ymtp_mk_angle</name>
+   <description>ACUTE : non 45 degree angle ymtp_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dev_wf_mk_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on dev_wf_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>dev_wf_mk_angle</name>
+   <description>ACUTE : non 45 degree angle dev_wf_mk</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pr_bndry_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on pr_bndry</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>pr_bndry_angle</name>
+   <description>ACUTE : non 45 degree angle pr_bndry</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mdiode_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on mdiode</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>mdiode_angle</name>
+   <description>ACUTE : non 45 degree angle mdiode</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal1_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal1_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal1_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal2_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal2_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal2_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal3_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal3_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal3_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal4_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal4_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal4_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal5_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal5_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal5_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal6_res_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on metal6_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>metal6_res_angle</name>
+   <description>ACUTE : non 45 degree angle metal6_res</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>border_OFFGRID</name>
+   <description>OFFGRID : OFFGRID vertex on border</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>border_angle</name>
+   <description>ACUTE : non 45 degree angle border</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_hres.lyrdb b/tapeout/outputs/drc/caravel_18000abd_hres.lyrdb
new file mode 100644
index 0000000..19c4e36
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_hres.lyrdb
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/hres.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>HRES.1</name>
+   <description>HRES.1 : Minimum space. Note : Merge if the spacing is less than 0.4 um. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.2</name>
+   <description>HRES.2 : Minimum width of Poly2 resistor. : 1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.3</name>
+   <description>HRES.3 : Minimum space between Poly2 resistors. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.4</name>
+   <description>HRES.4 : Minimum RESISTOR overlap of Poly2 resistor. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.5</name>
+   <description>HRES.5 : Minimum RESISTOR space to unrelated Poly2. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.6</name>
+   <description>HRES.6 : Minimum RESISTOR space to COMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.7</name>
+   <description>HRES.7 : Minimum Pplus overlap of contact on Poly2 resistor. : 0.2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.8</name>
+   <description>HRES.8 : Space from salicide block to contact on Poly2 resistor.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.9</name>
+   <description>HRES.9 : Minimum salicide block overlap of Poly2 resistor in width direction.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.10</name>
+   <description>HRES.10 : Minimum &amp; maximum Pplus overlap of SAB.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.12a</name>
+   <description>HRES.12a : P type Poly2 resistor (high sheet rho) shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by Pplus space) and width covering the width of Poly2. </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>HRES.12b</name>
+   <description>HRES.12b : If the size of single RES_MK mark layer is greater than 15000 um2 and both side (X and Y) are greater than 80 um. Then the minimum spacing to adjacent RES_MK layer. : 20µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_lres.lyrdb b/tapeout/outputs/drc/caravel_18000abd_lres.lyrdb
new file mode 100644
index 0000000..5255857
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_lres.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/lres.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>LRES.1</name>
+   <description>LRES.1 : Minimum width of Poly2 resistor. : 0.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.2</name>
+   <description>LRES.2 : Minimum space between Poly2 resistors. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.3</name>
+   <description>LRES.3 : Minimum space from Poly2 resistor to COMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.4</name>
+   <description>LRES.4 : Minimum space from Poly2 resistor to unrelated Poly2. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.5</name>
+   <description>LRES.5 : Minimum Nplus implant overlap of Poly2 resistor. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.6</name>
+   <description>LRES.6 : Minimum salicide block overlap of Poly2 resistor in width direction. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.7</name>
+   <description>LRES.7 : Space from salicide block to contact on Poly2 resistor.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.9a</name>
+   <description>LRES.9a : Nplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2. </description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LRES.9b</name>
+   <description>LRES.9b : If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. : 20µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_lvpwell.lyrdb b/tapeout/outputs/drc/caravel_18000abd_lvpwell.lyrdb
new file mode 100644
index 0000000..06f7584
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_lvpwell.lyrdb
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/lvpwell.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>LPW.1_3.3V</name>
+   <description>LPW.1_3.3V : Min. LVPWELL Width. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.1_5V</name>
+   <description>LPW.1_5V : Min. LVPWELL Width. : 0.74µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.2a_3.3V_</name>
+   <description>LPW.2a_3.3V_ : Min. LVPWELL to LVWELL Space (Inside DNWELL) [Different potential]. : 1.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.2a_5V_</name>
+   <description>LPW.2a_5V_ : Min. LVPWELL to LVPWELL Space (Inside DNWELL) [Different potential]. : 1.7µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.3</name>
+   <description>LPW.3 : Min. DNWELL enclose LVPWELL. : 2.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.4</name>
+   <description>LPW.4 : If LVPWELL is used as resistor, it must be covered by RES_MK (for LVS
+    purpose). Width of the resistor determined by LVPWELL. Length by COMP-to-COMP space. RES_MK length shall be coinciding with resistor length
+    (Touching COMP each side) and width covering the width of LVPWELL.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.5</name>
+   <description>LPW.5_3.3V : LVPWELL resistors must be enclosed by DNWELL.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.11</name>
+   <description>LPW.11 : Min. (LVPWELL outside DNWELL) space to DNWELL. : 1.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>LPW.12</name>
+   <description>LPW.12 : LVPWELL cannot overlap with Nwell.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_lvs_bjt.lyrdb b/tapeout/outputs/drc/caravel_18000abd_lvs_bjt.lyrdb
new file mode 100644
index 0000000..3e46045
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_lvs_bjt.lyrdb
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/lvs_bjt.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>LVS_BJT.1</name>
+   <description>LVS_BJT.1 : Minimum LVS_BJT enclosure of NPN or PNP Emitter COMP layers</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_main.lyrdb b/tapeout/outputs/drc/caravel_18000abd_main.lyrdb
new file mode 100644
index 0000000..c56f52f
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_main.lyrdb
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/main.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_mcell.lyrdb b/tapeout/outputs/drc/caravel_18000abd_mcell.lyrdb
new file mode 100644
index 0000000..fea6fa7
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_mcell.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/mcell.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>MC.1</name>
+   <description>MC.1 : min. mcell width : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MC.2</name>
+   <description>MC.2 : min. mcell spacing : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MC.3</name>
+   <description>MC.3 : Minimum Mcell area : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MC.4</name>
+   <description>MC.4 : Minimum area enclosed by Mcell : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metal1.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metal1.lyrdb
new file mode 100644
index 0000000..f7c906f
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metal1.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metal1.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>M1.1</name>
+   <description>M1.1 : min. metal1 width : 0.23µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M1.2a</name>
+   <description>M1.2a : min. metal1 spacing : 0.23µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M1.2b</name>
+   <description>M1.2b : Space to wide Metal1 (length &amp; width &gt; 10um) : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M1.3</name>
+   <description>M1.3 : Minimum Metal1 area : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metal2.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metal2.lyrdb
new file mode 100644
index 0000000..3ae64d5
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metal2.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metal2.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>M2.1</name>
+   <description>M2.1 : min. metal2 width : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M2.2a</name>
+   <description>M2.2a : min. metal2 spacing : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M2.2b</name>
+   <description>M2.2b : Space to wide Metal2 (length &amp; width &gt; 10um) : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M2.3</name>
+   <description>M2.3 : Minimum metal2 area : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metal3.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metal3.lyrdb
new file mode 100644
index 0000000..c405c8a
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metal3.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metal3.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>M3.1</name>
+   <description>M3.1 : min. metal3 width : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M3.2a</name>
+   <description>M3.2a : min. metal3 spacing : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M3.2b</name>
+   <description>M3.2b : Space to wide Metal3 (length &amp; width &gt; 10um) : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M3.3</name>
+   <description>M3.3 : Minimum metal3 area : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metal4.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metal4.lyrdb
new file mode 100644
index 0000000..472dc17
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metal4.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metal4.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>M4.1</name>
+   <description>M4.1 : min. metal4 width : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M4.2a</name>
+   <description>M4.2a : min. metal4 spacing : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M4.2b</name>
+   <description>M4.2b : Space to wide Metal4 (length &amp; width &gt; 10um) : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M4.3</name>
+   <description>M4.3 : Minimum metal4 area : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metal5.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metal5.lyrdb
new file mode 100644
index 0000000..bc08e77
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metal5.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metal5.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>M5.1</name>
+   <description>M5.1 : min. metal5 width : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M5.2a</name>
+   <description>M5.2a : min. metal5 spacing : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M5.2b</name>
+   <description>M5.2b : Space to wide Metal5 (length &amp; width &gt; 10um) : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>M5.3</name>
+   <description>M5.3 : Minimum metal5 area : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_metaltop.lyrdb b/tapeout/outputs/drc/caravel_18000abd_metaltop.lyrdb
new file mode 100644
index 0000000..300af09
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_metaltop.lyrdb
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/metaltop.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>MT.1</name>
+   <description>MT.1 : min. metaltop width : 0.44µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MT.2a</name>
+   <description>MT.2a : min. metaltop spacing : 0.46µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MT.2b</name>
+   <description>MT.2b : Space to wide Metal2 (length &amp; width &gt; 10um) : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MT.4</name>
+   <description>MT.4 : Minimum MetalTop area : 0.5625µm²</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_mim.lyrdb b/tapeout/outputs/drc/caravel_18000abd_mim.lyrdb
new file mode 100644
index 0000000..8fa9809
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_mim.lyrdb
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/mim.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>MIMTM.1</name>
+   <description>MIMTM.1 : Minimum MiM bottom plate spacing to the bottom plate metal (whether adjacent MiM or routing metal). : 1.2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.2</name>
+   <description>MIMTM.2 : Minimum MiM bottom plate overlap of Vian-1 layer. [This is applicable for Vian-1 within 1.06um oversize of FuseTop layer (referenced to virtual bottom plate)]. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.3</name>
+   <description>MIMTM.3 : Minimum MiM bottom plate overlap of Top plate.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.4</name>
+   <description>MIMTM.4 : Minimum MiM top plate (FuseTop) overlap of Vian-1. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.5</name>
+   <description>MIMTM.5 : Minimum spacing between top plate and the Vian-1 connecting to the bottom plate. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.6</name>
+   <description>MIMTM.6 : Minimum spacing between unrelated top plates. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.7</name>
+   <description>MIMTM.7 : Min FuseTop enclosure by CAP_MK.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.8a</name>
+   <description>MIMTM.8a : Minimum MIM cap area (defined by FuseTop area) (um2). : 25µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.8b</name>
+   <description>MIMTM.8b : Maximum single MIM Cap area (Use multiple MIM caps in parallel connection if bigger capacitors are required) (um2). : 10000µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.9</name>
+   <description>MIMTM.9 : Min. Via (Vian-1) spacing for sea of Via on MIM top plate. : 0.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.10</name>
+   <description>MIMTM.10 : (a) There cannot be any Vian-2 touching MIM bottom plate Metaln-1. (b) MIM bottom plate Metaln-1 can only be connected through the higher Via (Vian-1).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>MIMTM.11</name>
+   <description>MIMTM.11 : Bottom plate of multiple MIM caps can be shared (for common nodes) as long as total MIM area with that single common plate does not exceed MIMTM.8b rule. : -µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_nat.lyrdb b/tapeout/outputs/drc/caravel_18000abd_nat.lyrdb
new file mode 100644
index 0000000..c348006
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_nat.lyrdb
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/nat.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>NAT.1</name>
+   <description>NAT.1 : Min. NAT Overlap of COMP of Native Vt NMOS. : 2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.2</name>
+   <description>NAT.2 : Space to unrelated COMP (outside NAT). : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.3</name>
+   <description>NAT.3 : Space to NWell edge. : 0.5µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.4</name>
+   <description>NAT.4 : Minimum channel length for 3.3V Native Vt NMOS (For smaller L Ioff will be higher than Spec). : 1.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.5</name>
+   <description>NAT.5 : Minimum channel length for 6.0V Native Vt NMOS (For smaller L Ioff will be higher than Spec). : 1.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.7</name>
+   <description>NAT.7 : Minimum NAT to NAT spacing. : 0.74µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.8</name>
+   <description>NAT.8 : Min. Dualgate overlap of NAT (for 5V/6V) native VT NMOS only.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.9</name>
+   <description>NAT.9 : Poly interconnect under NAT layer is not allowed, minimum spacing of un-related poly from the NAT layer.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.10</name>
+   <description>NAT.10 : Nwell, inside NAT layer are not allowed.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.11</name>
+   <description>NAT.11 : NCOMP not intersecting to Poly2, is not allowed inside NAT layer.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NAT.12</name>
+   <description>NAT.12 : Poly2 not intersecting with COMP is not allowed inside NAT (Poly2 resistor is not allowed inside NAT).</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_nplus.lyrdb b/tapeout/outputs/drc/caravel_18000abd_nplus.lyrdb
new file mode 100644
index 0000000..79132dc
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_nplus.lyrdb
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/nplus.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>NP.1</name>
+   <description>NP.1 : min. nplus width : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.2</name>
+   <description>NP.2 : min. nplus spacing : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3a</name>
+   <description>NP.3a : Space to PCOMP for PCOMP: (1) Inside Nwell (2) Outside LVPWELL but inside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3bi</name>
+   <description>NP.3bi : Space to PCOMP: For Inside DNWELL, inside LVPWELL:(i) For PCOMP overlap by LVPWELL &lt; 0.43um. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3bii</name>
+   <description>NP.3bii : Space to PCOMP: For Inside DNWELL, inside LVPWELL:(ii) For PCOMP overlap by LVPWELL &gt;= 0.43um. : 0.08µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3ci</name>
+   <description>NP.3ci : Space to PCOMP: For Outside DNWELL:(i) For PCOMP space to Nwell &lt; 0.43um. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3cii</name>
+   <description>NP.3cii : Space to PCOMP: For Outside DNWELL:(ii) For PCOMP space to Nwell &gt;= 0.43um. : 0.08µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3d</name>
+   <description>NP.3d : Min/max space to a butted PCOMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.3e</name>
+   <description>NP.3e : Space to related PCOMP edge adjacent to a butting edge.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.4a</name>
+   <description>NP.4a : Space to related P-channel gate at a butting edge parallel to gate. : 0.32µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.4b</name>
+   <description>NP.4b : Within 0.32um of channel, space to P-channel gate extension perpendicular to the direction of Poly2.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5a</name>
+   <description>NP.5a : Overlap of N-channel gate. : 0.23µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5b</name>
+   <description>NP.5b : Extension beyond COMP for the COMP (1) inside LVPWELL (2) outside Nwell and DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5ci</name>
+   <description>NP.5ci : Extension beyond COMP: For Inside DNWELL: (i)For Nplus &lt; 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5cii</name>
+   <description>NP.5cii : Extension beyond COMP: For Inside DNWELL: (ii) For Nplus &gt;= 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. : 0.02µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5di</name>
+   <description>NP.5di : Extension beyond COMP: For Outside DNWELL, inside Nwell: (i) For Nwell overlap of Nplus &lt; 0.43um. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.5dii</name>
+   <description>NP.5dii : Extension beyond COMP: For Outside DNWELL, inside Nwell: (ii) For Nwell overlap of Nplus &gt;= 0.43um. : 0.02µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.6</name>
+   <description>NP.6 : Overlap with NCOMP butted to PCOMP. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.7</name>
+   <description>NP.7 : Space to unrelated unsalicided Poly2. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.8a</name>
+   <description>NP.8a : Minimum Nplus area (um2). : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.8b</name>
+   <description>NP.8b : Minimum area enclosed by Nplus (um2). : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.9</name>
+   <description>NP.9 : Overlap of unsalicided Poly2. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.10</name>
+   <description>NP.10 : Overlap of unsalicided COMP. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.11</name>
+   <description>NP.11 : Butting Nplus and PCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>NP.12</name>
+   <description>NP.12 : Overlap with P-channel poly2 gate extension is forbidden within 0.32um of P-channel gate.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_otp_mk.lyrdb b/tapeout/outputs/drc/caravel_18000abd_otp_mk.lyrdb
new file mode 100644
index 0000000..1323148
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_otp_mk.lyrdb
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/otp_mk.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>O.DF.3a</name>
+   <description>O.DF.3a : Min. COMP Space. P-substrate tap (PCOMP outside NWELL) can be butted for different voltage devices as the potential is same. : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.DF.6</name>
+   <description>O.DF.6 : Min. COMP extend beyond poly2 (it also means source/drain overhang). : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.DF.9</name>
+   <description>O.DF.9 : Min. COMP area (um2). : 0.1444µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.PL.2</name>
+   <description>O.PL.2 : Min. poly2 width. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.PL.3a</name>
+   <description>O.PL.3a : Min. poly2 Space on COMP. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.PL.4</name>
+   <description>O.PL.4 : Min. extension beyond COMP to form Poly2 end cap. : 0.14µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.2</name>
+   <description>O.SB.2 : Min. salicide Block Space. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.3</name>
+   <description>O.SB.3 : Min. space from salicide block to unrelated COMP. : 0.09µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.4</name>
+   <description>O.SB.4 : Min. space from salicide block to contact.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.5b_3.3V</name>
+   <description>O.SB.5b_3.3V : Min. space from salicide block to unrelated Poly2 on COMP. : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.9</name>
+   <description>O.SB.9 : Min. salicide block extension beyond unsalicided Poly2. : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.11</name>
+   <description>O.SB.11 : Min. salicide block overlap with COMP. : 0.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.13_3.3V</name>
+   <description>O.SB.13_3.3V : Min. area of silicide block (um2). : 1.488µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.SB.13_5V</name>
+   <description>O.SB.13_5V : Min. area of silicide block (um2). : 2µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.CO.7</name>
+   <description>O.CO.7 : Min. space from COMP contact to Poly2 on COMP. : 0.13µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>O.PL.ORT</name>
+   <description>O.PL.ORT : Orientation-restricted gates must have the gate width aligned along the X-axis (poly line running horizontally) in reference to wafer notch down. : 0µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_poly2.lyrdb b/tapeout/outputs/drc/caravel_18000abd_poly2.lyrdb
new file mode 100644
index 0000000..08bbd0b
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_poly2.lyrdb
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/poly2.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>PL.1_3.3V</name>
+   <description>PL.1_3.3V : Interconnect Width (outside PLFUSE). : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.1_5V</name>
+   <description>PL.1_5V : Interconnect Width (outside PLFUSE). : 0.2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.1a_3.3V</name>
+   <description>PL.1a_3.3V : Interconnect Width (inside PLFUSE). : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.1a_5V</name>
+   <description>PL.1a_5V : Interconnect Width (inside PLFUSE). : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.2_3.3V</name>
+   <description>PL.2_3.3V : Gate Width (Channel Length). : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.2_5V</name>
+   <description>PL.2_5V : Gate Width (Channel Length).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.3a_3.3V</name>
+   <description>PL.3a_3.3V : Space on COMP/Field. : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.3a_5V</name>
+   <description>PL.3a_5V : Space on COMP/Field. : 0.24µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.4_3.3V</name>
+   <description>PL.4_3.3V : Extension beyond COMP to form Poly2 end cap. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.4_5V</name>
+   <description>PL.4_5V : Extension beyond COMP to form Poly2 end cap. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.5a_3.3V</name>
+   <description>PL.5a_3.3V : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.5a_5V</name>
+   <description>PL.5a_5V : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.5b_3.3V</name>
+   <description>PL.5b_3.3V : Space from field Poly2 to related COMP. : 0.1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.5b_5V</name>
+   <description>PL.5b_5V : Space from field Poly2 to related COMP. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.6</name>
+   <description>PL.6 : 90 degree bends on the COMP are not allowed.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.7_3.3V</name>
+   <description>PL.7_3.3V : 45 degree bent gate width : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.7_5V</name>
+   <description>PL.7_5V : 45 degree bent gate width : 0.7µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.9</name>
+   <description>PL.9 : Poly2 inter connect connecting 3.3V and 5V areas (area inside and outside Dualgate) are not allowed. They shall be done though metal lines only.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.11</name>
+   <description>PL.11 : V5_Xtor must enclose 5V device.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PL.12</name>
+   <description>PL.12 : V5_Xtor enclose 5V Comp.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_pplus.lyrdb b/tapeout/outputs/drc/caravel_18000abd_pplus.lyrdb
new file mode 100644
index 0000000..5ba3faa
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_pplus.lyrdb
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/pplus.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>PP.1</name>
+   <description>PP.1 : min. pplus width : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.2</name>
+   <description>PP.2 : min. pplus spacing : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3a</name>
+   <description>PP.3a : Space to NCOMP for NCOMP (1) inside LVPWELL (2) outside NWELL and DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3bi</name>
+   <description>PP.3bi : Space to NCOMP: For Inside DNWELL. (i) NCOMP space to LVPWELL &gt;= 0.43um. : 0.08µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3bii</name>
+   <description>PP.3bii : Space to NCOMP: For Inside DNWELL. (ii) NCOMP space to LVPWELL &lt; 0.43um. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3ci</name>
+   <description>PP.3ci : Space to NCOMP: For Outside DNWELL, inside Nwell: (i) NWELL Overlap of NCOMP &gt;= 0.43um. : 0.08µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3cii</name>
+   <description>PP.3cii : Space to NCOMP: For Outside DNWELL, inside Nwell: (ii) NWELL Overlap of NCOMP 0.43um. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3d</name>
+   <description>PP.3d : Min/max space to a butted NCOMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.3e</name>
+   <description>PP.3e : Space to NCOMP edge adjacent to a butting edge.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.4a</name>
+   <description>PP.4a : Space related to N-channel gate at a butting edge parallel to gate. : 0.32µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.4b</name>
+   <description>PP.4b : Within 0.32um of channel, space to N-channel gate extension perpendicular to the direction of Poly2.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5a</name>
+   <description>PP.5a : Overlap of P-channel gate. : 0.23µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5b</name>
+   <description>PP.5b : Extension beyond COMP for COMP (1) Inside NWELL (2) outside LVPWELL but inside DNWELL. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5ci</name>
+   <description>PP.5ci : Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (i) For LVPWELL overlap of Pplus &gt;= 0.43um for LVPWELL tap. : 0.02µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5cii</name>
+   <description>PP.5cii : Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (ii) For LVPWELL overlap of Pplus &lt; 0.43um for the LVPWELL tap. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5di</name>
+   <description>PP.5di : Extension beyond COMP: For Outside DNWELL (i) For Pplus to NWELL space &gt;= 0.43um for Pfield or LVPWELL tap. : 0.02µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.5dii</name>
+   <description>PP.5dii : Extension beyond COMP: For Outside DNWELL (ii) For Pplus to NWELL space &lt; 0.43um for Pfield or LVPWELL tap. : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.6</name>
+   <description>PP.6 : Overlap with PCOMP butted to NCOMP. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.7</name>
+   <description>PP.7 : Space to unrelated unsalicided Poly2. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.8a</name>
+   <description>PP.8a : Minimum Pplus area (um2). : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.8b</name>
+   <description>PP.8b : Minimum area enclosed by Pplus (um2). : 0.35µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.9</name>
+   <description>PP.9 : Overlap of unsalicided Poly2. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.10</name>
+   <description>PP.10 : Overlap of unsalicided COMP. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.11</name>
+   <description>PP.11 : Butting Pplus and NCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PP.12</name>
+   <description>PP.12 : Overlap with N-channel Poly2 gate extension is forbidden within 0.32um of N-channel gate.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_pres.lyrdb b/tapeout/outputs/drc/caravel_18000abd_pres.lyrdb
new file mode 100644
index 0000000..ad93515
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_pres.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/pres.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>PRES.1</name>
+   <description>PRES.1 : Minimum width of Poly2 resistor. : 0.8µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.2</name>
+   <description>PRES.2 : Minimum space between Poly2 resistors. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.3</name>
+   <description>PRES.3 : Minimum space from Poly2 resistor to COMP.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.4</name>
+   <description>PRES.4 : Minimum space from Poly2 resistor to unrelated Poly2. : 0.6µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.5</name>
+   <description>PRES.5 : Minimum Plus implant overlap of Poly2 resistor. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.6</name>
+   <description>PRES.6 : Minimum salicide block overlap of Poly2 resistor in width direction. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.7</name>
+   <description>PRES.7 : Space from salicide block to contact on Poly2 resistor.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.9a</name>
+   <description>PRES.9a : Pplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>PRES.9b</name>
+   <description>PRES.9b : If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. : 20µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_sab.lyrdb b/tapeout/outputs/drc/caravel_18000abd_sab.lyrdb
new file mode 100644
index 0000000..5903095
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_sab.lyrdb
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/sab.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>SB.1</name>
+   <description>SB.1 : min. sab width : 0.42µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.2</name>
+   <description>SB.2 : min. sab spacing : 0.42µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.3</name>
+   <description>SB.3 : Space from salicide block to unrelated COMP. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.4</name>
+   <description>SB.4 : Space from salicide block to contact.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.5a</name>
+   <description>SB.5a : Space from salicide block to unrelated Poly2 on field. : 0.3µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.5b</name>
+   <description>SB.5b : Space from salicide block to unrelated Poly2 on COMP. : 0.28µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.6</name>
+   <description>SB.6 : Salicide block extension beyond related COMP. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.7</name>
+   <description>SB.7 : COMP extension beyond related salicide block. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.8</name>
+   <description>SB.8 : Non-salicided contacts are forbidden.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.9</name>
+   <description>SB.9 : Salicide block extension beyond unsalicided Poly2. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.10</name>
+   <description>SB.10 : Poly2 extension beyond related salicide block. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.11</name>
+   <description>SB.11 : Overlap with COMP. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.12</name>
+   <description>SB.12 : Overlap with Poly2 outside ESD_MK. : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.13</name>
+   <description>SB.13 : Min. area (um2). : 2µm²</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.14a</name>
+   <description>SB.14a : Space from unsalicided Nplus Poly2 to unsalicided Pplus Poly2. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at unsalicided Pplus Poly2 corners). : 0.56µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.14b</name>
+   <description>SB.14b : Space from unsalicided Nplus Poly2 to P-channel gate. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at P-channel gate corners). : 0.56µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.15a</name>
+   <description>SB.15a : Space from unsalicided Poly2 to unrelated Nplus/Pplus. : 0.18µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.15b</name>
+   <description>SB.15b : Space from unsalicided Poly2 to unrelated Nplus/Pplus along Poly2 line. : 0.32µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>SB.16</name>
+   <description>SB.16 : SAB layer cannot exist on 3.3V and 5V/6V CMOS transistors' Poly and COMP area of the core circuit (Excluding the transistors used for ESD purpose). It can only exist on CMOS transistors marked by LVS_IO, OTP_MK, ESD_MK layers.</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_sram.lyrdb b/tapeout/outputs/drc/caravel_18000abd_sram.lyrdb
new file mode 100644
index 0000000..b71dc88
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_sram.lyrdb
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/sram.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>S.DF.4c_MV</name>
+   <description>S.DF.4c_MV : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.6_MV</name>
+   <description>S.DF.6_MV : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.32µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.7_MV</name>
+   <description>S.DF.7_MV : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.8_MV</name>
+   <description>S.DF.8_MV : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.16_MV</name>
+   <description>S.DF.16_MV : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.45µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.PL.5a_MV</name>
+   <description>S.PL.5a_MV : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.PL.5b_MV</name>
+   <description>S.PL.5b_MV : Space from field Poly2 to related COMP. : 0.12µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.CO.4_MV</name>
+   <description>S.CO.4_MV : COMP overlap of contact. : 0.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.4c_LV</name>
+   <description>S.DF.4c_LV : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.DF.16_LV</name>
+   <description>S.DF.16_LV : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.4µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.CO.3_LV</name>
+   <description>S.CO.3_LV : Poly2 overlap of contact. : 0.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.CO.4_LV</name>
+   <description>S.CO.4_LV : COMP overlap of contact. : 0.03µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.CO.6_ii_LV</name>
+   <description>S.CO.6_ii_LV : (ii) If Metal1 overlaps contact by &lt; 0.04um on one side, adjacent metal1 edges overlap</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>S.M1.1_LV</name>
+   <description>S.M1.1_LV : min. metal1 width : 0.22µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_tail.lyrdb b/tapeout/outputs/drc/caravel_18000abd_tail.lyrdb
new file mode 100644
index 0000000..c0a17a2
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_tail.lyrdb
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/tail.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_via1.lyrdb b/tapeout/outputs/drc/caravel_18000abd_via1.lyrdb
new file mode 100644
index 0000000..7aed8c2
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_via1.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/via1.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>V1.1</name>
+   <description>V1.1 : Min/max Via1 size . : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.2a</name>
+   <description>V1.2a : min. via1 spacing : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.2b</name>
+   <description>V1.2b : Via1 Space in 4x4 or larger via1 array : 0.36µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.3a</name>
+   <description>V1.3a : metal1 overlap of via1 &gt;= 0.0</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.3c</name>
+   <description>V1.3c : metal1 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.3d</name>
+   <description>V1.3d : If metal1 overlap via1 by &lt; 0.04um on one side, adjacent metal1 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.4a</name>
+   <description>V1.4a : metal2 overlap of via1 &gt;= 0.01 um</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.4b</name>
+   <description>V1.4p : metal2 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V1.3d</name>
+   <description>V1.3d : If metal2 overlap via1 by &lt; 0.04um on one side, adjacent metal2 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_via2.lyrdb b/tapeout/outputs/drc/caravel_18000abd_via2.lyrdb
new file mode 100644
index 0000000..4dae15b
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_via2.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/via2.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>V2.1</name>
+   <description>V2.1 : Min/max Via1 size . : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.2a</name>
+   <description>V2.2a : min. via2 spacing : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.2b</name>
+   <description>V2.2b : Via1 Space in 4x4 or larger via2 array : 0.36µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.3a</name>
+   <description>V2.3a : metal2 overlap of via2 &gt;= 0.01</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.3c</name>
+   <description>V2.3c : metal2 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.3d</name>
+   <description>V2.3d : If metal2 overlap via2 by &lt; 0.04um on one side, adjacent metal2 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.4a</name>
+   <description>V2.4a : metal3 overlap of via2 &gt;= 0.01 um</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.4b</name>
+   <description>V2.4p : metal3 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V2.3d</name>
+   <description>V2.3d : If metal3 overlap via2 by &lt; 0.04um on one side, adjacent metal3 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_via3.lyrdb b/tapeout/outputs/drc/caravel_18000abd_via3.lyrdb
new file mode 100644
index 0000000..b13fd70
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_via3.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/via3.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>V3.1</name>
+   <description>V3.1 : Min/max Via1 size . : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.2a</name>
+   <description>V3.2a : min. via3 spacing : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.2b</name>
+   <description>V3.2b : Via1 Space in 4x4 or larger via3 array : 0.36µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.3a</name>
+   <description>V3.3a : metal3 overlap of via3 &gt;= 0.01</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.3c</name>
+   <description>V3.3c : metal3 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.3d</name>
+   <description>V3.3d : If metal3 overlap via3 by &lt; 0.04um on one side, adjacent metal3 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.4a</name>
+   <description>V3.4a : metal4 overlap of via3 &gt;= 0.01 um</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.4b</name>
+   <description>V3.4p : metal4 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V3.3d</name>
+   <description>V3.3d : If metal4 overlap via3 by &lt; 0.04um on one side, adjacent metal4 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_via4.lyrdb b/tapeout/outputs/drc/caravel_18000abd_via4.lyrdb
new file mode 100644
index 0000000..e53ddda
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_via4.lyrdb
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/via4.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>V4.1</name>
+   <description>V4.1 : Min/max Via1 size . : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.2a</name>
+   <description>V4.2a : min. via4 spacing : 0.26µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.2b</name>
+   <description>V4.2b : Via1 Space in 4x4 or larger via4 array : 0.36µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.3a</name>
+   <description>V4.3a : metal4 overlap of via4 &gt;= 0.01</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.3c</name>
+   <description>V4.3c : metal4 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.3d</name>
+   <description>V4.3d : If metal4 overlap via4 by &lt; 0.04um on one side, adjacent metal4 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.4a</name>
+   <description>V4.4a : metal5 overlap of via4 &gt;= 0.01 um</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.4b</name>
+   <description>V4.4p : metal5 (&lt; 0.34um) end-of-line overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>V4.3d</name>
+   <description>V4.3d : If metal5 overlap via4 by &lt; 0.04um on one side, adjacent metal5 edges overlap. : 0.06µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_via5.lyrdb b/tapeout/outputs/drc/caravel_18000abd_via5.lyrdb
new file mode 100644
index 0000000..12f0e52
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_via5.lyrdb
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/via5.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/caravel_18000abd_ymtp_mk.lyrdb b/tapeout/outputs/drc/caravel_18000abd_ymtp_mk.lyrdb
new file mode 100644
index 0000000..c50a7e9
--- /dev/null
+++ b/tapeout/outputs/drc/caravel_18000abd_ymtp_mk.lyrdb
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<report-database>
+ <description>DRC Run Report at</description>
+ <original-file/>
+ <generator>drc: script='/mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/drc/ymtp_mk.drc'</generator>
+ <top-cell>caravel_18000abd</top-cell>
+ <tags>
+ </tags>
+ <categories>
+  <category>
+   <name>Y.NW.2b_3.3V</name>
+   <description>Y.NW.2b_3.3V : Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. : 1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.NW.2b_5V</name>
+   <description>Y.NW.2b_5V : Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. : 1µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.DF.6_5V</name>
+   <description>Y.DF.6_5V : Min. COMP extend beyond gate (it also means source/drain overhang) inside YMTP_MK. : 0.15µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.DF.16_3.3V</name>
+   <description>Y.DF.16_3.3V : Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). : 0.27µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.DF.16_5V</name>
+   <description>Y.DF.16_5V : Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). : 0.23µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.1_3.3V</name>
+   <description>Y.PL.1_3.3V : Interconnect Width (inside YMTP_MK). : 0.13µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.1_5V</name>
+   <description>Y.PL.1_5V : Interconnect Width (inside YMTP_MK). This rule is currently not applicable for 5V.</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.2_3.3V</name>
+   <description>Y.PL.2_3.3V : Gate Width (Channel Length) (inside YMTP_MK). : 0.13µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.2_5V</name>
+   <description>Y.PL.2_5V : Gate Width (Channel Length) (inside YMTP_MK). : 0.47µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.4_5V</name>
+   <description>Y.PL.4_5V : Poly2 extension beyond COMP to form Poly2 end cap (inside YMTP_MK). : 0.16µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.5a_3.3V</name>
+   <description>Y.PL.5a_3.3V : Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). : 0.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.5a_5V</name>
+   <description>Y.PL.5a_5V : Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). : 0.2µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.5b_3.3V</name>
+   <description>Y.PL.5b_3.3V : Space from field Poly2 to related COMP (inside YMTP_MK). : 0.04µm</description>
+   <categories>
+   </categories>
+  </category>
+  <category>
+   <name>Y.PL.5b_5V</name>
+   <description>Y.PL.5b_5V : Space from field Poly2 to related COMP (inside YMTP_MK). : 0.2µm</description>
+   <categories>
+   </categories>
+  </category>
+ </categories>
+ <cells>
+  <cell>
+   <name>caravel_18000abd</name>
+   <variant/>
+   <references>
+   </references>
+  </cell>
+ </cells>
+ <items>
+ </items>
+</report-database>
diff --git a/tapeout/outputs/drc/comp.drc b/tapeout/outputs/drc/comp.drc
new file mode 100644
index 0000000..810c836
--- /dev/null
+++ b/tapeout/outputs/drc/comp.drc
@@ -0,0 +1,1490 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+    #================================================
+    #----------------------COMP----------------------
+    #================================================
+
+    # Rule DF.1a_3.3V: Min. COMP Width. is 0.22µm
+    logger.info("Executing rule DF.1a_3.3V")
+    df1a_l1  = comp.width(0.22.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df1a_l1.output("DF.1a_3.3V", "DF.1a_3.3V : Min. COMP Width. : 0.22µm")
+    df1a_l1.forget
+
+    # Rule DF.1a_5V: Min. COMP Width. is 0.3µm
+    logger.info("Executing rule DF.1a_5V")
+    df1a_l1  = comp.not_inside(mvsd).not_inside(mvpsd).width(0.3.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df1a_l1.output("DF.1a_5V", "DF.1a_5V : Min. COMP Width. : 0.3µm")
+    df1a_l1.forget
+
+    # rule DF.1b_3.3V is not a DRC check
+
+    # rule DF.1b_5V is not a DRC check
+
+    # Rule DF.1c_3.3V: Min. COMP Width for MOSCAP. is 1µm
+    logger.info("Executing rule DF.1c_3.3V")
+    df1c_l1  = comp.and(mos_cap_mk).width(1.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df1c_l1.output("DF.1c_3.3V", "DF.1c_3.3V : Min. COMP Width for MOSCAP. : 1µm")
+    df1c_l1.forget
+
+    # Rule DF.1c_5V: Min. COMP Width for MOSCAP. is 1µm
+    logger.info("Executing rule DF.1c_5V")
+    df1c_l1  = comp.and(mos_cap_mk).width(1.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df1c_l1.output("DF.1c_5V", "DF.1c_5V : Min. COMP Width for MOSCAP. : 1µm")
+    df1c_l1.forget
+
+    df_2a = comp.not(poly2).edges.and(tgate.edges)
+    # Rule DF.2a_3.3V: Min Channel Width. is nil,0.22µm
+    logger.info("Executing rule DF.2a_3.3V")
+    df2a_l1 = df_2a.with_length(nil,0.22.um).extended(0, 0, 0.001, 0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df2a_l1.output("DF.2a_3.3V", "DF.2a_3.3V : Min Channel Width. : nil,0.22µm")
+    df2a_l1.forget
+
+    # Rule DF.2a_5V: Min Channel Width. is nil,0.3µm
+    logger.info("Executing rule DF.2a_5V")
+    df2a_l1 = df_2a.with_length(nil,0.3.um).extended(0, 0, 0.001, 0.001).overlapping(dualgate)
+    df2a_l1.output("DF.2a_5V", "DF.2a_5V : Min Channel Width. : nil,0.3µm")
+    df2a_l1.forget
+
+    df_2a.forget
+
+    df_2b = comp.width(100.um + 1.dbu).polygons(0.001).not_inside(mos_cap_mk)
+    # Rule DF.2b_3.3V: Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.
+    logger.info("Executing rule DF.2b_3.3V")
+    df2b_l1 = comp.not_inside(mos_cap_mk).not_interacting(df_2b).not_interacting(v5_xtor).not_interacting(dualgate)
+    df2b_l1.output("DF.2b_3.3V", "DF.2b_3.3V : Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.")
+    df2b_l1.forget
+
+    # Rule DF.2b_5V: Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.
+    logger.info("Executing rule DF.2b_5V")
+    df2b_l1 = comp.not_inside(mos_cap_mk).not_interacting(df_2b).overlapping(dualgate)
+    df2b_l1.output("DF.2b_5V", "DF.2b_5V : Max. COMP width for all cases except those used for capacitors, marked by ‘MOS_CAP_MK’ layer.")
+    df2b_l1.forget
+
+    df_2b.forget
+
+    # Rule DF.3a_3.3V: Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. is 0.28µm
+    logger.info("Executing rule DF.3a_3.3V")
+    df3a_l1  = comp.not(otp_mk).space(0.28.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df3a_l1.output("DF.3a_3.3V", "DF.3a_3.3V : Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. : 0.28µm")
+    df3a_l1.forget
+
+    # Rule DF.3a_5V: Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. is 0.36µm
+    logger.info("Executing rule DF.3a_5V")
+    df3a_l1  = comp.not(otp_mk).space(0.36.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df3a_l1.output("DF.3a_5V", "DF.3a_5V : Min. COMP Space P-substrate tap (PCOMP outside NWELL and DNWELL) can be butted for different voltage devices as the potential is same. : 0.36µm")
+    df3a_l1.forget
+
+    df_3b_same_well = ncomp.inside(nwell).not_outside(pcomp.inside(nwell)).or(ncomp.inside(lvpwell).not_outside(pcomp.inside(lvpwell)))
+    df_3b_moscap = ncomp.inside(nwell).interacting(pcomp.inside(nwell)).or(ncomp.inside(lvpwell).interacting(pcomp.inside(lvpwell))).inside(mos_cap_mk)
+    # Rule DF.3b_3.3V: Min./Max. NCOMP Space to PCOMP in the same well for butted COMP (MOSCAP butting is not allowed).
+    logger.info("Executing rule DF.3b_3.3V")
+    df3b_l1 = df_3b_same_well.or(df_3b_moscap).not_interacting(v5_xtor).not_interacting(dualgate)
+    df3b_l1.output("DF.3b_3.3V", "DF.3b_3.3V : Min./Max. NCOMP Space to PCOMP in the same well for butted COMP (MOSCAP butting is not allowed).")
+    df3b_l1.forget
+
+    # Rule DF.3b_5V: Min./Max. NCOMP Space to PCOMP in the same well for butted COMP(MOSCAP butting is not allowed).
+    logger.info("Executing rule DF.3b_5V")
+    df3b_l1 = df_3b_same_well.or(df_3b_moscap).overlapping(dualgate)
+    df3b_l1.output("DF.3b_5V", "DF.3b_5V : Min./Max. NCOMP Space to PCOMP in the same well for butted COMP(MOSCAP butting is not allowed).")
+    df3b_l1.forget
+
+    df_3b_same_well.forget
+
+    df_3b_moscap.forget
+
+    # Rule DF.3c_3.3V: Min. COMP Space in BJT area (area marked by DRC_BJT layer). is 0.32µm
+    logger.info("Executing rule DF.3c_3.3V")
+    df3c_l1  = comp.inside(drc_bjt).space(0.32.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df3c_l1.output("DF.3c_3.3V", "DF.3c_3.3V : Min. COMP Space in BJT area (area marked by DRC_BJT layer). : 0.32µm")
+    df3c_l1.forget
+
+    # Rule DF.3c_5V: Min. COMP Space in BJT area (area marked by DRC_BJT layer) hasn’t been assessed.
+    logger.info("Executing rule DF.3c_5V")
+    df3c_l1 = comp.interacting(comp.inside(drc_bjt).and(dualgate).space(10.um, euclidian).polygons(0.001))
+    df3c_l1.output("DF.3c_5V", "DF.3c_5V : Min. COMP Space in BJT area (area marked by DRC_BJT layer) hasn’t been assessed.")
+    df3c_l1.forget
+
+    ntap_dnwell = ncomp.not_interacting(tgate).inside(dnwell)
+    # Rule DF.4a_3.3V: Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. is 0.12µm
+    logger.info("Executing rule DF.4a_3.3V")
+    df4a_l1  = ntap_dnwell.separation(lvpwell.inside(dnwell), 0.12.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df4a_l1.output("DF.4a_3.3V", "DF.4a_3.3V : Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. : 0.12µm")
+    df4a_l1.forget
+
+    # Rule DF.4a_5V: Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. is 0.16µm
+    logger.info("Executing rule DF.4a_5V")
+    df4a_l1  = ntap_dnwell.separation(lvpwell.inside(dnwell), 0.16.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df4a_l1.output("DF.4a_5V", "DF.4a_5V : Min. (LVPWELL Space to NCOMP well tap) inside DNWELL. : 0.16µm")
+    df4a_l1.forget
+
+    # Rule DF.4b_3.3V: Min. DNWELL overlap of NCOMP well tap. is 0.62µm
+    logger.info("Executing rule DF.4b_3.3V")
+    df4b_l1 = dnwell.enclosing(ncomp.not_interacting(tgate), 0.62.um, euclidian).polygons(0.001)
+    df4b_l2 = ncomp.not_interacting(tgate).not_outside(dnwell).not(dnwell)
+    df4b_l  = df4b_l1.or(df4b_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df4b_l.output("DF.4b_3.3V", "DF.4b_3.3V : Min. DNWELL overlap of NCOMP well tap. : 0.62µm")
+    df4b_l1.forget
+    df4b_l2.forget
+    df4b_l.forget
+
+    # Rule DF.4b_5V: Min. DNWELL overlap of NCOMP well tap. is 0.66µm
+    logger.info("Executing rule DF.4b_5V")
+    df4b_l1 = dnwell.enclosing(ncomp.not_interacting(tgate), 0.66.um, euclidian).polygons(0.001)
+    df4b_l2 = ncomp.not_interacting(tgate).not_outside(dnwell).not(dnwell)
+    df4b_l  = df4b_l1.or(df4b_l2).overlapping(dualgate)
+    df4b_l.output("DF.4b_5V", "DF.4b_5V : Min. DNWELL overlap of NCOMP well tap. : 0.66µm")
+    df4b_l1.forget
+    df4b_l2.forget
+    df4b_l.forget
+
+    ntap_dnwell.forget
+
+    nwell_n_dnwell = nwell.outside(dnwell)
+    # Rule DF.4c_3.3V: Min. (Nwell overlap of PCOMP) outside DNWELL. is 0.43µm
+    logger.info("Executing rule DF.4c_3.3V")
+    df4c_l1 = nwell_n_dnwell.outside(sramcore).enclosing(pcomp.outside(dnwell), 0.43.um, euclidian).polygons(0.001)
+    df4c_l2 = pcomp.outside(dnwell).not_outside(nwell_n_dnwell.outside(sramcore)).not(nwell_n_dnwell.outside(sramcore))
+    df4c_l  = df4c_l1.or(df4c_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df4c_l.output("DF.4c_3.3V", "DF.4c_3.3V : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.43µm")
+    df4c_l1.forget
+    df4c_l2.forget
+    df4c_l.forget
+
+    # Rule DF.4c_5V: Min. (Nwell overlap of PCOMP) outside DNWELL. is 0.6µm
+    logger.info("Executing rule DF.4c_5V")
+    df4c_l1 = nwell_n_dnwell.outside(sramcore).enclosing(pcomp.outside(dnwell), 0.6.um, euclidian).polygons(0.001)
+    df4c_l2 = pcomp.outside(dnwell).not_outside(nwell_n_dnwell.outside(sramcore)).not(nwell_n_dnwell.outside(sramcore))
+    df4c_l  = df4c_l1.or(df4c_l2).overlapping(dualgate)
+    df4c_l.output("DF.4c_5V", "DF.4c_5V : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.6µm")
+    df4c_l1.forget
+    df4c_l2.forget
+    df4c_l.forget
+
+    # Rule DF.4d_3.3V: Min. (Nwell overlap of NCOMP) outside DNWELL. is 0.12µm
+    logger.info("Executing rule DF.4d_3.3V")
+    df4d_l1 = nwell_n_dnwell.not_inside(ymtp_mk).not_inside(neo_ee_mk).enclosing(ncomp.outside(dnwell).not_inside(ymtp_mk), 0.12.um, euclidian).polygons(0.001)
+    df4d_l2 = ncomp.outside(dnwell).not_inside(ymtp_mk).not_outside(nwell_n_dnwell.not_inside(ymtp_mk).not_inside(neo_ee_mk)).not(nwell_n_dnwell.not_inside(ymtp_mk).not_inside(neo_ee_mk))
+    df4d_l  = df4d_l1.or(df4d_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df4d_l.output("DF.4d_3.3V", "DF.4d_3.3V : Min. (Nwell overlap of NCOMP) outside DNWELL. : 0.12µm")
+    df4d_l1.forget
+    df4d_l2.forget
+    df4d_l.forget
+
+    # Rule DF.4d_5V: Min. (Nwell overlap of NCOMP) outside DNWELL. is 0.16µm
+    logger.info("Executing rule DF.4d_5V")
+    df4d_l1 = nwell_n_dnwell.not_inside(ymtp_mk).enclosing(ncomp.outside(dnwell).not_inside(ymtp_mk), 0.16.um, euclidian).polygons(0.001)
+    df4d_l2 = ncomp.outside(dnwell).not_inside(ymtp_mk).not_outside(nwell_n_dnwell.not_inside(ymtp_mk)).not(nwell_n_dnwell.not_inside(ymtp_mk))
+    df4d_l  = df4d_l1.or(df4d_l2).overlapping(dualgate)
+    df4d_l.output("DF.4d_5V", "DF.4d_5V : Min. (Nwell overlap of NCOMP) outside DNWELL. : 0.16µm")
+    df4d_l1.forget
+    df4d_l2.forget
+    df4d_l.forget
+
+    nwell_n_dnwell.forget
+
+    # Rule DF.4e_3.3V: Min. DNWELL overlap of PCOMP. is 0.93µm
+    logger.info("Executing rule DF.4e_3.3V")
+    df4e_l1 = dnwell.enclosing(pcomp, 0.93.um, euclidian).polygons(0.001)
+    df4e_l2 = pcomp.not_outside(dnwell).not(dnwell)
+    df4e_l  = df4e_l1.or(df4e_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df4e_l.output("DF.4e_3.3V", "DF.4e_3.3V : Min. DNWELL overlap of PCOMP. : 0.93µm")
+    df4e_l1.forget
+    df4e_l2.forget
+    df4e_l.forget
+
+    # Rule DF.4e_5V: Min. DNWELL overlap of PCOMP. is 1.1µm
+    logger.info("Executing rule DF.4e_5V")
+    df4e_l1 = dnwell.enclosing(pcomp, 1.1.um, euclidian).polygons(0.001)
+    df4e_l2 = pcomp.not_outside(dnwell).not(dnwell)
+    df4e_l  = df4e_l1.or(df4e_l2).overlapping(dualgate)
+    df4e_l.output("DF.4e_5V", "DF.4e_5V : Min. DNWELL overlap of PCOMP. : 1.1µm")
+    df4e_l1.forget
+    df4e_l2.forget
+    df4e_l.forget
+
+    pwell_dnwell = lvpwell.inside(dnwell)
+    # Rule DF.5_3.3V: Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. is 0.12µm
+    logger.info("Executing rule DF.5_3.3V")
+    df5_l1 = pwell_dnwell.enclosing(pcomp.outside(nwell), 0.12.um, euclidian).polygons(0.001)
+    df5_l2 = pcomp.outside(nwell).not_outside(pwell_dnwell).not(pwell_dnwell)
+    df5_l  = df5_l1.or(df5_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df5_l.output("DF.5_3.3V", "DF.5_3.3V : Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. : 0.12µm")
+    df5_l1.forget
+    df5_l2.forget
+    df5_l.forget
+
+    # Rule DF.5_5V: Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. is 0.16µm
+    logger.info("Executing rule DF.5_5V")
+    df5_l1 = pwell_dnwell.enclosing(pcomp.outside(nwell), 0.16.um, euclidian).polygons(0.001)
+    df5_l2 = pcomp.outside(nwell).not_outside(pwell_dnwell).not(pwell_dnwell)
+    df5_l  = df5_l1.or(df5_l2).overlapping(dualgate)
+    df5_l.output("DF.5_5V", "DF.5_5V : Min. (LVPWELL overlap of PCOMP well tap) inside DNWELL. : 0.16µm")
+    df5_l1.forget
+    df5_l2.forget
+    df5_l.forget
+
+    # Rule DF.6_3.3V: Min. COMP extend beyond gate (it also means source/drain overhang). is 0.24µm
+    logger.info("Executing rule DF.6_3.3V")
+    df6_l1 = comp.not(otp_mk).not_inside(ymtp_mk).enclosing(poly2.not_inside(ymtp_mk), 0.24.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df6_l1.output("DF.6_3.3V", "DF.6_3.3V : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.24µm")
+    df6_l1.forget
+
+    # Rule DF.6_5V: Min. COMP extend beyond gate (it also means source/drain overhang). is 0.4µm
+    logger.info("Executing rule DF.6_5V")
+    df6_l1 = comp.not(otp_mk).not_inside(mvpsd).not_inside(mvsd).not_inside(ymtp_mk).outside(sramcore).enclosing(poly2.not_inside(ymtp_mk), 0.4.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df6_l1.output("DF.6_5V", "DF.6_5V : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.4µm")
+    df6_l1.forget
+
+    # Rule DF.7_3.3V: Min. (LVPWELL Spacer to PCOMP) inside DNWELL. is 0.43µm
+    logger.info("Executing rule DF.7_3.3V")
+    df7_l1  = pcomp.inside(dnwell).separation(pwell_dnwell, 0.43.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df7_l1.output("DF.7_3.3V", "DF.7_3.3V : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.43µm")
+    df7_l1.forget
+
+    # Rule DF.7_5V: Min. (LVPWELL Spacer to PCOMP) inside DNWELL. is 0.6µm
+    logger.info("Executing rule DF.7_5V")
+    df7_l1  = pcomp.inside(dnwell).outside(sramcore).separation(pwell_dnwell, 0.6.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df7_l1.output("DF.7_5V", "DF.7_5V : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.6µm")
+    df7_l1.forget
+
+    # Rule DF.8_3.3V: Min. (LVPWELL overlap of NCOMP) Inside DNWELL. is 0.43µm
+    logger.info("Executing rule DF.8_3.3V")
+    df8_l1 = pwell_dnwell.enclosing(ncomp.inside(dnwell), 0.43.um, euclidian).polygons(0.001)
+    df8_l2 = ncomp.inside(dnwell).not_outside(pwell_dnwell).not(pwell_dnwell)
+    df8_l  = df8_l1.or(df8_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    df8_l.output("DF.8_3.3V", "DF.8_3.3V : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.43µm")
+    df8_l1.forget
+    df8_l2.forget
+    df8_l.forget
+
+    # Rule DF.8_5V: Min. (LVPWELL overlap of NCOMP) Inside DNWELL. is 0.6µm
+    logger.info("Executing rule DF.8_5V")
+    df8_l1 = pwell_dnwell.outside(sramcore).enclosing(ncomp.inside(dnwell), 0.6.um, euclidian).polygons(0.001)
+    df8_l2 = ncomp.inside(dnwell).not_outside(pwell_dnwell.outside(sramcore)).not(pwell_dnwell.outside(sramcore))
+    df8_l  = df8_l1.or(df8_l2).overlapping(dualgate)
+    df8_l.output("DF.8_5V", "DF.8_5V : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.6µm")
+    df8_l1.forget
+    df8_l2.forget
+    df8_l.forget
+
+    pwell_dnwell.forget
+
+    # Rule DF.9_3.3V: Min. COMP area (um2). is 0.2025µm²
+    logger.info("Executing rule DF.9_3.3V")
+    df9_l1  = comp.not(otp_mk).with_area(nil, 0.2025.um).not_interacting(v5_xtor).not_interacting(dualgate)
+    df9_l1.output("DF.9_3.3V", "DF.9_3.3V : Min. COMP area (um2). : 0.2025µm²")
+    df9_l1.forget
+
+    # Rule DF.9_5V: Min. COMP area (um2). is 0.2025µm²
+    logger.info("Executing rule DF.9_5V")
+    df9_l1  = comp.not(otp_mk).with_area(nil, 0.2025.um).overlapping(dualgate)
+    df9_l1.output("DF.9_5V", "DF.9_5V : Min. COMP area (um2). : 0.2025µm²")
+    df9_l1.forget
+
+    # Rule DF.10_3.3V: Min. field area (um2). is 0.26µm²
+    logger.info("Executing rule DF.10_3.3V")
+    df10_l1  = comp.holes.not(comp).with_area(nil, 0.26.um).not_interacting(v5_xtor).not_interacting(dualgate)
+    df10_l1.output("DF.10_3.3V", "DF.10_3.3V : Min. field area (um2). : 0.26µm²")
+    df10_l1.forget
+
+    # Rule DF.10_5V: Min. field area (um2). is 0.26µm²
+    logger.info("Executing rule DF.10_5V")
+    df10_l1  = comp.holes.not(comp).with_area(nil, 0.26.um).overlapping(dualgate)
+    df10_l1.output("DF.10_5V", "DF.10_5V : Min. field area (um2). : 0.26µm²")
+    df10_l1.forget
+
+    comp_butt = comp.interacting(ncomp.interacting(pcomp).outside(pcomp))
+    # Rule DF.11_3.3V: Min. Length of butting COMP edge. is 0.3µm
+    logger.info("Executing rule DF.11_3.3V")
+    df11_l1  = comp_butt.width(0.3.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df11_l1.output("DF.11_3.3V", "DF.11_3.3V : Min. Length of butting COMP edge. : 0.3µm")
+    df11_l1.forget
+
+    # Rule DF.11_5V: Min. Length of butting COMP edge. is 0.3µm
+    logger.info("Executing rule DF.11_5V")
+    df11_l1  = comp_butt.width(0.3.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df11_l1.output("DF.11_5V", "DF.11_5V : Min. Length of butting COMP edge. : 0.3µm")
+    df11_l1.forget
+
+    comp_butt.forget
+
+    # Rule DF.12_3.3V: COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).
+    logger.info("Executing rule DF.12_3.3V")
+    df12_l1 = comp.not_interacting(schottky_diode).not_inside(nplus.or(pplus)).not_interacting(v5_xtor).not_interacting(dualgate)
+    df12_l1.output("DF.12_3.3V", "DF.12_3.3V : COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).")
+    df12_l1.forget
+
+    # Rule DF.12_5V: COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).
+    logger.info("Executing rule DF.12_5V")
+    df12_l1 = comp.not_interacting(schottky_diode).not_inside(nplus.or(pplus)).overlapping(dualgate)
+    df12_l1.output("DF.12_5V", "DF.12_5V : COMP not covered by Nplus or Pplus is forbidden (except those COMP under marking).")
+    df12_l1.forget
+
+    df13_ncomp = ncomp.inside(nwell.covering(ncomp).covering(pcomp))
+    df13_pcomp = pcomp.inside(nwell.covering(ncomp).covering(pcomp))
+    # Rule DF.13_3.3V: Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).
+    logger.info("Executing rule DF.13_3.3V")
+    df13_l1 = df13_ncomp.not_interacting(df13_pcomp.sized(20.um)).not_interacting(v5_xtor).not_interacting(dualgate)
+    df13_l1.output("DF.13_3.3V", "DF.13_3.3V : Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).")
+    df13_l1.forget
+
+    # Rule DF.13_5V: Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).
+    logger.info("Executing rule DF.13_5V")
+    df13_l1 = df13_ncomp.not_interacting(df13_pcomp.sized(15.um)).overlapping(dualgate)
+    df13_l1.output("DF.13_5V", "DF.13_5V : Max distance of Nwell tap (NCOMP inside Nwell) from (PCOMP inside Nwell).")
+    df13_l1.forget
+
+    df13_ncomp.forget
+
+    df13_pcomp.forget
+
+    # Rule DF.14_3.3V: Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).
+    logger.info("Executing rule DF.14_3.3V")
+    df14_l1 = pcomp.outside(nwell).not_interacting(ncomp.outside(nwell).sized(20.um)).not_interacting(v5_xtor).not_interacting(dualgate)
+    df14_l1.output("DF.14_3.3V", "DF.14_3.3V : Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).")
+    df14_l1.forget
+
+    # Rule DF.14_5V: Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).
+    logger.info("Executing rule DF.14_5V")
+    df14_l1 = pcomp.outside(nwell).not_interacting(ncomp.outside(nwell).sized(15.um)).overlapping(dualgate)
+    df14_l1.output("DF.14_5V", "DF.14_5V : Max distance of substrate tap (PCOMP outside Nwell) from (NCOMP outside Nwell).")
+    df14_l1.forget
+
+    # rule DF.15a_3.3V is not a DRC check
+
+    # rule DF.15a_5V is not a DRC check
+
+    # rule DF.15b_3.3V is not a DRC check
+
+    # rule DF.15b_5V is not a DRC check
+
+    ncomp_df16 = ncomp.outside(nwell).outside(dnwell)
+    # Rule DF.16_3.3V: Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). is 0.43µm
+    logger.info("Executing rule DF.16_3.3V")
+    df16_l1  = ncomp_df16.not_inside(ymtp_mk).outside(sramcore).separation(nwell.outside(dnwell).not_inside(ymtp_mk), 0.43.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df16_l1.output("DF.16_3.3V", "DF.16_3.3V : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.43µm")
+    df16_l1.forget
+
+    # Rule DF.16_5V: Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). is 0.6µm
+    logger.info("Executing rule DF.16_5V")
+    df16_l1  = ncomp_df16.not_inside(ymtp_mk).outside(sramcore).separation(nwell.outside(dnwell).not_inside(ymtp_mk), 0.6.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df16_l1.output("DF.16_5V", "DF.16_5V : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.6µm")
+    df16_l1.forget
+
+    pcomp_df17 = pcomp.outside(nwell).outside(dnwell)
+    # Rule DF.17_3.3V: Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). is 0.12µm
+    logger.info("Executing rule DF.17_3.3V")
+    df17_l1  = pcomp_df17.separation(nwell.outside(dnwell), 0.12.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df17_l1.output("DF.17_3.3V", "DF.17_3.3V : Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). : 0.12µm")
+    df17_l1.forget
+
+    # Rule DF.17_5V: Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). is 0.16µm
+    logger.info("Executing rule DF.17_5V")
+    df17_l1  = pcomp_df17.separation(nwell.outside(dnwell), 0.16.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df17_l1.output("DF.17_5V", "DF.17_5V : Min. space from (Nwell Outside DNWELL) to (PCOMP outside Nwell and DNWELL). : 0.16µm")
+    df17_l1.forget
+
+    # Rule DF.18_3.3V: Min. DNWELL space to (PCOMP outside Nwell and DNWELL). is 2.5µm
+    logger.info("Executing rule DF.18_3.3V")
+    df18_l1  = pcomp_df17.separation(dnwell, 2.5.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df18_l1.output("DF.18_3.3V", "DF.18_3.3V : Min. DNWELL space to (PCOMP outside Nwell and DNWELL). : 2.5µm")
+    df18_l1.forget
+
+    # Rule DF.18_5V: Min. DNWELL space to (PCOMP outside Nwell and DNWELL). is 2.5µm
+    logger.info("Executing rule DF.18_5V")
+    df18_l1  = pcomp_df17.separation(dnwell, 2.5.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df18_l1.output("DF.18_5V", "DF.18_5V : Min. DNWELL space to (PCOMP outside Nwell and DNWELL). : 2.5µm")
+    df18_l1.forget
+
+    pcomp_df17.forget
+
+    # Rule DF.19_3.3V: Min. DNWELL space to (NCOMP outside Nwell and DNWELL). is 3.2µm
+    logger.info("Executing rule DF.19_3.3V")
+    df19_l1  = ncomp_df16.separation(dnwell, 3.2.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    df19_l1.output("DF.19_3.3V", "DF.19_3.3V : Min. DNWELL space to (NCOMP outside Nwell and DNWELL). : 3.2µm")
+    df19_l1.forget
+
+    # Rule DF.19_5V: Min. DNWELL space to (NCOMP outside Nwell and DNWELL). is 3.28µm
+    logger.info("Executing rule DF.19_5V")
+    df19_l1  = ncomp_df16.separation(dnwell, 3.28.um, euclidian).polygons(0.001).overlapping(dualgate)
+    df19_l1.output("DF.19_5V", "DF.19_5V : Min. DNWELL space to (NCOMP outside Nwell and DNWELL). : 3.28µm")
+    df19_l1.forget
+
+    ncomp_df16.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/contact.drc b/tapeout/outputs/drc/contact.drc
new file mode 100644
index 0000000..fb700f1
--- /dev/null
+++ b/tapeout/outputs/drc/contact.drc
@@ -0,0 +1,1211 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+
+    #================================================
+    #--------------------CONTACT---------------------
+    #================================================
+
+    # Rule CO.1: Min/max contact size. is 0.22µm
+    logger.info("Executing rule CO.1")
+    co1_l1 = contact.edges.without_length(0.22.um).extended(0, 0, 0.001, 0.001)
+    co1_l1.output("CO.1", "CO.1 : Min/max contact size. : 0.22µm")
+    co1_l1.forget
+
+    # Rule CO.2a: min. contact spacing is 0.25µm
+    logger.info("Executing rule CO.2a")
+    co2a_l1  = contact.space(0.25.um, euclidian)
+    co2a_l1.output("CO.2a", "CO.2a : min. contact spacing : 0.25µm")
+    co2a_l1.forget
+
+    # Rule CO.2b: Space in 4x4 or larger contact array. is 0.28µm
+    logger.info("Executing rule CO.2b")
+    poss_4_4_contact = contact.sized(0.14, "square_limit").merged.sized(-0.14, "square_limit")
+    co_4x4_loc = poss_4_4_contact.not_interacting(poss_4_4_contact.edges.with_length(nil, 1.715))
+    selected_co = contact.interacting(co_4x4_loc)
+
+    co2b_l1  = selected_co.space(0.28.um, euclidian)
+    co2b_l1.output("CO.2b", "CO.2b : Space in 4x4 or larger contact array. : 0.28µm")
+    co2b_l1.forget
+    poss_4_4_contact.forget
+    co_4x4_loc.forget
+    selected_co.forget
+
+    # Rule CO.3: Poly2 overlap of contact. is 0.07µm
+    logger.info("Executing rule CO.3")
+    main_contact = contact.not(sramcore)
+    co3_l = main_contact.enclosed(poly2, 0.07.um, euclidian)
+    co3_l.output("CO.3", "CO.3 : Poly2 overlap of contact. : 0.07µm")
+    co3_l.forget
+
+    # Rule CO.4: COMP overlap of contact. is 0.07µm
+    logger.info("Executing rule CO.4")
+    co4_l = main_contact.enclosed(comp, 0.07.um, euclidian)
+    co4_l.output("CO.4", "CO.4 : COMP overlap of contact. : 0.07µm")
+    co4_l.forget
+
+    # Rule CO.5a: Nplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). is 0.1µm
+    logger.info("Executing rule CO.5a")
+    co_5a_ncomp_butted = ncomp.interacting(pcomp)
+    co_ncomp_check = contact.interacting(co_5a_ncomp_butted)
+    co5a_l1 = co_ncomp_check.enclosed(co_5a_ncomp_butted, 0.1.um, euclidian)
+    co5a_l1.output("CO.5a", "CO.5a : Nplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). : 0.1µm")
+    co5a_l1.forget
+    co_ncomp_check.forget
+    co_5a_ncomp_butted.forget
+
+    # Rule CO.5b: Pplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). is 0.1µm
+    logger.info("Executing rule CO.5b")
+    co_5b_pcomp_butted = pcomp.interacting(ncomp)
+    co_pcomp_check = contact.interacting(co_5b_pcomp_butted)
+    co5b_l1 = co_pcomp_check.enclosed(co_5b_pcomp_butted, 0.1.um, euclidian)
+    co5b_l1.output("CO.5b", "CO.5b : Pplus overlap of contact on COMP (Only for contacts to butted Nplus and Pplus COMP areas). : 0.1µm")
+    co5b_l1.forget
+    co_pcomp_check.forget
+    co_5b_pcomp_butted.forget
+
+    # Rule CO.6: Metal1 overlap of contact.
+    logger.info("Executing rule CO.6")
+    co6_l1 = contact.enclosed(metal1, 0.005.um, euclidian).polygons(0.001) 
+    co6_l2 = contact.not(metal1)
+    co6_l = co6_l1.or(co6_l2)
+    co6_l.output("CO.6", "CO.6 : Metal1 overlap of contact >= 0.005 um")
+    co6_l1.forget
+    co6_l2.forget
+    co6_l.forget
+
+    # Rule CO.6a: (i) Metal1 (< 0.34um) end-of-line overlap. is 0.06µm
+    logger.info("Executing rule CO.6a")
+    cont_6a_cond = metal1.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+    cont_6a_eol = metal1.edges.with_length(nil, 0.34.um).interacting(cont_6a_cond.first_edges).interacting(cont_6a_cond.second_edges).not(cont_6a_cond.first_edges).not(cont_6a_cond.second_edges)
+    cont_6a_l1 = contact.edges.enclosed(cont_6a_eol, 0.06.um, projection)
+    cont_6a_l1.output("CO.6a", "CO.6a : (i) Metal1 (< 0.34um) end-of-line overlap contact : 0.06µm")
+    cont_6a_l1.forget
+    cont_6a_cond.forget
+    cont_6a_eol.forget
+    cont_6a_cond.forget
+
+    # # Rule CO.6b: (ii) If Metal1 overlaps contact by < 0.04um on one side, adjacent metal1 edges overlap is 0.06µm
+    logger.info("Executing rule CO.6b")
+    cont_6b_cond_edges = main_contact.edges.not_outside(main_contact.enclosed(metal1, 0.04.um, projection).edges)
+    cont_6b_check_corner = cont_6b_cond_edges.extended_in(0.002.um)
+    cont_6b_check = main_contact.edges.interacting(cont_6b_check_corner).not(cont_6b_cond_edges)
+    cont_6b_cond_corner = cont_6b_cond_edges.width(0.002.um, angle_limit(135)).polygons
+    cont_6b_l1 = cont_6b_check.enclosed(metal1.edges, 0.06.um, projection).polygons
+    cont_6b_l2 = main_contact.interacting(cont_6b_cond_corner)
+    cont_6b_l = cont_6b_l1.or(cont_6b_l2)
+    cont_6b_l.output("CO.6b", "CO.6b : (ii) If Metal1 overlaps contact by < 0.04um on one side, adjacent metal1 edges overlap : 0.06µm")
+    cont_6b_l2.forget
+    cont_6b_l1.forget
+    cont_6b_cond_corner.forget
+    cont_6b_check.forget
+    cont_6b_check_corner.forget
+    cont_6b_cond_edges.forget
+
+    # rule CO.6c is a guideline rule.
+
+    # Rule CO.7: Space from COMP contact to Poly2 on COMP. is 0.15µm
+    logger.info("Executing rule CO.7")
+    co7_l1  = contact.and(comp).not(otp_mk).separation(tgate.not(otp_mk), 0.15.um, euclidian)
+    co7_l1.output("CO.7", "CO.7 : Space from COMP contact to Poly2 on COMP. : 0.15µm")
+    co7_l1.forget
+
+    # Rule CO.8: Space from Poly2 contact to COMP. is 0.17µm
+    logger.info("Executing rule CO.8")
+    co8_l1  = contact.and(poly2).separation(comp, 0.17.um, euclidian)
+    co8_l1.output("CO.8", "CO.8 : Space from Poly2 contact to COMP. : 0.17µm")
+    co8_l1.forget
+
+    # Rule CO.9: Contact on NCOMP to PCOMP butting edge is forbidden (contact must not straddle butting edge).
+    logger.info("Executing rule CO.9")
+    co9_l1 = contact.interacting(ncomp.edges.and(pcomp.edges))
+    co9_l1.output("CO.9", "CO.9 : Contact on NCOMP to PCOMP butting edge is forbidden (contact must not straddle butting edge).")
+    co9_l1.forget
+
+    # Rule CO.10: Contact on Poly2 gate over COMP is forbidden.
+    logger.info("Executing rule CO.10")
+    co10_l1 = contact.and(tgate)
+    co10_l1.output("CO.10", "CO.10 : Contact on Poly2 gate over COMP is forbidden.")
+    co10_l1.forget
+
+    # Rule CO.11: Contact on field oxide is forbidden.
+    logger.info("Executing rule CO.11")
+    co11_l1 = contact.not(poly2).not(comp)
+    co11_l1.output("CO.11", "CO.11 : Contact on field oxide is forbidden.")
+    co11_l1.forget
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/dnwell.drc b/tapeout/outputs/drc/dnwell.drc
new file mode 100644
index 0000000..05cdc48
--- /dev/null
+++ b/tapeout/outputs/drc/dnwell.drc
@@ -0,0 +1,1127 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #---------------------DNWELL---------------------
+    #================================================
+
+    # Rule DN.1: Min. DNWELL Width is 1.7µm
+    logger.info("Executing rule DN.1")
+    dn1_l1  = dnwell.width(1.7.um, euclidian).polygons(0.001)
+    dn1_l1.output("DN.1", "DN.1 : Min. DNWELL Width : 1.7µm")
+    dn1_l1.forget
+
+    if CONNECTIVITY_RULES
+    logger.info("CONNECTIVITY_RULES section")
+
+    connected_dnwell, unconnected_dnwell = conn_space(dnwell, 2.5, 5.42, euclidian)
+
+    # Rule DN.2a: Min. DNWELL Space (Equi-potential), Merge if the space is less than is 2.5µm
+    logger.info("Executing rule DN.2a")
+    dn2a_l1  = connected_dnwell
+    dn2a_l1.output("DN.2a", "DN.2a : Min. DNWELL Space (Equi-potential), Merge if the space is less than : 2.5µm")
+    dn2a_l1.forget
+
+    # Rule DN.2b: Min. DNWELL Space (Different potential) is 5.42µm
+    logger.info("Executing rule DN.2b")
+    dn2b_l1  = unconnected_dnwell
+    dn2b_l1.output("DN.2b", "DN.2b : Min. DNWELL Space (Different potential) : 5.42µm")
+    dn2b_l1.forget
+
+    else
+    logger.info("CONNECTIVITY_RULES disabled section")
+
+    # Rule DN.2b_: Min. DNWELL Space (Different potential) is 5.42µm
+    logger.info("Executing rule DN.2b_")
+    dn2b_l1  = dnwell.isolated(5.42.um, euclidian).polygons(0.001)
+    dn2b_l1.output("DN.2b_", "DN.2b_ : Min. DNWELL Space (Different potential) : 5.42µm")
+    dn2b_l1.forget
+
+    end #CONNECTIVITY_RULES
+
+    dn3_1 = dnwell.not_inside(pcomp.holes.not(pcomp).interacting(dnwell, 1..1).extents)
+    dn3_2 = dnwell.inside((pcomp.holes.not(pcomp).covering(nat.or(ncomp).or(nwell).not_interacting(dnwell))))
+    # Rule DN.3: Each DNWELL shall be directly surrounded by PCOMP guard ring tied to the P-substrate potential.
+    logger.info("Executing rule DN.3")
+    dn3_l1 = dn3_1.or(dn3_2)
+    dn3_l1.output("DN.3", "DN.3 : Each DNWELL shall be directly surrounded by PCOMP guard ring tied to the P-substrate potential.")
+    dn3_l1.forget
+
+    dn3_1.forget
+
+    dn3_2.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/drc_bjt.drc b/tapeout/outputs/drc/drc_bjt.drc
new file mode 100644
index 0000000..0f9fd96
--- /dev/null
+++ b/tapeout/outputs/drc/drc_bjt.drc
@@ -0,0 +1,1100 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+    #================================================
+    #--------------------DRC_BJT---------------------
+    #================================================
+
+    # Rule BJT.1: Min. DRC_BJT overlap of DNWELL for NPN BJT.
+    logger.info("Executing rule BJT.1")
+    bjt1_l1 = dnwell.interacting(drc_bjt).not(dnwell.inside(drc_bjt))
+    bjt1_l1.output("BJT.1", "BJT.1 : Min. DRC_BJT overlap of DNWELL for NPN BJT.")
+    bjt1_l1.forget
+
+    # Rule BJT.2: Min. DRC_BJT overlap of PCOM in Psub.
+    logger.info("Executing rule BJT.2")
+    bjt2_l1 = pcomp.outside(nwell).outside(dnwell).interacting(drc_bjt).not(pcomp.outside(nwell).outside(dnwell).inside(drc_bjt))
+    bjt2_l1.output("BJT.2", "BJT.2 : Min. DRC_BJT overlap of PCOM in Psub.")
+    bjt2_l1.forget
+
+    # Rule BJT.3: Minimum space of DRC_BJT layer to unrelated COMP. is 0.1µm
+    logger.info("Executing rule BJT.3")
+    bjt3_l1  = comp.outside(drc_bjt).separation(drc_bjt, 0.1.um, euclidian).polygons(0.001)
+    bjt3_l1.output("BJT.3", "BJT.3 : Minimum space of DRC_BJT layer to unrelated COMP. : 0.1µm")
+    bjt3_l1.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/drc_run_2022_12_13_07_38_20.log b/tapeout/outputs/drc/drc_run_2022_12_13_07_38_20.log
new file mode 100644
index 0000000..e6d46b7
--- /dev/null
+++ b/tapeout/outputs/drc/drc_run_2022_12_13_07_38_20.log
@@ -0,0 +1,76 @@
+13-Dec-2022 07:38:20 | INFO    | Your Klayout version is: KLayout 0.28
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['comp.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['contact.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dnwell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['drc_bjt.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dualgate.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['dummy_exclude.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['efuse.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['esd.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['geom.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['hres.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lres.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lvpwell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['lvs_bjt.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['main.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['mcell.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal1.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal2.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal3.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal4.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metal5.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['metaltop.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['mim.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['nat.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['nplus.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['otp_mk.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['poly2.drc']
+13-Dec-2022 07:38:22 | INFO    | ## Generating template with for the following rule tables: ['pplus.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['pres.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['sab.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['sram.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['tail.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via1.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via2.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via3.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via4.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['via5.drc']
+13-Dec-2022 07:38:23 | INFO    | ## Generating template with for the following rule tables: ['ymtp_mk.drc']
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design comp on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design contact on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dnwell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design drc_bjt on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dualgate on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design dummy_exclude on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design efuse on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design esd on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design geom on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design hres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lvpwell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design lvs_bjt on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design main on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design mcell on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal1 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal3 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal4 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metal5 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design metaltop on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design mim on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design nat on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design nplus on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design otp_mk on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design poly2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design pplus on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design pres on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design sab on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design sram on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design tail on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via1 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via2 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via3 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via4 on cell caravel_18000abd:
+13-Dec-2022 07:38:23 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design via5 on cell caravel_18000abd:
+13-Dec-2022 07:39:30 | INFO    | Running Global Foundries 180nm MCU /mnt/shuttles/shuttle/gfmpw-0/u463_russellf/gf180_russell/tapeout/outputs/oas/caravel_18000abd.oas checks on design ymtp_mk on cell caravel_18000abd:
+13-Dec-2022 08:29:53 | INFO    | Klayout DRC run is clean. GDS has no DRC violations.
diff --git a/tapeout/outputs/drc/dualgate.drc b/tapeout/outputs/drc/dualgate.drc
new file mode 100644
index 0000000..cbfe5b2
--- /dev/null
+++ b/tapeout/outputs/drc/dualgate.drc
@@ -0,0 +1,1146 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #--------------------DUALGATE--------------------
+    #================================================
+
+    # Rule DV.1: Min. Dualgate enclose DNWELL. is 0.5µm
+    logger.info("Executing rule DV.1")
+    dv1_l1 = dualgate.enclosing(dnwell, 0.5.um, euclidian).polygons(0.001)
+    dv1_l2 = dnwell.not_outside(dualgate).not(dualgate)
+    dv1_l  = dv1_l1.or(dv1_l2)
+    dv1_l.output("DV.1", "DV.1 : Min. Dualgate enclose DNWELL. : 0.5µm")
+    dv1_l1.forget
+    dv1_l2.forget
+    dv1_l.forget
+
+    # Rule DV.2: Min. Dualgate Space. Merge if Space is less than this design rule. is 0.44µm
+    logger.info("Executing rule DV.2")
+    dv2_l1  = dualgate.space(0.44.um, euclidian).polygons(0.001)
+    dv2_l1.output("DV.2", "DV.2 : Min. Dualgate Space. Merge if Space is less than this design rule. : 0.44µm")
+    dv2_l1.forget
+
+    # Rule DV.3: Min. Dualgate to COMP space [unrelated]. is 0.24µm
+    logger.info("Executing rule DV.3")
+    dv3_l1  = dualgate.separation(comp.outside(dualgate), 0.24.um, euclidian).polygons(0.001)
+    dv3_l1.output("DV.3", "DV.3 : Min. Dualgate to COMP space [unrelated]. : 0.24µm")
+    dv3_l1.forget
+
+    # rule DV.4 is not a DRC check
+
+    # Rule DV.5: Min. Dualgate width. is 0.7µm
+    logger.info("Executing rule DV.5")
+    dv5_l1  = dualgate.width(0.7.um, euclidian).polygons(0.001)
+    dv5_l1.output("DV.5", "DV.5 : Min. Dualgate width. : 0.7µm")
+    dv5_l1.forget
+
+    comp_dv = comp.not(pcomp.outside(nwell))
+    # Rule DV.6: Min. Dualgate enclose COMP (except substrate tap). is 0.24µm
+    logger.info("Executing rule DV.6")
+    dv6_l1 = dualgate.enclosing(comp_dv, 0.24.um, euclidian).polygons(0.001)
+    dv6_l2 = comp_dv.not_outside(dualgate).not(dualgate)
+    dv6_l  = dv6_l1.or(dv6_l2)
+    dv6_l.output("DV.6", "DV.6 : Min. Dualgate enclose COMP (except substrate tap). : 0.24µm")
+    dv6_l1.forget
+    dv6_l2.forget
+    dv6_l.forget
+
+    # Rule DV.7: COMP (except substrate tap) can not be partially overlapped by Dualgate.
+    logger.info("Executing rule DV.7")
+    dv7_l1 = dualgate.not_outside(comp_dv).not(dualgate.covering(comp_dv))
+    dv7_l1.output("DV.7", "DV.7 : COMP (except substrate tap) can not be partially overlapped by Dualgate.")
+    dv7_l1.forget
+
+    comp_dv.forget
+
+    # Rule DV.8: Min Dualgate enclose Poly2. is 0.4µm
+    logger.info("Executing rule DV.8")
+    dv8_l1 = dualgate.enclosing(poly2, 0.4.um, euclidian).polygons(0.001)
+    dv8_l2 = poly2.not_outside(dualgate).not(dualgate)
+    dv8_l  = dv8_l1.or(dv8_l2)
+    dv8_l.output("DV.8", "DV.8 : Min Dualgate enclose Poly2. : 0.4µm")
+    dv8_l1.forget
+    dv8_l2.forget
+    dv8_l.forget
+
+    # Rule DV.9: 3.3V and 5V/6V PMOS cannot be sitting inside same NWELL.
+    logger.info("Executing rule DV.9")
+    dv9_l1 = nwell.covering(pgate.and(dualgate)).covering(pgate.not_inside(v5_xtor).not_inside(dualgate))
+    dv9_l1.output("DV.9", "DV.9 : 3.3V and 5V/6V PMOS cannot be sitting inside same NWELL.")
+    dv9_l1.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/dummy_exclude.drc b/tapeout/outputs/drc/dummy_exclude.drc
new file mode 100644
index 0000000..2747236
--- /dev/null
+++ b/tapeout/outputs/drc/dummy_exclude.drc
@@ -0,0 +1,1102 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#================================================
+#--------------DUMMY EXCLUDE LAYERS--------------
+#================================================
+
+# rule DE.1 is not a DRC check
+
+# Rule DE.2: Minimum NDMY or PMNDMY size (x or y dimension in um). is 0.8µm
+logger.info("Executing rule DE.2")
+de2_l1  = ndmy.or(pmndmy).width(0.8.um, euclidian).polygons(0.001)
+de2_l1.output("DE.2", "DE.2 : Minimum NDMY or PMNDMY size (x or y dimension in um). : 0.8µm")
+de2_l1.forget
+
+de3_ndmy_area = ndmy.with_area(15000.um, nil)
+# Rule DE.3: If size greater than 15000 um2 then two sides should not be greater than (um).
+logger.info("Executing rule DE.3")
+de3_l1 = de3_ndmy_area.edges.with_length(80.um, nil).not_interacting(de3_ndmy_area.edges.with_length(nil, 80.um))
+de3_l1.output("DE.3", "DE.3 : If size greater than 15000 um2 then two sides should not be greater than (um).")
+de3_l1.forget
+
+de3_ndmy_area.forget
+
+# Rule DE.4: Minimum NDMY to NDMY space (Merge if space is less). is 20µm
+logger.info("Executing rule DE.4")
+de4_l1  = ndmy.space(20.um, euclidian).polygons(0.001)
+de4_l1.output("DE.4", "DE.4 : Minimum NDMY to NDMY space (Merge if space is less). : 20µm")
+de4_l1.forget
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/efuse.drc b/tapeout/outputs/drc/efuse.drc
new file mode 100644
index 0000000..5d735a5
--- /dev/null
+++ b/tapeout/outputs/drc/efuse.drc
@@ -0,0 +1,1258 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+#================================================
+#---------------------EFUSE----------------------
+#================================================
+
+# Rule EF.01: Min. (Poly2 butt PLFUSE) within EFUSE_MK and Pplus.
+logger.info("Executing rule EF.01")
+ef01_l1 = poly2.or(plfuse).interacting(efuse_mk).not_inside(efuse_mk.and(pplus))
+ef01_l1.output("EF.01", "EF.01 : Min. (Poly2 butt PLFUSE) within EFUSE_MK and Pplus.")
+ef01_l1.forget
+
+# Rule EF.02: Min. Max. PLFUSE width. is 0.18µm
+logger.info("Executing rule EF.02")
+ef02_l1 = plfuse.drc(width != 0.18.um).extended(0, 0, 0.001, 0.001)
+ef02_l1.output("EF.02", "EF.02 : Min. Max. PLFUSE width. : 0.18µm")
+ef02_l1.forget
+
+# Rule EF.03: Min. Max. PLFUSE length. is 1.26µm
+logger.info("Executing rule EF.03")
+ef03_l1 = plfuse.edges.interacting(poly2.edges.and(plfuse.edges).centers(0, 0.95)).without_length(1.26.um).extended(0, 0, 0.001, 0.001)
+ef03_l1.output("EF.03", "EF.03 : Min. Max. PLFUSE length. : 1.26µm")
+ef03_l1.forget
+
+# Rule EF.04a: Min. Max. PLFUSE overlap Poly2 (coinciding permitted) and touch cathode and anode.
+logger.info("Executing rule EF.04a")
+ef04a_l1 = plfuse.not_in(plfuse.interacting(poly2.not(plfuse), 2, 2)).inside(efuse_mk).or(plfuse.not(poly2).inside(efuse_mk))
+ef04a_l1.output("EF.04a", "EF.04a : Min. Max. PLFUSE overlap Poly2 (coinciding permitted) and touch cathode and anode.")
+ef04a_l1.forget
+
+# Rule EF.04b: PLFUSE must be rectangular. is -µm
+logger.info("Executing rule EF.04b")
+ef04b_l1 = plfuse.non_rectangles
+ef04b_l1.output("EF.04b", "EF.04b : PLFUSE must be rectangular. : -µm")
+ef04b_l1.forget
+
+cathode = poly2.inside(efuse_mk).not(lvs_source.or(plfuse))
+# Rule EF.04c: Cathode Poly2 must be rectangular. is -µm
+logger.info("Executing rule EF.04c")
+ef04c_l1 = cathode.non_rectangles
+ef04c_l1.output("EF.04c", "EF.04c : Cathode Poly2 must be rectangular. : -µm")
+ef04c_l1.forget
+
+anode = poly2.and(lvs_source).inside(efuse_mk)
+# Rule EF.04d: Anode Poly2 must be rectangular. is -µm
+logger.info("Executing rule EF.04d")
+ef04d_l1 = anode.non_rectangles
+ef04d_l1.output("EF.04d", "EF.04d : Anode Poly2 must be rectangular. : -µm")
+ef04d_l1.forget
+
+# Rule EF.05: Min./Max. LVS_Source overlap Poly2 (at Anode).
+logger.info("Executing rule EF.05")
+ef05_l1 = poly2.not(plfuse).interacting(lvs_source).not(lvs_source).inside(efuse_mk).or(lvs_source.not(poly2).inside(efuse_mk))
+ef05_l1.output("EF.05", "EF.05 : Min./Max. LVS_Source overlap Poly2 (at Anode).")
+ef05_l1.forget
+
+cathode_width = cathode.edges.not_interacting(cathode.edges.interacting(plfuse)).or(cathode.edges.interacting(plfuse))
+# Rule EF.06: Min./Max. Cathode Poly2 width. is 2.26µm
+logger.info("Executing rule EF.06")
+ef06_l1 = cathode_width.without_length(2.26.um).extended(0, 0, 0.001, 0.001)
+ef06_l1.output("EF.06", "EF.06 : Min./Max. Cathode Poly2 width. : 2.26µm")
+ef06_l1.forget
+
+# Rule EF.07: Min./Max. Cathode Poly2 length. is 1.84µm
+logger.info("Executing rule EF.07")
+ef07_l1 = cathode.edges.not(cathode_width).without_length(1.84.um).extended(0, 0, 0.001, 0.001)
+ef07_l1.output("EF.07", "EF.07 : Min./Max. Cathode Poly2 length. : 1.84µm")
+ef07_l1.forget
+
+anode_width = anode.edges.not_interacting(anode.edges.interacting(plfuse)).or(anode.edges.interacting(plfuse))
+# Rule EF.08: Min./Max. Anode Poly2 width. is 1.06µm
+logger.info("Executing rule EF.08")
+ef08_l1 = anode_width.without_length(1.06.um).extended(0, 0, 0.001, 0.001)
+ef08_l1.output("EF.08", "EF.08 : Min./Max. Anode Poly2 width. : 1.06µm")
+ef08_l1.forget
+
+# Rule EF.09: Min./Max. Anode Poly2 length. is 2.43µm
+logger.info("Executing rule EF.09")
+ef09_l1 = anode.edges.not(anode_width).without_length(2.43.um).extended(0, 0, 0.001, 0.001)
+ef09_l1.output("EF.09", "EF.09 : Min./Max. Anode Poly2 length. : 2.43µm")
+ef09_l1.forget
+
+# Rule EF.10: Min. Cathode Poly2 to Poly2 space. is 0.26µm
+logger.info("Executing rule EF.10")
+ef10_l1  = cathode.space(0.26.um, euclidian).polygons(0.001)
+ef10_l1.output("EF.10", "EF.10 : Min. Cathode Poly2 to Poly2 space. : 0.26µm")
+ef10_l1.forget
+
+# Rule EF.11: Min. Anode Poly2 to Poly2 space. is 0.26µm
+logger.info("Executing rule EF.11")
+ef11_l1  = anode.space(0.26.um, euclidian).polygons(0.001)
+ef11_l1.output("EF.11", "EF.11 : Min. Anode Poly2 to Poly2 space. : 0.26µm")
+ef11_l1.forget
+
+cont_ef = contact.and(plfuse.inside(efuse_mk))
+# Rule EF.12: Min. Space of Cathode Contact to PLFUSE end.
+logger.info("Executing rule EF.12")
+ef12_l1 = plfuse.inside(efuse_mk).separation(contact.inside(cathode), 0.155.um).polygons(0.001).or(cont_ef)
+ef12_l1.output("EF.12", "EF.12 : Min. Space of Cathode Contact to PLFUSE end.")
+ef12_l1.forget
+
+# Rule EF.13: Min. Space of Anode Contact to PLFUSE end.
+logger.info("Executing rule EF.13")
+ef13_l1 = plfuse.inside(efuse_mk).separation(contact.inside(anode), 0.14.um).polygons(0.001).or(cont_ef)
+ef13_l1.output("EF.13", "EF.13 : Min. Space of Anode Contact to PLFUSE end.")
+ef13_l1.forget
+
+cont_ef.forget
+
+# Rule EF.14: Min. EFUSE_MK enclose LVS_Source.
+logger.info("Executing rule EF.14")
+ef14_l1 = lvs_source.not_outside(efuse_mk).not(efuse_mk)
+ef14_l1.output("EF.14", "EF.14 : Min. EFUSE_MK enclose LVS_Source.")
+ef14_l1.forget
+
+# Rule EF.15: NO Contact is allowed to touch PLFUSE.
+logger.info("Executing rule EF.15")
+ef15_l1 = plfuse.interacting(contact)
+ef15_l1.output("EF.15", "EF.15 : NO Contact is allowed to touch PLFUSE.")
+ef15_l1.forget
+
+# Rule EF.16a: Cathode must contain exact number of Contacts at each ends. is 4µm
+logger.info("Executing rule EF.16a")
+ef16a_l1 = cathode.not_covering(contact, 4, 4)
+ef16a_l1.output("EF.16a", "EF.16a : Cathode must contain exact number of Contacts at each ends. : 4µm")
+ef16a_l1.forget
+
+# Rule EF.16b: Anode must contain exact number of Contacts at each ends. is 4µm
+logger.info("Executing rule EF.16b")
+ef16b_l1 = anode.not_covering(contact, 4, 4)
+ef16b_l1.output("EF.16b", "EF.16b : Anode must contain exact number of Contacts at each ends. : 4µm")
+ef16b_l1.forget
+
+# Rule EF.17: Min. Space of EFUSE_MK to EFUSE_MK. is 0.26µm
+logger.info("Executing rule EF.17")
+ef17_l1  = efuse_mk.space(0.26.um, euclidian).polygons(0.001)
+ef17_l1.output("EF.17", "EF.17 : Min. Space of EFUSE_MK to EFUSE_MK. : 0.26µm")
+ef17_l1.forget
+
+# Rule EF.18: PLFUSE must sit on field oxide (NOT COMP), no cross with any COMP, Nplus, Pplus, ESD, SAB, Resistor, Metal1, Metal2.
+logger.info("Executing rule EF.18")
+ef18_l1 = plfuse.not(plfuse.outside(comp).outside(nplus).outside(esd).outside(sab).outside(resistor).outside(metal1).outside(metal2))
+ef18_l1.output("EF.18", "EF.18 : PLFUSE must sit on field oxide (NOT COMP), no cross with any COMP, Nplus, Pplus, ESD, SAB, Resistor, Metal1, Metal2.")
+ef18_l1.forget
+
+# Rule EF.19: Min. PLFUSE space to Metal1, Metal2.
+logger.info("Executing rule EF.19")
+ef19_l1 = plfuse.not(plfuse.outside(metal1).outside(metal2))
+ef19_l1.output("EF.19", "EF.19 : Min. PLFUSE space to Metal1, Metal2.")
+ef19_l1.forget
+
+# Rule EF.20: Min. PLFUSE space to COMP, Nplus, Pplus, Resistor, ESD, SAB. is 2.73µm
+logger.info("Executing rule EF.20")
+ef20_l1 = plfuse.separation(comp + nplus + esd + sab + resistor, 2.73.um, euclidian)
+ef20_l1.output("EF.20", "EF.20 : Min. PLFUSE space to COMP, Nplus, Pplus, Resistor, ESD, SAB. : 2.73µm")
+ef20_l1.forget
+
+ef_21_fuse    = poly2.interacting(plfuse).inside(efuse_mk.and(pplus)).extents.edges
+ef_21_anode   = anode.edges.not_interacting(anode.edges.interacting(plfuse))
+ef_21_cathode = cathode.edges.not_interacting(cathode.edges.interacting(plfuse))
+# Rule EF.21: Min./Max. eFUSE Poly2 length. is 5.53µm
+logger.info("Executing rule EF.21")
+ef21_l1 = ef_21_fuse.not_interacting(ef_21_anode.or(ef_21_cathode).centers(0, 0.95)).without_length(5.53.um).extended(0, 0, 0.001, 0.001)
+ef21_l1.output("EF.21", "EF.21 : Min./Max. eFUSE Poly2 length. : 5.53µm")
+ef21_l1.forget
+
+ef_21_fuse.forget
+
+ef_21_anode.forget
+
+ef_21_cathode.forget
+
+# Rule EF.22a: Min./Max. Cathode Poly2 overlap with PLFUSE in width direction. is 1.04µm
+logger.info("Executing rule EF.22a")
+ef22a_l1 = cathode.edges.interacting(plfuse).not(plfuse.edges).without_length(1.04.um).extended(0, 0, 0.001, 0.001)
+ef22a_l1.output("EF.22a", "EF.22a : Min./Max. Cathode Poly2 overlap with PLFUSE in width direction. : 1.04µm")
+ef22a_l1.forget
+
+# Rule EF.22b: Min./Max. Anode Poly2 overlap with PLFUSE in width direction. is 0.44µm
+logger.info("Executing rule EF.22b")
+ef22b_l1 = anode.edges.interacting(plfuse).not(plfuse.edges).without_length(0.44.um).extended(0, 0, 0.001, 0.001)
+ef22b_l1.output("EF.22b", "EF.22b : Min./Max. Anode Poly2 overlap with PLFUSE in width direction. : 0.44µm")
+ef22b_l1.forget
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/esd.drc b/tapeout/outputs/drc/esd.drc
new file mode 100644
index 0000000..9e81da9
--- /dev/null
+++ b/tapeout/outputs/drc/esd.drc
@@ -0,0 +1,1166 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+    #================================================
+    #----------------------ESD-----------------------
+    #================================================
+
+    # Rule ESD.1: Minimum width of an ESD implant area. is 0.6µm
+    logger.info("Executing rule ESD.1")
+    esd1_l1  = esd.width(0.6.um, euclidian).polygons(0.001)
+    esd1_l1.output("ESD.1", "ESD.1 : Minimum width of an ESD implant area. : 0.6µm")
+    esd1_l1.forget
+
+    # Rule ESD.2: Minimum space between two ESD implant areas. (Merge if the space is less than 0.6um). is 0.6µm
+    logger.info("Executing rule ESD.2")
+    esd2_l1  = esd.space(0.6.um, euclidian).polygons(0.001)
+    esd2_l1.output("ESD.2", "ESD.2 : Minimum space between two ESD implant areas. (Merge if the space is less than 0.6um). : 0.6µm")
+    esd2_l1.forget
+
+    # Rule ESD.3a: Minimum space to NCOMP. is 0.6µm
+    logger.info("Executing rule ESD.3a")
+    esd3a_l1  = esd.separation(ncomp, 0.6.um, euclidian).polygons(0.001)
+    esd3a_l1.output("ESD.3a", "ESD.3a : Minimum space to NCOMP. : 0.6µm")
+    esd3a_l1.forget
+
+    # Rule ESD.3b: Min/max space to a butted PCOMP.
+    logger.info("Executing rule ESD.3b")
+    esd3b_l1 = esd.not_outside(pcomp)
+    esd3b_l1.output("ESD.3b", "ESD.3b : Min/max space to a butted PCOMP.")
+    esd3b_l1.forget
+
+    # Rule ESD.4a: Extension beyond NCOMP. is 0.24µm
+    logger.info("Executing rule ESD.4a")
+    esd4a_l1 = esd.edges.not_interacting(pcomp).enclosing(ncomp.edges, 0.24.um, euclidian).polygons(0.001)
+    esd4a_l1.output("ESD.4a", "ESD.4a : Extension beyond NCOMP. : 0.24µm")
+    esd4a_l1.forget
+
+    # Rule ESD.4b: Minimum overlap of an ESD implant edge to a COMP. is 0.45µm
+    logger.info("Executing rule ESD.4b")
+    esd4b_l1  = esd.overlap(comp, 0.45.um, euclidian).polygons(0.001)
+    esd4b_l1.output("ESD.4b", "ESD.4b : Minimum overlap of an ESD implant edge to a COMP. : 0.45µm")
+    esd4b_l1.forget
+
+    # Rule ESD.5a: Minimum ESD area (um2). is 0.49µm²
+    logger.info("Executing rule ESD.5a")
+    esd5a_l1  = esd.with_area(nil, 0.49.um)
+    esd5a_l1.output("ESD.5a", "ESD.5a : Minimum ESD area (um2). : 0.49µm²")
+    esd5a_l1.forget
+
+    # Rule ESD.5b: Minimum field area enclosed by ESD implant (um2). is 0.49µm²
+    logger.info("Executing rule ESD.5b")
+    esd5b_l1  = esd.holes.with_area(nil, 0.49.um)
+    esd5b_l1.output("ESD.5b", "ESD.5b : Minimum field area enclosed by ESD implant (um2). : 0.49µm²")
+    esd5b_l1.forget
+
+    # Rule ESD.6: Extension perpendicular to Poly2 gate. is 0.45µm
+    logger.info("Executing rule ESD.6")
+    esd6_l1 = esd.edges.enclosing(poly2.edges.interacting(tgate.edges), 0.45.um, projection).polygons(0.001)
+    esd6_l1.output("ESD.6", "ESD.6 : Extension perpendicular to Poly2 gate. : 0.45µm")
+    esd6_l1.forget
+
+    # Rule ESD.7: No ESD implant inside PCOMP.
+    logger.info("Executing rule ESD.7")
+    esd7_l1 = esd.not_outside(pcomp)
+    esd7_l1.output("ESD.7", "ESD.7 : No ESD implant inside PCOMP.")
+    esd7_l1.forget
+
+    # Rule ESD.8: Minimum space to Nplus/Pplus. is 0.3µm
+    logger.info("Executing rule ESD.8")
+    esd8_l1 = esd.separation(nplus.or(pplus), 0.3.um).polygons
+    esd8_l1.output("ESD.8", "ESD.8 : Minimum space to Nplus/Pplus. : 0.3µm")
+    esd8_l1.forget
+
+    # Rule ESD.pl: Minimum gate length of 5V/6V gate NMOS. is 0.8µm
+    logger.info("Executing rule ESD.pl")
+    esdpl_l1  = poly2.interacting(esd).edges.and(tgate.edges).width(0.8.um, euclidian).polygons(0.001).overlapping(dualgate)
+    esdpl_l1.output("ESD.pl", "ESD.pl : Minimum gate length of 5V/6V gate NMOS. : 0.8µm")
+    esdpl_l1.forget
+
+    # Rule ESD.9: ESD implant layer must be overlapped by Dualgate layer (as ESD implant option is only for 5V/6V devices).
+    logger.info("Executing rule ESD.9")
+    esd9_l1 = esd.not_inside(dualgate)
+    esd9_l1.output("ESD.9", "ESD.9 : ESD implant layer must be overlapped by Dualgate layer (as ESD implant option is only for 5V/6V devices).")
+    esd9_l1.forget
+
+    # Rule ESD.10: LVS_IO shall be drawn covering I/O MOS active area by minimum overlap.
+    logger.info("Executing rule ESD.10")
+    esd10_l1 = comp.and(esd).not_outside(lvs_io).not(lvs_io)
+    esd10_l1.output("ESD.10", "ESD.10 : LVS_IO shall be drawn covering I/O MOS active area by minimum overlap.")
+    esd10_l1.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/geom.drc b/tapeout/outputs/drc/geom.drc
new file mode 100644
index 0000000..1dca33f
--- /dev/null
+++ b/tapeout/outputs/drc/geom.drc
@@ -0,0 +1,1524 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#================================================
+#-----------------GEOMETRY RULES-----------------
+#================================================
+
+if OFFGRID
+    logger.info("OFFGRID-ANGLES section")
+    
+    logger.info("Executing rule comp_OFFGRID")
+    comp.ongrid(0.005).output("comp_OFFGRID", "OFFGRID : OFFGRID vertex on comp")
+    comp.with_angle(0 .. 45).output("comp_angle", "ACUTE : non 45 degree angle comp")
+    
+    logger.info("Executing rule dnwell_OFFGRID")
+    dnwell.ongrid(0.005).output("dnwell_OFFGRID", "OFFGRID : OFFGRID vertex on dnwell")
+    dnwell.with_angle(0 .. 45).output("dnwell_angle", "ACUTE : non 45 degree angle dnwell")
+    
+    logger.info("Executing rule nwell_OFFGRID")
+    nwell.ongrid(0.005).output("nwell_OFFGRID", "OFFGRID : OFFGRID vertex on nwell")
+    nwell.with_angle(0 .. 45).output("nwell_angle", "ACUTE : non 45 degree angle nwell")
+    
+    logger.info("Executing rule lvpwell_OFFGRID")
+    lvpwell.ongrid(0.005).output("lvpwell_OFFGRID", "OFFGRID : OFFGRID vertex on lvpwell")
+    lvpwell.with_angle(0 .. 45).output("lvpwell_angle", "ACUTE : non 45 degree angle lvpwell")
+    
+    logger.info("Executing rule dualgate_OFFGRID")
+    dualgate.ongrid(0.005).output("dualgate_OFFGRID", "OFFGRID : OFFGRID vertex on dualgate")
+    dualgate.with_angle(0 .. 45).output("dualgate_angle", "ACUTE : non 45 degree angle dualgate")
+    
+    logger.info("Executing rule poly2_OFFGRID")
+    poly2.ongrid(0.005).output("poly2_OFFGRID", "OFFGRID : OFFGRID vertex on poly2")
+    poly2.with_angle(0 .. 45).output("poly2_angle", "ACUTE : non 45 degree angle poly2")
+    
+    logger.info("Executing rule nplus_OFFGRID")
+    nplus.ongrid(0.005).output("nplus_OFFGRID", "OFFGRID : OFFGRID vertex on nplus")
+    nplus.with_angle(0 .. 45).output("nplus_angle", "ACUTE : non 45 degree angle nplus")
+    
+    logger.info("Executing rule pplus_OFFGRID")
+    pplus.ongrid(0.005).output("pplus_OFFGRID", "OFFGRID : OFFGRID vertex on pplus")
+    pplus.with_angle(0 .. 45).output("pplus_angle", "ACUTE : non 45 degree angle pplus")
+    
+    logger.info("Executing rule sab_OFFGRID")
+    sab.ongrid(0.005).output("sab_OFFGRID", "OFFGRID : OFFGRID vertex on sab")
+    sab.with_angle(0 .. 45).output("sab_angle", "ACUTE : non 45 degree angle sab")
+    
+    logger.info("Executing rule esd_OFFGRID")
+    esd.ongrid(0.005).output("esd_OFFGRID", "OFFGRID : OFFGRID vertex on esd")
+    esd.with_angle(0 .. 45).output("esd_angle", "ACUTE : non 45 degree angle esd")
+    
+    logger.info("Executing rule contact_OFFGRID")
+    contact.ongrid(0.005).output("contact_OFFGRID", "OFFGRID : OFFGRID vertex on contact")
+    contact.with_angle(0 .. 45).output("contact_angle", "ACUTE : non 45 degree angle contact")
+    
+    logger.info("Executing rule metal1_OFFGRID")
+    metal1.ongrid(0.005).output("metal1_OFFGRID", "OFFGRID : OFFGRID vertex on metal1")
+    metal1.with_angle(0 .. 45).output("metal1_angle", "ACUTE : non 45 degree angle metal1")
+    
+    logger.info("Executing rule via1_OFFGRID")
+    via1.ongrid(0.005).output("via1_OFFGRID", "OFFGRID : OFFGRID vertex on via1")
+    via1.with_angle(0 .. 45).output("via1_angle", "ACUTE : non 45 degree angle via1")
+    
+    logger.info("Executing rule metal2_OFFGRID")
+    metal2.ongrid(0.005).output("metal2_OFFGRID", "OFFGRID : OFFGRID vertex on metal2")
+    metal2.with_angle(0 .. 45).output("metal2_angle", "ACUTE : non 45 degree angle metal2")
+    
+    if METAL_LEVEL == "3LM" || METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        logger.info("Executing rule via2_OFFGRID")
+        via2.ongrid(0.005).output("via2_OFFGRID", "OFFGRID : OFFGRID vertex on via2")
+        via2.with_angle(0 .. 45).output("via2_angle", "ACUTE : non 45 degree angle via2")
+        
+        logger.info("Executing rule metal3_OFFGRID")
+        metal3.ongrid(0.005).output("metal3_OFFGRID", "OFFGRID : OFFGRID vertex on metal3")
+        metal3.with_angle(0 .. 45).output("metal3_angle", "ACUTE : non 45 degree angle metal3")
+        
+        if METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+            logger.info("Executing rule via3_OFFGRID")
+            via3.ongrid(0.005).output("via3_OFFGRID", "OFFGRID : OFFGRID vertex on via3")
+            via3.with_angle(0 .. 45).output("via3_angle", "ACUTE : non 45 degree angle via3")
+            
+            logger.info("Executing rule metal4_OFFGRID")
+            metal4.ongrid(0.005).output("metal4_OFFGRID", "OFFGRID : OFFGRID vertex on metal4")
+            metal4.with_angle(0 .. 45).output("metal4_angle", "ACUTE : non 45 degree angle metal4")
+            
+            if METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+                logger.info("Executing rule via4_OFFGRID")
+                via4.ongrid(0.005).output("via4_OFFGRID", "OFFGRID : OFFGRID vertex on via4")
+                via4.with_angle(0 .. 45).output("via4_angle", "ACUTE : non 45 degree angle via4")
+                
+                logger.info("Executing rule metal5_OFFGRID")
+                metal5.ongrid(0.005).output("metal5_OFFGRID", "OFFGRID : OFFGRID vertex on metal5")
+                metal5.with_angle(0 .. 45).output("metal5_angle", "ACUTE : non 45 degree angle metal5")
+
+                if METAL_LEVEL == "6LM"
+                    logger.info("Executing rule via5_OFFGRID")
+                    via5.ongrid(0.005).output("via5_OFFGRID", "OFFGRID : OFFGRID vertex on via5")
+                    via5.with_angle(0 .. 45).output("via5_angle", "ACUTE : non 45 degree angle via5")
+                    
+                    logger.info("Executing rule metaltop_OFFGRID")
+                    metaltop.ongrid(0.005).output("metaltop_OFFGRID", "OFFGRID : OFFGRID vertex on metaltop")
+                    metaltop.with_angle(0 .. 45).output("metaltop_angle", "ACUTE : non 45 degree angle metaltop")
+                end
+            end
+        end
+    end
+    
+    logger.info("Executing rule pad_OFFGRID")
+    pad.ongrid(0.005).output("pad_OFFGRID", "OFFGRID : OFFGRID vertex on pad")
+    pad.with_angle(0 .. 45).output("pad_angle", "ACUTE : non 45 degree angle pad")
+    
+    logger.info("Executing rule resistor_OFFGRID")
+    resistor.ongrid(0.005).output("resistor_OFFGRID", "OFFGRID : OFFGRID vertex on resistor")
+    resistor.with_angle(0 .. 45).output("resistor_angle", "ACUTE : non 45 degree angle resistor")
+    
+    logger.info("Executing rule fhres_OFFGRID")
+    fhres.ongrid(0.005).output("fhres_OFFGRID", "OFFGRID : OFFGRID vertex on fhres")
+    fhres.with_angle(0 .. 45).output("fhres_angle", "ACUTE : non 45 degree angle fhres")
+    
+    logger.info("Executing rule fusetop_OFFGRID")
+    fusetop.ongrid(0.005).output("fusetop_OFFGRID", "OFFGRID : OFFGRID vertex on fusetop")
+    fusetop.with_angle(0 .. 45).output("fusetop_angle", "ACUTE : non 45 degree angle fusetop")
+    
+    logger.info("Executing rule fusewindow_d_OFFGRID")
+    fusewindow_d.ongrid(0.005).output("fusewindow_d_OFFGRID", "OFFGRID : OFFGRID vertex on fusewindow_d")
+    fusewindow_d.with_angle(0 .. 45).output("fusewindow_d_angle", "ACUTE : non 45 degree angle fusewindow_d")
+    
+    logger.info("Executing rule polyfuse_OFFGRID")
+    polyfuse.ongrid(0.005).output("polyfuse_OFFGRID", "OFFGRID : OFFGRID vertex on polyfuse")
+    polyfuse.with_angle(0 .. 45).output("polyfuse_angle", "ACUTE : non 45 degree angle polyfuse")
+    
+    logger.info("Executing rule mvsd_OFFGRID")
+    mvsd.ongrid(0.005).output("mvsd_OFFGRID", "OFFGRID : OFFGRID vertex on mvsd")
+    mvsd.with_angle(0 .. 45).output("mvsd_angle", "ACUTE : non 45 degree angle mvsd")
+    
+    logger.info("Executing rule mvpsd_OFFGRID")
+    mvpsd.ongrid(0.005).output("mvpsd_OFFGRID", "OFFGRID : OFFGRID vertex on mvpsd")
+    mvpsd.with_angle(0 .. 45).output("mvpsd_angle", "ACUTE : non 45 degree angle mvpsd")
+    
+    logger.info("Executing rule nat_OFFGRID")
+    nat.ongrid(0.005).output("nat_OFFGRID", "OFFGRID : OFFGRID vertex on nat")
+    nat.with_angle(0 .. 45).output("nat_angle", "ACUTE : non 45 degree angle nat")
+    
+    logger.info("Executing rule comp_dummy_OFFGRID")
+    comp_dummy.ongrid(0.005).output("comp_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on comp_dummy")
+    comp_dummy.with_angle(0 .. 45).output("comp_dummy_angle", "ACUTE : non 45 degree angle comp_dummy")
+    
+    logger.info("Executing rule poly2_dummy_OFFGRID")
+    poly2_dummy.ongrid(0.005).output("poly2_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on poly2_dummy")
+    poly2_dummy.with_angle(0 .. 45).output("poly2_dummy_angle", "ACUTE : non 45 degree angle poly2_dummy")
+    
+    logger.info("Executing rule metal1_dummy_OFFGRID")
+    metal1_dummy.ongrid(0.005).output("metal1_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metal1_dummy")
+    metal1_dummy.with_angle(0 .. 45).output("metal1_dummy_angle", "ACUTE : non 45 degree angle metal1_dummy")
+
+    logger.info("Executing rule metal1_label_OFFGRID")
+    metal1_label.ongrid(0.005).output("metal1_label_OFFGRID", "OFFGRID : OFFGRID vertex on metal1_label")
+    metal1_label.with_angle(0 .. 45).output("metal1_label_angle", "ACUTE : non 45 degree angle metal1_label")
+
+    logger.info("Executing rule metal1_slot_OFFGRID")
+    metal1_slot.ongrid(0.005).output("metal1_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metal1_slot")
+    metal1_slot.with_angle(0 .. 45).output("metal1_slot_angle", "ACUTE : non 45 degree angle metal1_slot")
+
+    logger.info("Executing rule metal1_blk_OFFGRID")
+    metal1_blk.ongrid(0.005).output("metal1_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metal1_blk")
+    metal1_blk.with_angle(0 .. 45).output("metal1_blk_angle", "ACUTE : non 45 degree angle metal1_blk")
+    
+    logger.info("Executing rule metal2_dummy_OFFGRID")
+    metal2_dummy.ongrid(0.005).output("metal2_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metal2_dummy")
+    metal2_dummy.with_angle(0 .. 45).output("metal2_dummy_angle", "ACUTE : non 45 degree angle metal2_dummy")
+
+    logger.info("Executing rule metal2_label_OFFGRID")
+    metal2_label.ongrid(0.005).output("metal2_label_OFFGRID", "OFFGRID : OFFGRID vertex on metal2_label")
+    metal2_label.with_angle(0 .. 45).output("metal2_label_angle", "ACUTE : non 45 degree angle metal2_label")
+
+    logger.info("Executing rule metal2_slot_OFFGRID")
+    metal2_slot.ongrid(0.005).output("metal2_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metal2_slot")
+    metal2_slot.with_angle(0 .. 45).output("metal2_slot_angle", "ACUTE : non 45 degree angle metal2_slot")
+
+    logger.info("Executing rule metal2_blk_OFFGRID")
+    metal2_blk.ongrid(0.005).output("metal2_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metal2_blk")
+    metal2_blk.with_angle(0 .. 45).output("metal2_blk_angle", "ACUTE : non 45 degree angle metal2_blk")
+    
+    if METAL_LEVEL == "3LM" || METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        logger.info("Executing rule metal3_dummy_OFFGRID")
+        metal3_dummy.ongrid(0.005).output("metal3_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metal3_dummy")
+        metal3_dummy.with_angle(0 .. 45).output("metal3_dummy_angle", "ACUTE : non 45 degree angle metal3_dummy")
+
+        logger.info("Executing rule metal3_label_OFFGRID")
+        metal3_label.ongrid(0.005).output("metal3_label_OFFGRID", "OFFGRID : OFFGRID vertex on metal3_label")
+        metal3_label.with_angle(0 .. 45).output("metal3_label_angle", "ACUTE : non 45 degree angle metal3_label")
+
+        logger.info("Executing rule metal3_slot_OFFGRID")
+        metal3_slot.ongrid(0.005).output("metal3_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metal3_slot")
+        metal3_slot.with_angle(0 .. 45).output("metal3_slot_angle", "ACUTE : non 45 degree angle metal3_slot")
+
+        logger.info("Executing rule metal3_blk_OFFGRID")
+        metal3_blk.ongrid(0.005).output("metal3_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metal3_blk")
+        metal3_blk.with_angle(0 .. 45).output("metal3_blk_angle", "ACUTE : non 45 degree angle metal3_blk")
+        
+        if METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+            logger.info("Executing rule metal4_dummy_OFFGRID")
+            metal4_dummy.ongrid(0.005).output("metal4_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metal4_dummy")
+            metal4_dummy.with_angle(0 .. 45).output("metal4_dummy_angle", "ACUTE : non 45 degree angle metal4_dummy")
+
+            logger.info("Executing rule metal4_label_OFFGRID")
+            metal4_label.ongrid(0.005).output("metal4_label_OFFGRID", "OFFGRID : OFFGRID vertex on metal4_label")
+            metal4_label.with_angle(0 .. 45).output("metal4_label_angle", "ACUTE : non 45 degree angle metal4_label")
+
+            logger.info("Executing rule metal4_slot_OFFGRID")
+            metal4_slot.ongrid(0.005).output("metal4_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metal4_slot")
+            metal4_slot.with_angle(0 .. 45).output("metal4_slot_angle", "ACUTE : non 45 degree angle metal4_slot")
+
+            logger.info("Executing rule metal4_blk_OFFGRID")
+            metal4_blk.ongrid(0.005).output("metal4_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metal4_blk")
+            metal4_blk.with_angle(0 .. 45).output("metal4_blk_angle", "ACUTE : non 45 degree angle metal4_blk")
+            
+            if METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+                logger.info("Executing rule metal5_dummy_OFFGRID")
+                metal5_dummy.ongrid(0.005).output("metal5_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metal5_dummy")
+                metal5_dummy.with_angle(0 .. 45).output("metal5_dummy_angle", "ACUTE : non 45 degree angle metal5_dummy")
+
+                logger.info("Executing rule metal5_label_OFFGRID")
+                metal5_label.ongrid(0.005).output("metal5_label_OFFGRID", "OFFGRID : OFFGRID vertex on metal5_label")
+                metal5_label.with_angle(0 .. 45).output("metal5_label_angle", "ACUTE : non 45 degree angle metal5_label")
+
+                logger.info("Executing rule metal5_slot_OFFGRID")
+                metal5_slot.ongrid(0.005).output("metal5_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metal5_slot")
+                metal5_slot.with_angle(0 .. 45).output("metal5_slot_angle", "ACUTE : non 45 degree angle metal5_slot")
+
+                logger.info("Executing rule metal5_blk_OFFGRID")
+                metal5_blk.ongrid(0.005).output("metal5_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metal5_blk")
+                metal5_blk.with_angle(0 .. 45).output("metal5_blk_angle", "ACUTE : non 45 degree angle metal5_blk")
+            
+                
+                if METAL_LEVEL == "6LM"
+                    logger.info("Executing rule metaltop_dummy_OFFGRID")
+                    metaltop_dummy.ongrid(0.005).output("metaltop_dummy_OFFGRID", "OFFGRID : OFFGRID vertex on metaltop_dummy")
+                    metaltop_dummy.with_angle(0 .. 45).output("metaltop_dummy_angle", "ACUTE : non 45 degree angle metaltop_dummy")
+
+                    logger.info("Executing rule metaltop_label_OFFGRID")
+                    metaltop_label.ongrid(0.005).output("metaltop_label_OFFGRID", "OFFGRID : OFFGRID vertex on metaltop_label")
+                    metaltop_label.with_angle(0 .. 45).output("metaltop_label_angle", "ACUTE : non 45 degree angle metaltop_label")
+
+                    logger.info("Executing rule metaltop_slot_OFFGRID")
+                    metaltop_slot.ongrid(0.005).output("metaltop_slot_OFFGRID", "OFFGRID : OFFGRID vertex on metaltop_slot")
+                    metaltop_slot.with_angle(0 .. 45).output("metaltop_slot_angle", "ACUTE : non 45 degree angle metaltop_slot")
+
+                    logger.info("Executing rule metalt_blk_OFFGRID")
+                    metalt_blk.ongrid(0.005).output("metalt_blk_OFFGRID", "OFFGRID : OFFGRID vertex on metalt_blk")
+                    metalt_blk.with_angle(0 .. 45).output("metalt_blk_angle", "ACUTE : non 45 degree angle metalt_blk")
+                end
+            end
+        end
+    end
+    
+    logger.info("Executing rule comp_label_OFFGRID")
+    comp_label.ongrid(0.005).output("comp_label_OFFGRID", "OFFGRID : OFFGRID vertex on comp_label")
+    comp_label.with_angle(0 .. 45).output("comp_label_angle", "ACUTE : non 45 degree angle comp_label")
+    
+    logger.info("Executing rule poly2_label_OFFGRID")
+    poly2_label.ongrid(0.005).output("poly2_label_OFFGRID", "OFFGRID : OFFGRID vertex on poly2_label")
+    poly2_label.with_angle(0 .. 45).output("poly2_label_angle", "ACUTE : non 45 degree angle poly2_label")
+    
+    logger.info("Executing rule ubmpperi_OFFGRID")
+    ubmpperi.ongrid(0.005).output("ubmpperi_OFFGRID", "OFFGRID : OFFGRID vertex on ubmpperi")
+    ubmpperi.with_angle(0 .. 45).output("ubmpperi_angle", "ACUTE : non 45 degree angle ubmpperi")
+    
+    logger.info("Executing rule ubmparray_OFFGRID")
+    ubmparray.ongrid(0.005).output("ubmparray_OFFGRID", "OFFGRID : OFFGRID vertex on ubmparray")
+    ubmparray.with_angle(0 .. 45).output("ubmparray_angle", "ACUTE : non 45 degree angle ubmparray")
+    
+    logger.info("Executing rule ubmeplate_OFFGRID")
+    ubmeplate.ongrid(0.005).output("ubmeplate_OFFGRID", "OFFGRID : OFFGRID vertex on ubmeplate")
+    ubmeplate.with_angle(0 .. 45).output("ubmeplate_angle", "ACUTE : non 45 degree angle ubmeplate")
+    
+    logger.info("Executing rule schottky_diode_OFFGRID")
+    schottky_diode.ongrid(0.005).output("schottky_diode_OFFGRID", "OFFGRID : OFFGRID vertex on schottky_diode")
+    schottky_diode.with_angle(0 .. 45).output("schottky_diode_angle", "ACUTE : non 45 degree angle schottky_diode")
+    
+    logger.info("Executing rule zener_OFFGRID")
+    zener.ongrid(0.005).output("zener_OFFGRID", "OFFGRID : OFFGRID vertex on zener")
+    zener.with_angle(0 .. 45).output("zener_angle", "ACUTE : non 45 degree angle zener")
+    
+    logger.info("Executing rule res_mk_OFFGRID")
+    res_mk.ongrid(0.005).output("res_mk_OFFGRID", "OFFGRID : OFFGRID vertex on res_mk")
+    res_mk.with_angle(0 .. 45).output("res_mk_angle", "ACUTE : non 45 degree angle res_mk")
+    
+    logger.info("Executing rule opc_drc_OFFGRID")
+    opc_drc.ongrid(0.005).output("opc_drc_OFFGRID", "OFFGRID : OFFGRID vertex on opc_drc")
+    opc_drc.with_angle(0 .. 45).output("opc_drc_angle", "ACUTE : non 45 degree angle opc_drc")
+    
+    logger.info("Executing rule ndmy_OFFGRID")
+    ndmy.ongrid(0.005).output("ndmy_OFFGRID", "OFFGRID : OFFGRID vertex on ndmy")
+    ndmy.with_angle(0 .. 45).output("ndmy_angle", "ACUTE : non 45 degree angle ndmy")
+    
+    logger.info("Executing rule pmndmy_OFFGRID")
+    pmndmy.ongrid(0.005).output("pmndmy_OFFGRID", "OFFGRID : OFFGRID vertex on pmndmy")
+    pmndmy.with_angle(0 .. 45).output("pmndmy_angle", "ACUTE : non 45 degree angle pmndmy")
+    
+    logger.info("Executing rule v5_xtor_OFFGRID")
+    v5_xtor.ongrid(0.005).output("v5_xtor_OFFGRID", "OFFGRID : OFFGRID vertex on v5_xtor")
+    v5_xtor.with_angle(0 .. 45).output("v5_xtor_angle", "ACUTE : non 45 degree angle v5_xtor")
+    
+    logger.info("Executing rule cap_mk_OFFGRID")
+    cap_mk.ongrid(0.005).output("cap_mk_OFFGRID", "OFFGRID : OFFGRID vertex on cap_mk")
+    cap_mk.with_angle(0 .. 45).output("cap_mk_angle", "ACUTE : non 45 degree angle cap_mk")
+    
+    logger.info("Executing rule mos_cap_mk_OFFGRID")
+    mos_cap_mk.ongrid(0.005).output("mos_cap_mk_OFFGRID", "OFFGRID : OFFGRID vertex on mos_cap_mk")
+    mos_cap_mk.with_angle(0 .. 45).output("mos_cap_mk_angle", "ACUTE : non 45 degree angle mos_cap_mk")
+    
+    logger.info("Executing rule ind_mk_OFFGRID")
+    ind_mk.ongrid(0.005).output("ind_mk_OFFGRID", "OFFGRID : OFFGRID vertex on ind_mk")
+    ind_mk.with_angle(0 .. 45).output("ind_mk_angle", "ACUTE : non 45 degree angle ind_mk")
+    
+    logger.info("Executing rule diode_mk_OFFGRID")
+    diode_mk.ongrid(0.005).output("diode_mk_OFFGRID", "OFFGRID : OFFGRID vertex on diode_mk")
+    diode_mk.with_angle(0 .. 45).output("diode_mk_angle", "ACUTE : non 45 degree angle diode_mk")
+    
+    logger.info("Executing rule drc_bjt_OFFGRID")
+    drc_bjt.ongrid(0.005).output("drc_bjt_OFFGRID", "OFFGRID : OFFGRID vertex on drc_bjt")
+    drc_bjt.with_angle(0 .. 45).output("drc_bjt_angle", "ACUTE : non 45 degree angle drc_bjt")
+    
+    logger.info("Executing rule lvs_bjt_OFFGRID")
+    lvs_bjt.ongrid(0.005).output("lvs_bjt_OFFGRID", "OFFGRID : OFFGRID vertex on lvs_bjt")
+    lvs_bjt.with_angle(0 .. 45).output("lvs_bjt_angle", "ACUTE : non 45 degree angle lvs_bjt")
+    
+    logger.info("Executing rule mim_l_mk_OFFGRID")
+    mim_l_mk.ongrid(0.005).output("mim_l_mk_OFFGRID", "OFFGRID : OFFGRID vertex on mim_l_mk")
+    mim_l_mk.with_angle(0 .. 45).output("mim_l_mk_angle", "ACUTE : non 45 degree angle mim_l_mk")
+    
+    logger.info("Executing rule latchup_mk_OFFGRID")
+    latchup_mk.ongrid(0.005).output("latchup_mk_OFFGRID", "OFFGRID : OFFGRID vertex on latchup_mk")
+    latchup_mk.with_angle(0 .. 45).output("latchup_mk_angle", "ACUTE : non 45 degree angle latchup_mk")
+    
+    logger.info("Executing rule guard_ring_mk_OFFGRID")
+    guard_ring_mk.ongrid(0.005).output("guard_ring_mk_OFFGRID", "OFFGRID : OFFGRID vertex on guard_ring_mk")
+    guard_ring_mk.with_angle(0 .. 45).output("guard_ring_mk_angle", "ACUTE : non 45 degree angle guard_ring_mk")
+    
+    logger.info("Executing rule otp_mk_OFFGRID")
+    otp_mk.ongrid(0.005).output("otp_mk_OFFGRID", "OFFGRID : OFFGRID vertex on otp_mk")
+    otp_mk.with_angle(0 .. 45).output("otp_mk_angle", "ACUTE : non 45 degree angle otp_mk")
+    
+    logger.info("Executing rule mtpmark_OFFGRID")
+    mtpmark.ongrid(0.005).output("mtpmark_OFFGRID", "OFFGRID : OFFGRID vertex on mtpmark")
+    mtpmark.with_angle(0 .. 45).output("mtpmark_angle", "ACUTE : non 45 degree angle mtpmark")
+    
+    logger.info("Executing rule neo_ee_mk_OFFGRID")
+    neo_ee_mk.ongrid(0.005).output("neo_ee_mk_OFFGRID", "OFFGRID : OFFGRID vertex on neo_ee_mk")
+    neo_ee_mk.with_angle(0 .. 45).output("neo_ee_mk_angle", "ACUTE : non 45 degree angle neo_ee_mk")
+    
+    logger.info("Executing rule sramcore_OFFGRID")
+    sramcore.ongrid(0.005).output("sramcore_OFFGRID", "OFFGRID : OFFGRID vertex on sramcore")
+    sramcore.with_angle(0 .. 45).output("sramcore_angle", "ACUTE : non 45 degree angle sramcore")
+    
+    logger.info("Executing rule lvs_rf_OFFGRID")
+    lvs_rf.ongrid(0.005).output("lvs_rf_OFFGRID", "OFFGRID : OFFGRID vertex on lvs_rf")
+    lvs_rf.with_angle(0 .. 45).output("lvs_rf_angle", "ACUTE : non 45 degree angle lvs_rf")
+    
+    logger.info("Executing rule lvs_drain_OFFGRID")
+    lvs_drain.ongrid(0.005).output("lvs_drain_OFFGRID", "OFFGRID : OFFGRID vertex on lvs_drain")
+    lvs_drain.with_angle(0 .. 45).output("lvs_drain_angle", "ACUTE : non 45 degree angle lvs_drain")
+    
+    logger.info("Executing rule ind_mk_OFFGRID")
+    ind_mk.ongrid(0.005).output("ind_mk_OFFGRID", "OFFGRID : OFFGRID vertex on ind_mk")
+    ind_mk.with_angle(0 .. 45).output("ind_mk_angle", "ACUTE : non 45 degree angle ind_mk")
+    
+    logger.info("Executing rule hvpolyrs_OFFGRID")
+    hvpolyrs.ongrid(0.005).output("hvpolyrs_OFFGRID", "OFFGRID : OFFGRID vertex on hvpolyrs")
+    hvpolyrs.with_angle(0 .. 45).output("hvpolyrs_angle", "ACUTE : non 45 degree angle hvpolyrs")
+    
+    logger.info("Executing rule lvs_io_OFFGRID")
+    lvs_io.ongrid(0.005).output("lvs_io_OFFGRID", "OFFGRID : OFFGRID vertex on lvs_io")
+    lvs_io.with_angle(0 .. 45).output("lvs_io_angle", "ACUTE : non 45 degree angle lvs_io")
+    
+    logger.info("Executing rule probe_mk_OFFGRID")
+    probe_mk.ongrid(0.005).output("probe_mk_OFFGRID", "OFFGRID : OFFGRID vertex on probe_mk")
+    probe_mk.with_angle(0 .. 45).output("probe_mk_angle", "ACUTE : non 45 degree angle probe_mk")
+    
+    logger.info("Executing rule esd_mk_OFFGRID")
+    esd_mk.ongrid(0.005).output("esd_mk_OFFGRID", "OFFGRID : OFFGRID vertex on esd_mk")
+    esd_mk.with_angle(0 .. 45).output("esd_mk_angle", "ACUTE : non 45 degree angle esd_mk")
+    
+    logger.info("Executing rule lvs_source_OFFGRID")
+    lvs_source.ongrid(0.005).output("lvs_source_OFFGRID", "OFFGRID : OFFGRID vertex on lvs_source")
+    lvs_source.with_angle(0 .. 45).output("lvs_source_angle", "ACUTE : non 45 degree angle lvs_source")
+    
+    logger.info("Executing rule well_diode_mk_OFFGRID")
+    well_diode_mk.ongrid(0.005).output("well_diode_mk_OFFGRID", "OFFGRID : OFFGRID vertex on well_diode_mk")
+    well_diode_mk.with_angle(0 .. 45).output("well_diode_mk_angle", "ACUTE : non 45 degree angle well_diode_mk")
+    
+    logger.info("Executing rule ldmos_xtor_OFFGRID")
+    ldmos_xtor.ongrid(0.005).output("ldmos_xtor_OFFGRID", "OFFGRID : OFFGRID vertex on ldmos_xtor")
+    ldmos_xtor.with_angle(0 .. 45).output("ldmos_xtor_angle", "ACUTE : non 45 degree angle ldmos_xtor")
+    
+    logger.info("Executing rule plfuse_OFFGRID")
+    plfuse.ongrid(0.005).output("plfuse_OFFGRID", "OFFGRID : OFFGRID vertex on plfuse")
+    plfuse.with_angle(0 .. 45).output("plfuse_angle", "ACUTE : non 45 degree angle plfuse")
+    
+    logger.info("Executing rule efuse_mk_OFFGRID")
+    efuse_mk.ongrid(0.005).output("efuse_mk_OFFGRID", "OFFGRID : OFFGRID vertex on efuse_mk")
+    efuse_mk.with_angle(0 .. 45).output("efuse_mk_angle", "ACUTE : non 45 degree angle efuse_mk")
+    
+    logger.info("Executing rule mcell_feol_mk_OFFGRID")
+    mcell_feol_mk.ongrid(0.005).output("mcell_feol_mk_OFFGRID", "OFFGRID : OFFGRID vertex on mcell_feol_mk")
+    mcell_feol_mk.with_angle(0 .. 45).output("mcell_feol_mk_angle", "ACUTE : non 45 degree angle mcell_feol_mk")
+    
+    logger.info("Executing rule ymtp_mk_OFFGRID")
+    ymtp_mk.ongrid(0.005).output("ymtp_mk_OFFGRID", "OFFGRID : OFFGRID vertex on ymtp_mk")
+    ymtp_mk.with_angle(0 .. 45).output("ymtp_mk_angle", "ACUTE : non 45 degree angle ymtp_mk")
+    
+    logger.info("Executing rule dev_wf_mk_OFFGRID")
+    dev_wf_mk.ongrid(0.005).output("dev_wf_mk_OFFGRID", "OFFGRID : OFFGRID vertex on dev_wf_mk")
+    dev_wf_mk.with_angle(0 .. 45).output("dev_wf_mk_angle", "ACUTE : non 45 degree angle dev_wf_mk")
+    
+    logger.info("Executing rule pr_bndry_OFFGRID")
+    pr_bndry.ongrid(0.005).output("pr_bndry_OFFGRID", "OFFGRID : OFFGRID vertex on pr_bndry")
+    pr_bndry.with_angle(0 .. 45).output("pr_bndry_angle", "ACUTE : non 45 degree angle pr_bndry")
+    
+    logger.info("Executing rule mdiode_OFFGRID")
+    mdiode.ongrid(0.005).output("mdiode_OFFGRID", "OFFGRID : OFFGRID vertex on mdiode")
+    mdiode.with_angle(0 .. 45).output("mdiode_angle", "ACUTE : non 45 degree angle mdiode")
+    
+    logger.info("Executing rule metal1_res_OFFGRID")
+    metal1_res.ongrid(0.005).output("metal1_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal1_res")
+    metal1_res.with_angle(0 .. 45).output("metal1_res_angle", "ACUTE : non 45 degree angle metal1_res")
+    
+    logger.info("Executing rule metal2_res_OFFGRID")
+    metal2_res.ongrid(0.005).output("metal2_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal2_res")
+    metal2_res.with_angle(0 .. 45).output("metal2_res_angle", "ACUTE : non 45 degree angle metal2_res")
+    
+    logger.info("Executing rule metal3_res_OFFGRID")
+    metal3_res.ongrid(0.005).output("metal3_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal3_res")
+    metal3_res.with_angle(0 .. 45).output("metal3_res_angle", "ACUTE : non 45 degree angle metal3_res")
+    
+    logger.info("Executing rule metal4_res_OFFGRID")
+    metal4_res.ongrid(0.005).output("metal4_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal4_res")
+    metal4_res.with_angle(0 .. 45).output("metal4_res_angle", "ACUTE : non 45 degree angle metal4_res")
+    
+    logger.info("Executing rule metal5_res_OFFGRID")
+    metal5_res.ongrid(0.005).output("metal5_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal5_res")
+    metal5_res.with_angle(0 .. 45).output("metal5_res_angle", "ACUTE : non 45 degree angle metal5_res")
+    
+    logger.info("Executing rule metal6_res_OFFGRID")
+    metal6_res.ongrid(0.005).output("metal6_res_OFFGRID", "OFFGRID : OFFGRID vertex on metal6_res")
+    metal6_res.with_angle(0 .. 45).output("metal6_res_angle", "ACUTE : non 45 degree angle metal6_res")
+    
+    logger.info("Executing rule border_OFFGRID")
+    border.ongrid(0.005).output("border_OFFGRID", "OFFGRID : OFFGRID vertex on border")
+    border.with_angle(0 .. 45).output("border_angle", "ACUTE : non 45 degree angle border")
+    
+end #OFFGRID-ANGLES
+    ################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/hres.drc b/tapeout/outputs/drc/hres.drc
new file mode 100644
index 0000000..07e146d
--- /dev/null
+++ b/tapeout/outputs/drc/hres.drc
@@ -0,0 +1,1194 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+    #================================================
+    #----------------H POLY RESISTOR-----------------
+    #================================================
+
+    hres_poly = poly2.interacting(pplus).interacting(sab).interacting(res_mk).interacting(resistor)
+    hres1_poly = poly2.interacting(pplus).interacting(sab).interacting(res_mk)
+    # Rule HRES.1: Minimum space. Note : Merge if the spacing is less than 0.4 um. is 0.4µm
+    logger.info("Executing rule HRES.1")
+    hres1_l1  = resistor.interacting(hres1_poly).space(0.4.um, euclidian).polygons(0.001)
+    hres1_l1.output("HRES.1", "HRES.1 : Minimum space. Note : Merge if the spacing is less than 0.4 um. : 0.4µm")
+    hres1_l1.forget
+
+    # Rule HRES.2: Minimum width of Poly2 resistor. is 1µm
+    logger.info("Executing rule HRES.2")
+    hres2_l1  = hres_poly.width(1.um, euclidian).polygons(0.001)
+    hres2_l1.output("HRES.2", "HRES.2 : Minimum width of Poly2 resistor. : 1µm")
+    hres2_l1.forget
+
+    # Rule HRES.3: Minimum space between Poly2 resistors. is 0.4µm
+    logger.info("Executing rule HRES.3")
+    hres3_l1  = hres_poly.space(0.4.um, euclidian).polygons(0.001)
+    hres3_l1.output("HRES.3", "HRES.3 : Minimum space between Poly2 resistors. : 0.4µm")
+    hres3_l1.forget
+
+    # Rule HRES.4: Minimum RESISTOR overlap of Poly2 resistor. is 0.4µm
+    logger.info("Executing rule HRES.4")
+    hres4_l1 = resistor.enclosing(hres_poly, 0.4.um, euclidian).polygons(0.001)
+    hres4_l2 = hres_poly.not_outside(resistor).not(resistor)
+    hres4_l  = hres4_l1.or(hres4_l2)
+    hres4_l.output("HRES.4", "HRES.4 : Minimum RESISTOR overlap of Poly2 resistor. : 0.4µm")
+    hres4_l1.forget
+    hres4_l2.forget
+    hres4_l.forget
+
+    # Rule HRES.5: Minimum RESISTOR space to unrelated Poly2. is 0.3µm
+    logger.info("Executing rule HRES.5")
+    hres5_l1  = resistor.interacting(hres1_poly).separation(poly2.not_interacting(sab), 0.3.um, euclidian).polygons(0.001)
+    hres5_l1.output("HRES.5", "HRES.5 : Minimum RESISTOR space to unrelated Poly2. : 0.3µm")
+    hres5_l1.forget
+
+    # Rule HRES.6: Minimum RESISTOR space to COMP.
+    logger.info("Executing rule HRES.6")
+    hres6_l1 = resistor.interacting(hres1_poly).separation(comp, 0.3.um, euclidian).polygons(0.001).or(comp.not_outside(resistor.interacting(poly2.interacting(pplus).interacting(sab).interacting(res_mk))))
+    hres6_l1.output("HRES.6", "HRES.6 : Minimum RESISTOR space to COMP.")
+    hres6_l1.forget
+
+    hres1_poly.forget
+
+    # Rule HRES.7: Minimum Pplus overlap of contact on Poly2 resistor. is 0.2µm
+    logger.info("Executing rule HRES.7")
+    hres7_l1 = pplus.enclosing(contact.inside(hres_poly), 0.2.um, euclidian).polygons(0.001)
+    hres7_l2 = contact.inside(hres_poly).not_outside(pplus).not(pplus)
+    hres7_l  = hres7_l1.or(hres7_l2)
+    hres7_l.output("HRES.7", "HRES.7 : Minimum Pplus overlap of contact on Poly2 resistor. : 0.2µm")
+    hres7_l1.forget
+    hres7_l2.forget
+    hres7_l.forget
+
+    # Rule HRES.8: Space from salicide block to contact on Poly2 resistor.
+    logger.info("Executing rule HRES.8")
+    hres8_l1 = contact.inside(hres_poly).separation(sab,0.22.um).polygons(0.001).or(contact.inside(hres_poly).interacting(sab))
+    hres8_l1.output("HRES.8", "HRES.8 : Space from salicide block to contact on Poly2 resistor.")
+    hres8_l1.forget
+
+    hres9_sab             = sab.interacting(pplus).interacting(res_mk).interacting(resistor)
+    hres9_clear_sab       = hres9_sab.not(hres_poly)
+    hres9_bad_inside_edge = hres9_sab.edges.inside_part(hres_poly).extended(0,0,0.001,0.001).interacting(hres9_clear_sab, 1, 1)
+    hres9_sab_hole        = hres9_sab.holes.and(hres_poly)
+    # Rule HRES.9: Minimum salicide block overlap of Poly2 resistor in width direction.
+    logger.info("Executing rule HRES.9")
+    hres9_l1 = hres9_sab.enclosing(hres_poly, 0.28.um, euclidian).polygons(0.001).or(hres9_bad_inside_edge).or(hres9_sab_hole)
+    hres9_l1.output("HRES.9", "HRES.9 : Minimum salicide block overlap of Poly2 resistor in width direction.")
+    hres9_l1.forget
+
+    hres9_sab.forget
+
+    hres9_clear_sab.forget
+
+    hres9_bad_inside_edge.forget
+
+    hres9_sab_hole.forget
+
+    pplus1_hres10 = pplus.and(sab).drc(width != 0.1.um)
+    pplus2_hres10 = pplus.not_overlapping(sab).edges
+    # Rule HRES.10: Minimum & maximum Pplus overlap of SAB.
+    logger.info("Executing rule HRES.10")
+    hres10_l1 = pplus1_hres10.or(pplus2_hres10).extended(0, 0, 0.001, 0.001).interacting(hres_poly)
+    hres10_l1.output("HRES.10", "HRES.10 : Minimum & maximum Pplus overlap of SAB.")
+    hres10_l1.forget
+
+    pplus1_hres10.forget
+
+    pplus2_hres10.forget
+
+    # rule HRES.11 is not a DRC check
+
+    mk_hres12a = res_mk.edges.not(poly2.not(pplus).and(sab).edges).inside_part(poly2)
+    # Rule HRES.12a: P type Poly2 resistor (high sheet rho) shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by Pplus space) and width covering the width of Poly2.
+    logger.info("Executing rule HRES.12a")
+    hres12a_l1 = res_mk.interacting(resistor).interacting(mk_hres12a)
+    hres12a_l1.output("HRES.12a", "HRES.12a : P type Poly2 resistor (high sheet rho) shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by Pplus space) and width covering the width of Poly2. ")
+    hres12a_l1.forget
+
+    mk_hres12a.forget
+
+    hres12b = res_mk.with_area(15000.01.um,nil).in(res_mk.interacting(res_mk.edges.with_length(80.01.um,nil)))
+    # Rule HRES.12b: If the size of single RES_MK mark layer is greater than 15000 um2 and both side (X and Y) are greater than 80 um. Then the minimum spacing to adjacent RES_MK layer. is 20µm
+    logger.info("Executing rule HRES.12b")
+    hres12b_l1 = res_mk.interacting(hres_poly).drc(separation(hres12b) < 20.um).polygons(0.001)
+    hres12b_l1.output("HRES.12b", "HRES.12b : If the size of single RES_MK mark layer is greater than 15000 um2 and both side (X and Y) are greater than 80 um. Then the minimum spacing to adjacent RES_MK layer. : 20µm")
+    hres12b_l1.forget
+
+    hres12b.forget
+
+    hres_poly.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/lres.drc b/tapeout/outputs/drc/lres.drc
new file mode 100644
index 0000000..5963c80
--- /dev/null
+++ b/tapeout/outputs/drc/lres.drc
@@ -0,0 +1,1155 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+    #================================================
+    #----------------N+ POLY RESISTOR----------------
+    #================================================
+
+    lres_poly = poly2.and(nplus).interacting(sab).interacting(res_mk)
+    # Rule LRES.1: Minimum width of Poly2 resistor. is 0.8µm
+    logger.info("Executing rule LRES.1")
+    lres1_l1  = lres_poly.width(0.8.um, euclidian).polygons(0.001)
+    lres1_l1.output("LRES.1", "LRES.1 : Minimum width of Poly2 resistor. : 0.8µm")
+    lres1_l1.forget
+
+    # Rule LRES.2: Minimum space between Poly2 resistors. is 0.4µm
+    logger.info("Executing rule LRES.2")
+    lres2_l1  = lres_poly.isolated(0.4.um, euclidian).polygons(0.001)
+    lres2_l1.output("LRES.2", "LRES.2 : Minimum space between Poly2 resistors. : 0.4µm")
+    lres2_l1.forget
+
+    # Rule LRES.3: Minimum space from Poly2 resistor to COMP.
+    logger.info("Executing rule LRES.3")
+    lres3_l1 = lres_poly.separation(comp, 0.6.um, euclidian).polygons(0.001).or(comp.not_outside(lres_poly))
+    lres3_l1.output("LRES.3", "LRES.3 : Minimum space from Poly2 resistor to COMP.")
+    lres3_l1.forget
+
+    # Rule LRES.4: Minimum space from Poly2 resistor to unrelated Poly2. is 0.6µm
+    logger.info("Executing rule LRES.4")
+    lres4_l1  = lres_poly.separation(poly2.not_interacting(sab), 0.6.um, euclidian).polygons(0.001)
+    lres4_l1.output("LRES.4", "LRES.4 : Minimum space from Poly2 resistor to unrelated Poly2. : 0.6µm")
+    lres4_l1.forget
+
+    # Rule LRES.5: Minimum Nplus implant overlap of Poly2 resistor. is 0.3µm
+    logger.info("Executing rule LRES.5")
+    lres5_l1 = nplus.enclosing(poly2.and(nplus).interacting(sab).interacting(res_mk), 0.3.um, euclidian).polygons(0.001)
+    lres5_l2 = poly2.and(nplus).interacting(sab).interacting(res_mk).not_outside(nplus).not(nplus)
+    lres5_l  = lres5_l1.or(lres5_l2)
+    lres5_l.output("LRES.5", "LRES.5 : Minimum Nplus implant overlap of Poly2 resistor. : 0.3µm")
+    lres5_l1.forget
+    lres5_l2.forget
+    lres5_l.forget
+
+    # Rule LRES.6: Minimum salicide block overlap of Poly2 resistor in width direction. is 0.28µm
+    logger.info("Executing rule LRES.6")
+    lres6_l1 = sab.enclosing(lres_poly,0.28.um).polygons(0.001)
+    lres6_l1.output("LRES.6", "LRES.6 : Minimum salicide block overlap of Poly2 resistor in width direction. : 0.28µm")
+    lres6_l1.forget
+
+    cont_lres7 = contact.inside(poly2.and(nplus).interacting(sab).interacting(res_mk))
+    # Rule LRES.7: Space from salicide block to contact on Poly2 resistor.
+    logger.info("Executing rule LRES.7")
+    lres7_l1 = cont_lres7.separation(sab,0.22.um).polygons(0.001).or(cont_lres7.interacting(sab))
+    lres7_l1.output("LRES.7", "LRES.7 : Space from salicide block to contact on Poly2 resistor.")
+    lres7_l1.forget
+
+    cont_lres7.forget
+
+    # rule LRES.8 is not a DRC check
+
+    mk_lres9 = res_mk.edges.not(poly2.and(nplus).and(sab).edges).inside_part(poly2)
+    # Rule LRES.9a: Nplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2.
+    logger.info("Executing rule LRES.9a")
+    lres9a_l1 = res_mk.interacting(lres_poly).interacting(mk_lres9)
+    lres9a_l1.output("LRES.9a", "LRES.9a : Nplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2. ")
+    lres9a_l1.forget
+
+    mk_lres9.forget
+
+    lres9b = res_mk.with_area(15000.01.um,nil).in(res_mk.interacting(res_mk.edges.with_length(80.01.um,nil)))
+    # Rule LRES.9b: If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. is 20µm
+    logger.info("Executing rule LRES.9b")
+    lres9b_l1 = res_mk.interacting(lres_poly).drc(separation(lres9b) < 20.um).polygons(0.001)
+    lres9b_l1.output("LRES.9b", "LRES.9b : If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. : 20µm")
+    lres9b_l1.forget
+
+    lres9b.forget
+
+    lres_poly.forget
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/lvpwell.drc b/tapeout/outputs/drc/lvpwell.drc
new file mode 100644
index 0000000..c8f78ca
--- /dev/null
+++ b/tapeout/outputs/drc/lvpwell.drc
@@ -0,0 +1,1187 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    lvpwell_dn_56V = lvpwell_dn.interacting(dualgate)
+
+    #================================================
+    #--------------------LVPWELL---------------------
+    #================================================
+
+    # Rule LPW.1_3.3V: Min. LVPWELL Width. is 0.6µm
+    logger.info("Executing rule LPW.1_3.3V")
+    lpw1_l1  = lvpwell_dn.width(0.6.um, euclidian)
+    lpw1_l1.output("LPW.1_3.3V", "LPW.1_3.3V : Min. LVPWELL Width. : 0.6µm")
+    lpw1_l1.forget
+
+    # Rule LPW.1_5V: Min. LVPWELL Width. is 0.74µm
+    logger.info("Executing rule LPW.1_5V")
+    lpw1_l1  = lvpwell_dn_56V.width(0.74.um, euclidian)
+    lpw1_l1.output("LPW.1_5V", "LPW.1_5V : Min. LVPWELL Width. : 0.74µm")
+    lpw1_l1.forget
+
+    if CONNECTIVITY_RULES
+    logger.info("CONNECTIVITY_RULES section")
+
+    connected_lvpwell_3p3v, unconnected_lvpwell_3p3v = conn_space(lvpwell_dn, 0.86, 1.4, euclidian)
+
+    connected_lvpwell_5p0v, unconnected_lvpwell_5p0v = conn_space(lvpwell_dn, 0.86, 1.7, euclidian)
+
+    # Rule LPW.2a_3.3V: Min. LVPWELL to LVWELL Space (Inside DNWELL) [Different potential]. is 1.4µm
+    logger.info("Executing rule LPW.2a_3.3V")
+    lpw2a_l1  = unconnected_lvpwell_3p3v.not_interacting(v5_xtor).not_interacting(dualgate)
+    lpw2a_l1.output("LPW.2a_3.3V", "LPW.2a_3.3V : Min. LVPWELL to LVWELL Space (Inside DNWELL) [Different potential]. : 1.4µm")
+    lpw2a_l1.forget
+
+    # Rule LPW.2a_5V: Min. LVPWELL to LVPWELL Space (Inside DNWELL) [Different potential]. is 1.7µm
+    logger.info("Executing rule LPW.2a_5V")
+    lpw2a_l1  = unconnected_lvpwell_5p0v.overlapping(dualgate)
+    lpw2a_l1.output("LPW.2a_5V", "LPW.2a_5V : Min. LVPWELL to LVPWELL Space (Inside DNWELL) [Different potential]. : 1.7µm")
+    lpw2a_l1.forget
+
+    # Rule LPW.2b_3.3V: Min. LVPWELL to LVPWELL Space [Equi potential]. is 0.86µm
+    logger.info("Executing rule LPW.2b_3.3V")
+    lpw2b_l1  = connected_lvpwell_3p3v.not_interacting(v5_xtor).not_interacting(dualgate)
+    lpw2b_l1.output("LPW.2b_3.3V", "LPW.2b_3.3V : Min. LVPWELL to LVPWELL Space [Equi potential]. : 0.86µm")
+    lpw2b_l1.forget
+
+    # Rule LPW.2b_5V: Min. LVPWELL to LVPWELL Space [Equi potential]. is 0.86µm
+    logger.info("Executing rule LPW.2b_5V")
+    lpw2b_l1  = connected_lvpwell_5p0v.overlapping(dualgate)
+    lpw2b_l1.output("LPW.2b_5V", "LPW.2b_5V : Min. LVPWELL to LVPWELL Space [Equi potential]. : 0.86µm")
+    lpw2b_l1.forget
+
+    else
+    logger.info("CONNECTIVITY_RULES disabled section")
+
+    # Rule LPW.2a_3.3V_: Min. LVPWELL to LVWELL Space (Inside DNWELL) [Different potential]. is 1.4µm
+    logger.info("Executing rule LPW.2a_3.3V_")
+    lpw2a_l1  = lvpwell_dn.isolated(1.4.um, euclidian)
+    lpw2a_l1.output("LPW.2a_3.3V_", "LPW.2a_3.3V_ : Min. LVPWELL to LVWELL Space (Inside DNWELL) [Different potential]. : 1.4µm")
+    lpw2a_l1.forget
+
+    # Rule LPW.2a_5V_: Min. LVPWELL to LVPWELL Space (Inside DNWELL) [Different potential]. is 1.7µm
+    logger.info("Executing rule LPW.2a_5V_")
+    lpw2a_l1  = lvpwell_dn_56V.isolated(1.7.um, euclidian)
+    lpw2a_l1.output("LPW.2a_5V_", "LPW.2a_5V_ : Min. LVPWELL to LVPWELL Space (Inside DNWELL) [Different potential]. : 1.7µm")
+    lpw2a_l1.forget
+
+    end #CONNECTIVITY_RULES
+
+    # Rule LPW.3_3.3V: Min. DNWELL enclose LVPWELL. is 2.5µm
+    logger.info("Executing rule LPW.3_3.3V")
+    lpw3_l1 = dnwell.enclosing(lvpwell_dn, 2.5.um, euclidian).polygons(0.001)
+    lpw3_l2 = lvpwell_dn.not(dnwell)
+    lpw3_l = lpw3_l1.or(lpw3_l2)
+    lpw3_l.output("LPW.3", "LPW.3 : Min. DNWELL enclose LVPWELL. : 2.5µm")
+    lpw3_l1.forget
+    lpw3_l2.forget
+    lpw3_l.forget
+
+    # Rule LPW.4: If LVPWELL is used as resistor, it must be covered by RES_MK (for LVS
+    ## purpose). Width of the resistor determined by LVPWELL. Length by COMP-
+    ## to-COMP space. RES_MK length shall be coinciding with resistor length
+    ## (Touching COMP each side) and width covering the width of LVPWELL.
+    logger.info("Executing rule LPW.4")
+    res_lpw = lvpwell_dn.interacting(res_mk)
+    res_lpw_cont = lvpwell_dn.not(res_mk)
+
+    lpw4_l1 = res_lpw.not_interacting(pcomp)
+    lpw4_l2 = res_lpw.interacting(poly2)
+    lpw4_l3 = lvpwell_dn.interacting(res_lpw_cont, 2..2)
+    lpw4_l = lpw4_l1.or(lpw4_l2).or(lpw4_l3)
+    lpw4_l.output("LPW.4", "LPW.4 : If LVPWELL is used as resistor, it must be covered by RES_MK (for LVS
+    purpose). Width of the resistor determined by LVPWELL. Length by COMP-to-COMP space. RES_MK length shall be coinciding with resistor length
+    (Touching COMP each side) and width covering the width of LVPWELL.")
+
+    # Rule LPW.5: LVPWELL resistors must be enclosed by DNWELL.
+    logger.info("Executing rule LPW.5")
+    lpw5_l1 = lvpwell_dn.and(res_mk).not(dnwell)
+    lpw5_l1.output("LPW.5", "LPW.5_3.3V : LVPWELL resistors must be enclosed by DNWELL.")
+    lpw5_l1.forget
+
+    # Rule LPW.11: Min. (LVPWELL outside DNWELL) space to DNWELL. is 1.5µm
+    logger.info("Executing rule LPW.11")
+    lpw11_l1  = lvpwell_out.separation(dnwell, 1.5.um, euclidian)
+    lpw11_l1.output("LPW.11", "LPW.11 : Min. (LVPWELL outside DNWELL) space to DNWELL. : 1.5µm")
+    lpw11_l1.forget
+
+    # Rule LPW.12: LVPWELL cannot overlap with Nwell.
+    logger.info("Executing rule LPW.12")
+    lpw12_l1 = lvpwell_out.and(nwell)
+    lpw12_l1.output("LPW.12", "LPW.12 : LVPWELL cannot overlap with Nwell.")
+    lpw12_l1.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/lvs_bjt.drc b/tapeout/outputs/drc/lvs_bjt.drc
new file mode 100644
index 0000000..d6c80b1
--- /dev/null
+++ b/tapeout/outputs/drc/lvs_bjt.drc
@@ -0,0 +1,1093 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #--------------------LVS_BJT---------------------
+    #================================================
+
+    vnpn_e = ncomp.interacting(lvs_bjt).inside(dnwell)
+    vpnp_e = pcomp.inside(nwell).interacting(lvs_bjt)
+    # Rule LVS_BJT.1: Minimum LVS_BJT enclosure of NPN or PNP Emitter COMP layers
+    logger.info("Executing rule LVS_BJT.1")
+    lvs_l1 = vnpn_e.or(vpnp_e).not_inside(lvs_bjt)
+    lvs_l1.output("LVS_BJT.1", "LVS_BJT.1 : Minimum LVS_BJT enclosure of NPN or PNP Emitter COMP layers")
+    lvs_l1.forget
+
+    vnpn_e.forget
+
+    vpnp_e.forget
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/main.drc b/tapeout/outputs/drc/main.drc
new file mode 100644
index 0000000..f74a4c5
--- /dev/null
+++ b/tapeout/outputs/drc/main.drc
@@ -0,0 +1,2095 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/mcell.drc b/tapeout/outputs/drc/mcell.drc
new file mode 100644
index 0000000..0431ed5
--- /dev/null
+++ b/tapeout/outputs/drc/mcell.drc
@@ -0,0 +1,1106 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #---------------------MCELL----------------------
+    #================================================
+
+    # Rule MC.1: min. mcell width is 0.4µm
+    logger.info("Executing rule MC.1")
+    mc1_l1  = mcell_feol_mk.width(0.4.um, euclidian).polygons(0.001)
+    mc1_l1.output("MC.1", "MC.1 : min. mcell width : 0.4µm")
+    mc1_l1.forget
+
+    # Rule MC.2: min. mcell spacing is 0.4µm
+    logger.info("Executing rule MC.2")
+    mc2_l1  = mcell_feol_mk.space(0.4.um, euclidian).polygons(0.001)
+    mc2_l1.output("MC.2", "MC.2 : min. mcell spacing : 0.4µm")
+    mc2_l1.forget
+
+    # Rule MC.3: Minimum Mcell area is 0.35µm²
+    logger.info("Executing rule MC.3")
+    mc3_l1  = mcell_feol_mk.with_area(nil, 0.35.um)
+    mc3_l1.output("MC.3", "MC.3 : Minimum Mcell area : 0.35µm²")
+    mc3_l1.forget
+
+    # Rule MC.4: Minimum area enclosed by Mcell is 0.35µm²
+    logger.info("Executing rule MC.4")
+    mc4_l1  = mcell_feol_mk.holes.with_area(nil, 0.35.um)
+    mc4_l1.output("MC.4", "MC.4 : Minimum area enclosed by Mcell : 0.35µm²")
+    mc4_l1.forget
+end #FEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metal1.drc b/tapeout/outputs/drc/metal1.drc
new file mode 100644
index 0000000..8633646
--- /dev/null
+++ b/tapeout/outputs/drc/metal1.drc
@@ -0,0 +1,1105 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    #================================================
+    #---------------------METAL1---------------------
+    #================================================
+
+    # Rule M1.1: min. metal1 width is 0.23µm
+    logger.info("Executing rule M1.1")
+    m11_l1  = metal1.not(sramcore).width(0.23.um, euclidian).polygons(0.001)
+    m11_l1.output("M1.1", "M1.1 : min. metal1 width : 0.23µm")
+    m11_l1.forget
+
+    # Rule M1.2a: min. metal1 spacing is 0.23µm
+    logger.info("Executing rule M1.2a")
+    m12a_l1  = metal1.space(0.23.um, euclidian).polygons(0.001)
+    m12a_l1.output("M1.2a", "M1.2a : min. metal1 spacing : 0.23µm")
+    m12a_l1.forget
+
+    # Rule M1.2b: Space to wide Metal1 (length & width > 10um) is 0.3µm
+    logger.info("Executing rule M1.2b")
+    m12b_l1  = metal1.separation(metal1.not_interacting(metal1.edges.with_length(nil, 10.um)), 0.3.um, euclidian).polygons(0.001)
+    m12b_l1.output("M1.2b", "M1.2b : Space to wide Metal1 (length & width > 10um) : 0.3µm")
+    m12b_l1.forget
+
+    # Rule M1.3: Minimum Metal1 area is 0.1444µm²
+    logger.info("Executing rule M1.3")
+    m13_l1  = metal1.with_area(nil, 0.1444.um)
+    m13_l1.output("M1.3", "M1.3 : Minimum Metal1 area : 0.1444µm²")
+    m13_l1.forget
+end #BEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metal2.drc b/tapeout/outputs/drc/metal2.drc
new file mode 100644
index 0000000..1ecbf6c
--- /dev/null
+++ b/tapeout/outputs/drc/metal2.drc
@@ -0,0 +1,1104 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    #================================================
+    #---------------------METAL2---------------------
+    #================================================
+
+    # Rule M2.1: min. metal2 width is 0.28µm
+    logger.info("Executing rule M2.1")
+    m21_l1  = metal2.width(0.28.um, euclidian).polygons(0.001)
+    m21_l1.output("M2.1", "M2.1 : min. metal2 width : 0.28µm")
+    m21_l1.forget
+
+    # Rule M2.2a: min. metal2 spacing is 0.28µm
+    logger.info("Executing rule M2.2a")
+    m22a_l1  = metal2.space(0.28.um, euclidian).polygons(0.001)
+    m22a_l1.output("M2.2a", "M2.2a : min. metal2 spacing : 0.28µm")
+    m22a_l1.forget
+
+    # Rule M2.2b: Space to wide Metal2 (length & width > 10um) is 0.3µm
+    logger.info("Executing rule M2.2b")
+    m22b_l1  = metal2.separation(metal2.not_interacting(metal2.edges.with_length(nil, 10.um)), 0.3.um, euclidian).polygons(0.001)
+    m22b_l1.output("M2.2b", "M2.2b : Space to wide Metal2 (length & width > 10um) : 0.3µm")
+    m22b_l1.forget
+
+    # Rule M2.3: Minimum metal2 area is 0.1444µm²
+    logger.info("Executing rule M2.3")
+    m23_l1  = metal2.with_area(nil, 0.1444.um)
+    m23_l1.output("M2.3", "M2.3 : Minimum metal2 area : 0.1444µm²")
+    m23_l1.forget
+end # BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metal3.drc b/tapeout/outputs/drc/metal3.drc
new file mode 100644
index 0000000..7635c48
--- /dev/null
+++ b/tapeout/outputs/drc/metal3.drc
@@ -0,0 +1,1106 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "3LM" || METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #---------------------METAL3---------------------
+        #================================================
+
+        # Rule M3.1: min. metal3 width is 0.28µm
+        logger.info("Executing rule M3.1")
+        m31_l1  = metal3.width(0.28.um, euclidian).polygons(0.001)
+        m31_l1.output("M3.1", "M3.1 : min. metal3 width : 0.28µm")
+        m31_l1.forget
+
+        # Rule M3.2a: min. metal3 spacing is 0.28µm
+        logger.info("Executing rule M3.2a")
+        m32a_l1  = metal3.space(0.28.um, euclidian).polygons(0.001)
+        m32a_l1.output("M3.2a", "M3.2a : min. metal3 spacing : 0.28µm")
+        m32a_l1.forget
+
+        # Rule M3.2b: Space to wide Metal3 (length & width > 10um) is 0.3µm
+        logger.info("Executing rule M3.2b")
+        m32b_l1  = metal3.separation(metal3.not_interacting(metal3.edges.with_length(nil, 10.um)), 0.3.um, euclidian).polygons(0.001)
+        m32b_l1.output("M3.2b", "M3.2b : Space to wide Metal3 (length & width > 10um) : 0.3µm")
+        m32b_l1.forget
+
+        # Rule M3.3: Minimum metal3 area is 0.1444µm²
+        logger.info("Executing rule M3.3")
+        m33_l1  = metal3.with_area(nil, 0.1444.um)
+        m33_l1.output("M3.3", "M3.3 : Minimum metal3 area : 0.1444µm²")
+        m33_l1.forget
+    end
+end # BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metal4.drc b/tapeout/outputs/drc/metal4.drc
new file mode 100644
index 0000000..108ef6a
--- /dev/null
+++ b/tapeout/outputs/drc/metal4.drc
@@ -0,0 +1,1107 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #---------------------METAL4---------------------
+        #================================================
+
+        # Rule M4.1: min. metal4 width is 0.28µm
+        logger.info("Executing rule M4.1")
+        m41_l1  = metal4.width(0.28.um, euclidian).polygons(0.001)
+        m41_l1.output("M4.1", "M4.1 : min. metal4 width : 0.28µm")
+        m41_l1.forget
+
+        # Rule M4.2a: min. metal4 spacing is 0.28µm
+        logger.info("Executing rule M4.2a")
+        m42a_l1  = metal4.space(0.28.um, euclidian).polygons(0.001)
+        m42a_l1.output("M4.2a", "M4.2a : min. metal4 spacing : 0.28µm")
+        m42a_l1.forget
+
+        # Rule M4.2b: Space to wide Metal4 (length & width > 10um) is 0.3µm
+        logger.info("Executing rule M4.2b")
+        m42b_l1  = metal4.separation(metal4.not_interacting(metal4.edges.with_length(nil, 10.um)), 0.3.um, euclidian).polygons(0.001)
+        m42b_l1.output("M4.2b", "M4.2b : Space to wide Metal4 (length & width > 10um) : 0.3µm")
+        m42b_l1.forget
+
+        # Rule M4.3: Minimum metal4 area is 0.1444µm²
+        logger.info("Executing rule M4.3")
+        m43_l1  = metal4.with_area(nil, 0.1444.um)
+        m43_l1.output("M4.3", "M4.3 : Minimum metal4 area : 0.1444µm²")
+        m43_l1.forget
+    end
+end #BEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metal5.drc b/tapeout/outputs/drc/metal5.drc
new file mode 100644
index 0000000..ca46613
--- /dev/null
+++ b/tapeout/outputs/drc/metal5.drc
@@ -0,0 +1,1106 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #---------------------METAL5---------------------
+        #================================================
+
+        # Rule M5.1: min. metal5 width is 0.28µm
+        logger.info("Executing rule M5.1")
+        m51_l1  = metal5.width(0.28.um, euclidian).polygons(0.001)
+        m51_l1.output("M5.1", "M5.1 : min. metal5 width : 0.28µm")
+        m51_l1.forget
+
+        # Rule M5.2a: min. metal5 spacing is 0.28µm
+        logger.info("Executing rule M5.2a")
+        m52a_l1  = metal5.space(0.28.um, euclidian).polygons(0.001)
+        m52a_l1.output("M5.2a", "M5.2a : min. metal5 spacing : 0.28µm")
+        m52a_l1.forget
+
+        # Rule M5.2b: Space to wide Metal5 (length & width > 10um) is 0.3µm
+        logger.info("Executing rule M5.2b")
+        m52b_l1  = metal5.separation(metal5.not_interacting(metal5.edges.with_length(nil, 10.um)), 0.3.um, euclidian).polygons(0.001)
+        m52b_l1.output("M5.2b", "M5.2b : Space to wide Metal5 (length & width > 10um) : 0.3µm")
+        m52b_l1.forget
+
+        # Rule M5.3: Minimum metal5 area is 0.1444µm²
+        logger.info("Executing rule M5.3")
+        m53_l1  = metal5.with_area(nil, 0.1444.um)
+        m53_l1.output("M5.3", "M5.3 : Minimum metal5 area : 0.1444µm²")
+        m53_l1.forget
+    end
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/metaltop.drc b/tapeout/outputs/drc/metaltop.drc
new file mode 100644
index 0000000..efbe717
--- /dev/null
+++ b/tapeout/outputs/drc/metaltop.drc
@@ -0,0 +1,1204 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+#================================================
+#--------------------METALTOP--------------------
+#================================================
+if BEOL
+
+    if METAL_TOP == "6K"
+        logger.info("MetalTop thickness 6k section")
+        
+        # Rule MT.1: min. metaltop width is 0.36µm
+        logger.info("Executing rule MT.1")
+        mt1_l1  = top_metal.width(0.36.um, euclidian)
+        mt1_l1.output("MT.1", "MT.1 : min. metaltop width : 0.36µm")
+        mt1_l1.forget
+        
+        # Rule MT.2a: min. metaltop spacing is 0.38µm
+        logger.info("Executing rule MT.2a")
+        mt2a_l1  = top_metal.space(0.38.um, euclidian)
+        mt2a_l1.output("MT.2a", "MT.2a : min. metaltop spacing : 0.38µm")
+        mt2a_l1.forget
+        
+        # Rule MT.2b: Space to wide Metal2 (length & width > 10um) is 0.5µm
+        logger.info("Executing rule MT.2b")
+        wide_top_metal = top_metal.not_interacting(top_metal.edges.with_length(nil, 10.um))
+        mt2b_l1  = top_metal.separation(wide_top_metal, 0.5.um, euclidian)
+        mt2b_l1.output("MT.2b", "MT.2b : Space to wide Metal2 (length & width > 10um) : 0.5µm")
+        mt2b_l1.forget
+        wide_top_metal.forget
+        
+        # Rule MT.4: Minimum MetalTop area is 0.5625µm²
+        logger.info("Executing rule MT.4")
+        mt4_l1  = top_metal.with_area(nil, 0.5625.um)
+        mt4_l1.output("MT.4", "MT.4 : Minimum MetalTop area : 0.5625µm²")
+        mt4_l1.forget
+        
+    elsif METAL_TOP == "9K"
+        logger.info("MetalTop thickness 9k/11k section")
+        
+        # Rule MT.1: min. metaltop width is 0.44µm
+        logger.info("Executing rule MT.1")
+        mt1_l1  = top_metal.width(0.44.um, euclidian)
+        mt1_l1.output("MT.1", "MT.1 : min. metaltop width : 0.44µm")
+        mt1_l1.forget
+        
+        # Rule MT.2a: min. metaltop spacing is 0.46µm
+        logger.info("Executing rule MT.2a")
+        mt2a_l1  = top_metal.space(0.46.um, euclidian)
+        mt2a_l1.output("MT.2a", "MT.2a : min. metaltop spacing : 0.46µm")
+        mt2a_l1.forget
+        
+        # Rule MT.2b: Space to wide Metal2 (length & width > 10um) is 0.6µm
+        logger.info("Executing rule MT.2b")
+        wide_top_metal = top_metal.not_interacting(top_metal.edges.with_length(nil, 10.um))
+        mt2b_l1  = top_metal.separation(wide_top_metal, 0.6.um, euclidian)
+        mt2b_l1.output("MT.2b", "MT.2b : Space to wide Metal2 (length & width > 10um) : 0.6µm")
+        mt2b_l1.forget 
+        wide_top_metal.forget
+        
+        # Rule MT.4: Minimum MetalTop area is 0.5625µm²
+        logger.info("Executing rule MT.4")
+        mt4_l1  = top_metal.with_area(nil, 0.5625.um)
+        mt4_l1.output("MT.4", "MT.4 : Minimum MetalTop area : 0.5625µm²")
+        mt4_l1.forget
+        
+    elsif METAL_TOP == "30K"
+        logger.info("MetalTop thickness 30K section")
+        
+        # Rule MT30.1a: Min. thick MetalTop width. is 1.8µm
+        logger.info("Executing rule MT30.1a")
+        mt301a_l1  = top_metal.width(1.8.um, euclidian)
+        mt301a_l1.output("MT30.1a", "MT30.1a : Min. thick MetalTop width. : 1.8µm")
+        mt301a_l1.forget
+        
+        # Rule MT30.1b: Min width for >1000um long metal line (based on metal edge). is 2.2µm
+        logger.info("Executing rule MT30.1b")
+        long_edge = top_metal.edges.with_length(1000.um, nil)
+        mt301b_l1  = top_metal.interacting(long_edge).width(2.2.um, euclidian)
+        mt301b_l1.output("MT30.1b", "MT30.1b : Min width for >1000um long metal line (based on metal edge). : 2.2µm")
+        mt301b_l1.forget
+        long_edge.forget
+        
+        # Rule MT30.2: Min. thick MetalTop space. is 1.8µmtop_metal.not_interacting(metal2.edges.with_length(nil, 10.um)
+        logger.info("Executing rule MT30.2")
+        mt302_l1  = top_metal.space(1.8.um, euclidian)
+        mt302_l1.output("MT30.2", "MT30.2 : Min. thick MetalTop space. : 1.8µm")
+        mt302_l1.forget
+        
+        # Rule MT30.5: Minimum thick MetalTop enclose underlying via (for example: via5 for 6LM case) [Outside Not Allowed].
+        logger.info("Executing rule MT30.5")
+        mt305_l1 = top_metal.enclosing(top_via, 0.12.um, euclidian).polygons(0.001).or(top_via.not_inside(top_metal))
+        mt305_l1.output("MT30.5", "MT30.5 : Minimum thick MetalTop enclose underlying via (for example: via5 for 6LM case) [Outside Not Allowed].")
+        mt305_l1.forget
+        
+        # Rule MT30.6: Thick MetalTop end-of-line (width <2.5um) enclose underlying via (for example: via5 for 6LM case) [Outside Not Allowed].
+        logger.info("Executing rule MT30.6")
+
+        mt30p6_cond = top_metal.width(2.5.um)
+        mt30p6_eol = top_metal.edges.with_length(nil, 2.5.um).interacting(mt30p6_cond.first_edges).interacting(mt30p6_cond.second_edges).not(mt30p6_cond.first_edges).not(mt30p6_cond.second_edges)
+        mt306_l1 = mt30p6_eol.enclosing(top_via.edges,0.25.um, projection)
+        mt306_l1.output("MT30.6", "MT30.6 : Thick MetalTop end-of-line (width <2.5um) enclose underlying via (for example: via5 for 6LM case) [Outside Not Allowed].")
+        mt306_l1.forget
+        mt30p6_cond.forget
+        mt30p6_eol.forget
+        
+        # Rule MT30.8: There shall be minimum 2X2 array of vias (top vias) at one location connecting to 3um thick top metal.
+        logger.info("Executing rule MT30.8")
+        top_via_not_seal_ring = top_via.not(guard_ring_mk)
+        metal_top_intersections = top_metal.and(topmin1_metal).not(guard_ring_mk).interacting(top_via_not_seal_ring)
+        mt308_l1 = metal_top_intersections.interacting(top_via_not_seal_ring, 1, 3)
+        mt308_poss_l2 = metal_top_intersections.interacting(top_via_not_seal_ring, 4, nil)
+        mt308_poss_via = top_via_not_seal_ring.interacting(mt308_poss_l2)
+        mt308_poss_via_over_under = mt308_poss_via.sized(0.13, "square_limit").merged.sized(-0.13, "square_limit")
+        bad_via_array = mt308_poss_via_over_under.interacting(mt308_poss_via_over_under.edges.with_length(nil, 0.775))
+        mt308_l2 = mt308_poss_l2.interacting(bad_via_array)
+        mt308_output = mt301a_l1.or(mt308_l2)
+        mt308_output.output("MT30.8", "MT30.8 : There shall be minimum 2X2 array of vias (top vias) at one location connecting to 3um thick top metal.")
+        top_via_not_seal_ring.forget
+        metal_top_intersections.forget
+        mt308_l1.forget
+        mt308_poss_l2.forget
+        mt308_poss_via.forget
+        mt308_poss_via_over_under.forget
+        bad_via_array.forget
+        mt308_l2.forget
+        mt308_output.forget
+        
+    end #METAL_TOP
+end #BEOL
+    
+    ################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/mim.drc b/tapeout/outputs/drc/mim.drc
new file mode 100644
index 0000000..d24ac88
--- /dev/null
+++ b/tapeout/outputs/drc/mim.drc
@@ -0,0 +1,1298 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+#================================================
+#------------MIM CAPACITOR OPTION A -------------
+#================================================
+
+if MIM_OPTION == "A"
+    logger.info("MIM Capacitor Option A section")
+    
+    mim_virtual = fusetop.sized(1.06.um).and(metal2.interacting(fusetop))
+    # Rule MIM.1: Minimum MiM bottom plate spacing to the bottom plate metal (whether adjacent MiM or routing metal). is 1.2µm
+    logger.info("Executing rule MIM.1")
+    mim1_l1 = metal2.separation(mim_virtual ,transparent, 1.2.um).polygons(0.001)
+    mim1_l1.output("MIM.1", "MIM.1 : Minimum MiM bottom plate spacing to the bottom plate metal (whether adjacent MiM or routing metal). : 1.2µm")
+    mim1_l1.forget
+    
+    # Rule MIM.2: Minimum MiM bottom plate overlap of Via2 layer. [This is applicable for via2 within 1.06um oversize of FuseTop layer (referenced to virtual bottom plate)]. is 0.4µm
+    logger.info("Executing rule MIM.2")
+    mim2_l1 = metal2.enclosing(via2.overlapping(mim_virtual), 0.4.um, euclidian).polygons(0.001)
+    mim2_l2 = via2.overlapping(mim_virtual).not_outside(metal2).not(metal2)
+    mim2_l  = mim2_l1.or(mim2_l2)
+    mim2_l.output("MIM.2", "MIM.2 : Minimum MiM bottom plate overlap of Via2 layer. [This is applicable for via2 within 1.06um oversize of FuseTop layer (referenced to virtual bottom plate)]. : 0.4µm")
+    mim2_l1.forget
+    mim2_l2.forget
+    mim2_l.forget
+    
+    # Rule MIM.3: Minimum MiM bottom plate overlap of Top plate.
+    logger.info("Executing rule MIM.3")
+    mim3_l1 = mim_virtual.enclosing(fusetop,0.6.um).polygons(0.001).or(fusetop.not_inside(mim_virtual))
+    mim3_l1.output("MIM.3", "MIM.3 : Minimum MiM bottom plate overlap of Top plate.")
+    mim3_l1.forget
+    
+    mim_virtual.forget
+    
+    # Rule MIM.4: Minimum MiM top plate (FuseTop) overlap of Via2. is 0.4µm
+    logger.info("Executing rule MIM.4")
+    mim4_l1 = fusetop.enclosing(via2, 0.4.um, euclidian).polygons(0.001)
+    mim4_l2 = via2.not_outside(fusetop).not(fusetop)
+    mim4_l  = mim4_l1.or(mim4_l2)
+    mim4_l.output("MIM.4", "MIM.4 : Minimum MiM top plate (FuseTop) overlap of Via2. : 0.4µm")
+    mim4_l1.forget
+    mim4_l2.forget
+    mim4_l.forget
+    
+    # Rule MIM.5: Minimum spacing between top plate and the Via2 connecting to the bottom plate. is 0.4µm
+    logger.info("Executing rule MIM.5")
+    mim5_l1  = fusetop.separation(via2.interacting(metal2), 0.4.um, euclidian).polygons(0.001)
+    mim5_l1.output("MIM.5", "MIM.5 : Minimum spacing between top plate and the Via2 connecting to the bottom plate. : 0.4µm")
+    mim5_l1.forget
+    
+    # Rule MIM.6: Minimum spacing between unrelated top plates. is 0.6µm
+    logger.info("Executing rule MIM.6")
+    mim6_l1  = fusetop.space(0.6.um, euclidian).polygons(0.001)
+    mim6_l1.output("MIM.6", "MIM.6 : Minimum spacing between unrelated top plates. : 0.6µm")
+    mim6_l1.forget
+    
+    # Rule MIM.7: Min FuseTop enclosure by CAP_MK.
+    logger.info("Executing rule MIM.7")
+    mim7_l1 = fusetop.not_inside(cap_mk)
+    mim7_l1.output("MIM.7", "MIM.7 : Min FuseTop enclosure by CAP_MK.")
+    mim7_l1.forget
+    
+    # Rule MIM.8a: Minimum MIM cap area (defined by FuseTop area) (um2). is 25µm²
+    logger.info("Executing rule MIM.8a")
+    mim8a_l1  = fusetop.with_area(nil, 25.um)
+    mim8a_l1.output("MIM.8a", "MIM.8a : Minimum MIM cap area (defined by FuseTop area) (um2). : 25µm²")
+    mim8a_l1.forget
+    
+    # Rule MIM.8b: Maximum single MIM Cap area (Use multiple MIM caps in parallel connection if bigger capacitors are required) (um2). is 10000µm
+    logger.info("Executing rule MIM.8b")
+    mim8b_l1 = fusetop.with_area(10000.um,nil).not_in(fusetop.with_area(10000.um))
+    mim8b_l1.output("MIM.8b", "MIM.8b : Maximum single MIM Cap area (Use multiple MIM caps in parallel connection if bigger capacitors are required) (um2). : 10000µm")
+    mim8b_l1.forget
+    
+    # Rule MIM.9: Min. via spacing for sea of via on MIM top plate. is 0.5µm
+    logger.info("Executing rule MIM.9")
+    mim9_l1  = via2.inside(fusetop).space(0.5.um, euclidian).polygons(0.001)
+    mim9_l1.output("MIM.9", "MIM.9 : Min. via spacing for sea of via on MIM top plate. : 0.5µm")
+    mim9_l1.forget
+    
+    # Rule MIM.10: (a) There cannot be any Via1 touching MIM bottom plate Metal2. (b) MIM bottom plate Metal2 can only be connected through the higher Via (Via2).
+    logger.info("Executing rule MIM.10")
+    mim10_l1 = via1.interacting(metal2.interacting(fusetop))
+    mim10_l1.output("MIM.10", "MIM.10 : (a) There cannot be any Via1 touching MIM bottom plate Metal2. (b) MIM bottom plate Metal2 can only be connected through the higher Via (Via2).")
+    mim10_l1.forget
+    
+    mim11_large_metal2 = metal2.interacting(fusetop).with_area(10000, nil)
+    mim11_large_metal2_violation = polygon_layer
+    mim11_large_metal2.data.each do |p|
+      mim11_metal2_polygon_layer = polygon_layer
+      mim11_metal2_polygon_layer.data.insert(p)
+      fuse_in_polygon = fusetop.and(mim11_metal2_polygon_layer)
+      if(fuse_in_polygon.area > 10000)
+        mim11_bad_metal2_polygon = mim11_metal2_polygon_layer.interacting(fuse_in_polygon)
+        mim11_bad_metal2_polygon.data.each do |b|
+          b.num_points > 0 && mim11_large_metal2_violation.data.insert(b)
+        end
+      end
+    end
+    # Rule MIM.11: Bottom plate of multiple MIM caps can be shared (for common nodes) as long as total MIM area with that single common plate does not exceed MIM.8b rule. is -µm
+    logger.info("Executing rule MIM.11")
+    mim11_l1  = mim11_large_metal2_violation
+    mim11_l1.output("MIM.11", "MIM.11 : Bottom plate of multiple MIM caps can be shared (for common nodes) as long as total MIM area with that single common plate does not exceed MIM.8b rule. : -µm")
+    mim11_l1.forget
+    
+    mim11_large_metal2.forget
+    
+    mim11_large_metal2_violation.forget
+    
+    # rule MIM.12 is not a DRC check
+    
+    #================================================
+    #-------------MIM CAPACITOR OPTION B-------------
+    #================================================
+    
+elsif MIM_OPTION == "B"
+    logger.info("MIM Capacitor Option B section")
+    
+    mimtm_virtual = fusetop.sized(1.06.um).and(topmin1_metal.interacting(fusetop))
+    # Rule MIMTM.1: Minimum MiM bottom plate spacing to the bottom plate metal (whether adjacent MiM or routing metal). is 1.2µm
+    logger.info("Executing rule MIMTM.1")
+    mimtm1_l1 = topmin1_metal.separation(mimtm_virtual ,transparent, 1.2.um).polygons(0.001)
+    mimtm1_l1.output("MIMTM.1", "MIMTM.1 : Minimum MiM bottom plate spacing to the bottom plate metal (whether adjacent MiM or routing metal). : 1.2µm")
+    mimtm1_l1.forget
+    
+    # Rule MIMTM.2: Minimum MiM bottom plate overlap of Vian-1 layer. [This is applicable for Vian-1 within 1.06um oversize of FuseTop layer (referenced to virtual bottom plate)]. is 0.4µm
+    logger.info("Executing rule MIMTM.2")
+    mimtm2_l1 = topmin1_metal.enclosing(top_via.overlapping(mimtm_virtual), 0.4.um, euclidian).polygons(0.001)
+    mimtm2_l2 = top_via.overlapping(mimtm_virtual).not_outside(topmin1_metal).not(topmin1_metal)
+    mimtm2_l  = mimtm2_l1.or(mimtm2_l2)
+    mimtm2_l.output("MIMTM.2", "MIMTM.2 : Minimum MiM bottom plate overlap of Vian-1 layer. [This is applicable for Vian-1 within 1.06um oversize of FuseTop layer (referenced to virtual bottom plate)]. : 0.4µm")
+    mimtm2_l1.forget
+    mimtm2_l2.forget
+    mimtm2_l.forget
+    
+    # Rule MIMTM.3: Minimum MiM bottom plate overlap of Top plate.
+    logger.info("Executing rule MIMTM.3")
+    mimtm3_l1 = mimtm_virtual.enclosing(fusetop,0.6.um).polygons(0.001).or(fusetop.not_inside(mimtm_virtual))
+    mimtm3_l1.output("MIMTM.3", "MIMTM.3 : Minimum MiM bottom plate overlap of Top plate.")
+    mimtm3_l1.forget
+    
+    mimtm_virtual.forget
+    
+    # Rule MIMTM.4: Minimum MiM top plate (FuseTop) overlap of Vian-1. is 0.4µm
+    logger.info("Executing rule MIMTM.4")
+    mimtm4_l1 = fusetop.enclosing(top_via, 0.4.um, euclidian).polygons(0.001)
+    mimtm4_l2 = top_via.not_outside(fusetop).not(fusetop)
+    mimtm4_l  = mimtm4_l1.or(mimtm4_l2)
+    mimtm4_l.output("MIMTM.4", "MIMTM.4 : Minimum MiM top plate (FuseTop) overlap of Vian-1. : 0.4µm")
+    mimtm4_l1.forget
+    mimtm4_l2.forget
+    mimtm4_l.forget
+    
+    # Rule MIMTM.5: Minimum spacing between top plate and the Vian-1 connecting to the bottom plate. is 0.4µm
+    logger.info("Executing rule MIMTM.5")
+    mimtm5_l1  = fusetop.separation(top_via.interacting(topmin1_metal), 0.4.um, euclidian).polygons(0.001)
+    mimtm5_l1.output("MIMTM.5", "MIMTM.5 : Minimum spacing between top plate and the Vian-1 connecting to the bottom plate. : 0.4µm")
+    mimtm5_l1.forget
+    
+    # Rule MIMTM.6: Minimum spacing between unrelated top plates. is 0.6µm
+    logger.info("Executing rule MIMTM.6")
+    mimtm6_l1  = fusetop.space(0.6.um, euclidian).polygons(0.001)
+    mimtm6_l1.output("MIMTM.6", "MIMTM.6 : Minimum spacing between unrelated top plates. : 0.6µm")
+    mimtm6_l1.forget
+    
+    # Rule MIMTM.7: Min FuseTop enclosure by CAP_MK.
+    logger.info("Executing rule MIMTM.7")
+    mimtm7_l1 = fusetop.not_inside(cap_mk)
+    mimtm7_l1.output("MIMTM.7", "MIMTM.7 : Min FuseTop enclosure by CAP_MK.")
+    mimtm7_l1.forget
+    
+    # Rule MIMTM.8a: Minimum MIM cap area (defined by FuseTop area) (um2). is 25µm²
+    logger.info("Executing rule MIMTM.8a")
+    mimtm8a_l1  = fusetop.with_area(nil, 25.um)
+    mimtm8a_l1.output("MIMTM.8a", "MIMTM.8a : Minimum MIM cap area (defined by FuseTop area) (um2). : 25µm²")
+    mimtm8a_l1.forget
+    
+    # Rule MIMTM.8b: Maximum single MIM Cap area (Use multiple MIM caps in parallel connection if bigger capacitors are required) (um2). is 10000µm
+    logger.info("Executing rule MIMTM.8b")
+    mimtm8b_l1 = fusetop.with_area(10000.um,nil).not_in(fusetop.with_area(10000.um))
+    mimtm8b_l1.output("MIMTM.8b", "MIMTM.8b : Maximum single MIM Cap area (Use multiple MIM caps in parallel connection if bigger capacitors are required) (um2). : 10000µm")
+    mimtm8b_l1.forget
+    
+    # Rule MIMTM.9: Min. Via (Vian-1) spacing for sea of Via on MIM top plate. is 0.5µm
+    logger.info("Executing rule MIMTM.9")
+    mimtm9_l1  = top_via.inside(fusetop).space(0.5.um, euclidian).polygons(0.001)
+    mimtm9_l1.output("MIMTM.9", "MIMTM.9 : Min. Via (Vian-1) spacing for sea of Via on MIM top plate. : 0.5µm")
+    mimtm9_l1.forget
+    
+    # Rule MIMTM.10: (a) There cannot be any Vian-2 touching MIM bottom plate Metaln-1. (b) MIM bottom plate Metaln-1 can only be connected through the higher Via (Vian-1).
+    logger.info("Executing rule MIMTM.10")
+    mimtm10_l1 = topmin1_via.interacting(topmin1_metal.interacting(fusetop))
+    mimtm10_l1.output("MIMTM.10", "MIMTM.10 : (a) There cannot be any Vian-2 touching MIM bottom plate Metaln-1. (b) MIM bottom plate Metaln-1 can only be connected through the higher Via (Vian-1).")
+    mimtm10_l1.forget
+    
+    mimtm11_large_topmin1_metal = topmin1_metal.interacting(fusetop).with_area(10000, nil)
+    mimtm11_large_topmin1_metal_violation = polygon_layer
+    mimtm11_large_topmin1_metal.data.each do |p|
+      mimtm11_topmin1_metal_polygon_layer = polygon_layer
+      mimtm11_topmin1_metal_polygon_layer.data.insert(p)
+      fuse_in_polygon = fusetop.and(mimtm11_topmin1_metal_polygon_layer)
+      if(fuse_in_polygon.area > 10000)
+        mimtm11_bad_topmin1_metal_polygon = mimtm11_topmin1_metal_polygon_layer.interacting(fuse_in_polygon)
+        mimtm11_bad_topmin1_metal_polygon.data.each do |b|
+          b.num_points > 0 && mimtm11_large_topmin1_metal_violation.data.insert(b)
+        end
+      end
+    end
+    # Rule MIMTM.11: Bottom plate of multiple MIM caps can be shared (for common nodes) as long as total MIM area with that single common plate does not exceed MIMTM.8b rule. is -µm
+    logger.info("Executing rule MIMTM.11")
+    mimtm11_l1  = mimtm11_large_topmin1_metal_violation
+    mimtm11_l1.output("MIMTM.11", "MIMTM.11 : Bottom plate of multiple MIM caps can be shared (for common nodes) as long as total MIM area with that single common plate does not exceed MIMTM.8b rule. : -µm")
+    mimtm11_l1.forget
+    
+    mimtm11_large_topmin1_metal.forget
+    
+    mimtm11_large_topmin1_metal_violation.forget
+    
+    # rule MIMTM.12 is not a DRC check
+    
+else
+  logger.info("No MIM Capacitor Option Selected section")  
+end #MIM_OPTION
+
+    ################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/nat.drc b/tapeout/outputs/drc/nat.drc
new file mode 100644
index 0000000..57088a3
--- /dev/null
+++ b/tapeout/outputs/drc/nat.drc
@@ -0,0 +1,1167 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #-----------------NATIVE VT NMOS-----------------
+    #================================================
+
+    # Rule NAT.1: Min. NAT Overlap of COMP of Native Vt NMOS. is 2µm
+    logger.info("Executing rule NAT.1")
+    nat1_l1 = nat.enclosing(ncomp.outside(nwell).interacting(nat), 2.um, euclidian).polygons(0.001)
+    nat1_l1.output("NAT.1", "NAT.1 : Min. NAT Overlap of COMP of Native Vt NMOS. : 2µm")
+    nat1_l1.forget
+
+    # Rule NAT.2: Space to unrelated COMP (outside NAT). is 0.3µm
+    logger.info("Executing rule NAT.2")
+    nat2_l1  = nat.separation(comp.outside(nat), 0.3.um, euclidian).polygons(0.001)
+    nat2_l1.output("NAT.2", "NAT.2 : Space to unrelated COMP (outside NAT). : 0.3µm")
+    nat2_l1.forget
+
+    # Rule NAT.3: Space to NWell edge. is 0.5µm
+    logger.info("Executing rule NAT.3")
+    nat3_l1  = nat.separation(nwell, 0.5.um, euclidian).polygons(0.001)
+    nat3_l1.output("NAT.3", "NAT.3 : Space to NWell edge. : 0.5µm")
+    nat3_l1.forget
+
+    # Rule NAT.4: Minimum channel length for 3.3V Native Vt NMOS (For smaller L Ioff will be higher than Spec). is 1.8µm
+    logger.info("Executing rule NAT.4")
+    nat4_l1  = poly2.edges.and(ngate.edges).not(nwell).interacting(nat).width(1.8.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    nat4_l1.output("NAT.4", "NAT.4 : Minimum channel length for 3.3V Native Vt NMOS (For smaller L Ioff will be higher than Spec). : 1.8µm")
+    nat4_l1.forget
+
+    # Rule NAT.5: Minimum channel length for 6.0V Native Vt NMOS (For smaller L Ioff will be higher than Spec). is 1.8µm
+    logger.info("Executing rule NAT.5")
+    nat5_l1  = poly2.edges.and(ngate.edges).not(nwell).interacting(nat).width(1.8.um, euclidian).polygons(0.001).overlapping(dualgate)
+    nat5_l1.output("NAT.5", "NAT.5 : Minimum channel length for 6.0V Native Vt NMOS (For smaller L Ioff will be higher than Spec). : 1.8µm")
+    nat5_l1.forget
+
+    if CONNECTIVITY_RULES
+    logger.info("CONNECTIVITY_RULES section")
+
+    connected_nat, unconnected_nat = conn_space(natcompsd, 10, 10, transparent)
+
+    # Rule NAT.6: Two or more COMPs if connected to different potential are not allowed under same NAT layer.
+    logger.info("Executing rule NAT.6")
+    nat6_l1 = comp.and(nat).interacting(unconnected_nat.inside(nat.covering(comp, 2)).not(poly2))
+    nat6_l1.output("NAT.6", "NAT.6 : Two or more COMPs if connected to different potential are not allowed under same NAT layer.")
+    nat6_l1.forget
+
+    end #CONNECTIVITY_RULES
+
+    natcompsd.forget
+
+    # Rule NAT.7: Minimum NAT to NAT spacing. is 0.74µm
+    logger.info("Executing rule NAT.7")
+    nat7_l1  = nat.space(0.74.um, euclidian).polygons(0.001)
+    nat7_l1.output("NAT.7", "NAT.7 : Minimum NAT to NAT spacing. : 0.74µm")
+    nat7_l1.forget
+
+    # Rule NAT.8: Min. Dualgate overlap of NAT (for 5V/6V) native VT NMOS only.
+    logger.info("Executing rule NAT.8")
+    nat8_l1 = nat.not_outside(dualgate).not(dualgate)
+    nat8_l1.output("NAT.8", "NAT.8 : Min. Dualgate overlap of NAT (for 5V/6V) native VT NMOS only.")
+    nat8_l1.forget
+
+    nat9_1 = poly2.and(nat).not(ncomp).interacting(ngate.and(nat) , 2)
+    nat9_2 = poly2.not(nat).separation(nat, 0.3.um, euclidian).polygons(0.001)
+    # Rule NAT.9: Poly interconnect under NAT layer is not allowed, minimum spacing of un-related poly from the NAT layer.
+    logger.info("Executing rule NAT.9")
+    nat9_l1 = nat9_1.or(nat9_2)
+    nat9_l1.output("NAT.9", "NAT.9 : Poly interconnect under NAT layer is not allowed, minimum spacing of un-related poly from the NAT layer.")
+    nat9_l1.forget
+
+    nat9_1.forget
+
+    nat9_2.forget
+
+    # Rule NAT.10: Nwell, inside NAT layer are not allowed.
+    logger.info("Executing rule NAT.10")
+    nat10_l1 = nwell.inside(nat)
+    nat10_l1.output("NAT.10", "NAT.10 : Nwell, inside NAT layer are not allowed.")
+    nat10_l1.forget
+
+    # Rule NAT.11: NCOMP not intersecting to Poly2, is not allowed inside NAT layer.
+    logger.info("Executing rule NAT.11")
+    nat11_l1 = ncomp.and(nat).outside(poly2)
+    nat11_l1.output("NAT.11", "NAT.11 : NCOMP not intersecting to Poly2, is not allowed inside NAT layer.")
+    nat11_l1.forget
+
+    # Rule NAT.12: Poly2 not intersecting with COMP is not allowed inside NAT (Poly2 resistor is not allowed inside NAT).
+    logger.info("Executing rule NAT.12")
+    nat12_l1 = poly2.interacting(nat).not_interacting(comp.and(nat))
+    nat12_l1.output("NAT.12", "NAT.12 : Poly2 not intersecting with COMP is not allowed inside NAT (Poly2 resistor is not allowed inside NAT).")
+    nat12_l1.forget
+end #FEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/nplus.drc b/tapeout/outputs/drc/nplus.drc
new file mode 100644
index 0000000..720bb46
--- /dev/null
+++ b/tapeout/outputs/drc/nplus.drc
@@ -0,0 +1,1295 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #---------------------NPLUS----------------------
+    #================================================
+
+    # Rule NP.1: min. nplus width is 0.4µm
+    logger.info("Executing rule NP.1")
+    np1_l1  = nplus.width(0.4.um, euclidian).polygons(0.001)
+    np1_l1.output("NP.1", "NP.1 : min. nplus width : 0.4µm")
+    np1_l1.forget
+
+    # Rule NP.2: min. nplus spacing is 0.4µm
+    logger.info("Executing rule NP.2")
+    np2_l1  = nplus.space(0.4.um, euclidian).polygons(0.001)
+    np2_l1.output("NP.2", "NP.2 : min. nplus spacing : 0.4µm")
+    np2_l1.forget
+
+    # Rule NP.3a: Space to PCOMP for PCOMP: (1) Inside Nwell (2) Outside LVPWELL but inside DNWELL. is 0.16µm
+    logger.info("Executing rule NP.3a")
+    np3a_l1  = nplus.separation((pcomp.inside(nwell)).or(pcomp.outside(lvpwell).inside(dnwell)), 0.16.um, euclidian).polygons(0.001)
+    np3a_l1.output("NP.3a", "NP.3a : Space to PCOMP for PCOMP: (1) Inside Nwell (2) Outside LVPWELL but inside DNWELL. : 0.16µm")
+    np3a_l1.forget
+
+    np_3bi_extend = lvpwell.inside(dnwell).sized(-0.429.um)
+    np_3bi = pcomp.edges.and(lvpwell.inside(dnwell).not(np_3bi_extend))
+    # Rule NP.3bi: Space to PCOMP: For Inside DNWELL, inside LVPWELL:(i) For PCOMP overlap by LVPWELL < 0.43um. is 0.16µm
+    logger.info("Executing rule NP.3bi")
+    np3bi_l1  = nplus.not_outside(lvpwell).inside(dnwell).edges.separation(np_3bi, 0.16.um, euclidian).polygons(0.001)
+    np3bi_l1.output("NP.3bi", "NP.3bi : Space to PCOMP: For Inside DNWELL, inside LVPWELL:(i) For PCOMP overlap by LVPWELL < 0.43um. : 0.16µm")
+    np3bi_l1.forget
+
+    np_3bi_extend.forget
+
+    np_3bi.forget
+
+    np_3bii_extend = lvpwell.inside(dnwell).sized(-0.429.um)
+    np_3bii = pcomp.edges.and(np_3bii_extend)
+    # Rule NP.3bii: Space to PCOMP: For Inside DNWELL, inside LVPWELL:(ii) For PCOMP overlap by LVPWELL >= 0.43um. is 0.08µm
+    logger.info("Executing rule NP.3bii")
+    np3bii_l1  = nplus.not_outside(lvpwell).inside(dnwell).edges.separation(np_3bii, 0.08.um, euclidian).polygons(0.001)
+    np3bii_l1.output("NP.3bii", "NP.3bii : Space to PCOMP: For Inside DNWELL, inside LVPWELL:(ii) For PCOMP overlap by LVPWELL >= 0.43um. : 0.08µm")
+    np3bii_l1.forget
+
+    np_3bii_extend.forget
+
+    np_3bii.forget
+
+    np_3ci = pcomp.edges.and(nwell.outside(dnwell).sized(0.429.um))
+    # Rule NP.3ci: Space to PCOMP: For Outside DNWELL:(i) For PCOMP space to Nwell < 0.43um. is 0.16µm
+    logger.info("Executing rule NP.3ci")
+    np3ci_l1 = nplus.outside(dnwell).edges.separation(np_3ci, 0.16.um, euclidian).polygons
+    np3ci_l1.output("NP.3ci", "NP.3ci : Space to PCOMP: For Outside DNWELL:(i) For PCOMP space to Nwell < 0.43um. : 0.16µm")
+    np3ci_l1.forget
+
+    np_3ci.forget
+
+    np_3cii = pcomp.edges.not(nwell.outside(dnwell).sized(0.429.um))
+    # Rule NP.3cii: Space to PCOMP: For Outside DNWELL:(ii) For PCOMP space to Nwell >= 0.43um. is 0.08µm
+    logger.info("Executing rule NP.3cii")
+    np3cii_l1 = nplus.outside(dnwell).edges.separation(np_3cii, 0.08.um, euclidian).polygons
+    np3cii_l1.output("NP.3cii", "NP.3cii : Space to PCOMP: For Outside DNWELL:(ii) For PCOMP space to Nwell >= 0.43um. : 0.08µm")
+    np3cii_l1.forget
+
+    np_3cii.forget
+
+    # Rule NP.3d: Min/max space to a butted PCOMP.
+    logger.info("Executing rule NP.3d")
+    np3d_l1 = nplus.not_outside(pcomp)
+    np3d_l1.output("NP.3d", "NP.3d : Min/max space to a butted PCOMP.")
+    np3d_l1.forget
+
+    # Rule NP.3e: Space to related PCOMP edge adjacent to a butting edge.
+    logger.info("Executing rule NP.3e")
+    np3e_l1 = nplus.not_outside(pcomp)
+    np3e_l1.output("NP.3e", "NP.3e : Space to related PCOMP edge adjacent to a butting edge.")
+    np3e_l1.forget
+
+    # Rule NP.4a: Space to related P-channel gate at a butting edge parallel to gate. is 0.32µm
+    logger.info("Executing rule NP.4a")
+    np4a_l1 = nplus.edges.and(pcomp.edges).separation(pgate.edges, 0.32.um, projection).polygons(0.001)
+    np4a_l1.output("NP.4a", "NP.4a : Space to related P-channel gate at a butting edge parallel to gate. : 0.32µm")
+    np4a_l1.forget
+
+    np_4b_poly = poly2.edges.interacting(pgate.edges.not(pcomp.edges)).centers(0, 0.99).and(pgate.sized(0.32.um))
+    # Rule NP.4b: Within 0.32um of channel, space to P-channel gate extension perpendicular to the direction of Poly2.
+    logger.info("Executing rule NP.4b")
+    np4b_l1 = nplus.interacting(nplus.edges.separation(np_4b_poly, 0.22.um, projection).polygons(0.001))
+    np4b_l1.output("NP.4b", "NP.4b : Within 0.32um of channel, space to P-channel gate extension perpendicular to the direction of Poly2.")
+    np4b_l1.forget
+
+    np_4b_poly.forget
+
+    # Rule NP.5a: Overlap of N-channel gate. is 0.23µm
+    logger.info("Executing rule NP.5a")
+    np5a_l1 = nplus.enclosing(ngate, 0.23.um, euclidian).polygons(0.001)
+    np5a_l2 = ngate.not_outside(nplus).not(nplus)
+    np5a_l  = np5a_l1.or(np5a_l2)
+    np5a_l.output("NP.5a", "NP.5a : Overlap of N-channel gate. : 0.23µm")
+    np5a_l1.forget
+    np5a_l2.forget
+    np5a_l.forget
+
+    # Rule NP.5b: Extension beyond COMP for the COMP (1) inside LVPWELL (2) outside Nwell and DNWELL. is 0.16µm
+    logger.info("Executing rule NP.5b")
+    np5b_l1 = nplus.not_outside(lvpwell).or(nplus.outside(nwell).outside(dnwell)).edges.not(pplus).enclosing(comp.edges, 0.16.um, euclidian).polygons(0.001)
+    np5b_l1.output("NP.5b", "NP.5b : Extension beyond COMP for the COMP (1) inside LVPWELL (2) outside Nwell and DNWELL. : 0.16µm")
+    np5b_l1.forget
+
+    np_5ci_background = nplus.not_inside(lvpwell).inside(dnwell).edges
+    np_5ci_foreground = ncomp.not_inside(lvpwell).inside(dnwell).edges.not(pplus.edges).and(lvpwell.inside(dnwell).sized(0.429.um))
+    # Rule NP.5ci: Extension beyond COMP: For Inside DNWELL: (i)For Nplus < 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. is 0.16µm
+    logger.info("Executing rule NP.5ci")
+    np5ci_l1 = np_5ci_background.enclosing(np_5ci_foreground, 0.16.um, projection).polygons(0.001)
+    np5ci_l1.output("NP.5ci", "NP.5ci : Extension beyond COMP: For Inside DNWELL: (i)For Nplus < 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. : 0.16µm")
+    np5ci_l1.forget
+
+    np_5ci_background.forget
+
+    np_5ci_foreground.forget
+
+    np_5cii_background = nplus.not_inside(lvpwell).inside(dnwell).edges
+    np_5cii_foreground = ncomp.not_inside(lvpwell).inside(dnwell).edges.not(pplus.edges).not(lvpwell.inside(dnwell).sized(0.429.um))
+    # Rule NP.5cii: Extension beyond COMP: For Inside DNWELL: (ii) For Nplus >= 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. is 0.02µm
+    logger.info("Executing rule NP.5cii")
+    np5cii_l1 = np_5cii_background.enclosing(np_5cii_foreground, 0.02.um, projection).polygons(0.001)
+    np5cii_l1.output("NP.5cii", "NP.5cii : Extension beyond COMP: For Inside DNWELL: (ii) For Nplus >= 0.43um from LVPWELL edge for Nwell or DNWELL tap inside DNWELL. : 0.02µm")
+    np5cii_l1.forget
+
+    np_5cii_background.forget
+
+    np_5cii_foreground.forget
+
+    np_5di_background = nplus.not_outside(nwell).outside(dnwell).edges
+    np_5di_extend     = nwell.outside(dnwell).not(nwell.outside(dnwell).sized(-0.429.um))
+    np_5di_foreground = ncomp.not_outside(nwell).outside(dnwell).edges.not(pplus.edges).and(np_5di_extend)
+    # Rule NP.5di: Extension beyond COMP: For Outside DNWELL, inside Nwell: (i) For Nwell overlap of Nplus < 0.43um. is 0.16µm
+    logger.info("Executing rule NP.5di")
+    np5di_l1 = np_5di_background.enclosing(np_5di_foreground, 0.16.um, projection).polygons(0.001)
+    np5di_l1.output("NP.5di", "NP.5di : Extension beyond COMP: For Outside DNWELL, inside Nwell: (i) For Nwell overlap of Nplus < 0.43um. : 0.16µm")
+    np5di_l1.forget
+
+    np_5di_background.forget
+
+    np_5di_extend.forget
+
+    np_5di_foreground.forget
+
+    np_5dii_background = nplus.not_outside(nwell).outside(dnwell).edges.not(pplus.edges)
+    np_5dii_extend     = nwell.outside(dnwell).sized(-0.429.um)
+    np_5dii_foreground = ncomp.not_outside(nwell).outside(dnwell).edges.not(pplus.edges).and(np_5dii_extend)
+    # Rule NP.5dii: Extension beyond COMP: For Outside DNWELL, inside Nwell: (ii) For Nwell overlap of Nplus >= 0.43um. is 0.02µm
+    logger.info("Executing rule NP.5dii")
+    np5dii_l1 = np_5dii_background.enclosing(np_5dii_foreground, 0.02.um, euclidian).polygons(0.001)
+    np5dii_l1.output("NP.5dii", "NP.5dii : Extension beyond COMP: For Outside DNWELL, inside Nwell: (ii) For Nwell overlap of Nplus >= 0.43um. : 0.02µm")
+    np5dii_l1.forget
+
+    np_5dii_background.forget
+
+    np_5dii_extend.forget
+
+    np_5dii_foreground.forget
+
+    # Rule NP.6: Overlap with NCOMP butted to PCOMP. is 0.22µm
+    logger.info("Executing rule NP.6")
+    np6_l1 = comp.interacting(nplus).enclosing(pcomp.interacting(nplus), 0.22.um, projection).polygons
+    np6_l1.output("NP.6", "NP.6 : Overlap with NCOMP butted to PCOMP. : 0.22µm")
+    np6_l1.forget
+
+    # Rule NP.7: Space to unrelated unsalicided Poly2. is 0.18µm
+    logger.info("Executing rule NP.7")
+    np7_l1  = nplus.separation(poly2.and(sab), 0.18.um, euclidian).polygons(0.001)
+    np7_l1.output("NP.7", "NP.7 : Space to unrelated unsalicided Poly2. : 0.18µm")
+    np7_l1.forget
+
+    # Rule NP.8a: Minimum Nplus area (um2). is 0.35µm²
+    logger.info("Executing rule NP.8a")
+    np8a_l1  = nplus.with_area(nil, 0.35.um)
+    np8a_l1.output("NP.8a", "NP.8a : Minimum Nplus area (um2). : 0.35µm²")
+    np8a_l1.forget
+
+    # Rule NP.8b: Minimum area enclosed by Nplus (um2). is 0.35µm²
+    logger.info("Executing rule NP.8b")
+    np8b_l1  = nplus.holes.with_area(nil, 0.35.um)
+    np8b_l1.output("NP.8b", "NP.8b : Minimum area enclosed by Nplus (um2). : 0.35µm²")
+    np8b_l1.forget
+
+    # Rule NP.9: Overlap of unsalicided Poly2. is 0.18µm
+    logger.info("Executing rule NP.9")
+    np9_l1 = nplus.enclosing(poly2.and(sab), 0.18.um, euclidian).polygons(0.001)
+    np9_l2 = poly2.and(sab).not_outside(nplus).not(nplus)
+    np9_l  = np9_l1.or(np9_l2)
+    np9_l.output("NP.9", "NP.9 : Overlap of unsalicided Poly2. : 0.18µm")
+    np9_l1.forget
+    np9_l2.forget
+    np9_l.forget
+
+    # Rule NP.10: Overlap of unsalicided COMP. is 0.18µm
+    logger.info("Executing rule NP.10")
+    np10_l1 = nplus.enclosing(comp.and(sab), 0.18.um, euclidian).polygons(0.001)
+    np10_l1.output("NP.10", "NP.10 : Overlap of unsalicided COMP. : 0.18µm")
+    np10_l1.forget
+
+    np_11_in_dnwell = nplus.interacting(nplus.edges.and(pcomp.edges).and(lvpwell.inside(dnwell).not(lvpwell.inside(dnwell).sized(-0.429.um))))
+    np_11_out_dnwell = nplus.interacting(nplus.edges.and(pcomp.edges).and(nwell.outside(dnwell).sized(0.429.um)))
+    # Rule NP.11: Butting Nplus and PCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).
+    logger.info("Executing rule NP.11")
+    np11_l1 = np_11_in_dnwell.or(np_11_out_dnwell)
+    np11_l1.output("NP.11", "NP.11 : Butting Nplus and PCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).")
+    np11_l1.forget
+
+    np_11_in_dnwell.forget
+
+    np_11_out_dnwell.forget
+
+    # Rule NP.12: Overlap with P-channel poly2 gate extension is forbidden within 0.32um of P-channel gate.
+    logger.info("Executing rule NP.12")
+    np12_l1 = nplus.interacting(nplus.edges.separation(pgate.edges.and(pcomp.edges), 0.32.um, euclidian).polygons(0.001))
+    np12_l1.output("NP.12", "NP.12 : Overlap with P-channel poly2 gate extension is forbidden within 0.32um of P-channel gate.")
+    np12_l1.forget
+end #FEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/otp_mk.drc b/tapeout/outputs/drc/otp_mk.drc
new file mode 100644
index 0000000..5335145
--- /dev/null
+++ b/tapeout/outputs/drc/otp_mk.drc
@@ -0,0 +1,1190 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #---------------------OTP_MK---------------------
+    #================================================
+
+    # Rule O.DF.3a: Min. COMP Space. P-substrate tap (PCOMP outside NWELL) can be butted for different voltage devices as the potential is same. is 0.24µm
+    logger.info("Executing rule O.DF.3a")
+    odf3a_l1  = comp.and(otp_mk).space(0.24.um, euclidian).polygons(0.001)
+    odf3a_l1.output("O.DF.3a", "O.DF.3a : Min. COMP Space. P-substrate tap (PCOMP outside NWELL) can be butted for different voltage devices as the potential is same. : 0.24µm")
+    odf3a_l1.forget
+
+    # Rule O.DF.6: Min. COMP extend beyond poly2 (it also means source/drain overhang). is 0.22µm
+    logger.info("Executing rule O.DF.6")
+    odf6_l1 = comp.and(otp_mk).enclosing(poly2.and(otp_mk), 0.22.um, euclidian).polygons(0.001)
+    odf6_l1.output("O.DF.6", "O.DF.6 : Min. COMP extend beyond poly2 (it also means source/drain overhang). : 0.22µm")
+    odf6_l1.forget
+
+    # Rule O.DF.9: Min. COMP area (um2). is 0.1444µm²
+    logger.info("Executing rule O.DF.9")
+    odf9_l1  = comp.and(otp_mk).with_area(nil, 0.1444.um)
+    odf9_l1.output("O.DF.9", "O.DF.9 : Min. COMP area (um2). : 0.1444µm²")
+    odf9_l1.forget
+
+    # Rule O.PL.2: Min. poly2 width. is 0.22µm
+    logger.info("Executing rule O.PL.2")
+    opl2_l1  = poly2.edges.and(tgate.edges).and(otp_mk).width(0.22.um, euclidian).polygons(0.001)
+    opl2_l1.output("O.PL.2", "O.PL.2 : Min. poly2 width. : 0.22µm")
+    opl2_l1.forget
+
+    # Rule O.PL.3a: Min. poly2 Space on COMP. is 0.18µm
+    logger.info("Executing rule O.PL.3a")
+    opl3a_l1  = (tgate).or(poly2.not(comp)).and(otp_mk).space(0.18.um, euclidian).polygons(0.001)
+    opl3a_l1.output("O.PL.3a", "O.PL.3a : Min. poly2 Space on COMP. : 0.18µm")
+    opl3a_l1.forget
+
+    # Rule O.PL.4: Min. extension beyond COMP to form Poly2 end cap. is 0.14µm
+    logger.info("Executing rule O.PL.4")
+    opl4_l1 = poly2.and(otp_mk).enclosing(comp.and(otp_mk), 0.14.um, euclidian).polygons(0.001)
+    opl4_l1.output("O.PL.4", "O.PL.4 : Min. extension beyond COMP to form Poly2 end cap. : 0.14µm")
+    opl4_l1.forget
+
+    # rule O.PL.5a is not a DRC check
+
+    # rule O.PL.5b is not a DRC check
+
+    # Rule O.SB.2: Min. salicide Block Space. is 0.28µm
+    logger.info("Executing rule O.SB.2")
+    osb2_l1  = sab.and(otp_mk).space(0.28.um, euclidian).polygons(0.001)
+    osb2_l1.output("O.SB.2", "O.SB.2 : Min. salicide Block Space. : 0.28µm")
+    osb2_l1.forget
+
+    # Rule O.SB.3: Min. space from salicide block to unrelated COMP. is 0.09µm
+    logger.info("Executing rule O.SB.3")
+    osb3_l1  = sab.outside(comp).and(otp_mk).separation(comp.outside(sab), 0.09.um, euclidian).polygons(0.001)
+    osb3_l1.output("O.SB.3", "O.SB.3 : Min. space from salicide block to unrelated COMP. : 0.09µm")
+    osb3_l1.forget
+
+    # Rule O.SB.4: Min. space from salicide block to contact.
+    logger.info("Executing rule O.SB.4")
+    osb4_l1 = sab.and(otp_mk).separation(contact, 0.03.um, euclidian).polygons(0.001).or(sab.and(otp_mk).and(contact))
+    osb4_l1.output("O.SB.4", "O.SB.4 : Min. space from salicide block to contact.")
+    osb4_l1.forget
+
+    # rule O.SB.5a is not a DRC check
+
+    # Rule O.SB.5b_3.3V: Min. space from salicide block to unrelated Poly2 on COMP. is 0.1µm
+    logger.info("Executing rule O.SB.5b_3.3V")
+    osb5b_l1  = sab.outside(tgate).and(otp_mk).separation(tgate.outside(sab), 0.1.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    osb5b_l1.output("O.SB.5b_3.3V", "O.SB.5b_3.3V : Min. space from salicide block to unrelated Poly2 on COMP. : 0.1µm")
+    osb5b_l1.forget
+
+    # rule O.SB.5b_5V is not a DRC check
+
+    # Rule O.SB.9: Min. salicide block extension beyond unsalicided Poly2. is 0.1µm
+    logger.info("Executing rule O.SB.9")
+    osb9_l1 = sab.and(otp_mk).enclosing(poly2.and(sab), 0.1.um, euclidian).polygons
+    osb9_l1.output("O.SB.9", "O.SB.9 : Min. salicide block extension beyond unsalicided Poly2. : 0.1µm")
+    osb9_l1.forget
+
+    # Rule O.SB.11: Min. salicide block overlap with COMP. is 0.04µm
+    logger.info("Executing rule O.SB.11")
+    osb11_l1 = sab.and(otp_mk).overlap(comp, 0.04.um, euclidian).polygons
+    osb11_l1.output("O.SB.11", "O.SB.11 : Min. salicide block overlap with COMP. : 0.04µm")
+    osb11_l1.forget
+
+    # rule O.SB.12 is not a DRC check
+
+    # Rule O.SB.13_3.3V: Min. area of silicide block (um2). is 1.488µm²
+    logger.info("Executing rule O.SB.13_3.3V")
+    osb13_l1  = sab.and(otp_mk).with_area(nil, 1.488.um).not_interacting(v5_xtor).not_interacting(dualgate)
+    osb13_l1.output("O.SB.13_3.3V", "O.SB.13_3.3V : Min. area of silicide block (um2). : 1.488µm²")
+    osb13_l1.forget
+
+    # Rule O.SB.13_5V: Min. area of silicide block (um2). is 2µm²
+    logger.info("Executing rule O.SB.13_5V")
+    osb13_l1  = sab.and(otp_mk).and(v5_xtor).with_area(nil, 2.um)
+    osb13_l1.output("O.SB.13_5V", "O.SB.13_5V : Min. area of silicide block (um2). : 2µm²")
+    osb13_l1.forget
+
+    # rule O.SB.15b is not a DRC check
+
+    # Rule O.CO.7: Min. space from COMP contact to Poly2 on COMP. is 0.13µm
+    logger.info("Executing rule O.CO.7")
+    oco7_l1  = contact.not_outside(comp).and(otp_mk).separation(tgate.and(otp_mk), 0.13.um, euclidian).polygons(0.001)
+    oco7_l1.output("O.CO.7", "O.CO.7 : Min. space from COMP contact to Poly2 on COMP. : 0.13µm")
+    oco7_l1.forget
+
+    # Rule O.PL.ORT: Orientation-restricted gates must have the gate width aligned along the X-axis (poly line running horizontally) in reference to wafer notch down. is 0µm
+    logger.info("Executing rule O.PL.ORT")
+    oplort_l1 = comp.not(poly2).edges.and(tgate.edges).and(otp_mk).without_angle(0.um).extended(0, 0, 0.001, 0.001)
+    oplort_l1.output("O.PL.ORT", "O.PL.ORT : Orientation-restricted gates must have the gate width aligned along the X-axis (poly line running horizontally) in reference to wafer notch down. : 0µm")
+    oplort_l1.forget
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/poly2.drc b/tapeout/outputs/drc/poly2.drc
new file mode 100644
index 0000000..98ab07f
--- /dev/null
+++ b/tapeout/outputs/drc/poly2.drc
@@ -0,0 +1,1240 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #---------------------POLY2----------------------
+    #================================================
+
+    # Rule PL.1_3.3V: Interconnect Width (outside PLFUSE). is 0.18µm
+    logger.info("Executing rule PL.1_3.3V")
+    pl1_l1  = poly2.outside(plfuse).not(ymtp_mk).width(0.18.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl1_l1.output("PL.1_3.3V", "PL.1_3.3V : Interconnect Width (outside PLFUSE). : 0.18µm")
+    pl1_l1.forget
+
+    # Rule PL.1_5V: Interconnect Width (outside PLFUSE). is 0.2µm
+    logger.info("Executing rule PL.1_5V")
+    pl1_l1  = poly2.outside(plfuse).not(ymtp_mk).width(0.2.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl1_l1.output("PL.1_5V", "PL.1_5V : Interconnect Width (outside PLFUSE). : 0.2µm")
+    pl1_l1.forget
+
+    # Rule PL.1a_3.3V: Interconnect Width (inside PLFUSE). is 0.18µm
+    logger.info("Executing rule PL.1a_3.3V")
+    pl1a_l1  = poly2.inside(plfuse).width(0.18.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl1a_l1.output("PL.1a_3.3V", "PL.1a_3.3V : Interconnect Width (inside PLFUSE). : 0.18µm")
+    pl1a_l1.forget
+
+    # Rule PL.1a_5V: Interconnect Width (inside PLFUSE). is 0.18µm
+    logger.info("Executing rule PL.1a_5V")
+    pl1a_l1  = poly2.inside(plfuse).width(0.18.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl1a_l1.output("PL.1a_5V", "PL.1a_5V : Interconnect Width (inside PLFUSE). : 0.18µm")
+    pl1a_l1.forget
+
+    # Rule PL.2_3.3V: Gate Width (Channel Length). is 0.28µm
+    logger.info("Executing rule PL.2_3.3V")
+    pl2_l1  = tgate.not(otp_mk).not(ymtp_mk).width(0.28.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl2_l1.output("PL.2_3.3V", "PL.2_3.3V : Gate Width (Channel Length). : 0.28µm")
+    pl2_l1.forget
+
+    pl_2_5v_n = ngate_5V.edges.inside_part(comp).width(0.6.um, euclidian).polygons
+    pl_2_5v_p = pgate_5V.edges.inside_part(comp).width(0.5.um, euclidian).polygons
+
+    pl_2_6v_n = ngate_6V.edges.inside_part(comp).width(0.7.um, euclidian).polygons
+    pl_2_6v_p = pgate_6V.edges.inside_part(comp).width(0.55.um, euclidian).polygons
+
+    # Rule PL.2_5V: Gate Width (Channel Length).
+    logger.info("Executing rule PL.2_5V")
+    pl2_l1 = pl_2_5v_n.or(pl_2_5v_p).or(pl_2_6v_n.or(pl_2_6v_p))
+    pl2_l1.output("PL.2_5V", "PL.2_5V : Gate Width (Channel Length).")
+    pl2_l1.forget
+
+    pl_2_5v_n.forget
+    pl_2_5v_p.forget
+    pl_2_6v_n.forget
+    pl_2_6v_p.forget
+
+    # Rule PL.3a_3.3V: Space on COMP/Field. is 0.24µm
+    logger.info("Executing rule PL.3a_3.3V")
+    pl3a_l1  = (tgate).or(poly2.not(comp)).not(otp_mk).space(0.24.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl3a_l1.output("PL.3a_3.3V", "PL.3a_3.3V : Space on COMP/Field. : 0.24µm")
+    pl3a_l1.forget
+
+    # Rule PL.3a_5V: Space on COMP/Field. is 0.24µm
+    logger.info("Executing rule PL.3a_5V")
+    pl3a_l1  = (tgate).or(poly2.not(comp)).not(otp_mk).space(0.24.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl3a_l1.output("PL.3a_5V", "PL.3a_5V : Space on COMP/Field. : 0.24µm")
+    pl3a_l1.forget
+
+    # rule PL.3b_3.3V is not a DRC check
+
+    # rule PL.3b_5V is not a DRC check
+
+    poly_pl = poly2.not(otp_mk).not(ymtp_mk).not(mvsd).not(mvpsd)
+    comp_pl = comp.not(otp_mk).not(ymtp_mk).not(mvsd).not(mvpsd)
+    # Rule PL.4_3.3V: Extension beyond COMP to form Poly2 end cap. is 0.22µm
+    logger.info("Executing rule PL.4_3.3V")
+    pl4_l1 = poly_pl.enclosing(comp.not(otp_mk).not(ymtp_mk), 0.22.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl4_l1.output("PL.4_3.3V", "PL.4_3.3V : Extension beyond COMP to form Poly2 end cap. : 0.22µm")
+    pl4_l1.forget
+
+    # Rule PL.4_5V: Extension beyond COMP to form Poly2 end cap. is 0.22µm
+    logger.info("Executing rule PL.4_5V")
+    pl4_l1 = poly_pl.enclosing(comp.not(otp_mk).not(ymtp_mk), 0.22.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl4_l1.output("PL.4_5V", "PL.4_5V : Extension beyond COMP to form Poly2 end cap. : 0.22µm")
+    pl4_l1.forget
+
+    # Rule PL.5a_3.3V: Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. is 0.1µm
+    logger.info("Executing rule PL.5a_3.3V")
+    pl5a_l1  = poly_pl.separation(comp_pl, 0.1.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl5a_l1.output("PL.5a_3.3V", "PL.5a_3.3V : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.1µm")
+    pl5a_l1.forget
+
+    # Rule PL.5a_5V: Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. is 0.3µm
+    logger.info("Executing rule PL.5a_5V")
+    pl5a_l1  = poly_pl.outside(sramcore).separation(comp_pl, 0.3.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl5a_l1.output("PL.5a_5V", "PL.5a_5V : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.3µm")
+    pl5a_l1.forget
+
+    # Rule PL.5b_3.3V: Space from field Poly2 to related COMP. is 0.1µm
+    logger.info("Executing rule PL.5b_3.3V")
+    pl5b_l1  = poly_pl.separation(comp_pl, 0.1.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    pl5b_l1.output("PL.5b_3.3V", "PL.5b_3.3V : Space from field Poly2 to related COMP. : 0.1µm")
+    pl5b_l1.forget
+
+    # Rule PL.5b_5V: Space from field Poly2 to related COMP. is 0.3µm
+    logger.info("Executing rule PL.5b_5V")
+    pl5b_l1  = poly_pl.outside(sramcore).separation(comp_pl, 0.3.um, euclidian).polygons(0.001).overlapping(dualgate)
+    pl5b_l1.output("PL.5b_5V", "PL.5b_5V : Space from field Poly2 to related COMP. : 0.3µm")
+    pl5b_l1.forget
+    poly_pl.forget
+    comp_pl.forget
+
+    poly_90deg = poly2.corners(90.0).sized(0.1).or(poly2.corners(-90.0).sized(0.1)).not(ymtp_mk)
+    # Rule PL.6: 90 degree bends on the COMP are not allowed.
+    logger.info("Executing rule PL.6")
+    pl6_l1 = poly2.corners(90.0).sized(0.1).or(poly2.corners(-90.0).sized(0.1)).not(ymtp_mk).inside(comp.not(ymtp_mk))
+    pl6_l1.output("PL.6", "PL.6 : 90 degree bends on the COMP are not allowed.")
+    pl6_l1.forget
+
+    poly_90deg.forget
+
+    # Rule PL.7_3.3V: 45 degree bent gate width is 0.3µm
+    logger.info("Executing rule PL.7_3.3V")
+    nom_e1 = nom_gate.edges.inside_part(comp).with_angle(25, 65)
+    nom_e2 = nom_gate.edges.inside_part(comp).with_angle(-65, -25)
+    pl7_edges_nom = nom_e1.or(nom_e2)
+    pl7_l1  = pl7_edges_nom.width(0.3.um, euclidian)
+    pl7_l1.output("PL.7_3.3V", "PL.7_3.3V : 45 degree bent gate width : 0.3µm")
+    pl7_l1.forget
+    nom_e1.forget
+    nom_e2.forget
+    pl7_edges_nom.forget
+
+    # Rule PL.7_5V: 45 degree bent gate width is 0.7µm
+    logger.info("Executing rule PL.7_5V")
+    thick_e1 = thick_gate.edges.inside_part(comp).with_angle(25, 65)
+    thick_e2 = thick_gate.edges.inside_part(comp).with_angle(-65, -25)
+    pl7_edges_thick = thick_e1.or(thick_e2)
+    pl7_l2 = pl7_edges_thick.width(0.7.um, euclidian)
+    pl7_l2.output("PL.7_5V", "PL.7_5V : 45 degree bent gate width : 0.7µm")
+    pl7_l2.forget
+    thick_e1.forget
+    thick_e2.forget
+    pl7_edges_thick.forget
+
+
+    # Rule PL.9: Poly2 inter connect connecting 3.3V and 5V areas (area inside and outside Dualgate) are not allowed. They shall be done though metal lines only.
+    logger.info("Executing rule PL.9")
+    pl9_l1 = poly2.interacting(poly2.not(v5_xtor).not(dualgate)).interacting(poly2.and(dualgate))
+    pl9_l1.output("PL.9", "PL.9 : Poly2 inter connect connecting 3.3V and 5V areas (area inside and outside Dualgate) are not allowed. They shall be done though metal lines only.")
+    pl9_l1.forget
+
+    # rule PL.10 is not a DRC check
+
+    # Rule PL.11: V5_Xtor must enclose 5V device.
+    logger.info("Executing rule PL.11")
+    pl11_l1 = v5_xtor.not_interacting(dualgate.or(otp_mk))
+    pl11_l1.output("PL.11", "PL.11 : V5_Xtor must enclose 5V device.")
+    pl11_l1.forget
+
+    # rule PL.12_3.3V is not a DRC check
+
+    # Rule PL.12: V5_Xtor enclose 5V Comp.
+    logger.info("Executing rule PL.12")
+    pl12_l1 = comp.interacting(v5_xtor).not(v5_xtor)
+    pl12_l1.output("PL.12", "PL.12 : V5_Xtor enclose 5V Comp.")
+    pl12_l1.forget
+
+end #FEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/pplus.drc b/tapeout/outputs/drc/pplus.drc
new file mode 100644
index 0000000..457c9e3
--- /dev/null
+++ b/tapeout/outputs/drc/pplus.drc
@@ -0,0 +1,1298 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+
+    #================================================
+    #---------------------PPLUS----------------------
+    #================================================
+
+    # Rule PP.1: min. pplus width is 0.4µm
+    logger.info("Executing rule PP.1")
+    pp1_l1  = pplus.width(0.4.um, euclidian).polygons(0.001)
+    pp1_l1.output("PP.1", "PP.1 : min. pplus width : 0.4µm")
+    pp1_l1.forget
+
+    # Rule PP.2: min. pplus spacing is 0.4µm
+    logger.info("Executing rule PP.2")
+    pp2_l1  = pplus.space(0.4.um, euclidian).polygons(0.001)
+    pp2_l1.output("PP.2", "PP.2 : min. pplus spacing : 0.4µm")
+    pp2_l1.forget
+
+    # Rule PP.3a: Space to NCOMP for NCOMP (1) inside LVPWELL (2) outside NWELL and DNWELL. is 0.16µm
+    logger.info("Executing rule PP.3a")
+    pp3a_l1  = pplus.separation((ncomp.inside(lvpwell)).or(ncomp.outside(nwell).outside(dnwell)), 0.16.um, euclidian).polygons(0.001)
+    pp3a_l1.output("PP.3a", "PP.3a : Space to NCOMP for NCOMP (1) inside LVPWELL (2) outside NWELL and DNWELL. : 0.16µm")
+    pp3a_l1.forget
+
+    pp_3bi = ncomp.edges.not(lvpwell.inside(dnwell).sized(0.429.um))
+    # Rule PP.3bi: Space to NCOMP: For Inside DNWELL. (i) NCOMP space to LVPWELL >= 0.43um. is 0.08µm
+    logger.info("Executing rule PP.3bi")
+    pp3bi_l1  = pplus.inside(dnwell).edges.separation(pp_3bi, 0.08.um, euclidian).polygons(0.001)
+    pp3bi_l1.output("PP.3bi", "PP.3bi : Space to NCOMP: For Inside DNWELL. (i) NCOMP space to LVPWELL >= 0.43um. : 0.08µm")
+    pp3bi_l1.forget
+
+    pp_3bi.forget
+
+    pp_3bii = ncomp.edges.and(lvpwell.inside(dnwell).sized(0.429.um))
+    # Rule PP.3bii: Space to NCOMP: For Inside DNWELL. (ii) NCOMP space to LVPWELL < 0.43um. is 0.16µm
+    logger.info("Executing rule PP.3bii")
+    pp3bii_l1  = pplus.inside(dnwell).edges.separation(pp_3bii, 0.16.um, euclidian).polygons(0.001)
+    pp3bii_l1.output("PP.3bii", "PP.3bii : Space to NCOMP: For Inside DNWELL. (ii) NCOMP space to LVPWELL < 0.43um. : 0.16µm")
+    pp3bii_l1.forget
+
+    pp_3bii.forget
+
+    pp_3ci_extend = nwell.outside(dnwell).sized(-0.429.um)
+    pp_3ci = ncomp.edges.and(pp_3ci_extend)
+    # Rule PP.3ci: Space to NCOMP: For Outside DNWELL, inside Nwell: (i) NWELL Overlap of NCOMP >= 0.43um. is 0.08µm
+    logger.info("Executing rule PP.3ci")
+    pp3ci_l1  = pplus.outside(dnwell).edges.separation(pp_3ci, 0.08.um, euclidian).polygons(0.001)
+    pp3ci_l1.output("PP.3ci", "PP.3ci : Space to NCOMP: For Outside DNWELL, inside Nwell: (i) NWELL Overlap of NCOMP >= 0.43um. : 0.08µm")
+    pp3ci_l1.forget
+
+    pp_3ci_extend.forget
+
+    pp_3ci.forget
+
+    pp_3cii_extend = nwell.outside(dnwell).not(nwell.outside(dnwell).sized(-0.429.um))
+    pp_3cii = ncomp.edges.and(pp_3cii_extend)
+    # Rule PP.3cii: Space to NCOMP: For Outside DNWELL, inside Nwell: (ii) NWELL Overlap of NCOMP 0.43um. is 0.16µm
+    logger.info("Executing rule PP.3cii")
+    pp3cii_l1  = pplus.outside(dnwell).edges.separation(pp_3cii, 0.16.um, euclidian).polygons(0.001)
+    pp3cii_l1.output("PP.3cii", "PP.3cii : Space to NCOMP: For Outside DNWELL, inside Nwell: (ii) NWELL Overlap of NCOMP 0.43um. : 0.16µm")
+    pp3cii_l1.forget
+
+    pp_3cii_extend.forget
+
+    pp_3cii.forget
+
+    # Rule PP.3d: Min/max space to a butted NCOMP.
+    logger.info("Executing rule PP.3d")
+    pp3d_l1 = pplus.not_outside(ncomp)
+    pp3d_l1.output("PP.3d", "PP.3d : Min/max space to a butted NCOMP.")
+    pp3d_l1.forget
+
+    # Rule PP.3e: Space to NCOMP edge adjacent to a butting edge.
+    logger.info("Executing rule PP.3e")
+    pp3e_l1 = pplus.not_outside(ncomp)
+    pp3e_l1.output("PP.3e", "PP.3e : Space to NCOMP edge adjacent to a butting edge.")
+    pp3e_l1.forget
+
+    # Rule PP.4a: Space related to N-channel gate at a butting edge parallel to gate. is 0.32µm
+    logger.info("Executing rule PP.4a")
+    pp4a_l1 = pplus.edges.and(ncomp.edges).separation(ngate.edges, 0.32.um, projection).polygons(0.001)
+    pp4a_l1.output("PP.4a", "PP.4a : Space related to N-channel gate at a butting edge parallel to gate. : 0.32µm")
+    pp4a_l1.forget
+
+    pp_4b_poly = poly2.edges.interacting(ngate.edges.not(ncomp.edges)).centers(0, 0.99).and(ngate.sized(0.32.um))
+    # Rule PP.4b: Within 0.32um of channel, space to N-channel gate extension perpendicular to the direction of Poly2.
+    logger.info("Executing rule PP.4b")
+    pp4b_l1 = pplus.interacting(pplus.edges.separation(pp_4b_poly, 0.22.um, projection).polygons(0.001))
+    pp4b_l1.output("PP.4b", "PP.4b : Within 0.32um of channel, space to N-channel gate extension perpendicular to the direction of Poly2.")
+    pp4b_l1.forget
+
+    pp_4b_poly.forget
+
+    # Rule PP.5a: Overlap of P-channel gate. is 0.23µm
+    logger.info("Executing rule PP.5a")
+    pp5a_l1 = pplus.enclosing(pgate, 0.23.um, euclidian).polygons(0.001)
+    pp5a_l2 = pgate.not_outside(pplus).not(pplus)
+    pp5a_l  = pp5a_l1.or(pp5a_l2)
+    pp5a_l.output("PP.5a", "PP.5a : Overlap of P-channel gate. : 0.23µm")
+    pp5a_l1.forget
+    pp5a_l2.forget
+    pp5a_l.forget
+
+    # Rule PP.5b: Extension beyond COMP for COMP (1) Inside NWELL (2) outside LVPWELL but inside DNWELL. is 0.16µm
+    logger.info("Executing rule PP.5b")
+    pp5b_l1 = pplus.not_outside(nwell).or(pplus.outside(lvpwell).inside(dnwell)).edges.not(nplus).enclosing(comp.edges, 0.16.um, euclidian).polygons(0.001)
+    pp5b_l1.output("PP.5b", "PP.5b : Extension beyond COMP for COMP (1) Inside NWELL (2) outside LVPWELL but inside DNWELL. : 0.16µm")
+    pp5b_l1.forget
+
+    pp_5ci_background = pplus.not_outside(lvpwell).inside(dnwell).edges.not(nplus.edges)
+    pp_5ci_extend = lvpwell.inside(dnwell).sized(-0.429.um)
+    pp_5ci_foreground = pcomp.not_outside(lvpwell).inside(dnwell).edges.not(nplus.edges).inside_part(pp_5ci_extend)
+    # Rule PP.5ci: Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (i) For LVPWELL overlap of Pplus >= 0.43um for LVPWELL tap. is 0.02µm
+    logger.info("Executing rule PP.5ci")
+    pp5ci_l1 = pp_5ci_background.enclosing(pp_5ci_foreground, 0.02.um, euclidian).polygons(0.001)
+    pp5ci_l1.output("PP.5ci", "PP.5ci : Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (i) For LVPWELL overlap of Pplus >= 0.43um for LVPWELL tap. : 0.02µm")
+    pp5ci_l1.forget
+
+    pp_5ci_background.forget
+
+    pp_5ci_extend.forget
+
+    pp_5ci_foreground.forget
+
+    pp_5cii_background = pplus.not_outside(lvpwell).inside(dnwell).edges
+    pp_5cii_extend = lvpwell.inside(dnwell).not(lvpwell.inside(dnwell).sized(-0.429.um))
+    pp_5cii_foreground = pcomp.not_outside(lvpwell).inside(dnwell).edges.not(nplus.edges).and(pp_5cii_extend)
+    # Rule PP.5cii: Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (ii) For LVPWELL overlap of Pplus < 0.43um for the LVPWELL tap. is 0.16µm
+    logger.info("Executing rule PP.5cii")
+    pp5cii_l1 = pp_5cii_background.enclosing(pp_5cii_foreground, 0.16.um, projection).polygons(0.001)
+    pp5cii_l1.output("PP.5cii", "PP.5cii : Extension beyond COMP: For Inside DNWELL, inside LVPWELL: (ii) For LVPWELL overlap of Pplus < 0.43um for the LVPWELL tap. : 0.16µm")
+    pp5cii_l1.forget
+
+    pp_5cii_background.forget
+
+    pp_5cii_extend.forget
+
+    pp_5cii_foreground.forget
+
+    pp_5di_background = pplus.outside(dnwell).edges
+    pp_5di_foreground = pcomp.outside(dnwell).edges.not(nplus.edges).not(nwell.outside(dnwell).sized(0.429.um))
+    # Rule PP.5di: Extension beyond COMP: For Outside DNWELL (i) For Pplus to NWELL space >= 0.43um for Pfield or LVPWELL tap. is 0.02µm
+    logger.info("Executing rule PP.5di")
+    pp5di_l1 = pp_5di_background.enclosing(pp_5di_foreground, 0.02.um, projection).polygons(0.001)
+    pp5di_l1.output("PP.5di", "PP.5di : Extension beyond COMP: For Outside DNWELL (i) For Pplus to NWELL space >= 0.43um for Pfield or LVPWELL tap. : 0.02µm")
+    pp5di_l1.forget
+
+    pp_5di_background.forget
+
+    pp_5di_foreground.forget
+
+    pp_5dii_background = pplus.outside(dnwell).edges
+    pp_5dii_foreground = pcomp.outside(dnwell).edges.not(nplus.edges).and(nwell.outside(dnwell).sized(0.429.um))
+    # Rule PP.5dii: Extension beyond COMP: For Outside DNWELL (ii) For Pplus to NWELL space < 0.43um for Pfield or LVPWELL tap. is 0.16µm
+    logger.info("Executing rule PP.5dii")
+    pp5dii_l1 = pp_5dii_background.enclosing(pp_5dii_foreground, 0.16.um, projection).polygons(0.001)
+    pp5dii_l1.output("PP.5dii", "PP.5dii : Extension beyond COMP: For Outside DNWELL (ii) For Pplus to NWELL space < 0.43um for Pfield or LVPWELL tap. : 0.16µm")
+    pp5dii_l1.forget
+
+    pp_5dii_background.forget
+
+    pp_5dii_foreground.forget
+
+    # Rule PP.6: Overlap with PCOMP butted to NCOMP. is 0.22µm
+    logger.info("Executing rule PP.6")
+    pp6_l1 = comp.interacting(pplus).enclosing(ncomp.interacting(pplus), 0.22.um, projection).polygons
+    pp6_l1.output("PP.6", "PP.6 : Overlap with PCOMP butted to NCOMP. : 0.22µm")
+    pp6_l1.forget
+
+    # Rule PP.7: Space to unrelated unsalicided Poly2. is 0.18µm
+    logger.info("Executing rule PP.7")
+    pp7_l1  = pplus.separation(poly2.and(sab), 0.18.um, euclidian).polygons(0.001)
+    pp7_l1.output("PP.7", "PP.7 : Space to unrelated unsalicided Poly2. : 0.18µm")
+    pp7_l1.forget
+
+    # Rule PP.8a: Minimum Pplus area (um2). is 0.35µm²
+    logger.info("Executing rule PP.8a")
+    pp8a_l1  = pplus.with_area(nil, 0.35.um)
+    pp8a_l1.output("PP.8a", "PP.8a : Minimum Pplus area (um2). : 0.35µm²")
+    pp8a_l1.forget
+
+    # Rule PP.8b: Minimum area enclosed by Pplus (um2). is 0.35µm²
+    logger.info("Executing rule PP.8b")
+    pp8b_l1  = pplus.holes.with_area(nil, 0.35.um)
+    pp8b_l1.output("PP.8b", "PP.8b : Minimum area enclosed by Pplus (um2). : 0.35µm²")
+    pp8b_l1.forget
+
+    # Rule PP.9: Overlap of unsalicided Poly2. is 0.18µm
+    logger.info("Executing rule PP.9")
+    pp9_l1 = pplus.enclosing(poly2.not_interacting(resistor).and(sab), 0.18.um, euclidian).polygons(0.001)
+    pp9_l2 = poly2.not_interacting(resistor).and(sab).not_outside(pplus).not(pplus)
+    pp9_l  = pp9_l1.or(pp9_l2)
+    pp9_l.output("PP.9", "PP.9 : Overlap of unsalicided Poly2. : 0.18µm")
+    pp9_l1.forget
+    pp9_l2.forget
+    pp9_l.forget
+
+    # Rule PP.10: Overlap of unsalicided COMP. is 0.18µm
+    logger.info("Executing rule PP.10")
+    pp10_l1 = pplus.enclosing(comp.and(sab), 0.18.um, euclidian).polygons(0.001)
+    pp10_l1.output("PP.10", "PP.10 : Overlap of unsalicided COMP. : 0.18µm")
+    pp10_l1.forget
+
+    pp_11_in_dnwell = pplus.interacting(pplus.edges.and(ncomp.edges).and(lvpwell.inside(dnwell).sized(0.429.um)))
+    pp_11_out_dnwell = pplus.interacting(pplus.edges.and(ncomp.edges).and(nwell.outside(dnwell).not(nwell.outside(dnwell).sized(-0.429.um))))
+    # Rule PP.11: Butting Pplus and NCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).
+    logger.info("Executing rule PP.11")
+    pp11_l1 = pp_11_in_dnwell.or(pp_11_out_dnwell)
+    pp11_l1.output("PP.11", "PP.11 : Butting Pplus and NCOMP is forbidden within 0.43um of Nwell edge (for outside DNWELL) and of LVPWELL edge (for inside DNWELL case).")
+    pp11_l1.forget
+
+    pp_11_in_dnwell.forget
+
+    pp_11_out_dnwell.forget
+
+    # Rule PP.12: Overlap with N-channel Poly2 gate extension is forbidden within 0.32um of N-channel gate.
+    logger.info("Executing rule PP.12")
+    pp12_l1 = pplus.interacting(pplus.edges.separation(ngate.edges.and(ncomp.edges), 0.32.um, euclidian).polygons(0.001))
+    pp12_l1.output("PP.12", "PP.12 : Overlap with N-channel Poly2 gate extension is forbidden within 0.32um of N-channel gate.")
+    pp12_l1.forget
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/pres.drc b/tapeout/outputs/drc/pres.drc
new file mode 100644
index 0000000..675f475
--- /dev/null
+++ b/tapeout/outputs/drc/pres.drc
@@ -0,0 +1,1150 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #----------------P+ POLY RESISTOR----------------
+    #================================================
+
+    pres_poly = poly2.and(pplus).interacting(sab).interacting(res_mk).not_interacting(resistor)
+    # Rule PRES.1: Minimum width of Poly2 resistor. is 0.8µm
+    logger.info("Executing rule PRES.1")
+    pres1_l1  = pres_poly.width(0.8.um, euclidian).polygons(0.001)
+    pres1_l1.output("PRES.1", "PRES.1 : Minimum width of Poly2 resistor. : 0.8µm")
+    pres1_l1.forget
+
+    # Rule PRES.2: Minimum space between Poly2 resistors. is 0.4µm
+    logger.info("Executing rule PRES.2")
+    pres2_l1  = pres_poly.isolated(0.4.um, euclidian).polygons(0.001)
+    pres2_l1.output("PRES.2", "PRES.2 : Minimum space between Poly2 resistors. : 0.4µm")
+    pres2_l1.forget
+
+    # Rule PRES.3: Minimum space from Poly2 resistor to COMP.
+    logger.info("Executing rule PRES.3")
+    pres3_l1 = pres_poly.separation(comp, 0.6.um, euclidian).polygons(0.001).or(comp.not_outside(pres_poly))
+    pres3_l1.output("PRES.3", "PRES.3 : Minimum space from Poly2 resistor to COMP.")
+    pres3_l1.forget
+
+    # Rule PRES.4: Minimum space from Poly2 resistor to unrelated Poly2. is 0.6µm
+    logger.info("Executing rule PRES.4")
+    pres4_l1  = pres_poly.separation(poly2.not_interacting(sab), 0.6.um, euclidian).polygons(0.001)
+    pres4_l1.output("PRES.4", "PRES.4 : Minimum space from Poly2 resistor to unrelated Poly2. : 0.6µm")
+    pres4_l1.forget
+
+    # Rule PRES.5: Minimum Plus implant overlap of Poly2 resistor. is 0.3µm
+    logger.info("Executing rule PRES.5")
+    pres5_l1 = pplus.enclosing(pres_poly, 0.3.um, euclidian).polygons(0.001)
+    pres5_l2 = pres_poly.not_outside(pplus).not(pplus)
+    pres5_l  = pres5_l1.or(pres5_l2)
+    pres5_l.output("PRES.5", "PRES.5 : Minimum Plus implant overlap of Poly2 resistor. : 0.3µm")
+    pres5_l1.forget
+    pres5_l2.forget
+    pres5_l.forget
+
+    # Rule PRES.6: Minimum salicide block overlap of Poly2 resistor in width direction. is 0.28µm
+    logger.info("Executing rule PRES.6")
+    pres6_l1 = sab.enclosing(pres_poly,0.28.um).polygons(0.001)
+    pres6_l1.output("PRES.6", "PRES.6 : Minimum salicide block overlap of Poly2 resistor in width direction. : 0.28µm")
+    pres6_l1.forget
+
+    # Rule PRES.7: Space from salicide block to contact on Poly2 resistor.
+    logger.info("Executing rule PRES.7")
+    pres7_l1 = contact.inside(pres_poly).separation(sab,0.22.um).polygons(0.001).or(contact.inside(pres_poly).interacting(sab))
+    pres7_l1.output("PRES.7", "PRES.7 : Space from salicide block to contact on Poly2 resistor.")
+    pres7_l1.forget
+
+    # rule PRES.8 is not a DRC check
+
+    mk_pres9a = res_mk.edges.not(poly2.and(pplus).and(sab).edges).inside_part(poly2)
+    # Rule PRES.9a: Pplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2.
+    logger.info("Executing rule PRES.9a")
+    pres9a_l1 = res_mk.interacting(pres_poly).interacting(mk_pres9a)
+    pres9a_l1.output("PRES.9a", "PRES.9a : Pplus Poly2 resistor shall be covered by RES_MK marking. RES_MK length shall be coincide with resistor length (Defined by SAB length) and width covering the width of Poly2.")
+    pres9a_l1.forget
+
+    mk_pres9a.forget
+
+    pres9b = res_mk.with_area(15000.01.um,nil).in(res_mk.interacting(res_mk.edges.with_length(80.01.um,nil)))
+    # Rule PRES.9b: If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. is 20µm
+    logger.info("Executing rule PRES.9b")
+    pres9b_l1 = pres9b.interacting(pres_poly).drc(separation(pres9b) < 20.um).polygons(0.001)
+    pres9b_l1.output("PRES.9b", "PRES.9b : If the size of single RES_MK mark layer is greater than 15000um2 and both side (X and Y) are greater than 80um. then the minimum spacing to adjacent RES_MK layer. : 20µm")
+    pres9b_l1.forget
+
+    pres9b.forget
+
+    pres_poly.forget
+
+end #PRES
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/sab.drc b/tapeout/outputs/drc/sab.drc
new file mode 100644
index 0000000..19629b8
--- /dev/null
+++ b/tapeout/outputs/drc/sab.drc
@@ -0,0 +1,1201 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #----------------------SAB-----------------------
+    #================================================
+
+    # Rule SB.1: min. sab width is 0.42µm
+    logger.info("Executing rule SB.1")
+    sb1_l1  = sab.width(0.42.um, euclidian).polygons(0.001)
+    sb1_l1.output("SB.1", "SB.1 : min. sab width : 0.42µm")
+    sb1_l1.forget
+
+    # Rule SB.2: min. sab spacing is 0.42µm
+    logger.info("Executing rule SB.2")
+    sb2_l1  = sab.outside(otp_mk).space(0.42.um, euclidian).polygons(0.001)
+    sb2_l1.output("SB.2", "SB.2 : min. sab spacing : 0.42µm")
+    sb2_l1.forget
+
+    # Rule SB.3: Space from salicide block to unrelated COMP. is 0.22µm
+    logger.info("Executing rule SB.3")
+    sb3_l1  = sab.outside(comp).outside(otp_mk).separation(comp.outside(sab), 0.22.um, euclidian).polygons(0.001)
+    sb3_l1.output("SB.3", "SB.3 : Space from salicide block to unrelated COMP. : 0.22µm")
+    sb3_l1.forget
+
+    # Rule SB.4: Space from salicide block to contact.
+    logger.info("Executing rule SB.4")
+    sb4_l1 = sab.outside(otp_mk).separation(contact, 0.15.um, euclidian).polygons(0.001).or(sab.outside(otp_mk).and(contact))
+    sb4_l1.output("SB.4", "SB.4 : Space from salicide block to contact.")
+    sb4_l1.forget
+
+    # Rule SB.5a: Space from salicide block to unrelated Poly2 on field. is 0.3µm
+    logger.info("Executing rule SB.5a")
+    sb5a_l1  = sab.outside(poly2.not(comp)).outside(otp_mk).separation(poly2.not(comp).outside(sab), 0.3.um, euclidian).polygons(0.001)
+    sb5a_l1.output("SB.5a", "SB.5a : Space from salicide block to unrelated Poly2 on field. : 0.3µm")
+    sb5a_l1.forget
+
+    # Rule SB.5b: Space from salicide block to unrelated Poly2 on COMP. is 0.28µm
+    logger.info("Executing rule SB.5b")
+    sb5b_l1  = sab.outside(tgate).outside(otp_mk).separation(tgate.outside(sab), 0.28.um, euclidian).polygons(0.001)
+    sb5b_l1.output("SB.5b", "SB.5b : Space from salicide block to unrelated Poly2 on COMP. : 0.28µm")
+    sb5b_l1.forget
+
+    # Rule SB.6: Salicide block extension beyond related COMP. is 0.22µm
+    logger.info("Executing rule SB.6")
+    sb6_l1 = sab.enclosing(comp, 0.22.um, euclidian).polygons(0.001)
+    sb6_l1.output("SB.6", "SB.6 : Salicide block extension beyond related COMP. : 0.22µm")
+    sb6_l1.forget
+
+    # Rule SB.7: COMP extension beyond related salicide block. is 0.22µm
+    logger.info("Executing rule SB.7")
+    sb7_l1 = comp.enclosing(sab, 0.22.um, euclidian).polygons
+    sb7_l1.output("SB.7", "SB.7 : COMP extension beyond related salicide block. : 0.22µm")
+    sb7_l1.forget
+
+    # Rule SB.8: Non-salicided contacts are forbidden.
+    logger.info("Executing rule SB.8")
+    sb8_l1 = contact.inside(sab)
+    sb8_l1.output("SB.8", "SB.8 : Non-salicided contacts are forbidden.")
+    sb8_l1.forget
+
+    # Rule SB.9: Salicide block extension beyond unsalicided Poly2. is 0.22µm
+    logger.info("Executing rule SB.9")
+    sb9_l1 = sab.outside(otp_mk).enclosing(poly2.and(sab), 0.22.um, euclidian).polygons
+    sb9_l1.output("SB.9", "SB.9 : Salicide block extension beyond unsalicided Poly2. : 0.22µm")
+    sb9_l1.forget
+
+    # Rule SB.10: Poly2 extension beyond related salicide block. is 0.22µm
+    logger.info("Executing rule SB.10")
+    sb10_l1 = poly2.enclosing(sab, 0.22.um, euclidian).polygons(0.001)
+    sb10_l1.output("SB.10", "SB.10 : Poly2 extension beyond related salicide block. : 0.22µm")
+    sb10_l1.forget
+
+    # Rule SB.11: Overlap with COMP. is 0.22µm
+    logger.info("Executing rule SB.11")
+    sb11_l1 = sab.outside(otp_mk).overlap(comp, 0.22.um, euclidian).polygons
+    sb11_l1.output("SB.11", "SB.11 : Overlap with COMP. : 0.22µm")
+    sb11_l1.forget
+
+    # Rule SB.12: Overlap with Poly2 outside ESD_MK. is 0.22µm
+    logger.info("Executing rule SB.12")
+    sb12_l1 = sab.outside(otp_mk).outside(esd_mk).overlap(poly2.outside(otp_mk).outside(esd_mk), 0.22.um, euclidian).polygons
+    sb12_l1.output("SB.12", "SB.12 : Overlap with Poly2 outside ESD_MK. : 0.22µm")
+    sb12_l1.forget
+
+    # Rule SB.13: Min. area (um2). is 2µm²
+    logger.info("Executing rule SB.13")
+    sb13_l1  = sab.outside(otp_mk).with_area(nil, 2.um)
+    sb13_l1.output("SB.13", "SB.13 : Min. area (um2). : 2µm²")
+    sb13_l1.forget
+
+    # Rule SB.14a: Space from unsalicided Nplus Poly2 to unsalicided Pplus Poly2. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at unsalicided Pplus Poly2 corners). is 0.56µm
+    logger.info("Executing rule SB.14a")
+    sb14a_l1 = poly2.and(nplus).and(sab).separation(poly2.and(pplus).and(sab), 0.56.um, square).polygons
+    sb14a_l1.output("SB.14a", "SB.14a : Space from unsalicided Nplus Poly2 to unsalicided Pplus Poly2. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at unsalicided Pplus Poly2 corners). : 0.56µm")
+    sb14a_l1.forget
+
+    # Rule SB.14b: Space from unsalicided Nplus Poly2 to P-channel gate. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at P-channel gate corners). is 0.56µm
+    logger.info("Executing rule SB.14b")
+    sb14b_l1 = poly2.and(nplus).and(sab).separation(pgate, 0.56.um, square).polygons
+    sb14b_l1.output("SB.14b", "SB.14b : Space from unsalicided Nplus Poly2 to P-channel gate. (Unsalicided Nplus Poly2 must not fall within a square of 0.56um x 0.56um at P-channel gate corners). : 0.56µm")
+    sb14b_l1.forget
+
+    # Rule SB.15a: Space from unsalicided Poly2 to unrelated Nplus/Pplus. is 0.18µm
+    logger.info("Executing rule SB.15a")
+    sb15a_l1  = poly2.and(sab).separation(nplus.or(pplus), 0.18.um, euclidian).polygons(0.001)
+    sb15a_l1.output("SB.15a", "SB.15a : Space from unsalicided Poly2 to unrelated Nplus/Pplus. : 0.18µm")
+    sb15a_l1.forget
+
+    sb_15b_1 = poly2.interacting(nplus.or(pplus)).and(sab).edges.not(poly2.edges.and(sab)).separation(nplus.or(pplus).edges, 0.32.um, projection).polygons(0.001)
+    sb_15b_2 = poly2.interacting(nplus.or(pplus)).and(sab).separation(nplus.or(pplus), 0.32.um, projection).polygons(0.001)
+    # Rule SB.15b: Space from unsalicided Poly2 to unrelated Nplus/Pplus along Poly2 line. is 0.32µm
+    logger.info("Executing rule SB.15b")
+    sb15b_l1 = sb_15b_1.and(sb_15b_2).outside(otp_mk)
+    sb15b_l1.output("SB.15b", "SB.15b : Space from unsalicided Poly2 to unrelated Nplus/Pplus along Poly2 line. : 0.32µm")
+    sb15b_l1.forget
+
+    sb_15b_1.forget
+
+    sb_15b_2.forget
+
+    # Rule SB.16: SAB layer cannot exist on 3.3V and 5V/6V CMOS transistors' Poly and COMP area of the core circuit (Excluding the transistors used for ESD purpose). It can only exist on CMOS transistors marked by LVS_IO, OTP_MK, ESD_MK layers.
+    logger.info("Executing rule SB.16")
+    sb16_l1 = sab.outside(otp_mk).outside(otp_mk.or(lvs_io).or(esd_mk)).not_outside(ngate.or(pgate.and(nwell)))
+    sb16_l1.output("SB.16", "SB.16 : SAB layer cannot exist on 3.3V and 5V/6V CMOS transistors' Poly and COMP area of the core circuit (Excluding the transistors used for ESD purpose). It can only exist on CMOS transistors marked by LVS_IO, OTP_MK, ESD_MK layers.")
+    sb16_l1.forget
+
+end #FEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/sram.drc b/tapeout/outputs/drc/sram.drc
new file mode 100644
index 0000000..de54a83
--- /dev/null
+++ b/tapeout/outputs/drc/sram.drc
@@ -0,0 +1,1194 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if FEOL
+    #================================================
+    #--------------------5V SRAM---------------------
+    #================================================
+
+    # Rule S.DF.4c_MV: Min. (Nwell overlap of PCOMP) outside DNWELL. is 0.45µm
+    logger.info("Executing rule S.DF.4c_MV")
+    sdf4c_l1 = nwell.outside(dnwell).inside(sramcore).enclosing(pcomp.outside(dnwell).inside(sramcore), 0.45.um, euclidian).polygons(0.001)
+    sdf4c_l2 = pcomp.outside(dnwell).inside(sramcore).not_outside(nwell.outside(dnwell).inside(sramcore)).not(nwell.outside(dnwell).inside(sramcore))
+    sdf4c_l  = sdf4c_l1.or(sdf4c_l2).overlapping(v5_xtor).overlapping(dualgate)
+    sdf4c_l.output("S.DF.4c_MV", "S.DF.4c_MV : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.45µm")
+    sdf4c_l1.forget
+    sdf4c_l2.forget
+    sdf4c_l.forget
+
+    # Rule S.DF.6_MV: Min. COMP extend beyond gate (it also means source/drain overhang). is 0.32µm
+    logger.info("Executing rule S.DF.6_MV")
+    sdf6_l1 = comp.inside(sramcore).enclosing(poly2.inside(sramcore), 0.32.um, euclidian).polygons(0.001).overlapping(v5_xtor).overlapping(dualgate)
+    sdf6_l1.output("S.DF.6_MV", "S.DF.6_MV : Min. COMP extend beyond gate (it also means source/drain overhang). : 0.32µm")
+    sdf6_l1.forget
+
+    # Rule S.DF.7_MV: Min. (LVPWELL Spacer to PCOMP) inside DNWELL. is 0.45µm
+    logger.info("Executing rule S.DF.7_MV")
+    sdf7_l1  = pcomp.inside(dnwell).inside(sramcore).separation(lvpwell.inside(dnwell).inside(sramcore), 0.45.um, euclidian).polygons(0.001).overlapping(v5_xtor).overlapping(dualgate)
+    sdf7_l1.output("S.DF.7_MV", "S.DF.7_MV : Min. (LVPWELL Spacer to PCOMP) inside DNWELL. : 0.45µm")
+    sdf7_l1.forget
+
+    # Rule S.DF.8_MV: Min. (LVPWELL overlap of NCOMP) Inside DNWELL. is 0.45µm
+    logger.info("Executing rule S.DF.8_MV")
+    sdf8_l1 = lvpwell.inside(dnwell).inside(sramcore).enclosing(ncomp.inside(dnwell).inside(sramcore), 0.45.um, euclidian).polygons(0.001)
+    sdf8_l2 = ncomp.inside(dnwell).inside(sramcore).not_outside(lvpwell.inside(dnwell).inside(sramcore)).not(lvpwell.inside(dnwell).inside(sramcore))
+    sdf8_l  = sdf8_l1.or(sdf8_l2).overlapping(v5_xtor).overlapping(dualgate)
+    sdf8_l.output("S.DF.8_MV", "S.DF.8_MV : Min. (LVPWELL overlap of NCOMP) Inside DNWELL. : 0.45µm")
+    sdf8_l1.forget
+    sdf8_l2.forget
+    sdf8_l.forget
+
+    # Rule S.DF.16_MV: Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). is 0.45µm
+    logger.info("Executing rule S.DF.16_MV")
+    sdf16_l1  = ncomp.outside(nwell).outside(dnwell).inside(sramcore).separation(nwell.outside(dnwell).inside(sramcore), 0.45.um, euclidian).polygons(0.001).overlapping(v5_xtor).overlapping(dualgate)
+    sdf16_l1.output("S.DF.16_MV", "S.DF.16_MV : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.45µm")
+    sdf16_l1.forget
+
+    # Rule S.PL.5a_MV: Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. is 0.12µm
+    logger.info("Executing rule S.PL.5a_MV")
+    spl5a_l1  = poly2.inside(sramcore).separation(comp.inside(sramcore), 0.12.um, euclidian).polygons(0.001).overlapping(v5_xtor).overlapping(dualgate)
+    spl5a_l1.output("S.PL.5a_MV", "S.PL.5a_MV : Space from field Poly2 to unrelated COMP Spacer from field Poly2 to Guard-ring. : 0.12µm")
+    spl5a_l1.forget
+
+    # Rule S.PL.5b_MV: Space from field Poly2 to related COMP. is 0.12µm
+    logger.info("Executing rule S.PL.5b_MV")
+    spl5b_l1  = poly2.inside(sramcore).separation(comp.inside(sramcore), 0.12.um, euclidian).polygons(0.001).overlapping(v5_xtor).overlapping(dualgate)
+    spl5b_l1.output("S.PL.5b_MV", "S.PL.5b_MV : Space from field Poly2 to related COMP. : 0.12µm")
+    spl5b_l1.forget
+
+    # Rule S.CO.4_MV: COMP overlap of contact. is 0.04µm
+    logger.info("Executing rule S.CO.4_MV")
+    sco4_l1 = comp.inside(sramcore).and(v5_xtor).enclosing(contact.inside(sramcore).and(v5_xtor), 0.04.um, euclidian).polygons(0.001)
+    sco4_l2 = contact.inside(sramcore).and(v5_xtor).not_outside(comp.inside(sramcore).and(v5_xtor)).not(comp.inside(sramcore).and(v5_xtor))
+    sco4_l  = sco4_l1.or(sco4_l2)
+    sco4_l.output("S.CO.4_MV", "S.CO.4_MV : COMP overlap of contact. : 0.04µm")
+    sco4_l1.forget
+    sco4_l2.forget
+    sco4_l.forget
+
+    #================================================
+    #-------------------3.3V SRAM--------------------
+    #================================================
+
+    # Rule S.DF.4c_LV: Min. (Nwell overlap of PCOMP) outside DNWELL. is 0.4µm
+    logger.info("Executing rule S.DF.4c_LV")
+    sdf4c_l1 = nwell.outside(dnwell).inside(sramcore).enclosing(pcomp.outside(dnwell).inside(sramcore), 0.4.um, euclidian).polygons(0.001)
+    sdf4c_l2 = pcomp.outside(dnwell).inside(sramcore).not_outside(nwell.outside(dnwell).inside(sramcore)).not(nwell.outside(dnwell).inside(sramcore))
+    sdf4c_l  = sdf4c_l1.or(sdf4c_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    sdf4c_l.output("S.DF.4c_LV", "S.DF.4c_LV : Min. (Nwell overlap of PCOMP) outside DNWELL. : 0.4µm")
+    sdf4c_l1.forget
+    sdf4c_l2.forget
+    sdf4c_l.forget
+
+    # Rule S.DF.16_LV: Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). is 0.4µm
+    logger.info("Executing rule S.DF.16_LV")
+    sdf16_l1  = ncomp.outside(nwell).outside(dnwell).inside(sramcore).separation(nwell.outside(dnwell).inside(sramcore), 0.4.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    sdf16_l1.output("S.DF.16_LV", "S.DF.16_LV : Min. space from (Nwell outside DNWELL) to (NCOMP outside Nwell and DNWELL). : 0.4µm")
+    sdf16_l1.forget
+
+    # Rule S.CO.3_LV: Poly2 overlap of contact. is 0.04µm
+    logger.info("Executing rule S.CO.3_LV")
+    sco3_l1 = poly2.inside(sramcore).enclosing(contact.inside(sramcore), 0.04.um, euclidian).polygons(0.001)
+    sco3_l2 = contact.inside(sramcore).not_outside(poly2.inside(sramcore)).not(poly2.inside(sramcore))
+    sco3_l  = sco3_l1.or(sco3_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    sco3_l.output("S.CO.3_LV", "S.CO.3_LV : Poly2 overlap of contact. : 0.04µm")
+    sco3_l1.forget
+    sco3_l2.forget
+    sco3_l.forget
+
+    # Rule S.CO.4_LV: COMP overlap of contact. is 0.03µm
+    logger.info("Executing rule S.CO.4_LV")
+    sco4_l1 = comp.inside(sramcore).enclosing(contact.inside(sramcore), 0.03.um, euclidian).polygons(0.001)
+    sco4_l2 = contact.inside(sramcore).not_outside(comp.inside(sramcore)).not(comp.inside(sramcore))
+    sco4_l  = sco4_l1.or(sco4_l2).not_interacting(v5_xtor).not_interacting(dualgate)
+    sco4_l.output("S.CO.4_LV", "S.CO.4_LV : COMP overlap of contact. : 0.03µm")
+    sco4_l1.forget
+    sco4_l2.forget
+    sco4_l.forget
+
+    # Rule S.CO.6_ii_LV: (ii) If Metal1 overlaps contact by < 0.04um on one side, adjacent metal1 edges overlap
+    logger.info("Executing rule S.CO.6_ii_LV")
+    sco6_l1 = metal1.and(sramcore).enclosing(contact.inside(sramcore), 0.02.um, euclidian).polygons(0.001).or(contact.inside(sramcore).not_inside(metal1.inside(sramcore)).not(metal1.inside(sramcore))).not_interacting(v5_xtor).not_interacting(dualgate)
+    sco6_l1.output("S.CO.6_ii_LV", "S.CO.6_ii_LV : (ii) If Metal1 overlaps contact by < 0.04um on one side, adjacent metal1 edges overlap")
+    sco6_l1.forget
+
+    # Rule S.M1.1_LV: min. metal1 width is 0.22µm
+    logger.info("Executing rule S.M1.1_LV")
+    sm11_l1  = metal1.and(sramcore).width(0.22.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    sm11_l1.output("S.M1.1_LV", "S.M1.1_LV : min. metal1 width : 0.22µm")
+    sm11_l1.forget
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/tail.drc b/tapeout/outputs/drc/tail.drc
new file mode 100644
index 0000000..4738735
--- /dev/null
+++ b/tapeout/outputs/drc/tail.drc
@@ -0,0 +1,1082 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/via1.drc b/tapeout/outputs/drc/via1.drc
new file mode 100644
index 0000000..7ba2c88
--- /dev/null
+++ b/tapeout/outputs/drc/via1.drc
@@ -0,0 +1,1182 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    #================================================
+    #----------------------via1----------------------
+    #================================================
+
+    # Rule V1.1: Min/max Via1 size . is 0.26µm
+    logger.info("Executing rule V1.1")
+    v11_l1 = via1.edges.without_length(0.26.um).extended(0, 0, 0.001, 0.001)
+    v11_l1.output("V1.1", "V1.1 : Min/max Via1 size . : 0.26µm")
+    v11_l1.forget
+
+    # Rule V1.2a: min. via1 spacing is 0.26µm
+    logger.info("Executing rule V1.2a")
+    v12a_l1  = via1.space(0.26.um, euclidian)
+    v12a_l1.output("V1.2a", "V1.2a : min. via1 spacing : 0.26µm")
+    v12a_l1.forget
+
+   
+    # Rule V1.2b: Via1 Space in 4x4 or larger via1 array is 0.36µm
+    logger.info("Executing rule V1.2b")
+    poss_4_4_via1 = via1.sized(0.18, "square_limit").merged.sized(-0.18, "square_limit")
+    via1_4x4_loc = poss_4_4_via1.not_interacting(poss_4_4_via1.edges.with_length(nil, 2.115))
+    selected_via1 = via1.interacting(via1_4x4_loc)
+    via1b_l1  = selected_via1.space(0.36.um, euclidian)
+    via1b_l1.output("V1.2b", "V1.2b : Via1 Space in 4x4 or larger via1 array : 0.36µm")
+    via1b_l1.forget
+    poss_4_4_via1.forget
+    via1_4x4_loc.forget
+    selected_via1.forget
+
+    
+    # Rule V1.3a: metal1  overlap of via1.
+    logger.info("Executing rule V1.3a")
+    v13a_l1 = via1.not(metal1)
+    v13a_l1.output("V1.3a", "V1.3a : metal1 overlap of via1 >= 0.0")
+    v13a_l1.forget
+    
+    
+
+    # rule V1.3b is not a DRC check
+    # Rule V1.3c: metal1 (< 0.34um) end-of-line overlap. is 0.06µm
+    logger.info("Executing rule V1.3c")
+    v1p3c_cond = metal1.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+    v1p3c_eol = metal1.edges.with_length(nil, 0.34.um).interacting(v1p3c_cond.first_edges).interacting(v1p3c_cond.second_edges).not(v1p3c_cond.first_edges).not(v1p3c_cond.second_edges)
+    v1p3c_l1 = via1.edges.enclosed(v1p3c_eol, 0.06.um, projection)
+    v1p3c_l1.output("V1.3c", "V1.3c : metal1 (< 0.34um) end-of-line overlap. : 0.06µm")
+    v1p3c_l1.forget
+    v1p3c_cond.forget
+    v1p3c_eol.forget
+        
+    logger.info("Executing rule V1.3d")
+    via1_3d_cond_edges = via1.edges.not_outside(via1.enclosed(metal1, 0.04.um, projection).edges)
+    via1_3d_check_corner = via1_3d_cond_edges.extended_in(0.002.um)
+    via1_3d_check = via1.edges.interacting(via1_3d_check_corner).not(via1_3d_cond_edges)
+    via1_cond_corner = via1_3d_cond_edges.width(0.002.um, angle_limit(135)).polygons
+    via1_3d_l1 = via1_3d_check.enclosed(metal1.edges, 0.06.um, projection).polygons
+    via1_3d_l2 = via1.interacting(via1_cond_corner)
+    via1_3d_l = via1_3d_l1.or(via1_3d_l2)
+    via1_3d_l.output("V1.3d", "V1.3d : If metal1 overlap via1 by < 0.04um on one side, adjacent metal1 edges overlap. : 0.06µm")
+    via1_3d_l.forget
+    via1_3d_l2.forget
+    via1_3d_l1.forget
+    via1_3d_cond_edges.forget
+    via1_3d_check_corner.forget
+    via1_cond_corner.forget
+    via1_3d_check.forget
+
+    # rule V1.3e is not a DRC check
+
+    # Rule V1.4a: metal2 overlap of via1.
+    logger.info("Executing rule V1.4a")
+    via1_4a_l1 = via1.enclosed(metal2, 0.01.um, euclidian).polygons(0.001)
+    via1_4a_l2 = via1.not(metal2)
+    via1_4a_l = via1_4a_l1.or(via1_4a_l2)
+    via1_4a_l.output("V1.4a", "V1.4a : metal2 overlap of via1 >= 0.01 um")
+    via1_4a_l1.forget
+    via1_4a_l2.forget
+    via1_4a_l.forget
+
+    # Rule V1.4b: metal2 (< 0.34um) end-of-line overlap. is 0.06µm
+    logger.info("Executing rule V1.4b")
+    v1p4b_cond = metal2.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+    v1p4b_eol = metal2.edges.with_length(nil, 0.34.um).interacting(v1p4b_cond.first_edges).interacting(v1p4b_cond.second_edges).not(v1p4b_cond.first_edges).not(v1p4b_cond.second_edges)
+    v1p4b_l1 = via1.edges.enclosed(v1p4b_eol, 0.06.um, projection)
+    v1p4b_l1.output("V1.4b", "V1.4p : metal2 (< 0.34um) end-of-line overlap. : 0.06µm")
+    v1p4b_l1.forget
+    v1p4b_cond.forget
+    v1p4b_eol.forget
+        
+    logger.info("Executing rule V1.4c")
+    via1_4c_cond_edges = via1.edges.not_outside(via1.enclosed(metal2, 0.04.um, projection).edges)
+    via1_4c_check_corner = via1_4c_cond_edges.extended_in(0.002.um)
+    via1_4c_check = via1.edges.interacting(via1_4c_check_corner).not(via1_4c_cond_edges)
+    via1_4c_cond_corner = via1_4c_cond_edges.width(0.002.um, angle_limit(135)).polygons
+    via1_4c_l1 = via1_4c_check.enclosed(metal2.edges, 0.06.um, projection).polygons
+    via1_4c_l2 = via1.interacting(via1_4c_cond_corner)
+    via1_4c_l = via1_4c_l1.or(via1_4c_l2)
+    via1_4c_l.output("V1.3d", "V1.3d : If metal2 overlap via1 by < 0.04um on one side, adjacent metal2 edges overlap. : 0.06µm")
+    via1_4c_l.forget
+    via1_4c_l2.forget
+    via1_4c_l1.forget
+    via1_4c_cond_edges.forget
+    via1_4c_check_corner.forget
+    via1_4c_cond_corner.forget
+    via1_4c_check.forget
+    
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/via2.drc b/tapeout/outputs/drc/via2.drc
new file mode 100644
index 0000000..fe2b12e
--- /dev/null
+++ b/tapeout/outputs/drc/via2.drc
@@ -0,0 +1,1187 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "3LM" || METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #----------------------via2----------------------
+        #================================================
+
+        # Rule V2.1: Min/max Via1 size . is 0.26µm
+        logger.info("Executing rule V2.1")
+        v21_l1 = via2.edges.without_length(0.26.um).extended(0, 0, 0.001, 0.001)
+        v21_l1.output("V2.1", "V2.1 : Min/max Via1 size . : 0.26µm")
+        v21_l1.forget
+
+        # Rule V2.2a: min. via2 spacing is 0.26µm
+        logger.info("Executing rule V2.2a")
+        v22a_l1  = via2.space(0.26.um, euclidian)
+        v22a_l1.output("V2.2a", "V2.2a : min. via2 spacing : 0.26µm")
+        v22a_l1.forget
+
+    
+        # Rule V2.2b: Via1 Space in 4x4 or larger via2 array is 0.36µm
+        logger.info("Executing rule V2.2b")
+        poss_4_4_via2 = via2.sized(0.18, "square_limit").merged.sized(-0.18, "square_limit")
+        via2_4x4_loc = poss_4_4_via2.not_interacting(poss_4_4_via2.edges.with_length(nil, 2.115))
+        selected_via2 = via2.interacting(via2_4x4_loc)
+        via2b_l1  = selected_via2.space(0.36.um, euclidian)
+        via2b_l1.output("V2.2b", "V2.2b : Via1 Space in 4x4 or larger via2 array : 0.36µm")
+        via2b_l1.forget
+        poss_4_4_via2.forget
+        via2_4x4_loc.forget
+        selected_via2.forget
+
+        
+        # Rule V2.3a: metal2  overlap of via2.
+        logger.info("Executing rule V2.3a")
+        v23a_l1 = via2.not(metal2)
+        v23a_l2 = via2.enclosed(metal2, 0.01.um, euclidian).polygons(0.001)
+        v23a_l = v23a_l1.or(v23a_l2)
+        v23a_l1.output("V2.3a", "V2.3a : metal2 overlap of via2 >= 0.01")
+        v23a_l1.forget
+        v23a_l2.forget
+        v23a_l.forget
+        
+        
+
+        # rule V2.3b is not a DRC check
+        # Rule V2.3c: metal2 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V2.3c")
+        v2p3c_cond = metal2.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v2p3c_eol = metal2.edges.with_length(nil, 0.34.um).interacting(v2p3c_cond.first_edges).interacting(v2p3c_cond.second_edges).not(v2p3c_cond.first_edges).not(v2p3c_cond.second_edges)
+        v2p3c_l1 = via2.edges.enclosed(v2p3c_eol, 0.06.um, projection)
+        v2p3c_l1.output("V2.3c", "V2.3c : metal2 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v2p3c_l1.forget
+        v2p3c_cond.forget
+        v2p3c_eol.forget
+            
+        logger.info("Executing rule V2.3d")
+        via2_3d_cond_edges = via2.edges.not_outside(via2.enclosed(metal2, 0.04.um, projection).edges)
+        via2_3d_check_corner = via2_3d_cond_edges.extended_in(0.002.um)
+        via2_3d_check = via2.edges.interacting(via2_3d_check_corner).not(via2_3d_cond_edges)
+        via2_cond_corner = via2_3d_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via2_3d_l1 = via2_3d_check.enclosed(metal2.edges, 0.06.um, projection).polygons
+        via2_3d_l2 = via2.interacting(via2_cond_corner)
+        via2_3d_l = via2_3d_l1.or(via2_3d_l2)
+        via2_3d_l.output("V2.3d", "V2.3d : If metal2 overlap via2 by < 0.04um on one side, adjacent metal2 edges overlap. : 0.06µm")
+        via2_3d_l.forget
+        via2_3d_l2.forget
+        via2_3d_l1.forget
+        via2_3d_cond_edges.forget
+        via2_3d_check_corner.forget
+        via2_cond_corner.forget
+        via2_3d_check.forget
+
+        # rule V2.3e is not a DRC check
+
+        # Rule V2.4a: metal3 overlap of via2.
+        logger.info("Executing rule V2.4a")
+        via2_4a_l1 = via2.enclosed(metal3, 0.01.um, euclidian).polygons(0.001)
+        via2_4a_l2 = via2.not(metal3)
+        via2_4a_l = via2_4a_l1.or(via2_4a_l2)
+        via2_4a_l.output("V2.4a", "V2.4a : metal3 overlap of via2 >= 0.01 um")
+        via2_4a_l1.forget
+        via2_4a_l2.forget
+        via2_4a_l.forget
+
+        # Rule V2.4b: metal3 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V2.4b")
+        v2p4b_cond = metal3.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v2p4b_eol = metal3.edges.with_length(nil, 0.34.um).interacting(v2p4b_cond.first_edges).interacting(v2p4b_cond.second_edges).not(v2p4b_cond.first_edges).not(v2p4b_cond.second_edges)
+        v2p4b_l1 = via2.edges.enclosed(v2p4b_eol, 0.06.um, projection)
+        v2p4b_l1.output("V2.4b", "V2.4p : metal3 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v2p4b_l1.forget
+        v2p4b_cond.forget
+        v2p4b_eol.forget
+            
+        logger.info("Executing rule V2.4c")
+        via2_4c_cond_edges = via2.edges.not_outside(via2.enclosed(metal3, 0.04.um, projection).edges)
+        via2_4c_check_corner = via2_4c_cond_edges.extended_in(0.002.um)
+        via2_4c_check = via2.edges.interacting(via2_4c_check_corner).not(via2_4c_cond_edges)
+        via2_4c_cond_corner = via2_4c_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via2_4c_l1 = via2_4c_check.enclosed(metal3.edges, 0.06.um, projection).polygons
+        via2_4c_l2 = via2.interacting(via2_4c_cond_corner)
+        via2_4c_l = via2_4c_l1.or(via2_4c_l2)
+        via2_4c_l.output("V2.3d", "V2.3d : If metal3 overlap via2 by < 0.04um on one side, adjacent metal3 edges overlap. : 0.06µm")
+        via2_4c_l.forget
+        via2_4c_l2.forget
+        via2_4c_l1.forget
+        via2_4c_cond_edges.forget
+        via2_4c_check_corner.forget
+        via2_4c_cond_corner.forget
+        via2_4c_check.forget
+    end # Metalstack
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/via3.drc b/tapeout/outputs/drc/via3.drc
new file mode 100644
index 0000000..b6ee283
--- /dev/null
+++ b/tapeout/outputs/drc/via3.drc
@@ -0,0 +1,1188 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "4LM" || METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #----------------------via3----------------------
+        #================================================
+
+        # Rule V3.1: Min/max Via1 size . is 0.26µm
+        logger.info("Executing rule V3.1")
+        v31_l1 = via3.edges.without_length(0.26.um).extended(0, 0, 0.001, 0.001)
+        v31_l1.output("V3.1", "V3.1 : Min/max Via1 size . : 0.26µm")
+        v31_l1.forget
+
+        # Rule V3.2a: min. via3 spacing is 0.26µm
+        logger.info("Executing rule V3.2a")
+        v32a_l1  = via3.space(0.26.um, euclidian)
+        v32a_l1.output("V3.2a", "V3.2a : min. via3 spacing : 0.26µm")
+        v32a_l1.forget
+
+    
+        # Rule V3.2b: Via1 Space in 4x4 or larger via3 array is 0.36µm
+        logger.info("Executing rule V3.2b")
+        poss_4_4_via3 = via3.sized(0.18, "square_limit").merged.sized(-0.18, "square_limit")
+        via3_4x4_loc = poss_4_4_via3.not_interacting(poss_4_4_via3.edges.with_length(nil, 2.115))
+        selected_via3 = via3.interacting(via3_4x4_loc)
+        via3b_l1  = selected_via3.space(0.36.um, euclidian)
+        via3b_l1.output("V3.2b", "V3.2b : Via1 Space in 4x4 or larger via3 array : 0.36µm")
+        via3b_l1.forget
+        poss_4_4_via3.forget
+        via3_4x4_loc.forget
+        selected_via3.forget
+
+        
+        # Rule V3.3a: metal3  overlap of via3.
+        logger.info("Executing rule V3.3a")
+        v33a_l1 = via3.not(metal3)
+        v33a_l2 = via3.enclosed(metal3, 0.01.um, euclidian).polygons(0.001)
+        v33a_l = v33a_l1.or(v33a_l2)
+        v33a_l1.output("V3.3a", "V3.3a : metal3 overlap of via3 >= 0.01")
+        v33a_l1.forget
+        v33a_l2.forget
+        v33a_l.forget
+        
+        
+
+        # rule V3.3b is not a DRC check
+        # Rule V3.3c: metal3 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V3.3c")
+        v3p3c_cond = metal3.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v3p3c_eol = metal3.edges.with_length(nil, 0.34.um).interacting(v3p3c_cond.first_edges).interacting(v3p3c_cond.second_edges).not(v3p3c_cond.first_edges).not(v3p3c_cond.second_edges)
+        v3p3c_l1 = via3.edges.enclosed(v3p3c_eol, 0.06.um, projection)
+        v3p3c_l1.output("V3.3c", "V3.3c : metal3 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v3p3c_l1.forget
+        v3p3c_cond.forget
+        v3p3c_eol.forget
+            
+        logger.info("Executing rule V3.3d")
+        via3_3d_cond_edges = via3.edges.not_outside(via3.enclosed(metal3, 0.04.um, projection).edges)
+        via3_3d_check_corner = via3_3d_cond_edges.extended_in(0.002.um)
+        via3_3d_check = via3.edges.interacting(via3_3d_check_corner).not(via3_3d_cond_edges)
+        via3_cond_corner = via3_3d_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via3_3d_l1 = via3_3d_check.enclosed(metal3.edges, 0.06.um, projection).polygons
+        via3_3d_l2 = via3.interacting(via3_cond_corner)
+        via3_3d_l = via3_3d_l1.or(via3_3d_l2)
+        via3_3d_l.output("V3.3d", "V3.3d : If metal3 overlap via3 by < 0.04um on one side, adjacent metal3 edges overlap. : 0.06µm")
+        via3_3d_l.forget
+        via3_3d_l2.forget
+        via3_3d_l1.forget
+        via3_3d_cond_edges.forget
+        via3_3d_check_corner.forget
+        via3_cond_corner.forget
+        via3_3d_check.forget
+
+        # rule V3.3e is not a DRC check
+
+        # Rule V3.4a: metal4 overlap of via3.
+        logger.info("Executing rule V3.4a")
+        via3_4a_l1 = via3.enclosed(metal4, 0.01.um, euclidian).polygons(0.001)
+        via3_4a_l2 = via3.not(metal4)
+        via3_4a_l = via3_4a_l1.or(via3_4a_l2)
+        via3_4a_l.output("V3.4a", "V3.4a : metal4 overlap of via3 >= 0.01 um")
+        via3_4a_l1.forget
+        via3_4a_l2.forget
+        via3_4a_l.forget
+
+        # Rule V3.4b: metal4 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V3.4b")
+        v3p4b_cond = metal4.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v3p4b_eol = metal4.edges.with_length(nil, 0.34.um).interacting(v3p4b_cond.first_edges).interacting(v3p4b_cond.second_edges).not(v3p4b_cond.first_edges).not(v3p4b_cond.second_edges)
+        v3p4b_l1 = via3.edges.enclosed(v3p4b_eol, 0.06.um, projection)
+        v3p4b_l1.output("V3.4b", "V3.4p : metal4 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v3p4b_l1.forget
+        v3p4b_cond.forget
+        v3p4b_eol.forget
+            
+        logger.info("Executing rule V3.4c")
+        via3_4c_cond_edges = via3.edges.not_outside(via3.enclosed(metal4, 0.04.um, projection).edges)
+        via3_4c_check_corner = via3_4c_cond_edges.extended_in(0.002.um)
+        via3_4c_check = via3.edges.interacting(via3_4c_check_corner).not(via3_4c_cond_edges)
+        via3_4c_cond_corner = via3_4c_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via3_4c_l1 = via3_4c_check.enclosed(metal4.edges, 0.06.um, projection).polygons
+        via3_4c_l2 = via3.interacting(via3_4c_cond_corner)
+        via3_4c_l = via3_4c_l1.or(via3_4c_l2)
+        via3_4c_l.output("V3.3d", "V3.3d : If metal4 overlap via3 by < 0.04um on one side, adjacent metal4 edges overlap. : 0.06µm")
+        via3_4c_l.forget
+        via3_4c_l2.forget
+        via3_4c_l1.forget
+        via3_4c_cond_edges.forget
+        via3_4c_check_corner.forget
+        via3_4c_cond_corner.forget
+        via3_4c_check.forget
+    end #Metal stack
+    
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/via4.drc b/tapeout/outputs/drc/via4.drc
new file mode 100644
index 0000000..744df70
--- /dev/null
+++ b/tapeout/outputs/drc/via4.drc
@@ -0,0 +1,1187 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "5LM" || METAL_LEVEL == "6LM"
+        #================================================
+        #----------------------via4----------------------
+        #================================================
+
+        # Rule V4.1: Min/max Via1 size . is 0.26µm
+        logger.info("Executing rule V4.1")
+        v41_l1 = via4.edges.without_length(0.26.um).extended(0, 0, 0.001, 0.001)
+        v41_l1.output("V4.1", "V4.1 : Min/max Via1 size . : 0.26µm")
+        v41_l1.forget
+
+        # Rule V4.2a: min. via4 spacing is 0.26µm
+        logger.info("Executing rule V4.2a")
+        v42a_l1  = via4.space(0.26.um, euclidian)
+        v42a_l1.output("V4.2a", "V4.2a : min. via4 spacing : 0.26µm")
+        v42a_l1.forget
+
+    
+        # Rule V4.2b: Via1 Space in 4x4 or larger via4 array is 0.36µm
+        logger.info("Executing rule V4.2b")
+        poss_4_4_via4 = via4.sized(0.18, "square_limit").merged.sized(-0.18, "square_limit")
+        via4_4x4_loc = poss_4_4_via4.not_interacting(poss_4_4_via4.edges.with_length(nil, 2.115))
+        selected_via4 = via4.interacting(via4_4x4_loc)
+        via4b_l1  = selected_via4.space(0.36.um, euclidian)
+        via4b_l1.output("V4.2b", "V4.2b : Via1 Space in 4x4 or larger via4 array : 0.36µm")
+        via4b_l1.forget
+        poss_4_4_via4.forget
+        via4_4x4_loc.forget
+        selected_via4.forget
+
+        
+        # Rule V4.3a: metal4  overlap of via4.
+        logger.info("Executing rule V4.3a")
+        v43a_l1 = via4.not(metal4)
+        v43a_l2 = via4.enclosed(metal4, 0.01.um, euclidian).polygons(0.001)
+        v43a_l = v43a_l1.or(v43a_l2)
+        v43a_l1.output("V4.3a", "V4.3a : metal4 overlap of via4 >= 0.01")
+        v43a_l1.forget
+        v43a_l2.forget
+        v43a_l.forget
+        
+        
+
+        # rule V4.3b is not a DRC check
+        # Rule V4.3c: metal4 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V4.3c")
+        v4p3c_cond = metal4.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v4p3c_eol = metal4.edges.with_length(nil, 0.34.um).interacting(v4p3c_cond.first_edges).interacting(v4p3c_cond.second_edges).not(v4p3c_cond.first_edges).not(v4p3c_cond.second_edges)
+        v4p3c_l1 = via4.edges.enclosed(v4p3c_eol, 0.06.um, projection)
+        v4p3c_l1.output("V4.3c", "V4.3c : metal4 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v4p3c_l1.forget
+        v4p3c_cond.forget
+        v4p3c_eol.forget
+            
+        logger.info("Executing rule V4.3d")
+        via4_3d_cond_edges = via4.edges.not_outside(via4.enclosed(metal4, 0.04.um, projection).edges)
+        via4_3d_check_corner = via4_3d_cond_edges.extended_in(0.002.um)
+        via4_3d_check = via4.edges.interacting(via4_3d_check_corner).not(via4_3d_cond_edges)
+        via4_cond_corner = via4_3d_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via4_3d_l1 = via4_3d_check.enclosed(metal4.edges, 0.06.um, projection).polygons
+        via4_3d_l2 = via4.interacting(via4_cond_corner)
+        via4_3d_l = via4_3d_l1.or(via4_3d_l2)
+        via4_3d_l.output("V4.3d", "V4.3d : If metal4 overlap via4 by < 0.04um on one side, adjacent metal4 edges overlap. : 0.06µm")
+        via4_3d_l.forget
+        via4_3d_l2.forget
+        via4_3d_l1.forget
+        via4_3d_cond_edges.forget
+        via4_3d_check_corner.forget
+        via4_cond_corner.forget
+        via4_3d_check.forget
+
+        # rule V4.3e is not a DRC check
+
+        # Rule V4.4a: metal5 overlap of via4.
+        logger.info("Executing rule V4.4a")
+        via4_4a_l1 = via4.enclosed(metal5, 0.01.um, euclidian).polygons(0.001)
+        via4_4a_l2 = via4.not(metal5)
+        via4_4a_l = via4_4a_l1.or(via4_4a_l2)
+        via4_4a_l.output("V4.4a", "V4.4a : metal5 overlap of via4 >= 0.01 um")
+        via4_4a_l1.forget
+        via4_4a_l2.forget
+        via4_4a_l.forget
+
+        # Rule V4.4b: metal5 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V4.4b")
+        v4p4b_cond = metal5.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v4p4b_eol = metal5.edges.with_length(nil, 0.34.um).interacting(v4p4b_cond.first_edges).interacting(v4p4b_cond.second_edges).not(v4p4b_cond.first_edges).not(v4p4b_cond.second_edges)
+        v4p4b_l1 = via4.edges.enclosed(v4p4b_eol, 0.06.um, projection)
+        v4p4b_l1.output("V4.4b", "V4.4p : metal5 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v4p4b_l1.forget
+        v4p4b_cond.forget
+        v4p4b_eol.forget
+            
+        logger.info("Executing rule V4.4c")
+        via4_4c_cond_edges = via4.edges.not_outside(via4.enclosed(metal5, 0.04.um, projection).edges)
+        via4_4c_check_corner = via4_4c_cond_edges.extended_in(0.002.um)
+        via4_4c_check = via4.edges.interacting(via4_4c_check_corner).not(via4_4c_cond_edges)
+        via4_4c_cond_corner = via4_4c_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via4_4c_l1 = via4_4c_check.enclosed(metal5.edges, 0.06.um, projection).polygons
+        via4_4c_l2 = via4.interacting(via4_4c_cond_corner)
+        via4_4c_l = via4_4c_l1.or(via4_4c_l2)
+        via4_4c_l.output("V4.3d", "V4.3d : If metal5 overlap via4 by < 0.04um on one side, adjacent metal5 edges overlap. : 0.06µm")
+        via4_4c_l.forget
+        via4_4c_l2.forget
+        via4_4c_l1.forget
+        via4_4c_cond_edges.forget
+        via4_4c_check_corner.forget
+        via4_4c_cond_corner.forget
+        via4_4c_check.forget
+    end # metal stack    
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/via5.drc b/tapeout/outputs/drc/via5.drc
new file mode 100644
index 0000000..223f987
--- /dev/null
+++ b/tapeout/outputs/drc/via5.drc
@@ -0,0 +1,1187 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+if BEOL
+    if METAL_LEVEL == "6LM"
+        #================================================
+        #----------------------via5----------------------
+        #================================================
+
+        # Rule V5.1: Min/max Via1 size . is 0.26µm
+        logger.info("Executing rule V5.1")
+        v51_l1 = via5.edges.without_length(0.26.um).extended(0, 0, 0.001, 0.001)
+        v51_l1.output("V5.1", "V5.1 : Min/max Via1 size . : 0.26µm")
+        v51_l1.forget
+
+        # Rule V5.2a: min. via5 spacing is 0.26µm
+        logger.info("Executing rule V5.2a")
+        v52a_l1  = via5.space(0.26.um, euclidian)
+        v52a_l1.output("V5.2a", "V5.2a : min. via5 spacing : 0.26µm")
+        v52a_l1.forget
+
+    
+        # Rule V5.2b: Via1 Space in 4x4 or larger via5 array is 0.36µm
+        logger.info("Executing rule V5.2b")
+        poss_4_4_via5 = via5.sized(0.18, "square_limit").merged.sized(-0.18, "square_limit")
+        via5_4x4_loc = poss_4_4_via5.not_interacting(poss_4_4_via5.edges.with_length(nil, 2.115))
+        selected_via5 = via5.interacting(via5_4x4_loc)
+        via5b_l1  = selected_via5.space(0.36.um, euclidian)
+        via5b_l1.output("V5.2b", "V5.2b : Via1 Space in 4x4 or larger via5 array : 0.36µm")
+        via5b_l1.forget
+        poss_4_4_via5.forget
+        via5_4x4_loc.forget
+        selected_via5.forget
+
+        
+        # Rule V5.3a: metal5  overlap of via5.
+        logger.info("Executing rule V5.3a")
+        v53a_l1 = via5.not(metal5)
+        v53a_l2 = via5.enclosed(metal5, 0.01.um, euclidian).polygons(0.001)
+        v53a_l = v53a_l1.or(v53a_l2)
+        v53a_l1.output("V5.3a", "V5.3a : metal5 overlap of via5 >= 0.01")
+        v53a_l1.forget
+        v53a_l2.forget
+        v53a_l.forget
+        
+        
+
+        # rule V5.3b is not a DRC check
+        # Rule V5.3c: metal5 (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V5.3c")
+        v5p3c_cond = metal5.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v5p3c_eol = metal5.edges.with_length(nil, 0.34.um).interacting(v5p3c_cond.first_edges).interacting(v5p3c_cond.second_edges).not(v5p3c_cond.first_edges).not(v5p3c_cond.second_edges)
+        v5p3c_l1 = via5.edges.enclosed(v5p3c_eol, 0.06.um, projection)
+        v5p3c_l1.output("V5.3c", "V5.3c : metal5 (< 0.34um) end-of-line overlap. : 0.06µm")
+        v5p3c_l1.forget
+        v5p3c_cond.forget
+        v5p3c_eol.forget
+            
+        logger.info("Executing rule V5.3d")
+        via5_3d_cond_edges = via5.edges.not_outside(via5.enclosed(metal5, 0.04.um, projection).edges)
+        via5_3d_check_corner = via5_3d_cond_edges.extended_in(0.002.um)
+        via5_3d_check = via5.edges.interacting(via5_3d_check_corner).not(via5_3d_cond_edges)
+        via5_cond_corner = via5_3d_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via5_3d_l1 = via5_3d_check.enclosed(metal5.edges, 0.06.um, projection).polygons
+        via5_3d_l2 = via5.interacting(via5_cond_corner)
+        via5_3d_l = via5_3d_l1.or(via5_3d_l2)
+        via5_3d_l.output("V5.3d", "V5.3d : If metal5 overlap via5 by < 0.04um on one side, adjacent metal5 edges overlap. : 0.06µm")
+        via5_3d_l.forget
+        via5_3d_l2.forget
+        via5_3d_l1.forget
+        via5_3d_cond_edges.forget
+        via5_3d_check_corner.forget
+        via5_cond_corner.forget
+        via5_3d_check.forget
+
+        # rule V5.3e is not a DRC check
+
+        # Rule V5.4a: metaltop overlap of via5.
+        logger.info("Executing rule V5.4a")
+        via5_4a_l1 = via5.enclosed(metaltop, 0.01.um, euclidian).polygons(0.001)
+        via5_4a_l2 = via5.not(metaltop)
+        via5_4a_l = via5_4a_l1.or(via5_4a_l2)
+        via5_4a_l.output("V5.4a", "V5.4a : metaltop overlap of via5 >= 0.01 um")
+        via5_4a_l1.forget
+        via5_4a_l2.forget
+        via5_4a_l.forget
+
+        # Rule V5.4b: metaltop (< 0.34um) end-of-line overlap. is 0.06µm
+        logger.info("Executing rule V5.4b")
+        v5p4b_cond = metaltop.width(0.34.um + 1.dbu).with_length(0.28.um,nil,both)
+        v5p4b_eol = metaltop.edges.with_length(nil, 0.34.um).interacting(v5p4b_cond.first_edges).interacting(v5p4b_cond.second_edges).not(v5p4b_cond.first_edges).not(v5p4b_cond.second_edges)
+        v5p4b_l1 = via5.edges.enclosed(v5p4b_eol, 0.06.um, projection)
+        v5p4b_l1.output("V5.4b", "V5.4p : metaltop (< 0.34um) end-of-line overlap. : 0.06µm")
+        v5p4b_l1.forget
+        v5p4b_cond.forget
+        v5p4b_eol.forget
+            
+        logger.info("Executing rule V5.4c")
+        via5_4c_cond_edges = via5.edges.not_outside(via5.enclosed(metaltop, 0.04.um, projection).edges)
+        via5_4c_check_corner = via5_4c_cond_edges.extended_in(0.002.um)
+        via5_4c_check = via5.edges.interacting(via5_4c_check_corner).not(via5_4c_cond_edges)
+        via5_4c_cond_corner = via5_4c_cond_edges.width(0.002.um, angle_limit(135)).polygons
+        via5_4c_l1 = via5_4c_check.enclosed(metaltop.edges, 0.06.um, projection).polygons
+        via5_4c_l2 = via5.interacting(via5_4c_cond_corner)
+        via5_4c_l = via5_4c_l1.or(via5_4c_l2)
+        via5_4c_l.output("V5.3d", "V5.3d : If metaltop overlap via5 by < 0.04um on one side, adjacent metaltop edges overlap. : 0.06µm")
+        via5_4c_l.forget
+        via5_4c_l2.forget
+        via5_4c_l1.forget
+        via5_4c_cond_edges.forget
+        via5_4c_check_corner.forget
+        via5_4c_cond_corner.forget
+        via5_4c_check.forget
+    end # metal stack
+end #BEOL
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/drc/ymtp_mk.drc b/tapeout/outputs/drc/ymtp_mk.drc
new file mode 100644
index 0000000..0fd8e5d
--- /dev/null
+++ b/tapeout/outputs/drc/ymtp_mk.drc
@@ -0,0 +1,1180 @@
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+#===========================================================================================================================
+#------------------------------------------- GF 0.18um MCU DRC RULE DECK --------------------------------------------------
+#===========================================================================================================================
+require 'time'
+require "logger"
+
+exec_start_time = Time.now
+
+logger = Logger.new(STDOUT)
+
+logger.formatter = proc do |severity, datetime, progname, msg|
+  "#{datetime}: Memory Usage (" + `pmap #{Process.pid} | tail -1`[10,40].strip + ") : #{msg}
+"
+end
+
+#================================================
+#----------------- FILE SETUP -------------------
+#================================================
+
+# optional for a batch launch :   klayout -b -r gf_018mcu.drc -rd input=design.gds -rd report=gp180_drc.lyrdb
+
+logger.info("Starting running GF180MCU Klayout DRC runset on %s" % [$input])
+logger.info("Ruby Version for klayout: %s" % [RUBY_VERSION])
+
+if $input
+    if $topcell
+        source($input, $topcell)
+    else
+        source($input)
+    end
+end
+
+if $table_name
+  table_name = $table_name
+else
+  table_name = "main"
+end
+
+
+logger.info("Loading database to memory is complete.")
+
+if $report
+    logger.info("GF180MCU Klayout DRC runset output at: %s" % [$report])
+    report("DRC Run Report at", $report)
+else
+    logger.info("GF180MCU Klayout DRC runset output at default location." % [File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb")])
+    report("DRC Run Report at", File.join(File.dirname(RBA::CellView::active.filename), "gf180_drc.lyrdb"))
+end
+
+#================================================
+#------------------ SWITCHES --------------------
+#================================================
+logger.info("Evaluate switches.")
+
+# connectivity rules
+if $conn_drc == "true"
+  CONNECTIVITY_RULES = $conn_drc
+  logger.info("connectivity rules are enabled.")
+else
+  CONNECTIVITY_RULES = false
+  logger.info("connectivity rules are disabled.")
+end # connectivity rules
+
+# WEDGE
+if $wedge == "false"
+  WEDGE = $wedge
+else
+  WEDGE = "true"
+end # WEDGE
+
+logger.info("Wedge enabled  %s" % [WEDGE])
+
+# BALL
+if $ball == "false"
+  BALL = $ball
+else
+  BALL = "true"
+end # BALL
+
+logger.info("Ball enabled  %s" % [BALL])
+
+# GOLD
+if $gold == "false"
+  GOLD = $gold
+else
+  GOLD = "true"
+end # GOLD
+
+logger.info("Gold enabled  %s" % [GOLD])
+
+if $mim_option
+  MIM_OPTION = $mim_option
+else
+  MIM_OPTION = "B"
+end
+
+logger.info("MIM Option selected %s" % [MIM_OPTION])
+
+# OFFGRID
+if $offgrid == "false"
+  OFFGRID = false
+else
+  OFFGRID = true
+end # OFFGRID
+
+logger.info("Offgrid enabled  %s" % [OFFGRID])
+
+if $thr
+    threads($thr)
+    logger.info("Number of threads to use %s" % [$thr])
+else
+    threads(%x("nproc"))
+    logger.info("Number of threads to use #{%x("nproc")}")
+end
+
+#=== PRINT DETAILS ===
+if $verbose == "true"
+  logger.info("Verbose mode: #{$verbose}")
+  verbose(true)
+else
+  verbose(false)
+  logger.info("Verbose mode: false")
+end
+
+# === TILING MODE ===
+if $run_mode == "tiling"
+  tiles(500.um)
+  tile_borders(10.um)
+  logger.info("Tiling  mode is enabled.")
+
+elsif $run_mode == "deep"
+  #=== HIER MODE ===
+  deep
+  logger.info("deep  mode is enabled.")
+else
+  #=== FLAT MODE ===
+  flat
+  logger.info("flat  mode is enabled.")
+end # run_mode
+
+# METAL_TOP
+if $metal_top
+  METAL_TOP = $metal_top
+else
+  METAL_TOP = "9K"
+end # METAL_TOP
+
+logger.info("METAL_TOP Selected is %s" % [METAL_TOP])
+
+# METAL_LEVEL
+if $metal_level
+  METAL_LEVEL = $metal_level
+else
+  METAL_LEVEL = "5LM"
+end # METAL_LEVEL
+
+logger.info("METAL_STACK Selected is %s" % [METAL_LEVEL])
+
+# FEOL
+if $feol == "false"
+  FEOL = $feol
+  logger.info("FEOL is disabled.")
+else
+  FEOL = "true"
+  logger.info("FEOL is enabled.")
+end # FEOL
+
+# BEOL
+if $beol == "false"
+  BEOL = $beol
+  logger.info("BEOL is disabled.")
+else
+  BEOL = "true"
+  logger.info("BEOL is enabled.")
+end # BEOL
+
+#================================================
+#------------- LAYERS DEFINITIONS ---------------
+#================================================
+polygons_count = 0
+logger.info("Read in polygons from layers.")
+
+def get_polygons(l, d)
+  if $run_mode == "deep"
+    polygons(l, d)
+  else
+    polygons(l, d).merged
+  end
+end
+
+comp           = get_polygons(22 , 0 )
+count = comp.count()
+logger.info("comp has %d polygons" % [count])
+polygons_count += count
+
+dnwell         = get_polygons(12 , 0 )
+count   = dnwell.count()
+logger.info("dnwell has %d polygons" % [count])
+polygons_count  += count
+
+nwell          = get_polygons(21 , 0 )
+count   = nwell.count()
+logger.info("nwell has %d polygons" % [count])
+polygons_count  += count
+
+lvpwell        = get_polygons(204, 0 )
+count   = lvpwell.count()
+logger.info("lvpwell has %d polygons" % [count])
+polygons_count  += count
+
+dualgate       = get_polygons(55 , 0 )
+count   = dualgate.count()
+logger.info("dualgate has %d polygons" % [count])
+polygons_count  += count
+
+poly2          = get_polygons(30 , 0 )
+count   = poly2.count()
+logger.info("poly2 has %d polygons" % [count])
+polygons_count  += count
+
+nplus          = get_polygons(32 , 0 )
+count   = nplus.count()
+logger.info("nplus has %d polygons" % [count])
+polygons_count  += count
+
+pplus          = get_polygons(31 , 0 )
+count   = pplus.count()
+logger.info("pplus has %d polygons" % [count])
+polygons_count  += count
+
+sab            = get_polygons(49 , 0 )
+count   = sab.count()
+logger.info("sab has %d polygons" % [count])
+polygons_count  += count
+
+esd            = get_polygons(24 , 0 )
+count   = esd.count()
+logger.info("esd has %d polygons" % [count])
+polygons_count  += count
+
+resistor       = get_polygons(62 , 0 )
+count   = resistor.count()
+logger.info("resistor has %d polygons" % [count])
+polygons_count  += count
+
+fhres          = get_polygons(227, 0 )
+count   = fhres.count()
+logger.info("fhres has %d polygons" % [count])
+polygons_count  += count
+
+fusetop        = get_polygons(75 , 0 )
+count   = fusetop.count()
+logger.info("fusetop has %d polygons" % [count])
+polygons_count  += count
+
+fusewindow_d   = get_polygons(96 , 1 )
+count   = fusewindow_d.count()
+logger.info("fusewindow_d has %d polygons" % [count])
+polygons_count  += count
+
+polyfuse       = get_polygons(220, 0 )
+count   = polyfuse.count()
+logger.info("polyfuse has %d polygons" % [count])
+polygons_count  += count
+
+mvsd           = get_polygons(210, 0 )
+count   = mvsd.count()
+logger.info("mvsd has %d polygons" % [count])
+polygons_count  += count
+
+mvpsd          = get_polygons(11 , 39)
+count   = mvpsd.count()
+logger.info("mvpsd has %d polygons" % [count])
+polygons_count  += count
+
+nat            = get_polygons(5  , 0 )
+count   = nat.count()
+logger.info("nat has %d polygons" % [count])
+polygons_count  += count
+
+comp_dummy     = get_polygons(22 , 4 )
+count   = comp_dummy.count()
+logger.info("comp_dummy has %d polygons" % [count])
+polygons_count  += count
+
+poly2_dummy    = get_polygons(30 , 4 )
+count   = poly2_dummy.count()
+logger.info("poly2_dummy has %d polygons" % [count])
+polygons_count  += count
+
+schottky_diode = get_polygons(241, 0 )
+count   = schottky_diode.count()
+logger.info("schottky_diode has %d polygons" % [count])
+polygons_count  += count
+
+zener          = get_polygons(178, 0 )
+count   = zener.count()
+logger.info("zener has %d polygons" % [count])
+polygons_count  += count
+
+res_mk         = get_polygons(110, 5 )
+count   = res_mk.count()
+logger.info("res_mk has %d polygons" % [count])
+polygons_count  += count
+
+opc_drc        = get_polygons(124, 5 )
+count   = opc_drc.count()
+logger.info("opc_drc has %d polygons" % [count])
+polygons_count  += count
+
+ndmy           = get_polygons(111, 5 )
+count   = ndmy.count()
+logger.info("ndmy has %d polygons" % [count])
+polygons_count  += count
+
+pmndmy         = get_polygons(152, 5 )
+count   = pmndmy.count()
+logger.info("pmndmy has %d polygons" % [count])
+polygons_count  += count
+
+v5_xtor        = get_polygons(112, 1 )
+count   = v5_xtor.count()
+logger.info("v5_xtor has %d polygons" % [count])
+polygons_count  += count
+
+cap_mk         = get_polygons(117, 5 )
+count   = cap_mk.count()
+logger.info("cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+mos_cap_mk     = get_polygons(166, 5 )
+count   = mos_cap_mk.count()
+logger.info("mos_cap_mk has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+diode_mk       = get_polygons(115, 5 )
+count   = diode_mk.count()
+logger.info("diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+drc_bjt        = get_polygons(127, 5 )
+count   = drc_bjt.count()
+logger.info("drc_bjt has %d polygons" % [count])
+polygons_count  += count
+
+lvs_bjt        = get_polygons(118, 5 )
+count   = lvs_bjt.count()
+logger.info("lvs_bjt has %d polygons" % [count])
+polygons_count  += count
+
+mim_l_mk       = get_polygons(117, 10)
+count   = mim_l_mk.count()
+logger.info("mim_l_mk has %d polygons" % [count])
+polygons_count  += count
+
+latchup_mk     = get_polygons(137, 5 )
+count   = latchup_mk.count()
+logger.info("latchup_mk has %d polygons" % [count])
+polygons_count  += count
+
+guard_ring_mk  = get_polygons(167, 5 )
+count   = guard_ring_mk.count()
+logger.info("guard_ring_mk has %d polygons" % [count])
+polygons_count  += count
+
+otp_mk         = get_polygons(173, 5 )
+count   = otp_mk.count()
+logger.info("otp_mk has %d polygons" % [count])
+polygons_count  += count
+
+mtpmark        = get_polygons(122, 5 )
+count   = mtpmark.count()
+logger.info("mtpmark has %d polygons" % [count])
+polygons_count  += count
+
+neo_ee_mk      = get_polygons(88 , 17)
+count   = neo_ee_mk.count()
+logger.info("neo_ee_mk has %d polygons" % [count])
+polygons_count  += count
+
+sramcore       = get_polygons(108, 5 )
+count   = sramcore.count()
+logger.info("sramcore has %d polygons" % [count])
+polygons_count  += count
+
+lvs_rf         = get_polygons(100, 5 )
+count   = lvs_rf.count()
+logger.info("lvs_rf has %d polygons" % [count])
+polygons_count  += count
+
+lvs_drain      = get_polygons(100, 7 )
+count   = lvs_drain.count()
+logger.info("lvs_drain has %d polygons" % [count])
+polygons_count  += count
+
+ind_mk         = get_polygons(151, 5 )
+count   = ind_mk.count()
+logger.info("ind_mk has %d polygons" % [count])
+polygons_count  += count
+
+hvpolyrs       = get_polygons(123, 5 )
+count   = hvpolyrs.count()
+logger.info("hvpolyrs has %d polygons" % [count])
+polygons_count  += count
+
+lvs_io         = get_polygons(119, 5 )
+count   = lvs_io.count()
+logger.info("lvs_io has %d polygons" % [count])
+polygons_count  += count
+
+probe_mk       = get_polygons(13 , 17)
+count   = probe_mk.count()
+logger.info("probe_mk has %d polygons" % [count])
+polygons_count  += count
+
+esd_mk         = get_polygons(24 , 5 )
+count   = esd_mk.count()
+logger.info("esd_mk has %d polygons" % [count])
+polygons_count  += count
+
+lvs_source     = get_polygons(100, 8 )
+count   = lvs_source.count()
+logger.info("lvs_source has %d polygons" % [count])
+polygons_count  += count
+
+well_diode_mk  = get_polygons(153, 51)
+count   = well_diode_mk.count()
+logger.info("well_diode_mk has %d polygons" % [count])
+polygons_count  += count
+
+ldmos_xtor     = get_polygons(226, 0 )
+count   = ldmos_xtor.count()
+logger.info("ldmos_xtor has %d polygons" % [count])
+polygons_count  += count
+
+plfuse         = get_polygons(125, 5 )
+count   = plfuse.count()
+logger.info("plfuse has %d polygons" % [count])
+polygons_count  += count
+
+efuse_mk       = get_polygons(80 , 5 )
+count   = efuse_mk.count()
+logger.info("efuse_mk has %d polygons" % [count])
+polygons_count  += count
+
+mcell_feol_mk  = get_polygons(11 , 17)
+count   = mcell_feol_mk.count()
+logger.info("mcell_feol_mk has %d polygons" % [count])
+polygons_count  += count
+
+ymtp_mk        = get_polygons(86 , 17)
+count   = ymtp_mk.count()
+logger.info("ymtp_mk has %d polygons" % [count])
+polygons_count  += count
+
+dev_wf_mk      = get_polygons(128, 17)
+count   = dev_wf_mk.count()
+logger.info("dev_wf_mk has %d polygons" % [count])
+polygons_count  += count
+
+comp_label     = get_polygons(22 , 10)
+count   = comp_label.count()
+logger.info("comp_label has %d polygons" % [count])
+polygons_count  += count
+
+poly2_label    = get_polygons(30 , 10)
+count   = poly2_label.count()
+logger.info("poly2_label has %d polygons" % [count])
+polygons_count  += count
+
+mdiode         = get_polygons(116, 5 )
+count   = mdiode.count()
+logger.info("mdiode has %d polygons" % [count])
+polygons_count  += count
+
+contact        = get_polygons(33 , 0 )
+count   = contact.count()
+logger.info("contact has %d polygons" % [count])
+polygons_count  += count
+
+metal1_drawn   = get_polygons(34 , 0 )
+count   = metal1_drawn.count()
+logger.info("metal1_drawn has %d polygons" % [count])
+polygons_count  += count
+
+metal1_dummy   = get_polygons(34 , 4 )
+count   = metal1_dummy.count()
+logger.info("metal1_dummy has %d polygons" % [count])
+polygons_count  += count
+
+metal1         = metal1_drawn + metal1_dummy
+
+metal1_label   = get_polygons(34 , 10)
+count   = metal1_label.count()
+logger.info("metal1_label has %d polygons" % [count])
+polygons_count  += count
+
+metal1_slot    = get_polygons(34 , 3 )
+count   = metal1_slot.count()
+logger.info("metal1_slot has %d polygons" % [count])
+polygons_count  += count
+
+metal1_blk     = get_polygons(34 , 5 )
+count   = metal1_blk.count()
+logger.info("metal1_blk has %d polygons" % [count])
+polygons_count  += count
+
+via1           = get_polygons(35 , 0 )
+count   = via1.count()
+logger.info("via1 has %d polygons" % [count])
+polygons_count  += count
+
+
+if METAL_LEVEL == "2LM"
+  metal2_drawn  = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy  = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2        = metal2_drawn + metal2_drawn
+
+  metal2_label  = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot   = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk    = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  top_via       = via1
+  topmin1_via   = contact
+  top_metal     = metal2
+  topmin1_metal = metal1
+  
+else
+  metal2_drawn   = get_polygons(36 , 0 )
+  count   = metal2_drawn.count()
+  logger.info("metal2_drawn has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_dummy   = get_polygons(36 , 4 )
+  count   = metal2_dummy.count()
+  logger.info("metal2_dummy has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2         = metal2_drawn + metal2_dummy
+
+  metal2_label   = get_polygons(36 , 10)
+  count   = metal2_label.count()
+  logger.info("metal2_label has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_slot    = get_polygons(36 , 3 )
+  count   = metal2_slot.count()
+  logger.info("metal2_slot has %d polygons" % [count])
+  polygons_count  += count
+
+  metal2_blk     = get_polygons(36 , 5 )
+  count   = metal2_blk.count()
+  logger.info("metal2_blk has %d polygons" % [count])
+  polygons_count  += count
+  
+  via2           = get_polygons(38 , 0 )
+  count   = via2.count()
+  logger.info("via2 has %d polygons" % [count])
+  polygons_count  += count
+  
+  if METAL_LEVEL == "3LM"
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+    
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+    
+    top_via       = via2
+    topmin1_via   = via1
+    top_metal     = metal3
+    topmin1_metal = metal2
+  else
+    metal3_drawn  = get_polygons(42 , 0 )
+    count   = metal3_drawn.count()
+    logger.info("metal3_drawn has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_dummy  = get_polygons(42 , 4 )
+    count   = metal3_dummy.count()
+    logger.info("metal3_dummy has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3        = metal3_drawn + metal3_dummy
+
+    metal3_label  = get_polygons(42 , 10)
+    count   = metal3_label.count()
+    logger.info("metal3_label has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_slot   = get_polygons(42 , 3 )
+    count   = metal3_slot.count()
+    logger.info("metal3_slot has %d polygons" % [count])
+    polygons_count  += count
+
+    metal3_blk    = get_polygons(42 , 5 )
+    count   = metal3_blk.count()
+    logger.info("metal3_blk has %d polygons" % [count])
+    polygons_count  += count
+
+    via3           = get_polygons(40 , 0 )
+
+    if METAL_LEVEL == "4LM"
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+      
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+      
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+      
+      top_via       = via3
+      topmin1_via   = via2
+      top_metal     = metal4
+      topmin1_metal = metal3
+    else
+      metal4_drawn  = get_polygons(46 , 0 )
+      count   = metal4_drawn.count()
+      logger.info("metal4_drawn has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_dummy  = get_polygons(46 , 4 )
+      count   = metal4_dummy.count()
+      logger.info("metal4_dummy has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4        = metal4_drawn + metal4_dummy
+
+      metal4_label  = get_polygons(46 , 10)
+      count   = metal4_label.count()
+      logger.info("metal4_label has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_slot   = get_polygons(46 , 3 )
+      count   = metal4_slot.count()
+      logger.info("metal4_slot has %d polygons" % [count])
+      polygons_count  += count
+
+      metal4_blk    = get_polygons(46 , 5 )
+      count   = metal4_blk.count()
+      logger.info("metal4_blk has %d polygons" % [count])
+      polygons_count  += count
+
+      via4          = get_polygons(41 , 0 )
+      count   = via4.count()
+      logger.info("via4 has %d polygons" % [count])
+      polygons_count  += count
+
+      if METAL_LEVEL == "5LM"
+        metal5_drawn  = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy  = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5        = metal5_drawn + metal5_dummy
+
+        metal5_label  = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+      
+        metal5_slot   = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk    = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via4
+        topmin1_via   = via3
+        top_metal     = metal5
+        topmin1_metal = metal4
+      else 
+        ## 6LM
+        metal5_drawn   = get_polygons(81 , 0 )
+        count   = metal5_drawn.count()
+        logger.info("metal5_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_dummy   = get_polygons(81 , 4 )
+        count   = metal5_dummy.count()
+        logger.info("metal5_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5         = metal5_drawn + metal5_dummy
+
+        metal5_label   = get_polygons(81 , 10)
+        count   = metal5_label.count()
+        logger.info("metal5_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_slot    = get_polygons(81 , 3 )
+        count   = metal5_slot.count()
+        logger.info("metal5_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metal5_blk     = get_polygons(81 , 5 )
+        count   = metal5_blk.count()
+        logger.info("metal5_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        via5           = get_polygons(82 , 0 )
+        count   = via5.count()
+        logger.info("via5 has %d polygons" % [count])
+        polygons_count  += count
+
+
+        metaltop_drawn = get_polygons(53 , 0 )
+        count   = metaltop_drawn.count()
+        logger.info("metaltop_drawn has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_dummy = get_polygons(53 , 4 )
+        count   = metaltop_dummy.count()
+        logger.info("metaltop_dummy has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop       = metaltop_drawn + metaltop_dummy
+
+        metaltop_label = get_polygons(53 , 10)
+        count   = metaltop_label.count()
+        logger.info("metaltop_label has %d polygons" % [count])
+        polygons_count  += count
+
+        metaltop_slot  = get_polygons(53 , 3 )
+        count   = metaltop_slot.count()
+        logger.info("metaltop_slot has %d polygons" % [count])
+        polygons_count  += count
+
+        metalt_blk     = get_polygons(53 , 5 )
+        count   = metalt_blk.count()
+        logger.info("metalt_blk has %d polygons" % [count])
+        polygons_count  += count
+
+        top_via       = via5
+        topmin1_via   = via4
+        top_metal     = metaltop
+        topmin1_metal = metal5
+      end
+    end
+  end
+end
+
+pad            = get_polygons(37 , 0 )
+count   = pad.count()
+logger.info("pad has %d polygons" % [count])
+polygons_count  += count
+
+ubmpperi       = get_polygons(183, 0 )
+count   = ubmpperi.count()
+logger.info("ubmpperi has %d polygons" % [count])
+polygons_count  += count
+
+ubmparray      = get_polygons(184, 0 )
+count   = ubmparray.count()
+logger.info("ubmparray has %d polygons" % [count])
+polygons_count  += count
+
+ubmeplate      = get_polygons(185, 0 )
+count   = ubmeplate.count()
+logger.info("ubmeplate has %d polygons" % [count])
+polygons_count  += count
+
+metal1_res     = get_polygons(110, 11)
+count   = metal1_res.count()
+logger.info("metal1_res has %d polygons" % [count])
+polygons_count  += count
+
+metal2_res     = get_polygons(110, 12)
+count   = metal2_res.count()
+logger.info("metal2_res has %d polygons" % [count])
+polygons_count  += count
+
+metal3_res     = get_polygons(110, 13)
+count   = metal3_res.count()
+logger.info("metal3_res has %d polygons" % [count])
+polygons_count  += count
+
+metal4_res     = get_polygons(110, 14)
+count   = metal4_res.count()
+logger.info("metal4_res has %d polygons" % [count])
+polygons_count  += count
+
+metal5_res     = get_polygons(110, 15)
+count   = metal5_res.count()
+logger.info("metal5_res has %d polygons" % [count])
+polygons_count  += count
+
+metal6_res     = get_polygons(110, 16)
+count   = metal6_res.count()
+logger.info("metal6_res has %d polygons" % [count])
+polygons_count  += count
+
+pr_bndry       = get_polygons(0  , 0 )
+count   = pr_bndry.count()
+logger.info("pr_bndry has %d polygons" % [count])
+polygons_count  += count
+
+border         = get_polygons(63 , 0 )
+count   = border.count()
+logger.info("border has %d polygons" % [count])
+polygons_count  += count
+logger.info("Total no. of polygons in the design is #{polygons_count}")
+
+logger.info("Starting deriving base layers.")
+#=====================================================
+#------------- BASE LAYERS DERIVATIONS ---------------
+#=====================================================
+
+ncomp      =  comp      & nplus
+pcomp      =  comp      & pplus
+tgate      =  poly2     & comp
+ngate      =  nplus     & tgate
+pgate      =  pplus     & tgate
+natcompsd	 = (nat       & comp.interacting(poly2)) - tgate
+
+nom_gate = tgate.not(dualgate)
+thick_gate = tgate.and(dualgate)
+
+ngate_56V = ngate.and(dualgate)
+pgate_56V = pgate.and(dualgate)
+
+ngate_5V = ngate_56V.and(v5_xtor)
+pgate_5V = pgate_56V.and(v5_xtor)
+
+ngate_6V = ngate_56V.not(v5_xtor)
+pgate_6V = pgate_56V.not(v5_xtor)
+
+lvpwell_dn = lvpwell.interacting(dnwell)
+lvpwell_out = lvpwell.not_interacting(dnwell)
+
+
+#================================================
+#------------- LAYERS CONNECTIONS ---------------
+#================================================
+
+if CONNECTIVITY_RULES
+
+  logger.info("Construct connectivity for the design.")
+
+  connect(dnwell,  ncomp)
+  connect(ncomp,  contact)
+  connect(pcomp,  contact)
+
+  connect(lvpwell_out,  pcomp)
+  connect(lvpwell_dn, pcomp)
+
+  connect(nwell,  ncomp)
+  connect(natcompsd,  contact)
+  connect(mvsd,  ncomp)
+  connect(mvpsd,  pcomp)
+  connect(contact,  metal1)
+  connect(metal1,  via1)
+  connect(via1,    metal2)
+  if METAL_LEVEL != "2LM"
+    connect(metal2,  via2)
+    connect(via2,    metal3)
+
+    if METAL_LEVEL != "3LM"
+      connect(metal3,  via3)
+      connect(via3,    metal4)
+      
+      if METAL_LEVEL != "4LM"
+        connect(metal4,  via4)
+        connect(via4,    metal5)
+
+        if METAL_LEVEL != "5LM"
+          connect(metal5,  via5)
+          connect(via5,    metaltop)
+        end
+      end
+    end
+  end
+
+end #CONNECTIVITY_RULES
+
+#================================================
+#------------ PRE-DEFINED FUNCTIONS -------------
+#================================================
+
+def conn_space(layer,conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer.space(conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer.space(not_conn_val.um, mode)
+  singularity_errors = layer.space(0.001.um)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons.or(singularity_errors.polygons(0.001))
+  return connected_output, unconnected_output
+end
+
+def conn_separation(layer1, layer2, conn_val,not_conn_val, mode)
+  if conn_val > not_conn_val
+    raise "ERROR : Wrong connectivity implementation"
+  end
+  connected_output = layer1.separation(layer2, conn_val.um, mode).polygons(0.001)
+  unconnected_errors_unfiltered = layer1.separation(layer2, not_conn_val.um, mode)
+  # Filter out the errors arising from the same net
+  unconnected_errors = DRC::DRCLayer::new(self, RBA::EdgePairs::new)
+  unconnected_errors_unfiltered.data.each do |ep|
+    net1 = l2n_data.probe_net(layer1.data, ep.first.p1)
+    net2 = l2n_data.probe_net(layer2.data, ep.second.p1)
+    if !net1 || !net2
+      puts "Should not happen ..."
+    elsif net1.circuit != net2.circuit || net1.cluster_id != net2.cluster_id
+      # unconnected
+      unconnected_errors.data.insert(ep)
+    end
+  end
+  unconnected_output = unconnected_errors.polygons(0.001)
+  return connected_output, unconnected_output
+end
+
+# === IMPLICIT EXTRACTION ===
+if CONNECTIVITY_RULES
+  logger.info("Connectivity rules enabled, Netlist object will be generated.")
+  netlist
+end #CONNECTIVITY_RULES
+
+# === LAYOUT EXTENT ===
+CHIP = extent.sized(0.0)
+logger.info("Total area of the design is #{CHIP.area()} um^2.")
+
+#================================================
+#----------------- MAIN RUNSET ------------------
+#================================================
+
+logger.info("Starting GF180MCU DRC rules.")
+if FEOL
+  logger.info("Running all FEOL rules")
+end #FEOL
+
+if BEOL
+  logger.info("Running all BEOL rules")
+end #BEOL
+
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+if FEOL
+
+    #================================================
+    #--------------------YMTP_MK---------------------
+    #================================================
+
+    # Rule Y.NW.2b_3.3V: Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. is 1µm
+    logger.info("Executing rule Y.NW.2b_3.3V")
+    ynw2b_l1  = nwell.outside(dnwell).inside(ymtp_mk).space(1.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ynw2b_l1.output("Y.NW.2b_3.3V", "Y.NW.2b_3.3V : Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. : 1µm")
+    ynw2b_l1.forget
+
+    # Rule Y.NW.2b_5V: Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. is 1µm
+    logger.info("Executing rule Y.NW.2b_5V")
+    ynw2b_l1  = nwell.outside(dnwell).inside(ymtp_mk).space(1.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ynw2b_l1.output("Y.NW.2b_5V", "Y.NW.2b_5V : Min. Nwell Space (Outside DNWELL, Inside YMTP_MK) [Different potential]. : 1µm")
+    ynw2b_l1.forget
+
+    # rule Y.DF.4d_3.3V is not a DRC check
+
+    # rule Y.DF.4d_5V is not a DRC check
+
+    # Rule Y.DF.6_5V: Min. COMP extend beyond gate (it also means source/drain overhang) inside YMTP_MK. is 0.15µm
+    logger.info("Executing rule Y.DF.6_5V")
+    ydf6_l1 = comp.not(otp_mk).inside(ymtp_mk).enclosing(poly2.inside(ymtp_mk), 0.15.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ydf6_l1.output("Y.DF.6_5V", "Y.DF.6_5V : Min. COMP extend beyond gate (it also means source/drain overhang) inside YMTP_MK. : 0.15µm")
+    ydf6_l1.forget
+
+    # Rule Y.DF.16_3.3V: Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). is 0.27µm
+    logger.info("Executing rule Y.DF.16_3.3V")
+    ydf16_l1  = ncomp.outside(nwell).outside(dnwell).separation(nwell.outside(dnwell), 0.27.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ydf16_l1.output("Y.DF.16_3.3V", "Y.DF.16_3.3V : Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). : 0.27µm")
+    ydf16_l1.forget
+
+    # Rule Y.DF.16_5V: Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). is 0.23µm
+    logger.info("Executing rule Y.DF.16_5V")
+    ydf16_l1  = ncomp.outside(nwell).outside(dnwell).separation(nwell.outside(dnwell), 0.23.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ydf16_l1.output("Y.DF.16_5V", "Y.DF.16_5V : Min. space from (Nwell outside DNWELL) to (unrelated NCOMP outside Nwell and DNWELL) (inside YMTP_MK). : 0.23µm")
+    ydf16_l1.forget
+
+    # Rule Y.PL.1_3.3V: Interconnect Width (inside YMTP_MK). is 0.13µm
+    logger.info("Executing rule Y.PL.1_3.3V")
+    ypl1_l1  = poly2.outside(plfuse).and(ymtp_mk).width(0.13.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ypl1_l1.output("Y.PL.1_3.3V", "Y.PL.1_3.3V : Interconnect Width (inside YMTP_MK). : 0.13µm")
+    ypl1_l1.forget
+
+    # Rule Y.PL.1_5V: Interconnect Width (inside YMTP_MK). This rule is currently not applicable for 5V.
+    logger.info("Executing rule Y.PL.1_5V")
+    ypl1_l1 = poly2.outside(plfuse).and(ymtp_mk).overlapping(dualgate)
+    ypl1_l1.output("Y.PL.1_5V", "Y.PL.1_5V : Interconnect Width (inside YMTP_MK). This rule is currently not applicable for 5V.")
+    ypl1_l1.forget
+
+    # Rule Y.PL.2_3.3V: Gate Width (Channel Length) (inside YMTP_MK). is 0.13µm
+    logger.info("Executing rule Y.PL.2_3.3V")
+    ypl2_l1  = poly2.edges.and(tgate.edges).not(otp_mk).and(ymtp_mk).width(0.13.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ypl2_l1.output("Y.PL.2_3.3V", "Y.PL.2_3.3V : Gate Width (Channel Length) (inside YMTP_MK). : 0.13µm")
+    ypl2_l1.forget
+
+    # Rule Y.PL.2_5V: Gate Width (Channel Length) (inside YMTP_MK). is 0.47µm
+    logger.info("Executing rule Y.PL.2_5V")
+    ypl2_l1  = poly2.edges.and(tgate.edges).not(otp_mk).and(ymtp_mk).width(0.47.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ypl2_l1.output("Y.PL.2_5V", "Y.PL.2_5V : Gate Width (Channel Length) (inside YMTP_MK). : 0.47µm")
+    ypl2_l1.forget
+
+    # Rule Y.PL.4_5V: Poly2 extension beyond COMP to form Poly2 end cap (inside YMTP_MK). is 0.16µm
+    logger.info("Executing rule Y.PL.4_5V")
+    ypl4_l1 = poly2.and(ymtp_mk).enclosing(comp.and(ymtp_mk), 0.16.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ypl4_l1.output("Y.PL.4_5V", "Y.PL.4_5V : Poly2 extension beyond COMP to form Poly2 end cap (inside YMTP_MK). : 0.16µm")
+    ypl4_l1.forget
+
+    # Rule Y.PL.5a_3.3V: Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). is 0.04µm
+    logger.info("Executing rule Y.PL.5a_3.3V")
+    ypl5a_l1  = poly2.and(ymtp_mk).separation(comp.and(ymtp_mk), 0.04.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ypl5a_l1.output("Y.PL.5a_3.3V", "Y.PL.5a_3.3V : Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). : 0.04µm")
+    ypl5a_l1.forget
+
+    # Rule Y.PL.5a_5V: Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). is 0.2µm
+    logger.info("Executing rule Y.PL.5a_5V")
+    ypl5a_l1  = poly2.and(ymtp_mk).separation(comp.and(ymtp_mk), 0.2.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ypl5a_l1.output("Y.PL.5a_5V", "Y.PL.5a_5V : Space from field Poly2 to unrelated COMP (inside YMTP_MK). Space from field Poly2 to Guard-ring (inside YMTP_MK). : 0.2µm")
+    ypl5a_l1.forget
+
+    # Rule Y.PL.5b_3.3V: Space from field Poly2 to related COMP (inside YMTP_MK). is 0.04µm
+    logger.info("Executing rule Y.PL.5b_3.3V")
+    ypl5b_l1  = poly2.and(ymtp_mk).separation(comp.and(ymtp_mk), 0.04.um, euclidian).polygons(0.001).not_interacting(v5_xtor).not_interacting(dualgate)
+    ypl5b_l1.output("Y.PL.5b_3.3V", "Y.PL.5b_3.3V : Space from field Poly2 to related COMP (inside YMTP_MK). : 0.04µm")
+    ypl5b_l1.forget
+
+    # Rule Y.PL.5b_5V: Space from field Poly2 to related COMP (inside YMTP_MK). is 0.2µm
+    logger.info("Executing rule Y.PL.5b_5V")
+    ypl5b_l1  = poly2.and(ymtp_mk).separation(comp.and(ymtp_mk), 0.2.um, euclidian).polygons(0.001).overlapping(dualgate)
+    ypl5b_l1.output("Y.PL.5b_5V", "Y.PL.5b_5V : Space from field Poly2 to related COMP (inside YMTP_MK). : 0.2µm")
+    ypl5b_l1.forget
+
+    # rule Y.PL.6_3.3V is not a DRC check
+
+    # rule Y.PL.6_5V is not a DRC check
+
+    # rule Y.LU.3_3.3V is not yet implemented
+
+    # rule Y.LU.3_5V is not yet implemented
+
+end #FEOL
+
+################################################################################################
+# Copyright 2022 GlobalFoundries PDK Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+################################################################################################
+
+
+
+exec_end_time = Time.now
+run_time = exec_end_time - exec_start_time
+logger.info("%s DRC Total Run time %f seconds" % [table_name, run_time])
+
+
diff --git a/tapeout/outputs/oas/caravel_18000abd.oas b/tapeout/outputs/oas/caravel_18000abd.oas
index 82f6e25..7d17274 100644
--- a/tapeout/outputs/oas/caravel_18000abd.oas
+++ b/tapeout/outputs/oas/caravel_18000abd.oas
Binary files differ
