From 09cbc130fc4f559e98448a140ff15eac39c99ce2 Mon Sep 17 00:00:00 2001 From: Mohamed Kassem Date: Tue, 28 Sep 2021 17:42:44 -0700 Subject: [PATCH] initial commit --- LICENSE | 0 README.md | 58 + build-all.sh | 5 + .../__pycache__/docker_builder.cpython-37.pyc | Bin 0 -> 2033 bytes .../__pycache__/docker_builder.cpython-39.pyc | Bin 0 -> 2076 bytes docker_builder/docker_builder.py | 59 + image/__pycache__/image.cpython-37.pyc | Bin 0 -> 2595 bytes image/__pycache__/image.cpython-39.pyc | Bin 0 -> 2680 bytes image/image.py | 101 + images/base/Dockerfile | 5 + images/base/info.json | 8 + images/base/scripts/dependencies.sh | 80 + images/covered/Dockerfile | 12 + images/covered/info.json | 8 + images/covered/scripts/dependencies.sh | 3 + images/covered/scripts/install.sh | 13 + images/foss-asic-tools/Dockerfile | 94 + .../addons/sak/bin/antenna-check-gds.sh | 1 + .../addons/sak/bin/caldrc-post | 511 + .../foss-asic-tools/addons/sak/bin/caldrc-put | 296 + .../addons/sak/bin/cp_shapes.py | 1 + .../addons/sak/bin/cp_shapes.sh | 1 + .../foss-asic-tools/addons/sak/bin/def2gds.py | 1 + .../foss-asic-tools/addons/sak/bin/def2gds.sh | 1 + .../addons/sak/bin/delete_areaid.py | 1 + .../addons/sak/bin/dot.magicrc | 1 + .../addons/sak/bin/drc-def-sky130A.sh | 1 + .../addons/sak/bin/drc-gds-full-EFS8A.sh | 1 + .../addons/sak/bin/drc-gds-sky130A.sh | 1 + .../addons/sak/bin/drc-mag-full-EFS8A.sh | 1 + .../addons/sak/bin/drc-mag-sky130A.sh | 1 + .../addons/sak/bin/erase_box.sh | 1 + .../addons/sak/bin/ext-def-sky130A.sh | 1 + .../addons/sak/bin/ext-gds-sky130A.sh | 1 + .../addons/sak/bin/ext-mag-sky130A.sh | 1 + .../foss-asic-tools/addons/sak/bin/gds2mag.sh | 1 + .../addons/sak/bin/gds2oas-batch.sh | 1 + .../foss-asic-tools/addons/sak/bin/gds2oas.sh | 1 + .../addons/sak/bin/gdsAllcells.rb | 1 + .../foss-asic-tools/addons/sak/bin/gdsFlat.rb | 1 + .../addons/sak/bin/gdsLayers.rb | 1 + .../addons/sak/bin/gdsLyrdel.rb | 1 + .../addons/sak/bin/gdsRename.rb | 1 + .../foss-asic-tools/addons/sak/bin/gdsSize.rb | 1 + .../addons/sak/bin/gdsTopcells.rb | 1 + .../foss-asic-tools/addons/sak/bin/git-sizer | 1 + images/foss-asic-tools/addons/sak/bin/gm.py | 23 + .../addons/sak/bin/hspice2ngspice.sh | 1 + .../addons/sak/bin/klayoutDrc.sh | 1 + .../addons/sak/bin/label2pin_inplace.sh | 1 + .../addons/sak/bin/lef2maglef.sh | 1 + .../foss-asic-tools/addons/sak/bin/mag2gds.sh | 1 + .../foss-asic-tools/addons/sak/bin/mag2lvs.sh | 1 + .../addons/sak/bin/mag2maglef.sh | 1 + .../addons/sak/bin/magic-drc.sh | 1 + .../addons/sak/bin/magic-ext.sh | 1 + .../foss-asic-tools/addons/sak/bin/magicDrc | 1 + .../foss-asic-tools/addons/sak/bin/magicGdrc | 1 + .../addons/sak/bin/maglef2gds.sh | 1 + .../addons/sak/bin/maglef2lvs.sh | 1 + .../addons/sak/bin/mv_shapes.py | 1 + .../addons/sak/bin/mv_shapes.sh | 1 + .../addons/sak/bin/pin2drawing_inplace.sh | 9 + .../addons/sak/bin/run_gds2oas.sh | 1 + .../addons/sak/bin/verilog2spice.py | 1 + .../foss-asic-tools/addons/sak/bin/vlog2Spice | 1 + .../foss-asic-tools/addons/sak/common/LICENSE | 201 + .../addons/sak/common/get_description.py | 16 + .../addons/sak/common/git-sizer | Bin 0 -> 3650104 bytes .../addons/sak/common/hspice2ngspice.sh | 96 + .../addons/sak/common/install-pdk.sh | 33 + .../sak/common/parse_klayout_xor_log.py | 42 + .../addons/sak/common/parse_summary.py | 101 + .../addons/sak/common/rewrites.csv | 2061 ++++ .../addons/sak/common/sub-no-empty.sh | 61 + .../addons/sak/common/verilog2spice.py | 198 + .../foss-asic-tools/addons/sak/common/xor.sh | 1 + .../addons/sak/common/xor_xbox.drc | 54 + .../addons/sak/common/xor_xbox.sh | 44 + .../addons/sak/klayout/coordinates.rb | 59 + .../addons/sak/klayout/cp_shapes.py | 68 + .../addons/sak/klayout/cp_shapes.sh | 22 + .../addons/sak/klayout/def-lef/import_def.rb | 38 + .../addons/sak/klayout/def-lef/layermap.txt | 47 + .../addons/sak/klayout/def2gds.py | 197 + .../addons/sak/klayout/def2gds.sh | 14 + .../addons/sak/klayout/delete_areaid.py | 41 + .../addons/sak/klayout/density_check.lydrc | 73 + .../addons/sak/klayout/diff.py | 29 + .../addons/sak/klayout/diff_report.py | 68 + .../sak/klayout/drc-gds-sky130A-klayout.sh | 65 + .../addons/sak/klayout/drc_kl_all.sh | 3 + .../addons/sak/klayout/drc_kl_feol.sh | 3 + .../addons/sak/klayout/erase.rb | 246 + .../addons/sak/klayout/gds2oas-all.sh | 16 + .../addons/sak/klayout/gds2oas.py | 16 + .../addons/sak/klayout/gds2oas.sh | 19 + .../addons/sak/klayout/gds2spice-klayout.sh | 23 + .../addons/sak/klayout/gdsAllcells.rb | 178 + .../addons/sak/klayout/gdsArea0.rb | 166 + .../addons/sak/klayout/gdsAreamin.drc | 155 + .../addons/sak/klayout/gdsFlat.rb | 125 + .../addons/sak/klayout/gdsLayers.rb | 96 + .../addons/sak/klayout/gdsLyrdel.rb | 79 + .../addons/sak/klayout/gdsRename.rb | 86 + .../addons/sak/klayout/gdsSize.rb | 123 + .../addons/sak/klayout/gdsTopcells.rb | 51 + .../addons/sak/klayout/gdstk_merge.py | 91 + .../addons/sak/klayout/klayoutDrc.sh | 92 + .../addons/sak/klayout/label2pin_inplace.sh | 9 + .../addons/sak/klayout/lay2net.sh | 23 + .../addons/sak/klayout/lvs_sky130.lylvs | 220 + .../sak/klayout/macros/array_of_labels.lym | 291 + .../addons/sak/klayout/macros/calc_area.lym | 63 + .../sak/klayout/macros/calc_area_hier.lym | 128 + .../addons/sak/klayout/macros/cell_bbox.lym | 59 + .../sak/klayout/macros/dump_flat_shapes.lym | 131 + .../addons/sak/klayout/macros/list_layers.lym | 185 + .../addons/sak/klayout/macros/new_macro.lym | 31 + .../sak/klayout/macros/replace_cells.lym | 211 + .../sak/klayout/macros/scale_anisotropic.lym | 112 + .../addons/sak/klayout/macros/screenshot.lym | 131 + .../klayout/macros/search_odd_width_paths.lym | 70 + .../sak/klayout/macros/write_childcells.lym | 100 + .../addons/sak/klayout/merge.rb | 20 + .../addons/sak/klayout/merge2.rb | 67 + .../addons/sak/klayout/merge_kl.py | 57 + .../addons/sak/klayout/mv_shapes.py | 51 + .../addons/sak/klayout/mv_shapes.sh | 9 + .../sak/klayout/parse_klayout_xor_log.py | 51 + .../addons/sak/klayout/parse_xor_log.py | 55 + .../addons/sak/klayout/precheck_klayout.rb | 308 + .../addons/sak/klayout/precheck_klayout.sh | 37 + .../addons/sak/klayout/replace_some_cells.py | 217 + .../addons/sak/klayout/run_gds2oas.sh | 16 + .../addons/sak/klayout/run_xor.sh | 32 + .../addons/sak/klayout/scrotLayout.py | 40 + .../addons/sak/klayout/scrotLayout.sh | 31 + .../sak/klayout/tech/sky130A/DRC_ciic.sh | 11 + .../sky130A/do-not-use-sky130_2_jeffdi.lydrc | 868 ++ .../sak/klayout/tech/sky130A/fom_density.drc | 162 + .../tech/sky130A/fom_density_old.lydrc | 96 + .../klayout/tech/sky130A/met_density.lydrc | 163 + .../tech/sky130A/sky130A-drc-wip.lydrc | 868 ++ .../sak/klayout/tech/sky130A/sky130A-eft.lyp | 8649 +++++++++++++++++ .../klayout/tech/sky130A/sky130A-fom.lydrc | 78 + .../sak/klayout/tech/sky130A/sky130A-fom.lyp | 8377 ++++++++++++++++ .../klayout/tech/sky130A/sky130A-full.lydrc | 924 ++ .../tech/sky130A/sky130A-lvs-wip.lylvs | 87 + .../sak/klayout/tech/sky130A/sky130A-mr.lydrc | 923 ++ .../sak/klayout/tech/sky130A/sky130A.drc.xml | 901 ++ .../sak/klayout/tech/sky130A/sky130A.krc | 516 + .../sak/klayout/tech/sky130A/sky130A.krc.save | 516 + .../sak/klayout/tech/sky130A/sky130A.lydrc | 918 ++ .../klayout/tech/sky130A/sky130A.lydrc.sak | 869 ++ .../sak/klayout/tech/sky130A/sky130A.lylvs | 220 + .../sak/klayout/tech/sky130A/sky130A.lyp | 8498 ++++++++++++++++ .../sak/klayout/tech/sky130A/sky130A.lyt | 135 + .../sak/klayout/tech/sky130A/sky130A_mr.drc | 580 ++ .../sak/klayout/tech/sky130A/sky130A_mr.lydrc | 995 ++ .../klayout/tech/sky130A/sky130A_mr_opt.drc | 808 ++ .../sak/klayout/tech/sky130A/test_suite.sh | 33 + .../addons/sak/klayout/xor.drc | 42 + .../foss-asic-tools/addons/sak/klayout/xor.sh | 39 + .../addons/sak/klayout/xor_opt.drc | 65 + .../klayout_pypi_cell_freshness.py | 128 + .../klayout_pypi_nonoverlapping.py | 83 + .../addons/sak/magic/README.md | 3 + .../addons/sak/magic/antenna-check-gds.sh | 30 + .../addons/sak/magic/dot.magicrc | 49 + .../addons/sak/magic/drc-def-sky130A.sh | 29 + .../addons/sak/magic/drc-gds-full-EFS8A.sh | 94 + .../addons/sak/magic/drc-gds-sky130A.sh | 39 + .../addons/sak/magic/drc-gds-sky130Ab.sh | 30 + .../addons/sak/magic/drc-mag-full-EFS8A.sh | 95 + .../addons/sak/magic/drc-mag-sky130A.sh | 29 + .../addons/sak/magic/erase_box.sh | 29 + .../addons/sak/magic/ext-def-sky130A.sh | 30 + .../addons/sak/magic/ext-gds-sky130A.sh | 30 + .../addons/sak/magic/ext-mag-sky130A.sh | 30 + .../addons/sak/magic/gds2mag-te.sh | 39 + .../addons/sak/magic/gds2mag.sh | 36 + .../addons/sak/magic/gdsMergeall.drc | 193 + .../addons/sak/magic/gdsSky130Apin1.drc | 356 + .../addons/sak/magic/gdsSky130Asub1.drc | 413 + .../addons/sak/magic/lef2maglef.sh | 60 + .../addons/sak/magic/list_macros.py | 59 + .../addons/sak/magic/mag2gds.sh | 23 + .../addons/sak/magic/mag2lvs.sh | 42 + .../addons/sak/magic/mag2maglef.sh | 56 + .../addons/sak/magic/magic-drc.sh | 56 + .../addons/sak/magic/magic-ext.sh | 35 + .../foss-asic-tools/addons/sak/magic/magicDrc | 1124 +++ .../addons/sak/magic/magicGdrc | 896 ++ .../addons/sak/magic/maglef2gds.sh | 20 + .../addons/sak/magic/maglef2lvs.sh | 43 + .../addons/sak/magic/run_instances_listing.sh | 47 + .../addons/sak/magic/run_wrapper.sh | 20 + .../addons/sak/magic/tcl/addmpwseal.tcl | 25 + .../magic/tcl/gds2mag-sky130A-io-cells.tcl | 34 + .../addons/sak/magic/tcl/magic-drc.tcl | 74 + .../addons/sak/magic/tcl/magic-ext.tcl | 43 + .../sak/magic/tcl/magic_list_instances.tcl | 42 + .../sak/magic/tcl/run_load_abstracted.tcl | 62 + .../addons/sak/qflow/vlog2Spice | Bin 0 -> 74024 bytes .../.config/Logo_globe_transparentBG-199.png | Bin 0 -> 39303 bytes .../addons/xfce/.config/Thunar/accels.scm | 77 + .../addons/xfce/.config/Thunar/uca.xml | 13 + .../addons/xfce/.config/Trolltech.conf | 22 + .../addons/xfce/.config/bg_sakuli.png | Bin 0 -> 301472 bytes .../.config/efabless.com.transparent-8.png | Bin 0 -> 23014 bytes .../addons/xfce/.config/efabless_logo.png | Bin 0 -> 7460 bytes .../xfce/.config/gtk-2.0/gtkfilechooser.ini | 11 + .../addons/xfce/.config/gtk-3.0/bookmarks | 1 + .../xfce4/desktop/icons.screen0-1664x898.rc | 3 + .../xfce4/desktop/icons.screen0-1904x1033.rc | 3 + .../panel/launcher-6/16316678561.desktop | 12 + .../panel/launcher-7/16316678652.desktop | 13 + .../xfce/.config/xfce4/terminal/accels.scm | 55 + .../xfconf/xfce-perchannel-xml/thunar.xml | 11 + .../xfce-perchannel-xml/xfce4-desktop.xml | 55 + .../xfce4-keyboard-shortcuts.xml | 172 + .../xfce-perchannel-xml/xfce4-panel.xml | 68 + .../xfconf/xfce-perchannel-xml/xfwm4.xml | 87 + .../xfconf/xfce-perchannel-xml/xsettings.xml | 59 + .../addons/xfce/Desktop/firefox.desktop | 221 + .../foss-asic-tools/addons/xfce/wm_startup.sh | 14 + images/foss-asic-tools/info.json | 8 + images/foss-asic-tools/scripts/chrome-init.sh | 11 + images/foss-asic-tools/scripts/chrome.sh | 17 + .../foss-asic-tools/scripts/chromium-wrapper | 8 + images/foss-asic-tools/scripts/env.sh | 94 + images/foss-asic-tools/scripts/firefox.sh | 50 + .../scripts/generate_container_user | 28 + images/foss-asic-tools/scripts/icewm_ui.sh | 11 + .../foss-asic-tools/scripts/libnss_wrapper.sh | 12 + .../foss-asic-tools/scripts/miscellaneous.sh | 22 + images/foss-asic-tools/scripts/no_vnc.sh | 17 + .../scripts/set_user_permission.sh | 14 + images/foss-asic-tools/scripts/source_env.sh | 3 + images/foss-asic-tools/scripts/tigervnc.sh | 6 + images/foss-asic-tools/scripts/tools.sh | 33 + images/foss-asic-tools/scripts/vnc_startup.sh | 49 + images/foss-asic-tools/scripts/wm_startup.sh | 14 + images/foss-asic-tools/scripts/xfce_ui.sh | 17 + images/gaw3-xschem/Dockerfile | 12 + images/gaw3-xschem/info.json | 8 + images/gaw3-xschem/scripts/dependencies.sh | 7 + images/gaw3-xschem/scripts/install.sh | 16 + images/gtkwave/Dockerfile | 12 + images/gtkwave/info.json | 8 + images/gtkwave/scripts/dependencies.sh | 17 + images/gtkwave/scripts/install.sh | 13 + images/irsim/.log.txt | 2 + images/irsim/Dockerfile | 10 + images/irsim/info.json | 8 + images/irsim/scripts/install.sh | 11 + images/iverilog/Dockerfile | 14 + images/iverilog/info.json | 8 + images/iverilog/scripts/dependencies.sh | 11 + images/iverilog/scripts/install.sh | 13 + images/klayout/Dockerfile | 13 + images/klayout/info.json | 8 + images/klayout/scripts/dependencies.sh | 23 + images/klayout/scripts/install.sh | 13 + images/magic/Dockerfile | 10 + images/magic/info.json | 8 + images/magic/scripts/install.sh | 11 + images/netgen/Dockerfile | 12 + images/netgen/info.json | 8 + images/netgen/scripts/dependencies.sh | 2 + images/netgen/scripts/install.sh | 15 + images/ngscope/Dockerfile | 12 + images/ngscope/info.json | 8 + images/ngscope/scripts/dependencies.sh | 19 + images/ngscope/scripts/install.sh | 14 + images/ngspice/Dockerfile | 12 + images/ngspice/info.json | 8 + images/ngspice/scripts/dependencies.sh | 19 + images/ngspice/scripts/install.sh | 17 + images/open_pdks/Dockerfile | 20 + images/open_pdks/info.json | 10 + images/open_pdks/scripts/dependencies.sh | 2 + images/open_pdks/scripts/install.sh | 29 + images/openlane/Dockerfile | 13 + images/openlane/info.json | 8 + images/openlane/scripts/dependencies.sh | 3 + images/openlane/scripts/install.sh | 20 + images/riscv-gnu-toolchain-rv32i/Dockerfile | 10 + images/riscv-gnu-toolchain-rv32i/info.json | 8 + .../scripts/dependencies.sh | 11 + .../scripts/install.sh | 13 + images/skywater-pdk/Dockerfile | 11 + images/skywater-pdk/info.json | 8 + images/skywater-pdk/scripts/dependencies.sh | 3 + images/skywater-pdk/scripts/install.sh | 15 + images/xschem/Dockerfile | 12 + images/xschem/info.json | 8 + images/xschem/scripts/dependencies.sh | 14 + images/xschem/scripts/install.sh | 14 + images/xyce/Dockerfile | 15 + images/xyce/info.json | 8 + images/xyce/scripts/dependencies.sh | 17 + images/xyce/scripts/install.sh | 27 + images/xyce/scripts/trilinos.reconfigure.sh | 43 + images/xyce/scripts/xyce.reconfigure.sh | 13 + paths/__pycache__/paths.cpython-37.pyc | Bin 0 -> 1088 bytes paths/__pycache__/paths.cpython-39.pyc | Bin 0 -> 1107 bytes paths/paths.py | 21 + recipe-pdk-only.csv | 5 + recipe.csv | 19 + recipe.json | 53 + recipe/__pycache__/recipe.cpython-37.pyc | Bin 0 -> 1216 bytes recipe/__pycache__/recipe.cpython-39.pyc | Bin 0 -> 1261 bytes recipe/recipe.py | 51 + requirements.txt | 3 + run.py | 98 + setup-venv.sh | 3 + 318 files changed, 52470 insertions(+) mode change 100644 => 100755 LICENSE create mode 100755 README.md create mode 100755 build-all.sh create mode 100755 docker_builder/__pycache__/docker_builder.cpython-37.pyc create mode 100755 docker_builder/__pycache__/docker_builder.cpython-39.pyc create mode 100755 docker_builder/docker_builder.py create mode 100755 image/__pycache__/image.cpython-37.pyc create mode 100755 image/__pycache__/image.cpython-39.pyc create mode 100755 image/image.py create mode 100755 images/base/Dockerfile create mode 100755 images/base/info.json create mode 100755 images/base/scripts/dependencies.sh create mode 100755 images/covered/Dockerfile create mode 100755 images/covered/info.json create mode 100755 images/covered/scripts/dependencies.sh create mode 100755 images/covered/scripts/install.sh create mode 100755 images/foss-asic-tools/Dockerfile create mode 120000 images/foss-asic-tools/addons/sak/bin/antenna-check-gds.sh create mode 100755 images/foss-asic-tools/addons/sak/bin/caldrc-post create mode 100755 images/foss-asic-tools/addons/sak/bin/caldrc-put create mode 120000 images/foss-asic-tools/addons/sak/bin/cp_shapes.py create mode 120000 images/foss-asic-tools/addons/sak/bin/cp_shapes.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/def2gds.py create mode 120000 images/foss-asic-tools/addons/sak/bin/def2gds.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/delete_areaid.py create mode 120000 images/foss-asic-tools/addons/sak/bin/dot.magicrc create mode 120000 images/foss-asic-tools/addons/sak/bin/drc-def-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/drc-gds-full-EFS8A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/drc-gds-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/drc-mag-full-EFS8A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/drc-mag-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/erase_box.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/ext-def-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/ext-gds-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/ext-mag-sky130A.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/gds2mag.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/gds2oas-batch.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/gds2oas.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsAllcells.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsFlat.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsLayers.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsLyrdel.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsRename.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsSize.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/gdsTopcells.rb create mode 120000 images/foss-asic-tools/addons/sak/bin/git-sizer create mode 100755 images/foss-asic-tools/addons/sak/bin/gm.py create mode 120000 images/foss-asic-tools/addons/sak/bin/hspice2ngspice.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/klayoutDrc.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/label2pin_inplace.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/lef2maglef.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/mag2gds.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/mag2lvs.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/mag2maglef.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/magic-drc.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/magic-ext.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/magicDrc create mode 120000 images/foss-asic-tools/addons/sak/bin/magicGdrc create mode 120000 images/foss-asic-tools/addons/sak/bin/maglef2gds.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/maglef2lvs.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/mv_shapes.py create mode 120000 images/foss-asic-tools/addons/sak/bin/mv_shapes.sh create mode 100755 images/foss-asic-tools/addons/sak/bin/pin2drawing_inplace.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/run_gds2oas.sh create mode 120000 images/foss-asic-tools/addons/sak/bin/verilog2spice.py create mode 120000 images/foss-asic-tools/addons/sak/bin/vlog2Spice create mode 100755 images/foss-asic-tools/addons/sak/common/LICENSE create mode 100755 images/foss-asic-tools/addons/sak/common/get_description.py create mode 100755 images/foss-asic-tools/addons/sak/common/git-sizer create mode 100755 images/foss-asic-tools/addons/sak/common/hspice2ngspice.sh create mode 100755 images/foss-asic-tools/addons/sak/common/install-pdk.sh create mode 100755 images/foss-asic-tools/addons/sak/common/parse_klayout_xor_log.py create mode 100755 images/foss-asic-tools/addons/sak/common/parse_summary.py create mode 100755 images/foss-asic-tools/addons/sak/common/rewrites.csv create mode 100755 images/foss-asic-tools/addons/sak/common/sub-no-empty.sh create mode 100755 images/foss-asic-tools/addons/sak/common/verilog2spice.py create mode 120000 images/foss-asic-tools/addons/sak/common/xor.sh create mode 100755 images/foss-asic-tools/addons/sak/common/xor_xbox.drc create mode 100755 images/foss-asic-tools/addons/sak/common/xor_xbox.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/coordinates.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/cp_shapes.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/cp_shapes.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/def-lef/import_def.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/def-lef/layermap.txt create mode 100755 images/foss-asic-tools/addons/sak/klayout/def2gds.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/def2gds.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/delete_areaid.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/density_check.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/diff.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/diff_report.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/drc-gds-sky130A-klayout.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/drc_kl_all.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/drc_kl_feol.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/erase.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gds2oas-all.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/gds2oas.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/gds2oas.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/gds2spice-klayout.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsAllcells.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsArea0.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsAreamin.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsFlat.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsLayers.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsLyrdel.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsRename.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsSize.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdsTopcells.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/gdstk_merge.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/klayoutDrc.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/label2pin_inplace.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/lay2net.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/lvs_sky130.lylvs create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/array_of_labels.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/calc_area.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/calc_area_hier.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/cell_bbox.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/dump_flat_shapes.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/list_layers.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/new_macro.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/replace_cells.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/scale_anisotropic.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/screenshot.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/search_odd_width_paths.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/macros/write_childcells.lym create mode 100755 images/foss-asic-tools/addons/sak/klayout/merge.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/merge2.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/merge_kl.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/mv_shapes.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/mv_shapes.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/parse_klayout_xor_log.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/parse_xor_log.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/precheck_klayout.rb create mode 100755 images/foss-asic-tools/addons/sak/klayout/precheck_klayout.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/replace_some_cells.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/run_gds2oas.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/run_xor.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/scrotLayout.py create mode 100755 images/foss-asic-tools/addons/sak/klayout/scrotLayout.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/DRC_ciic.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/do-not-use-sky130_2_jeffdi.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density_old.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/met_density.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-drc-wip.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-eft.lyp create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lyp create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-full.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-lvs-wip.lylvs create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-mr.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.drc.xml create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc.save create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc.sak create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lylvs create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyp create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyt create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.lydrc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr_opt.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout/tech/sky130A/test_suite.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/xor.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout/xor.sh create mode 100755 images/foss-asic-tools/addons/sak/klayout/xor_opt.drc create mode 100755 images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_cell_freshness.py create mode 100755 images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_nonoverlapping.py create mode 100755 images/foss-asic-tools/addons/sak/magic/README.md create mode 100755 images/foss-asic-tools/addons/sak/magic/antenna-check-gds.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/dot.magicrc create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-def-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-gds-full-EFS8A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-gds-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-gds-sky130Ab.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-mag-full-EFS8A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/drc-mag-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/erase_box.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/ext-def-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/ext-gds-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/ext-mag-sky130A.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/gds2mag-te.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/gds2mag.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/gdsMergeall.drc create mode 100755 images/foss-asic-tools/addons/sak/magic/gdsSky130Apin1.drc create mode 100755 images/foss-asic-tools/addons/sak/magic/gdsSky130Asub1.drc create mode 100755 images/foss-asic-tools/addons/sak/magic/lef2maglef.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/list_macros.py create mode 100755 images/foss-asic-tools/addons/sak/magic/mag2gds.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/mag2lvs.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/mag2maglef.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/magic-drc.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/magic-ext.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/magicDrc create mode 100755 images/foss-asic-tools/addons/sak/magic/magicGdrc create mode 100755 images/foss-asic-tools/addons/sak/magic/maglef2gds.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/maglef2lvs.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/run_instances_listing.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/run_wrapper.sh create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/addmpwseal.tcl create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/gds2mag-sky130A-io-cells.tcl create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/magic-drc.tcl create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/magic-ext.tcl create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/magic_list_instances.tcl create mode 100755 images/foss-asic-tools/addons/sak/magic/tcl/run_load_abstracted.tcl create mode 100755 images/foss-asic-tools/addons/sak/qflow/vlog2Spice create mode 100755 images/foss-asic-tools/addons/xfce/.config/Logo_globe_transparentBG-199.png create mode 100755 images/foss-asic-tools/addons/xfce/.config/Thunar/accels.scm create mode 100755 images/foss-asic-tools/addons/xfce/.config/Thunar/uca.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/Trolltech.conf create mode 100755 images/foss-asic-tools/addons/xfce/.config/bg_sakuli.png create mode 100755 images/foss-asic-tools/addons/xfce/.config/efabless.com.transparent-8.png create mode 100755 images/foss-asic-tools/addons/xfce/.config/efabless_logo.png create mode 100755 images/foss-asic-tools/addons/xfce/.config/gtk-2.0/gtkfilechooser.ini create mode 100755 images/foss-asic-tools/addons/xfce/.config/gtk-3.0/bookmarks create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1664x898.rc create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1904x1033.rc create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-6/16316678561.desktop create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-7/16316678652.desktop create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/terminal/accels.scm create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml create mode 100755 images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml create mode 100755 images/foss-asic-tools/addons/xfce/Desktop/firefox.desktop create mode 100755 images/foss-asic-tools/addons/xfce/wm_startup.sh create mode 100755 images/foss-asic-tools/info.json create mode 100644 images/foss-asic-tools/scripts/chrome-init.sh create mode 100644 images/foss-asic-tools/scripts/chrome.sh create mode 100644 images/foss-asic-tools/scripts/chromium-wrapper create mode 100755 images/foss-asic-tools/scripts/env.sh create mode 100644 images/foss-asic-tools/scripts/firefox.sh create mode 100644 images/foss-asic-tools/scripts/generate_container_user create mode 100644 images/foss-asic-tools/scripts/icewm_ui.sh create mode 100644 images/foss-asic-tools/scripts/libnss_wrapper.sh create mode 100755 images/foss-asic-tools/scripts/miscellaneous.sh create mode 100644 images/foss-asic-tools/scripts/no_vnc.sh create mode 100644 images/foss-asic-tools/scripts/set_user_permission.sh create mode 100755 images/foss-asic-tools/scripts/source_env.sh create mode 100644 images/foss-asic-tools/scripts/tigervnc.sh create mode 100644 images/foss-asic-tools/scripts/tools.sh create mode 100755 images/foss-asic-tools/scripts/vnc_startup.sh create mode 100755 images/foss-asic-tools/scripts/wm_startup.sh create mode 100644 images/foss-asic-tools/scripts/xfce_ui.sh create mode 100755 images/gaw3-xschem/Dockerfile create mode 100755 images/gaw3-xschem/info.json create mode 100755 images/gaw3-xschem/scripts/dependencies.sh create mode 100755 images/gaw3-xschem/scripts/install.sh create mode 100755 images/gtkwave/Dockerfile create mode 100755 images/gtkwave/info.json create mode 100755 images/gtkwave/scripts/dependencies.sh create mode 100755 images/gtkwave/scripts/install.sh create mode 100755 images/irsim/.log.txt create mode 100755 images/irsim/Dockerfile create mode 100755 images/irsim/info.json create mode 100755 images/irsim/scripts/install.sh create mode 100755 images/iverilog/Dockerfile create mode 100755 images/iverilog/info.json create mode 100755 images/iverilog/scripts/dependencies.sh create mode 100755 images/iverilog/scripts/install.sh create mode 100755 images/klayout/Dockerfile create mode 100755 images/klayout/info.json create mode 100755 images/klayout/scripts/dependencies.sh create mode 100755 images/klayout/scripts/install.sh create mode 100755 images/magic/Dockerfile create mode 100755 images/magic/info.json create mode 100755 images/magic/scripts/install.sh create mode 100755 images/netgen/Dockerfile create mode 100755 images/netgen/info.json create mode 100755 images/netgen/scripts/dependencies.sh create mode 100755 images/netgen/scripts/install.sh create mode 100755 images/ngscope/Dockerfile create mode 100755 images/ngscope/info.json create mode 100755 images/ngscope/scripts/dependencies.sh create mode 100755 images/ngscope/scripts/install.sh create mode 100755 images/ngspice/Dockerfile create mode 100755 images/ngspice/info.json create mode 100755 images/ngspice/scripts/dependencies.sh create mode 100755 images/ngspice/scripts/install.sh create mode 100755 images/open_pdks/Dockerfile create mode 100755 images/open_pdks/info.json create mode 100755 images/open_pdks/scripts/dependencies.sh create mode 100755 images/open_pdks/scripts/install.sh create mode 100755 images/openlane/Dockerfile create mode 100755 images/openlane/info.json create mode 100755 images/openlane/scripts/dependencies.sh create mode 100755 images/openlane/scripts/install.sh create mode 100755 images/riscv-gnu-toolchain-rv32i/Dockerfile create mode 100755 images/riscv-gnu-toolchain-rv32i/info.json create mode 100755 images/riscv-gnu-toolchain-rv32i/scripts/dependencies.sh create mode 100755 images/riscv-gnu-toolchain-rv32i/scripts/install.sh create mode 100755 images/skywater-pdk/Dockerfile create mode 100755 images/skywater-pdk/info.json create mode 100755 images/skywater-pdk/scripts/dependencies.sh create mode 100755 images/skywater-pdk/scripts/install.sh create mode 100755 images/xschem/Dockerfile create mode 100755 images/xschem/info.json create mode 100755 images/xschem/scripts/dependencies.sh create mode 100755 images/xschem/scripts/install.sh create mode 100755 images/xyce/Dockerfile create mode 100755 images/xyce/info.json create mode 100755 images/xyce/scripts/dependencies.sh create mode 100755 images/xyce/scripts/install.sh create mode 100755 images/xyce/scripts/trilinos.reconfigure.sh create mode 100755 images/xyce/scripts/xyce.reconfigure.sh create mode 100755 paths/__pycache__/paths.cpython-37.pyc create mode 100755 paths/__pycache__/paths.cpython-39.pyc create mode 100755 paths/paths.py create mode 100755 recipe-pdk-only.csv create mode 100755 recipe.csv create mode 100755 recipe.json create mode 100755 recipe/__pycache__/recipe.cpython-37.pyc create mode 100755 recipe/__pycache__/recipe.cpython-39.pyc create mode 100755 recipe/recipe.py create mode 100755 requirements.txt create mode 100755 run.py create mode 100755 setup-venv.sh diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md new file mode 100755 index 00000000..5acd1862 --- /dev/null +++ b/README.md @@ -0,0 +1,58 @@ +# FOSS-TOOLS + +FOSS-Tools Manager + +## Prerequisites + +- [docker](https://docs.docker.com/engine/install/) +- python3 +- python virtualenv + + - `pip3 install virtualenv` + + - Setup the venv: + ``` + virtualenv -p python3 venv + source venv/bin/activate + pip3 install -r requirements.txt + ``` + +## Installation and Running + +- Using a recipe csv file + ``` + python3 run.py recipe --csv recipe.csv + ``` +- Buidling an individual image + ``` + python3 run.py build openlane + ``` +- Updating an individual image + - Run: + ``` + python3 run.py update open_pdks + ``` + - You will be prompted with: + ``` + A new commit for (open_pdks) is available: + 44c13e2256d5907090d6a2a62d9b9f8ddf23758d + Would you like to update? (y/N) + ``` +- Running foss-tools: + ``` + docker run -it -p 80:80 foss-tools:alpha + ``` + +## Notes + +- Images are under images directory +- Versions in recipe file overwrite the image version +- The images are tagged `:` +- The final image is called `foss-tools:`, so if you want to run + multiple recipes modify the tag of `foss-tools` + +## Todo + +- Dependancies handling +- Differentiate between git and non git based packages + diff --git a/build-all.sh b/build-all.sh new file mode 100755 index 00000000..76dccb2d --- /dev/null +++ b/build-all.sh @@ -0,0 +1,5 @@ +virtualenv -p python3 venv +source venv/bin/activate +pip3 install -r requirements.txt +python3 run.py recipe --csv recipe.csv + diff --git a/docker_builder/__pycache__/docker_builder.cpython-37.pyc b/docker_builder/__pycache__/docker_builder.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..84f587901cc431b6d9342520280b1cb4557f5a2c GIT binary patch literal 2033 zcmZuyUvm>T5SMhiKXz;gfgvFx5#DdC>j}C?+WZaZlTHum>0rRzf~mg( zA_>}enV^EbB4FhS4l5VF2w?R^C?Z$`Q4@7oL$L&28@743=p9IP`zXzXR6PowaNvre z-hrt%fe2cXn3QBj=Rjj-ycrj4j=MhW26HeG1YCNZN0UnnPB*e*Fp#PpTBb&}(Ni)p z@=lh@+}NO3ts&~9`M}l&(tPLiZBW^PMUnT@LABeamTQ^yeZ@WD%lx>_6e2_UNHF}0pta&a&coEm5E{|R`eFoU z^Y$(ZtPvWxC~g8%k|D%l*wC9(N(`IvIhmsDBQS*bnoU_rXF&WL6VGupeLhQ~$+!>E9(!SEd29PrXDf z=lSsQKAr}avn8-_d%~aceUk5TVj9Ed@Z3RN{Yl9*q-3)0B0FD(uH4JB3&L^x_@;oy zFX3bI6Uo_QQgVQ0)R`=~R)<#GXz3HW(+x7Hl{WVtwSCLSiFvLNQ`R%dpj&gDlc<3P zEX!UYMDLdherldsX}QRef{HuZ;-XV+p!$cXMLSXIR;2!VQgT)nKa!cA^XWuW@3zY>1_}w z*oHek)+RAW;8eXm(DE$JrKR$H#C!y9uff!x0U>l5FtZGpVGcRCavA}CR@gG^T!JU! z8k<~PY*BY&5A%lu`x5c)K=c9_gwH{sett15si0TLjLZo@;MUYDJ;4qb!cyzQBzSk$j2dz31!` z*u&qF#?s<*wgPjFehhSSbunuTc<8hve3cPXact{xJSxOdhI}KA504V}D#fvCf>-xu zD(rNH#Z!3ZnK)cT?rlZTVoPg;PDG<1;!!PHQx43$y5Ds)#&Wsc|8rxb-71)ySYeI2 I;EP7yKgaIpDF6Tf literal 0 HcmV?d00001 diff --git a/docker_builder/__pycache__/docker_builder.cpython-39.pyc b/docker_builder/__pycache__/docker_builder.cpython-39.pyc new file mode 100755 index 0000000000000000000000000000000000000000..22fdfd4817b70c199adb8c76f79318a7aaeb666c GIT binary patch literal 2076 zcmZuy&2k$>5T4nc{gEssj_txuLV@@Zu>i+8aB@*DLxPE`ut?!RKq=SOMl(`YS?$U* zV^dbGID}mD4$_gA;KWnRl~Z299H4vFE-b@TO;2~LySJzN>rq^PJIuK3^5|M&T=?rM(Xm`rEGefNhT7O0;TnECs?Z@MlxxkGy@Arjl1;&v>Q|n3* zYjHnKM5c}3EzbaLlB{nkeWAax_Qo&$z$4FkNx#&#s9{Q^z2AsjfV9r`H@{axs?FUb z6>9TQ8tYyzhnqUjQ?=R8^L{EehNGW1N(HwUj-Hh_-kcZjj!sP&MM;+ED5~JaLm-6u zv`TAq{MOv1?p_$ql?}Us+m@{cjJ5@v&;ol&+bzfVe}S$llvX>&alCnC+_p=hZ_b3ImFogjY*!cZs`_dyunX!4EbvyJ9y zqxo>FxxdvsfP1^Wp*8`B)&tWDCDzu23c8IUrH>-pYwvz*>IWJiGJF_kJQdPZcA=rM z*1*=l{9maWbAE2ra%~Mw@chCFQDB{}mJ}Pi3|n0TLg+OpDx>Ug->v?)xR-F(#kO87 z%pH4Xi~9#KWpQCf=)jpdP(C=hvkHT}O0cY@1SiTcoD()~gAW^c10S>j@L}NsSHY2e z?M=MGdq57CCO*towLlvi_vnYxYq|i|R>QpsdqT2pMs#gZA6z^AosvmF$@qPn)Ab^- z?OvST;Ffzreu9Qhf?tBHTAugFJyI}$XV@Mu*tY=Yu+da!bgSdTJPDur0>d5KQRK z0vEmbIMos6yKtTa3Z`a1A1NK{V+bnGKWJE*WWrE!6*ccc*tcQZw~)|9z|A7y#wpPQ zC-8syK}Z*!MbIt5gVAut%k#r(zuCnKUM!qYM7{-*1_mK?LgbGH<@6?*k{JOQ>`dIk z<<1LNt`sglz}&sWmwGaArU0x0LFcWK(r%St^N&`tH4YGhxFZdagBhpXzX`v+gntca ze9$(&vNLChq17|`bnG2AwzeAbBS;C}?W!83iN?}EuO*l!Bim&84*YKWBR@p0iRP?) z&OSlKyGTAoa^+$B0Cf1zbv}hqH>lbgZ2%qLp0C;*BHFDG-)KZt6q#xi4Rd~+B43N5 zqvP1VO;IH4_)V;?#Cez4K8fGFl!wj8zOo2g9BGB%32EquEUbiU(!!aQ_q&76*ea|2 Uzc42Jyi8^rJFL(aV$sn32lv+Pxc~qF literal 0 HcmV?d00001 diff --git a/docker_builder/docker_builder.py b/docker_builder/docker_builder.py new file mode 100755 index 00000000..bfa8883d --- /dev/null +++ b/docker_builder/docker_builder.py @@ -0,0 +1,59 @@ +#!/usr/bin/python3 + +import docker +import time +import logging + + +class DockerBuilder(): + def __init__(self): + self.rm = True + self.client = self.createClient() + self.logger = logging.getLogger("DockerBuilder logger") + self.configLogger() + + def createClient(self): + client = docker.from_env() + return client + + def configLogger(self): + self.logger.setLevel(logging.INFO) + handler = logging.StreamHandler() + formatter = logging.Formatter( + fmt='[%(levelname)s %(asctime)s] %(message)s', datefmt='%d-%b-%y %H:%M:%S' + ) + handler.setFormatter(formatter) + self.logger.addHandler(handler) + + def build(self, target): + self.logger.info("Building %s", target.name) + default_tag = target.name + ":" + "latest" + version_tag = target.name + ":" + target.version + build_status = False + try: + response = self.client.api.build( + path=target.path, + rm=self.rm, + tag=version_tag, + buildargs=target.args, + decode=True + ) + for line in response: + self.printResponse(line, target.name) + + self.client.api.tag(version_tag, default_tag) + build_status = True + except docker.errors.APIError as e: + self.logger.error(e) + time.sleep(2) + + return build_status + + def printResponse(self, response, name): + if 'stream' in response: + for line in response['stream'].splitlines(): + if (line != ''): + if (line.rstrip() != '\n' and (line.rstrip() != '')): + self.logger.info("[" + name + "] :: " + line.rstrip()) + elif 'error' in response: + raise docker.errors.APIError(response['error']) diff --git a/image/__pycache__/image.cpython-37.pyc b/image/__pycache__/image.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..1cab183ffdb5e2d5c33ddeb295bacc673ace3e02 GIT binary patch literal 2595 zcmZ`*&vVm86xOaJ|B7SM5Ez(p5bZ!?29i#vmv)#IN)t*4Od2S3bf`x0DnUk;%IJo{=-Htzl_cuMv zE*H){-0CYB;Ru#FVcD{f*=HVd+v545Be-yn9N`}F&=u^N)AruuJ*U$pJG}&q7tqrXOX3r> z3t}1HT`~Tne!Q1-E7Px1%W*%zt?t2$+1QDkF^6Si7ZzR*%ed;mcgG&AH}+w1qo3RU zilE4ZUM%;NafdQ9^`0v7 zXgAFgQ|~7_jzp|uQ+=CAl@_^a?hMmRL`uhcsM;0dsU+K#9#$)TGL(d@k*UM{>BvPi z|J+*drfGLw7e%JlcMGNN#47FHDW6k9Vcpub!GWnoQJSYZim2pj3C3X+`)f|^sAYj$ zn+0|WHM(dSbXx?k!4Yi2wbNtA99Z%bJ^?nz?$|w{!t>6kp60v78fDz}3@?<;!FatQ z%}uK-lUOI4vgrT(>}dx9ZZ|6JGr=WQfRYcQmlh}fzL4-p}gwo(A3`y`~_rzh&7!1DZOuVs2#h>`v>-onOYpY{+ zg5RVvc0iE|$N~xp_nmKPVapVHo%>HV+W!Amk4RDsk{o~lA>(C5ER5gH3YAEzONmxh zq|#EU8t*7#Q@biJ(kQXOuw6@pk{72mIS-gzMkv)wU4e0UjWt*ew#HXDXS3gbaic19 z8NGsw=r=F^Z9HI8I1{E>&!RN}cE>LqzV{! zFV(1eUxe<%REPCUMKb9ZIx)T)WT^&rO~jSKY|qqWq6S5-lCYJ5I!Z^=ZBuf?CT$6_ zw3q0|HsVFOufD`I%4!@q-e67E_8(=6V}l5ZO~ z)F^ma3^NfN6vH4(UnhYsg5d!2kbEDk9;|oTfnf)b7SH$tndaK^%J^wM7;58Z#eO2& zo(0S-;CnM{!o?x@1Yk?(WI%|X=Z9&Q-`T=m9O!QdE5hAj%fP9|D%|6v19y34#AjbT)E4PRpfan(bIf(>w-uylj47XfygkIW%g2YELUYmMz;9;7)$Hp>X*nVaghMyJrP z(tMA)calI9d9nt&5_RNt7_(TGamp+C1r2;ohUhXStZ9@mZD#Rac%eI#GRaT5dXu69 zG9Of-Qogl;A$1vsblGlGQ~?_nylqe=nrAC9F9E?%M}jTECYVnqINX16ww>S5TK<;WLh~E8|K6s_OeM_)l7bdlXz0t5 zbhuO{e_y6Lk(7k-#jrn6ZMWRYHu+B}@O<)e6@4#pE0Q&2&Re|2Mi-}2Znw@9^K&WF zvTVvEZ&TLcFaq1I5c^1_S(ymyw0XH$`qXSawEA$Nz>zzp(Ff}?4VCEWhhxN+=L{8w zjh4#Aod$H;Y_r{@6P5%!icBMl`h^%~bo&|`(# z@~kA*E$XA?N)oU$OPfobq_dgOwfVff?!N{tH%uLI3~& literal 0 HcmV?d00001 diff --git a/image/__pycache__/image.cpython-39.pyc b/image/__pycache__/image.cpython-39.pyc new file mode 100755 index 0000000000000000000000000000000000000000..d51dd97bb17d675b55c11f9cee293122d646245f GIT binary patch literal 2680 zcmZ`*%Wm676y*#bdRSIm+X<4k3#LWVC`jzI=%#JZCP?ixMXVTkqFj`qHMBy7B9$2` zh6QO;dmHo@>}7vxwq4~HTA=8;L;97pBSOz?dxuwzHq!r8a>Sm45Ug=c(E)I=TQHPH}FJnLdfw8Z>A3mT#=&Y`C%7Q{z* z&WS~Qds({=hEYH6d8fWiK1aKUrtZK@+0+WHDTifK8y4OGOSxphx2F!QGj(Cn(9cc3 zCn&NeEK0E()E}>HJ_?^beyHb+ckj{0#)GHpow|0iXc%i}6csPE6Un~P_E@I6F;ICH zZYOE18^gGWLJ<{_uDyw+O7cv%w#G>+LRCb?Sam$@s5sr04pu8&GL(d@lWD;GVaa(s z{`zk9nZg9C>zG!pZl+POoy*~Bk>{ye?dN$vjc*P|J2%UYgrHe9c4f4y>tUE=NfCy` z2eklWG0)ts%1+t_&6T6T9>I8Y(b}jPSU-g$*o+s}fE{oE%n$htfF0OV`;b_{yOTze zZRaZlL&woPS0*v-4Duw??VgOIB3_sI@aHFwx(Kj)X&DhTs3%;1@NlgJfHF7f%Qn2z zuWkbK^XOBi{M=z}K3OhPIGLY<&LmR98`Ml9n{Wy+WRH@eRQMr7BK*KUw3syo#V=Vi zXX+3uW^UmO+yl?p+LRsQo_SLX-0{F7a7);4UBeeszrg9<-B|0m|65jKPdfC7}X zljf1oZZFMIWU5bzSWP6-aI6+>DWX}YCYNZG=%LxRVMs}s6aJh9O)esoYNkGhv3Q*| zSsk{{mpNz0_un6)N44lNda1gIoyRn|fgjj2){GTwU@)5j!2@6+m?4CH;2uIUN(_OF z-3^?d*6#i&Y08c#sSeuiCk5(16oGv|DS}3-LKzS9BG#@NrAYwtVVgJ z;-HNk5UV1rc2&s|le(eGLO(7ZnuzD+w!4LCl#xR)zR6mw#U~d^!n_}PhB9Zk|1~Bl zz{ndg5YEibpl%?PjpV)Vf>m4 zB$KQ#4AX9sjmCv`(|jkE9mjyC=kUEFe1iEgm<4c4_@qy$o@I(|mEYOK&Kwor5MG46 z#TJ28oq62hlf@FT(}C+};3AHY{F@!N1;=m%s(Ziy55So6SGL?FmH?*f=;tIG%zFLn zk%X8%N2AnJjTYF21a;Pi2eBErCG?d>Kb@TK0^5oU6~?i+Jn5DkI378MUF~MQSgbT3 zk262Xpv7rQNFTXLvC{13#mgk?Q})X5 zglavF`oX#0Sjsp%;p|n4_Q||g39o!>4MXZ845_u*w5SBOFZkO;HJpDYt<&{5QwS;o zse~y+0H-<%4R=Y}1iuaD0!m2N9{>GnxqSR{R^5YfY&WGh`y=W&N~AD(_WGZqzlb5pwVe2NwZ7!a(84>#PR~Y^l}dK{(Yh&+e6^jt5El)_($m${J3=rN*hSXk2TI`z?VCCS{Wr5y{Rr1P9A ypy++b{~Tvc4{fR5sJEJn^`?n{bePkJsv-$0)B9f&>iX?+$=?&SrXrY?Zu?)oLrfh2 literal 0 HcmV?d00001 diff --git a/image/image.py b/image/image.py new file mode 100755 index 00000000..a1449972 --- /dev/null +++ b/image/image.py @@ -0,0 +1,101 @@ +#!/usr/bin/python3 + +import os +import json +import git +import json + + +class Image(): + def __init__(self, name, path, args, json_file, meta_data): + self.name = name + self.path = path + self.args = args + self.url = self.args['REPO_URL'] + self.json_file = json_file + self.meta_data = meta_data + self.version = self.args["REPO_COMMIT"] + self.build_status = False + + + @classmethod + def createFromPath(cls, path): + JSON_FILE = "info.json" + json_file = os.path.join(path, JSON_FILE) + + return cls.createFromJSON(json_file) + + @classmethod + def createFromJSON(cls, json_file): + f = open(json_file) + meta_data = json.load(f) + f.close() + + args = meta_data['args'] + name = args['NAME'] + + path = os.path.dirname(os.path.abspath(json_file)) + + return cls( + name=name, + path=path, + args=args, + json_file=json_file, + meta_data=meta_data + ) + + + def getLatestVersion(self): + url = self.url + g = git.cmd.Git() + response = g.ls_remote(url, 'HEAD') + latest_version = response.split()[0] + + return latest_version + + + def updatePrompt(self, new_version): + print("A new commit for (%s) is available:\n%s" % (self.name, new_version)) + user_response = input("Would you like to update? (y/N) ").lower() + + if (user_response == 'y'): + response = True + else: + response = False + + return response + + + def update(self, updateFlag=False): + current_version = self.version + new_version = self.getLatestVersion() + + if (new_version != current_version): + if (updateFlag == True): + self.commitVersion(new_version) + else: + response = self.updatePrompt(new_version) + if (response == True): + self.commitVersion(new_version) + print("New version commited!") + else: + print("Latest version for (%s) synced.\n" + "Run install to install it.\n" + "Nothing to be done." % self.name) + + + def commitVersion(self, new_version): + self.version = new_version + + self.meta_data['args']['REPO_COMMIT'] = new_version + + with open(self.json_file, 'w') as f: + f.write(json.dumps(self.meta_data, indent=4)) + + + + def setVersion(self, version): + old_version = self.version + if (old_version != version): + self.commitVersion(version) + diff --git a/images/base/Dockerfile b/images/base/Dockerfile new file mode 100755 index 00000000..061c49a8 --- /dev/null +++ b/images/base/Dockerfile @@ -0,0 +1,5 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh diff --git a/images/base/info.json b/images/base/info.json new file mode 100755 index 00000000..d49c6f0f --- /dev/null +++ b/images/base/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "centos:centos7", + "NAME": "base", + "REPO_COMMIT": "alpha", + "REPO_URL": "n/a" + } +} diff --git a/images/base/scripts/dependencies.sh b/images/base/scripts/dependencies.sh new file mode 100755 index 00000000..1588c0da --- /dev/null +++ b/images/base/scripts/dependencies.sh @@ -0,0 +1,80 @@ +#!/bin/bash + +yum install -y https://repo.ius.io/ius-release-el7.rpm +yum install centos-release-scl -y +yum install -y \ + autoconf \ + automake \ + bison \ + boost169-devel \ + boost169-static \ + bzip2 \ + cairo \ + cairo-devel \ + clang \ + csh \ + curl \ + devtoolset-8 \ + devtoolset-8-libatomic-devel \ + flex \ + gawk \ + gcc \ + gdb \ + gettext \ + gettext-devel \ + git \ + glibc-static \ + graphviz \ + help2man \ + libSM \ + libX11-devel \ + libXext \ + libXft \ + libffi \ + libffi-devel \ + libgomp \ + libjpeg \ + libstdc++ \ + libxml2-devel \ + libxslt-devel \ + make \ + mesa-libGLU-devel \ + ncurses-devel \ + ninja-build \ + patch \ + pcre-devel \ + python-devel \ + python36u \ + python36u-devel \ + python36u-libs \ + python36u-pip \ + python36u-tkinter \ + readline-devel \ + rh-python35 \ + strace \ + spdlog-devel \ + swig3 \ + tcl \ + tcl-devel \ + tcllib \ + tclx \ + texinfo \ + tk \ + tk-devel \ + vim-common \ + wget \ + which \ + xdot \ + Xvfb \ + zlib-devel \ + zlib-static + +alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 60 + +pip3.6 install --no-cache-dir --upgrade pip +pip install --no-cache-dir \ + matplotlib \ + "jinja2<3.0.0" \ + pandas \ + install \ + XlsxWriter diff --git a/images/covered/Dockerfile b/images/covered/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/covered/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/covered/info.json b/images/covered/info.json new file mode 100755 index 00000000..ded59dbe --- /dev/null +++ b/images/covered/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "covered", + "REPO_URL": "https://github.com/Manarabdelaty/verilog-covered", + "REPO_COMMIT": "93bee2e0d89c1beb5943a329109dcf24d59498e6" + } +} diff --git a/images/covered/scripts/dependencies.sh b/images/covered/scripts/dependencies.sh new file mode 100755 index 00000000..c82189be --- /dev/null +++ b/images/covered/scripts/dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +yum install -y gperf diff --git a/images/covered/scripts/install.sh b/images/covered/scripts/install.sh new file mode 100755 index 00000000..e7f0285d --- /dev/null +++ b/images/covered/scripts/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} + +cd ${NAME} +git checkout ${REPO_COMMIT} + +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install + diff --git a/images/foss-asic-tools/Dockerfile b/images/foss-asic-tools/Dockerfile new file mode 100755 index 00000000..3d4ffc85 --- /dev/null +++ b/images/foss-asic-tools/Dockerfile @@ -0,0 +1,94 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as base + + +## Connection ports for controlling the UI: +# VNC port:5901 +# noVNC webport, connect via http://IP:80/?password=start + +ENV DISPLAY=:1 \ + VNC_PORT=5901 \ + NO_VNC_PORT=80 +EXPOSE $VNC_PORT $NO_VNC_PORT + +### Envrionment config +ENV HOME=/headless \ + TERM=xterm \ + STARTUPDIR=/dockerstartup \ + NO_VNC_HOME=/dockerstartup/noVNC \ + VNC_COL_DEPTH=24 \ + VNC_RESOLUTION=1680x1050 \ + VNC_PW=start \ + VNC_VIEW_ONLY=false \ + DESIGNS=/foss/designs \ + TOOLS=/foss/tools \ + PDK_ROOT=/foss/pdks + +ADD ./scripts/ $STARTUPDIR/scripts +RUN find $STARTUPDIR/scripts -name '*.sh' -exec chmod a+x {} + +RUN $STARTUPDIR/scripts/tools.sh + +### Install xvnc-server & noVNC - HTML5 based VNC viewer +RUN $STARTUPDIR/scripts/tigervnc.sh +RUN $STARTUPDIR/scripts/no_vnc.sh + +### Install firefox +RUN $STARTUPDIR/scripts/firefox.sh + +### Install xfce UI +RUN $STARTUPDIR/scripts/xfce_ui.sh +ADD ./addons/xfce/ $HOME/ + + +FROM openlane:latest as openlane +FROM klayout:latest as klayout +FROM gtkwave:latest as gtkwave +FROM iverilog:latest as iverilog +FROM open_pdks:latest as pdk +FROM magic:latest as magic +FROM netgen:latest as netgen +FROM riscv-gnu-toolchain-rv32i as rv32i +FROM gaw3 as gaw3 +FROM ngscope as ngscope +FROM ngspice as ngspice +FROM xyce as xyce +FROM covered as covered +FROM base + + +COPY --from=pdk /foss/pdks/ /foss/pdks/ +COPY --from=openlane /foss/tools /foss/tools +COPY --from=gtkwave /foss/tools/ /foss/tools/ +COPY --from=iverilog /foss/tools/ /foss/tools/ +COPY --from=magic /foss/tools/ /foss/tools/ +COPY --from=netgen /foss/tools/ /foss/tools/ +COPY --from=klayout /foss/tools/ /foss/tools/ +COPY --from=rv32i /foss/tools/ /foss/tools/ +COPY --from=gaw3 /foss/tools/ /foss/tools/ +COPY --from=ngscope /foss/tools/ /foss/tools/ +COPY --from=ngspice /foss/tools/ /foss/tools/ +COPY --from=xschem /foss/tools/ /foss/tools/ +COPY --from=xyce /foss/tools/ /foss/tools/ +COPY --from=covered /foss/tools/ /foss/tools/ + + +ADD ./addons/sak /foss/tools/sak + +ADD ./scripts/miscellaneous.sh $STARTUPDIR/scripts/miscellaneous.sh +RUN bash $STARTUPDIR/scripts/miscellaneous.sh + +ADD ./scripts/env.sh $HOME/.bashrc +RUN bash $HOME/.bashrc + +### configure startup +RUN $STARTUPDIR/scripts/libnss_wrapper.sh +RUN $STARTUPDIR/scripts/set_user_permission.sh $STARTUPDIR $HOME + +WORKDIR $DESIGNS + +USER 1000 + +ENTRYPOINT ["/dockerstartup/scripts/vnc_startup.sh"] + +CMD ["--wait"] + diff --git a/images/foss-asic-tools/addons/sak/bin/antenna-check-gds.sh b/images/foss-asic-tools/addons/sak/bin/antenna-check-gds.sh new file mode 120000 index 00000000..9eba63d6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/antenna-check-gds.sh @@ -0,0 +1 @@ +../magic/antenna-check-gds.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/caldrc-post b/images/foss-asic-tools/addons/sak/bin/caldrc-post new file mode 100755 index 00000000..0eed93b0 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/caldrc-post @@ -0,0 +1,511 @@ +#!/bin/bash +#@ usage: caldrc-post [-y] [-a] [-l ] [-S ] [-C ] +#@ [-R ] [-b ] [-w ] [[-L] []] [] +#@ caldrc-post -h : show usage only +#@ Run calibreSummary.py on one calibre-output directory. +#@ -w : optional path to a file of waivers to pass to calibreSummary.py. +#@ Set by env-var CDRCWAIVE, if no -w option given. Else no waiver file used. +#@ -b : optional, force processing of this branch (of form output*, not latest-*) +#@ TODO: using -b latest-* form does NOT WORK yet; does not enumerate cells beneath. +#@ If branch (-b) not specified one (or group) are selected of form outputNNN_* using: +#@ : optional, the commitId used to push the source GDS to master branch. +#@ CommitId can be long, or short so long as uniquely identifies one commit. +#@ : optional, the topcell-name latest results to find and post-process. +#@ If only the latest results for that will be used. +#@ Neither: latest is used. See details below on how branch-name is selected. +#@ For a commitId match, IFF no topcell specified: ALL matching branches are processed. +#@ (TODO: -a: process all recent branches (TBD what this means, depending on how/where results stored)). +#@ -S : path to executable calibreSummary.py script. No need if 'calibreSummary.py' is found in $PATH. +#@ Set by env-var CDRCSUMMARY, if no -S option given. Else it must be found in $PATH. +#@ -C : dir of local clone, https://foss-eda-tools.googlesource.com/openflow-drc-tests +#@ Set by env-var CDRCREPO, if no -C option given. +#@ "." default: If neither env-var nor -C option given, "." (CWD) is tested for same. +#@ It is a fatal error if this local repo-dir cannot be found & confirmed. +#@ -R : dir in which to write .csv's from caldrc-put results. +#@ Set by env-var CDRCPOST, if no -R option given. +#@ -l : optional path to a log-file to write one line to on success. +#@ Else set by env-var CDRCLOG, if no -l option given. Else no log is written. +#@ -L : Find & parse the "last" ^caldrc-put: commit-id & topcell from specified log. +#@ Either or both of log's commid-id/topcell will be applied/used in place of missing +#@ cmd-line's commidId or topcell. If cmd-line gave both already -L is ignored. +#@ This is too simple: Best to use -L without explicitly giving any commit or topcell. +#@ TODO: if cmd-line names topcell, get log's last *-put line match of same cell: & use its commit. +#@ -a : also copy (with rsync) the calibre results dirs & contents (drc/*, latchup/*, ...) into +#@ //... +#@ -y : Do not prompt. Default when STDIN is a terminal is to prompt before main git ops. +#@ +#@ TODO: correct below pseudo-code, esp for multi-cell case in same outputNNN_* branch group: +#@ Below the openflow-drc-tests dir the following will happen. Most steps exit on error. +#@ git fetch +#@ determine a to process. +#@ If have -b: use that branch. +#@ If have & find branch matching pattern: +#@ b=output_*drc*-g_ +#@ If have only , extract from branch matching pattern: +#@ b=output_*drc*-g_* +#@ If have only , select branch by highest matching matching pattern: +#@ b= output_*drc*-g*_ +#@ and extract from branch name. +#@ Else (none of above) select highest of output_* and extract putCommitId & topcell. +#@ (TODO: If -A: Process all not-yet-processed branches). +#@ +#@ +#@ git checkout +#@ git pull +#@ determine from +#@ determine of torture_tests//.gds +#@ +#@ post-process torture_tests//*/*.results : +#@ TBD... Run calibreSummary.py on each of torture_tests//*/.drc.results +#@ Writing to dir-structures within +#@ +#@ if env-var exists CALDRCLOG: +#@ append line to the log: "caldrc-post: .gds put= md5= " +#@ +#@ examples: +#@ Process single named output* branch, specify all other parameters via env-vars, use prompts: +#@ export CDRCREPO=~/git/openflow-drc-tests CDRCLOG=~/x.log CDRCWAIVE=~/waivers CDRCPOST=~/calsumout +#@ export CDRCSUMMARY=~/git/sak2/calibreSummary.py +#@ caldrc-post -b output254_pdk78-ge85b3090d_drc176-g5f2d7b3_caravel +#@ ... no prompting: +#@ caldrc-post -y -b output254_pdk78-ge85b3090d_drc176-g5f2d7b3_caravel +#@ Specify all parameters on cmd-line, use prompts, process all topcells of commit +#@ caldrc-post -C ~/git/openflow-drc-tests -l ~/x.log -w ~/waivers -S ~/git/sak2/calibreSummary.py -R ~/calsumout +#@ Use env-vars, process all output* branches (multiple topcells) of given commit: +#@ caldrc-post 5f2d7b3 +#@ -> branches: output254_pdk78-ge85b3090d_drc176-g5f2d7b3_sram_1rw1r_32_256_8_sky130 +#@ output254_pdk78-ge85b3090d_drc176-g5f2d7b3_fpga_core +#@ output254_pdk78-ge85b3090d_drc176-g5f2d7b3_chip_io +#@ output254_pdk78-ge85b3090d_drc176-g5f2d7b3_caravel +#@ ... use full commitid: +#@ caldrc-post 5f2d7b35eb2c5ba4c7eb3486d2f6739ccc590e5e +#@ ... use short commitid, process only one topcell: +#@ caldrc-post 5f2d7b3 chip_io +#@ ... process latest outputNNN_* branch GROUP (branch(es) embedding same commitid, corresponding to one or more topcells): +#@ caldrc-post +#@ + +PROG=caldrc-post +PROGF=$0 +errs=0 +caldrc=$CDRCREPO # opt. env-var, override by -C cmd-line option +outdir=$CDRCPOST # opt. env-var, override by -R cmd-line option +sumbin=$CDRCSUMMARY # opt. env-var, override by -S cmd-line option +waive=$CDRCWAIVE # opt. env-var, override by -w cmd-line option +log=$CDRCLOG # opt. env-var, override by -l cmd-line option +putdir=torture_tests + +# is STDIN a terminal? If not: no prompting for anything +inter="" +[[ -t 0 ]] && inter=1 + +usage() { + sed -n -e '/^#@/s/^#@//p' <$PROGF + exit $errs +} + +err () { + (( errs++ )) + echo "${PROG}: ERROR, $*" >&2 +} +msg () { + echo "${PROG}: $*" +} +vrb () { + [ -n "$verbose" ] && echo "${PROG}: $*" >&2 +} +die0 () { + exit $errs +} +die () { + err "$*" + exit $errs +} +dieu0 () { + usage "${PROG}: ERROR, $*" +} + +# gitcd function: echo and eval a (git) command, DIE if it fails (and write msg to stderr). +# $1 is var to be assigned the STDOUT of the command. +# Use this only when must pass. +gitcd () { + local _val="" _outvar=$1 _stat=0 + shift + echo "$*" + [[ -z "$dryrun" ]] && { + _val=$("$@") || die "failed($?) in: $*" + _stat=$? + } + eval "$_outvar=\${_val}" + return $_stat +} +# gitc function: echo and eval a (git) command. +# $1 is var to be assigned the STDOUT of the command. +# Status of the command is propagated. +gitc () { + local _val="" _outvar=$1 _stat=0 + shift + echo "$*" + [[ -z "$dryrun" ]] && { + _val=$("$@") + _stat=$? + } + eval "$_outvar=\${_val}" + return $_stat +} + +# main start + +branch=() +while getopts "ab:C:FhLl:R:S:w:y" o; do + : echo got "optchar $o, with optarg $OPTARG" + case "$o" in \?) + (( errs++ )) + continue ; esac + case "$o" in y) + inter="" + continue ; esac + case "$o" in a) + allres=1 + continue ; esac + case "$o" in L) + loglast=1 + continue ; esac + case "$o" in F) + force=1 + continue ; esac + case "$o" in h) + usage # does not return + continue ; esac + case "$o" in l) + log=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac + case "$o" in w) + waive=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac + case "$o" in b) + branch=("$OPTARG") + continue ; esac + case "$o" in C) + caldrc=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac + case "$o" in S) + sumbin=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac + case "$o" in R) + outdir=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac +done + +[[ $errs != 0 ]] && { + usage +} + +(( OPTIND-- )) +shift $OPTIND + +arg1= +arg2= +[[ -n "$1" ]] && { + arg1="$1" + shift +} +[[ -n "$1" ]] && { + arg2="$1" + shift +} +[[ -n "$1" ]] && { + die "extra args not supported: $*" +} + +[[ -z "$caldrc" ]] && { + caldrc=$(pwd) +} +caldrc=$(readlink -m "$caldrc") # ensure absolute path + +[[ -n "$log" ]] && { + log=$(readlink -m "$log") + [[ ! -e "$log" ]] && (touch "$log" || die "failed to create log, $log") + [[ ! -w "$log" ]] && die "log not writable, $log" + msg "log: '$log'" +} +[[ -n "$waive" ]] && { + waive=$(readlink -m "$waive") + [[ ! -r "$waive" ]] && die "waiver-file not readable, '$waive'" +} + +[[ ! -s "$log" && -n "$loglast" ]] && die "no data to support -L option, log is empty, $log" + +# if not given by env-var or cmd-line default to calibreSummary.py (i.e. in PATH) +[[ -z "$sumbin" ]] && { + sumbin=calibreSummary.py +} +# verify executable calibreSummary.py (in PATH if necessary); make an absolute path to it. +sumbin=$(which $sumbin 2>/dev/null) || die "can't find executable calibreSummary.py" +sumbin=$(readlink -m $sumbin) # expands tilde +msg "calibreSummary.py: '$sumbin'" + +[[ -z "$outdir" ]] && { + die "no determined" +} +outdir=$(readlink -m $outdir) # make absolute +msg "outputDataDir: '$outdir'" +msg "waiverFile: '$waive'" + +cd "$caldrc" || die "failed: cd $caldrc" + +# get original branch. ALSO doubles as hard-stop if this dir is NOT within a git-repo. +# Although gitcd exits on error (such as not a repo), the detached-HEAD is not an error. +gitcd br git branch --show-current +[[ -z "$br" ]] && die "no current branch (perhaps: detached HEAD)" +msg "original branch '$br'" + +# Path may not be root of the repo, goto it. +gitcd caldrcr git rev-parse --show-toplevel +msg "normalized caldrcrepo: '$caldrcr'" +cd "$caldrcr" || die "failed: cd $caldrcr" + +echo +printf "NEXT: git fetch origin\n" +dofetch= +[[ -n "$inter" ]] && read -p "Enter to CONTINUE, 'n' for NO FETCH (^C to quit)> " dofetch +if [[ "$dofetch" != "" && "$dofetch" != "n" ]]; then + echo "unsupported reply, '$dofetch', aborting..." + exit 1 +fi + +if [[ "$dofetch" != "n" ]]; then + gitcd res git fetch origin + echo "$res" +else + echo "SKIPPED: git fetch origin, WARNING: possibly using non-latest data..." +fi + +[[ -n "$arg2" && -n "$loglast" ]] && { + msg "WARNING, ignoring -L, since cmd-line specifies explicit commitId & topcell" + loglast="" +} +[[ -n "$branch" && -n "$loglast" ]] && { + msg "WARNING, ignoring -L, since cmd-line specified explicit branch to process" + loglast="" +} + +# determine if arg1,2 refer to existing commits and make 7-char short form +# git rev-parse --short=7 -q "5f2d7b35eb2c5ba4c7eb3486d2f6739ccc590e5e^{commit}" -> 5f2d7b3 +sarg1= +sarg2= +[[ -n "$arg1" ]] && { + gitc sarg1 git rev-parse --short=7 -q "${arg1}^{commit}" + [[ $? != 0 ]] && sarg1="" +} +[[ -n "$arg2" ]] && { + gitc sarg2 git rev-parse --short=7 -q "${arg2}^{commit}" + [[ $? != 0 ]] && sarg2="" +} +# error: if have arg2, but neither were a branch. +# error: if have arg2, but both were a branch. +[[ -n "$arg2" && -z "$sarg1" && -z "$sarg2" ]] && die "neither arguments '$arg1' '$arg2' were valid commitIds" +[[ -n "$arg2" && -n "$sarg1" && -n "$sarg2" ]] && die "both arguments '$arg1' '$arg2' are commitIds" + +# use canonical 7-char short form of commits args from here onwards +[[ -n "$sarg1" ]] && { + msg "canonical arg1: '$sarg1'" + arg1=$sarg1 +} +[[ -n "$sarg2" ]] && { + msg "canonical arg2: '$sarg2'" + arg2=$sarg2 +} + +# for -L option, examine existing log's last put entry for a +# example: caldrc-put: the_sram.gds 290a7e324d857a9fef7793ccf07d7f0fafe5419f ... +logline= +[[ -n "$loglast" ]] && { + logline=$(awk '/^caldrc-put:/{ line=$2 " " $3 } END { print line }' $log) + [[ -z "$logline" ]] && die "cannot use -L, didn't find any '^caldrc-put:' line in log, $log" +} +[[ -n "$logline" ]] && { + lgds=${logline%% *} # get first word, blank delimited + lcid=${logline##* } # get 2nd/last word, blank delimited + ltopc=${lgds%.gds} # strip .gds suffix + [[ -z "$lgds" || -z "$lcid" || -z "$ltopc" ]] && die "internal-error, failed to parse log's last '^caldrc-put:' fields, line={$logline}" + # msg "for -L recovered: gds='$lgds', topc=$ltopc, cid='$lcid'" + # get canonical 7-char form of log's commit + gitcd lsid git rev-parse --short=7 -q "${lcid}^{commit}" + + # At present we know we do not have both arg1,arg2 (-L ignored in that case). + # We may or may not have an arg1. If not, apply log-entries to arg1,2. + # If we do have arg1, is it a commitId?: Yes: apply log-topcell to arg2. No: apply log-cid to arg2. + if [[ -z "$arg1" ]]; then + sarg1="$lsid" + arg1="$lsid" + arg2="$ltopc" + elif [[ -n "$sarg1" ]]; then + arg2="$ltopc" + else + sarg2="$lsid" + arg2="$lsid" + fi + msg "due -L, from log's last -put entry reconstructed arg1,2 as: '$arg1' '$arg2'" +} + +# determine branch to use. +[[ -z "$branch" ]] && { + # get all remote branches of pattern: origin/output\*_\*-g\*_drc\*-g\*_\* + brfile=$(mktemp) + set -o pipefail + echo "git branch -r -l 'origin/output*_*-g*_drc*-g*_*' | awk '{\$1=\$1};1' | LC_COLLATE=C sort -nr >$brfile" + git branch -r -l "origin/output*_*-g*_drc*-g*_*" | awk '{$1=$1};1' | LC_COLLATE=C sort -nr >$brfile + stat=$? + set +o pipefail + [[ "$stat" != 0 ]] && die "failed($?) in: git branch -r -l 'origin/output*_*-g*_drc*-g*_*' | awk '{$1=$1};1' | LC_COLLATE=C sort -nr >$brfile" + # mapfile -t brary $brfile + # echo see branches in $brfile ... + [[ ! -s "$brfile" ]] && die "no remote branch pattern matches" + + # read (one) latest output* branch + read brlast <"$brfile" + # get commitId from brlast + topc=${brlast##*-g} # strip prefix to start of (2nd) commitId + commitlast=${topc%%_*} # strip suffix from _ to isolate commitId + topc=${topc#*_} # strip prefix thru (1st) underscore: start of topc + # gitc scommit git rev-parse --short=7 -q "${commitlast}^{commit}" + # [[ $? != 0 ]] && scommit="" + + # apply commitlast (in place of arg1) if had no explicit arg1,2, so we default we process all cells of latest output* branch: + [[ -n "$commitlast" && -z "$arg1" ]] && { + arg1="$commitlast" + msg "by default, inferred commitid: $commitlast, to do all topcells of last branch: $brlast" + } + + # setup zero (neither arg1 nor arg2) or two patterns to look for. + # When only arg1: interpret it as both commitId and topcell. + # When both arg1,arg2: interpret as both commitId,topcell and topcell,commitId. + p1= + p2= + # example: origin/output257_pdk78-ge85b3090d_drc179-g5566566_sram_1rw1r_32_256_8_sky130 + if [[ -n "$arg1" && -n "$arg2" ]]; then + p1="output*_*-g*_drc*-g${arg1}_${arg2}" + p2="output*_*-g*_drc*-g${arg2}_${arg1}" # reversed + elif [[ -n "$arg1" ]]; then + p1="output*_*-g*_drc*-g${arg1}_*" # arg1 as commitId + p2="output*_*-g*_drc*-g*_${arg1}" # arg1 as topcell + fi + last= + match1=() + match2= + while read line; do # input on the done: <"$brfile" + line=${line#origin/} # strip 'origin/' prefix + + [[ -z "$last" ]] && last="$line" + + # no patterns: we're done, last branch is it. + [[ -z "$p1" ]] && { + match1=("$last") + break + } + + # find latest match of p1 or p2; as soon as found both: quit loop. + [[ "$line" == $p1 ]] && { + match1+=("$line") + } + [[ -z "$match2" && "$line" == $p2 ]] && { + match2="$line" + } + [[ -n "$match1" && -n "$match2" ]] && { + break + } + done <"$brfile" + rm -f "$brfile" + + # no last branch: an error + [[ -z "$last" ]] && die "internal-error, no latest branch found" + msg "unconstained latest output branch: $last" + + # ambiguity: if have both match1,2 + if [[ -n "$match1" && -n "$match2" ]]; then + die "internal-error, branch-match is ambiguous between: '$match1' '$match2'" + elif [[ -n "$match1" ]]; then + branch=("${match1[@]}") + elif [[ -n "$match2" ]]; then + branch=("$match2") + elif [[ -n "$arg1" ]]; then + # no matches, though we had at least arg1 (and optionally arg2): ERROR. + die "no branch-match found for given args" + else + # Shouldn't be possible to get here. + die "internal-error, shouldn't get here" + fi + + [[ -z "$branch" ]] && die "internal-error, no branch match(es) found" + + msg "selected output branch(es): ${branch[*]}" +} + +mkdir -p "$outdir" || die "failed: mkdir -p $outdir" + +# loop over the 1 or more branches found +for br in "${branch[@]}"; do + # checkout branch and pull (or just pull if already on that branch) + printf "NEXT: git checkout $br --\n : git pull\n" + [[ -n "$inter" ]] && read -p "Enter to CONTINUE (^C to quit)> " + gitcd res git checkout $br -- + echo "$res" + gitcd res git pull + echo "$res" + + # get topcell from branch + topc=${br##*-g} # strip prefix to start of (2nd) commitId + commit=${topc%%_*} # strip suffix from _ to isolate commitId + topc=${topc#*_} # strip prefix thru (1st) underscore: start of topc + + msg "for branch=$br got commit=$commit, topcell=$topc ..." + trg=$putdir/$topc + + # md5 of gds + gds="$putdir/$topc/$topc.gds" + if [[ -r "$gds" ]]; then + line=($(md5sum "$gds")) || die "failed: md5sum $gds" + md5=${line[0]} + else + md5="(no-gds-file)" + fi + msg "got md5: $md5" + + # info about the drc-results commit + TZ=UTC gitcd stamp git log -n 1 --pretty=format:%cd --date=format-local:%Y-%m-%d.%T.%Z HEAD + echo "timestamp is $stamp" + + # construct calibreSummary cmd-line + # usage: calibreSummary.py [-h] --targetPath TARGETPATH + # [--waivableList WAIVABLELIST] + # [--outputDirectory OUTPUTDIRECTORY] + cmd=($sumbin --outputDirectory "$outdir" --targetPath "$trg") + [[ -n "$waive" ]] && { + cmd+=("--waivableList" $waive) + } + msg "running: ${cmd[*]}" + ${cmd[@]} + stat=$? + [[ $stat != 0 ]] && die "failed($stat) in ${cmd[*]}" + + # -a: copy all result SUBDIRS into/below outdir; but BELOW a / subdir + [[ -n "$allres" ]] && { + msg "running: rsync -a --exclude='*.gds' --exclude='*.gds.gz' $trg/ $outdir/$topc/" + rsync -a --exclude='*.gds' "$trg"/ "$outdir/$topc/" + stat=$? + [[ $stat != 0 ]] && die "failed($stat) in rsync" + } + + message="caldrc-post: $topc.gds put=$commit $stamp md5=$md5 $br" + [[ -n "$log" ]] && { + echo "logging: '$message'" + echo "$message" >> $log || die "failed append to log, $log" + } + + +done + + +echo done +exit $errs diff --git a/images/foss-asic-tools/addons/sak/bin/caldrc-put b/images/foss-asic-tools/addons/sak/bin/caldrc-put new file mode 100755 index 00000000..267c7e81 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/caldrc-put @@ -0,0 +1,296 @@ +#!/bin/bash +#@ usage: caldrc-put [-y] [-N] [-l ] [-C ] [-c ] +#@ : required. The basename, minus one dot-suffix, determines default topcell, +#@ after having stripped a .gz or .xz suffix. +#@ The GDS is NOT tested to verify that same-named topcell exists. Examples: +#@ a/b/joe -> cell=joe -> torture_tests/joe/joe.gds +#@ a/b/joe.xz -> cell=joe -> torture_tests/joe/joe.gds.xz +#@ a/b/joe.123 -> cell=joe -> torture_tests/joe/joe.gds +#@ a/b/joe.123.gz -> cell=joe -> torture_tests/joe/joe.gds.gz +#@ a/b/joe.123.gds -> cell=joe.123 -> torture_tests/joe.123/joe.123.gds +#@ a/b/joe.123.gds.gz -> cell=joe.123 -> torture_tests/joe.123/joe.123.gds.gz +#@ a/b/joe.123.gds.xz -> cell=joe.123 -> torture_tests/joe.123/joe.123.gds.xz +#@ -c : optionally name the topcell. Default is to determine it from the +#@ path only (not its data contents) as above. +#@ a/b/joe.123.gds -> cell=joe.123 -> torture_tests/joe.123/joe.123.gds +#@ -c chip1 a/b/joe.123.gds -> cell=chip1 -> torture_tests/chip1/chip1.gds +#@ -c chip1 a/b/joe.123.gds.xz -> cell=chip1 -> torture_tests/chip1/chip1.gds.xz +#@ -C : dir of local clone br=master, https://foss-eda-tools.googlesource.com/openflow-drc-tests +#@ Else set by env-var CDRCREPO, if no -C option given. +#@ Else "." default: If neither env-var nor -C option given, "." (CWD) is tested for same. +#@ It is a fatal error if this local repo-dir cannot be found & confirmed. +#@ Branch=master will be checked-out, pulled, and have the GDS add/commit/pushed to it. +#@ -l : optional path to a log-file to write one line to on commit success. +#@ Else set by env-var CDRCLOG, if no -l option given. Else no log is written. +#@ -y : Do not prompt. Default when STDIN is a terminal is to prompt before main git ops. +#@ -N : Do NOT push. The commit is done, and commitID still is logged. +#@ +#@ On optional COMPRESSION: A .gz or .xz suffix will be stripped, before stripping one +#@ more suffix to isolate a default topcell name from source file (unless given explicitly by +#@ the -c option). An original .gz or .xz will be reapplied to the filename when git-add-ed to the repo. +#@ In all cases FILE DATA IS COPIED AS-IS, there is NO uncompress nor auto compress in this script. +#@ If there's a mismatch between what the extension indicates (compressed or not, and type: gz/xz), +#@ and actual file data contents there will be failures: run_calibre.sh recognizes when to +#@ uncompress by the extension. +#@ +#@ Below the openflow-drc-tests dir the following will happen. Most steps exit on error. +#@ +#@ git checkout master +#@ git pull +#@ +#@ mkdir -p torture_tests// +#@ cmp torture_tests//.gds (IIF EXISTS & IDENTICAL: exit with error) +#@ cp -f torture_tests//.gds +#@ determine of torture_tests//.gds +#@ +#@ +#@ git add torture_tests//.gds +#@ git commit -m ".gds md5=" +#@ if not no-push: +#@ git push +#@ extract short of commit +#@ extract short of commit +#@ +#@ if env-var exists CDRCLOG: +#@ append line to the log: "caldrc-put: .gds md5= " +#@ +#@ examples: +#@ All on command-line, with log, prompting: +#@ caldrc-put -C ~/git/openflow-drc-tests -l ~/caldrc.log ~/my_sram.gds +#@ ... no log: +#@ caldrc-put -C ~/git/openflow-drc-tests ~/my_sram.gds +#@ ... with log, no prompts: +#@ caldrc-put -y -C ~/git/openflow-drc-tests -l ~/caldrc.log ~/my_sram.gds +#@ Use env-vars, with log, no prompts: +#@ export CDRCREPO=~/git/openflow-drc-tests CDRCLOG=~/caldrc.log +#@ caldrc-put -y ~/my_sram.gds +#@ ... name the topcell explicitly (don't infer from gds filename): +#@ export CDRCREPO=~/git/openflow-drc-tests CDRCLOG=~/caldrc.log +#@ caldrc-put -y -c my_sram ~/data.gds +#@ + +PROG=caldrc-put +PROGF=$0 +errs=0 +caldrc=$CDRCREPO # opt. env-var, override by -C cmd-line option +log=$CDRCLOG # opt. env-var, override by -l cmd-line option +putbr=master +putdir=torture_tests + +# is STDIN a terminal? If not: no prompting for anything +inter="" +[[ -t 0 ]] && inter=1 + +dopush=1 + +usage() { + sed -n -e '/^#@/s/^#@//p' <$PROGF + exit $errs +} + +err () { + (( errs++ )) + echo "${PROG}: ERROR, $*" >&2 +} +msg () { + echo "${PROG}: $*" +} +vrb () { + [ -n "$verbose" ] && echo "${PROG}: $*" >&2 +} +die0 () { + exit $errs +} +die () { + err "$*" + exit $errs +} +dieu0 () { + usage "${PROG}: ERROR, $*" +} + +# gitcd function: echo and eval a (git) command, DIE if it fails (and write msg to stderr). +# $1 is var to be assigned the STDOUT of the command. +# Use this only when must pass. +gitcd () { + local _val="" _outvar=$1 _stat=0 + shift + echo "$*" + [[ -z "$dryrun" ]] && { + _val=$("$@") || die "failed($?) in: $*" + _stat=$? + } + eval "$_outvar=\${_val}" + return $_stat +} +# gitc function: echo and eval a (git) command. +# $1 is var to be assigned the STDOUT of the command. +# Status of the command is propagated. +gitc () { + local _val="" _outvar=$1 _stat=0 + shift + echo "$*" + [[ -z "$dryrun" ]] && { + _val=$("$@") + _stat=$? + } + eval "$_outvar=\${_val}" + return $_stat +} + +# main start + +while getopts "c:C:l:Ny" o; do + : echo got "optchar $o, with optarg $OPTARG" + case "$o" in \?) + (( errs++ )) + continue ; esac + case "$o" in y) + inter="" + continue ; esac + case "$o" in N) + dopush="" + continue ; esac + case "$o" in l) + log=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac + case "$o" in c) + topc="$OPTARG" + continue ; esac + case "$o" in C) + caldrc=$(readlink -m "$OPTARG") # we chdir below; ensure absolute path + continue ; esac +done + +[[ $errs != 0 ]] && { + usage +} + +(( OPTIND-- )) +shift $OPTIND + +[[ -z "$1" ]] && { + die "missing required gdsFilePath argument" +} +gds="$1" +shift +[[ ! -r "$gds" ]] && { + die "gdsFile not readable, $gds" +} +gds=$(readlink -m "$gds") # we chdir below; ensure absolute path + +# if no topcell option, determine from $gds file. +# But regardless if explicit topcell specified, capture optional compress-suffix from gds file. +compsuf="" +topc1=$(basename "$gds") # strip dirs +topc2=${topc1%.xz} # strip compression extensions +topc3=${topc2%.gz} +[[ -z "$topc" ]] && { + topc=${topc3%.*} # strip just one(last) dot-extension (i.e. normally .gds) +} +if [[ "$topc2" != "$topc1" ]]; then + compsuf=.xz +elif [[ "$topc3" != "$topc2" ]]; then + compsuf=.gz +fi + +[[ -z "$caldrc" ]] && { + caldrc=$(pwd) +} +caldrc=$(readlink -m "$caldrc") # ensure absolute path +msg "topcell: '$topc'" + +[[ -n "$log" ]] && { + log=$(readlink -m "$log") + [[ ! -e "$log" ]] && (touch "$log" || die "failed to create log, $log") + [[ ! -w "$log" ]] && die "log not writable, $log" + msg "log: '$log'" +} + +cd "$caldrc" || die "failed: cd $caldrc" + +# get original branch. ALSO doubles as hard-stop if this dir is NOT within a git-repo. +# Although gitcd exits on error (such as not a repo), the detached-HEAD is not an error. +gitcd br git branch --show-current +[[ -z "$br" ]] && die "no current branch (perhaps: detached HEAD)" +msg "original branch '$br'" + +# Path may not be root of the repo, goto it. +gitcd caldrcr git rev-parse --show-toplevel +msg "normalized caldrcrepo: '$caldrcr'" +cd "$caldrcr" || die "failed: cd $caldrcr" + +# checkout put-branch and pull (or just pull if already on that branch) +if [[ "$br" != "$putbr" ]]; then + echo + printf "NEXT: git checkout $putbr --\n : git pull\n" + [[ -n "$inter" ]] && read -p "Enter to CONTINUE (^C to quit)> " + gitcd res git checkout $putbr -- + echo "$res" + gitcd res git pull + echo "$res" +else + echo + printf "NEXT: git pull\n" + [[ -n "$inter" ]] && read -p "Enter to CONTINUE (^C to quit)> " + gitcd res git pull + echo "$res" +fi + +mkdir -p "$putdir/$topc" || die "failed: mkdir -p $putdir/$topc" +trg="$putdir/$topc/$topc.gds${compsuf}" +[[ -e $trg ]] && { + cmp -s "$gds" "$trg" && die "file is unchanged: $gds, $trg" +} + +# copy +echo "cp -f $gds $trg" +cp -f "$gds" "$trg" || die "failed: cp -f $gds $trg" + +# md5 of gds +line=($(md5sum "$gds")) || die "failed: md5sum $gds" +md5=${line[0]} +msg "got md5: $md5" +message="$topc.gds md5=$md5" + +if [[ -n "$dopush" ]]; then + logpush="git push" +else + logpush="[no-git-push]" +fi + +echo +printf "NEXT: git add $trg\n : git commit -m '$message'\n : $logpush\n" +[[ -n "$inter" ]] && read -p "Enter to CONTINUE (^C to quit)> " + +# git add +gitcd res git add $trg + echo "$res" + +# git commit +gitcd res git commit -m "$message" + echo "$res" + +if [[ -n "$dopush" ]]; then + gitcd res git push + echo "$res" + logpush="" +else + msg "SKIPPED 'git push' (still logging commit). Remember: 'git push' manually." + logpush=" [no-git-push]" +fi + +# info about the commit +gitcd commit git rev-parse HEAD + echo "commitId is $commit" +TZ=UTC gitcd stamp git log -n 1 --pretty=format:%cd --date=format-local:%Y-%m-%d.%T.%Z HEAD + echo "timestamp is $stamp" + +message="caldrc-put: $topc.gds $commit $stamp md5=$md5 ${gds}${logpush}" +[[ -n "$log" ]] && { + echo "logging: '$message'" + echo "$message" >> $log || die "failed append to log, $log" +} + +echo done +exit $errs diff --git a/images/foss-asic-tools/addons/sak/bin/cp_shapes.py b/images/foss-asic-tools/addons/sak/bin/cp_shapes.py new file mode 120000 index 00000000..d68390dd --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/cp_shapes.py @@ -0,0 +1 @@ +../klayout/cp_shapes.py \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/cp_shapes.sh b/images/foss-asic-tools/addons/sak/bin/cp_shapes.sh new file mode 120000 index 00000000..16f523a9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/cp_shapes.sh @@ -0,0 +1 @@ +../klayout/cp_shapes.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/def2gds.py b/images/foss-asic-tools/addons/sak/bin/def2gds.py new file mode 120000 index 00000000..a55abae5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/def2gds.py @@ -0,0 +1 @@ +../klayout/def2gds.py \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/def2gds.sh b/images/foss-asic-tools/addons/sak/bin/def2gds.sh new file mode 120000 index 00000000..09fd9a5d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/def2gds.sh @@ -0,0 +1 @@ +../klayout/def2gds.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/delete_areaid.py b/images/foss-asic-tools/addons/sak/bin/delete_areaid.py new file mode 120000 index 00000000..e5dd27e3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/delete_areaid.py @@ -0,0 +1 @@ +../klayout/delete_areaid.py \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/dot.magicrc b/images/foss-asic-tools/addons/sak/bin/dot.magicrc new file mode 120000 index 00000000..719c9ce9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/dot.magicrc @@ -0,0 +1 @@ +../magic/dot.magicrc \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/drc-def-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/drc-def-sky130A.sh new file mode 120000 index 00000000..066c4132 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/drc-def-sky130A.sh @@ -0,0 +1 @@ +../magic/drc-def-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/drc-gds-full-EFS8A.sh b/images/foss-asic-tools/addons/sak/bin/drc-gds-full-EFS8A.sh new file mode 120000 index 00000000..8a934f01 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/drc-gds-full-EFS8A.sh @@ -0,0 +1 @@ +../magic/drc-gds-full-EFS8A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/drc-gds-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/drc-gds-sky130A.sh new file mode 120000 index 00000000..2d39c15e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/drc-gds-sky130A.sh @@ -0,0 +1 @@ +../magic/drc-gds-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/drc-mag-full-EFS8A.sh b/images/foss-asic-tools/addons/sak/bin/drc-mag-full-EFS8A.sh new file mode 120000 index 00000000..ea654e30 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/drc-mag-full-EFS8A.sh @@ -0,0 +1 @@ +../magic/drc-mag-full-EFS8A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/drc-mag-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/drc-mag-sky130A.sh new file mode 120000 index 00000000..eaaaf718 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/drc-mag-sky130A.sh @@ -0,0 +1 @@ +../magic/drc-mag-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/erase_box.sh b/images/foss-asic-tools/addons/sak/bin/erase_box.sh new file mode 120000 index 00000000..859c1546 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/erase_box.sh @@ -0,0 +1 @@ +../magic/erase_box.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/ext-def-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/ext-def-sky130A.sh new file mode 120000 index 00000000..8815f830 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/ext-def-sky130A.sh @@ -0,0 +1 @@ +../magic/ext-def-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/ext-gds-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/ext-gds-sky130A.sh new file mode 120000 index 00000000..a14bb11d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/ext-gds-sky130A.sh @@ -0,0 +1 @@ +../magic/ext-gds-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/ext-mag-sky130A.sh b/images/foss-asic-tools/addons/sak/bin/ext-mag-sky130A.sh new file mode 120000 index 00000000..25d681c0 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/ext-mag-sky130A.sh @@ -0,0 +1 @@ +../magic/ext-mag-sky130A.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gds2mag.sh b/images/foss-asic-tools/addons/sak/bin/gds2mag.sh new file mode 120000 index 00000000..8742f503 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gds2mag.sh @@ -0,0 +1 @@ +../magic/gds2mag.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gds2oas-batch.sh b/images/foss-asic-tools/addons/sak/bin/gds2oas-batch.sh new file mode 120000 index 00000000..2b941ce8 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gds2oas-batch.sh @@ -0,0 +1 @@ +../klayout/gds2oas-all.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gds2oas.sh b/images/foss-asic-tools/addons/sak/bin/gds2oas.sh new file mode 120000 index 00000000..8d1fcfad --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gds2oas.sh @@ -0,0 +1 @@ +../klayout/gds2oas.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsAllcells.rb b/images/foss-asic-tools/addons/sak/bin/gdsAllcells.rb new file mode 120000 index 00000000..8e7066b0 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsAllcells.rb @@ -0,0 +1 @@ +../klayout/gdsAllcells.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsFlat.rb b/images/foss-asic-tools/addons/sak/bin/gdsFlat.rb new file mode 120000 index 00000000..30240ebd --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsFlat.rb @@ -0,0 +1 @@ +../klayout/gdsFlat.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsLayers.rb b/images/foss-asic-tools/addons/sak/bin/gdsLayers.rb new file mode 120000 index 00000000..03a059c3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsLayers.rb @@ -0,0 +1 @@ +../klayout/gdsLayers.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsLyrdel.rb b/images/foss-asic-tools/addons/sak/bin/gdsLyrdel.rb new file mode 120000 index 00000000..26dfa65e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsLyrdel.rb @@ -0,0 +1 @@ +../klayout/gdsLyrdel.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsRename.rb b/images/foss-asic-tools/addons/sak/bin/gdsRename.rb new file mode 120000 index 00000000..74b3c098 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsRename.rb @@ -0,0 +1 @@ +../klayout/gdsRename.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsSize.rb b/images/foss-asic-tools/addons/sak/bin/gdsSize.rb new file mode 120000 index 00000000..68a85d51 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsSize.rb @@ -0,0 +1 @@ +../klayout/gdsSize.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gdsTopcells.rb b/images/foss-asic-tools/addons/sak/bin/gdsTopcells.rb new file mode 120000 index 00000000..d91a4471 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gdsTopcells.rb @@ -0,0 +1 @@ +../klayout/gdsTopcells.rb \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/git-sizer b/images/foss-asic-tools/addons/sak/bin/git-sizer new file mode 120000 index 00000000..da7ac0f1 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/git-sizer @@ -0,0 +1 @@ +../common/git-sizer \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/gm.py b/images/foss-asic-tools/addons/sak/bin/gm.py new file mode 100755 index 00000000..3dc7999a --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/gm.py @@ -0,0 +1,23 @@ +#!/bin/python3 + +# gather all dbs and rdbs in the current directory into +# a ./dbs directory to be easily navigatable by klayout +# so that you can switch easily between markers + +import os +from shutil import copyfile +from pathlib import Path +from glob import glob + + +def copy_all_dbs(ext): + db_files = glob('./*/*.{ext}'.format(ext=ext)) + relative_path_db_files = [Path(filename) for filename in db_files] + for afile in relative_path_db_files: + os.makedirs('dbs', exist_ok=True) + copyfile(str(afile), 'dbs/'+str(afile.parent)+'_'+afile.name) + +if __name__ == "__main__": + copy_all_dbs('db') + copy_all_dbs('rdb') + diff --git a/images/foss-asic-tools/addons/sak/bin/hspice2ngspice.sh b/images/foss-asic-tools/addons/sak/bin/hspice2ngspice.sh new file mode 120000 index 00000000..23522fa1 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/hspice2ngspice.sh @@ -0,0 +1 @@ +../common/hspice2ngspice.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/klayoutDrc.sh b/images/foss-asic-tools/addons/sak/bin/klayoutDrc.sh new file mode 120000 index 00000000..defebec3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/klayoutDrc.sh @@ -0,0 +1 @@ +../klayout/klayoutDrc.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/label2pin_inplace.sh b/images/foss-asic-tools/addons/sak/bin/label2pin_inplace.sh new file mode 120000 index 00000000..5819822c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/label2pin_inplace.sh @@ -0,0 +1 @@ +../klayout/label2pin_inplace.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/lef2maglef.sh b/images/foss-asic-tools/addons/sak/bin/lef2maglef.sh new file mode 120000 index 00000000..c399b6b9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/lef2maglef.sh @@ -0,0 +1 @@ +../magic/lef2maglef.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/mag2gds.sh b/images/foss-asic-tools/addons/sak/bin/mag2gds.sh new file mode 120000 index 00000000..b1a47252 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/mag2gds.sh @@ -0,0 +1 @@ +../magic/mag2gds.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/mag2lvs.sh b/images/foss-asic-tools/addons/sak/bin/mag2lvs.sh new file mode 120000 index 00000000..0c0d1fd5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/mag2lvs.sh @@ -0,0 +1 @@ +../magic/mag2lvs.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/mag2maglef.sh b/images/foss-asic-tools/addons/sak/bin/mag2maglef.sh new file mode 120000 index 00000000..1c7bcce7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/mag2maglef.sh @@ -0,0 +1 @@ +../magic/mag2maglef.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/magic-drc.sh b/images/foss-asic-tools/addons/sak/bin/magic-drc.sh new file mode 120000 index 00000000..13518b3e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/magic-drc.sh @@ -0,0 +1 @@ +../magic/magic-drc.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/magic-ext.sh b/images/foss-asic-tools/addons/sak/bin/magic-ext.sh new file mode 120000 index 00000000..8a191c03 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/magic-ext.sh @@ -0,0 +1 @@ +../magic/magic-ext.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/magicDrc b/images/foss-asic-tools/addons/sak/bin/magicDrc new file mode 120000 index 00000000..3abf4b21 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/magicDrc @@ -0,0 +1 @@ +../magic/magicDrc \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/magicGdrc b/images/foss-asic-tools/addons/sak/bin/magicGdrc new file mode 120000 index 00000000..3d9b379b --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/magicGdrc @@ -0,0 +1 @@ +../magic/magicGdrc \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/maglef2gds.sh b/images/foss-asic-tools/addons/sak/bin/maglef2gds.sh new file mode 120000 index 00000000..3da5f27f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/maglef2gds.sh @@ -0,0 +1 @@ +../magic/maglef2gds.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/maglef2lvs.sh b/images/foss-asic-tools/addons/sak/bin/maglef2lvs.sh new file mode 120000 index 00000000..7d600853 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/maglef2lvs.sh @@ -0,0 +1 @@ +../magic/maglef2lvs.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/mv_shapes.py b/images/foss-asic-tools/addons/sak/bin/mv_shapes.py new file mode 120000 index 00000000..51122439 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/mv_shapes.py @@ -0,0 +1 @@ +../klayout/mv_shapes.py \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/mv_shapes.sh b/images/foss-asic-tools/addons/sak/bin/mv_shapes.sh new file mode 120000 index 00000000..8c972a11 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/mv_shapes.sh @@ -0,0 +1 @@ +../klayout/mv_shapes.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/pin2drawing_inplace.sh b/images/foss-asic-tools/addons/sak/bin/pin2drawing_inplace.sh new file mode 100755 index 00000000..f76d5efc --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/pin2drawing_inplace.sh @@ -0,0 +1,9 @@ +layers=(67 68 69 70 71 72) +files=( "$@" ) + +for f in "${files[@]}"; do + echo "Working on $f" + for l in "${layers[@]}"; do + sh $(dirname $0)/cp_shapes.sh $f $l/16 $l/20 + done +done diff --git a/images/foss-asic-tools/addons/sak/bin/run_gds2oas.sh b/images/foss-asic-tools/addons/sak/bin/run_gds2oas.sh new file mode 120000 index 00000000..81ad03aa --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/run_gds2oas.sh @@ -0,0 +1 @@ +../klayout/run_gds2oas.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/verilog2spice.py b/images/foss-asic-tools/addons/sak/bin/verilog2spice.py new file mode 120000 index 00000000..7b92d075 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/verilog2spice.py @@ -0,0 +1 @@ +../common/verilog2spice.py \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/bin/vlog2Spice b/images/foss-asic-tools/addons/sak/bin/vlog2Spice new file mode 120000 index 00000000..93844407 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/bin/vlog2Spice @@ -0,0 +1 @@ +../qflow/vlog2Spice \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/common/LICENSE b/images/foss-asic-tools/addons/sak/common/LICENSE new file mode 100755 index 00000000..261eeb9e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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 + + http://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. diff --git a/images/foss-asic-tools/addons/sak/common/get_description.py b/images/foss-asic-tools/addons/sak/common/get_description.py new file mode 100755 index 00000000..ee51ec01 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/get_description.py @@ -0,0 +1,16 @@ +#! /usr/bin/python3 + +import yaml +import io +#import sys +#reload(sys) +#sys.setdefaultencoding('utf8') + +#with open('info.yaml','r') as file: +with open('info.yaml','r',encoding='utf-8') as file: + info = yaml.load(file, Loader=yaml.SafeLoader) + if 'project' in info and 'project_id' in info['project'].keys(): + print(info['project']['description']) + else: + print("--none--") + diff --git a/images/foss-asic-tools/addons/sak/common/git-sizer b/images/foss-asic-tools/addons/sak/common/git-sizer new file mode 100755 index 0000000000000000000000000000000000000000..d6382bfca3a83a670710b4c4eaed5253e00c8851 GIT binary patch literal 3650104 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

*pZv1J!y?8ei_;?Tll*beE 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�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 #LwM^u!{9L=yA~mW%Cy%NPe5M?#n(*U3t zm%$n+d5b@>l`W5C_XMfou`Vd11;ij%giSJKxo`xd4$C8jIMW?Txvlpz6Xs%W0qSpD9YS0?Cv+UhZ5^ zqS@R+S{c&p(s@FWfrC+B3dxFuWaXOSIgpzf2sMtU5t0eShGc}+k__cQvfZ@cBo=i0 zpWBmgRaTQ;t2PDbh4q&^Q87WTyFRiQx}onStUw3p-}ecCeWd-FW;`F0JK(7rStlo2 zdY@)`=MVykgRB7o(8F|D)+;^C+P7o<%287E5uzss(+&MuoUe!;&>(N~`HTLa)_a+$ zR~xLzfm%4=G0d6w%3~I0R2yNt5CCc+SzJY;fTdO~#+rAl7Ik&V-4ZO;;nv($bD5OH;=k-~S$zH9gn})D2wXa?xL7j`G8qW9WwAhP zSWIXwivb(RQ=|nyIT!^3`tbJm0sev<6;>biPDd=O4;98{SbeB8?^Yki;vK~L=RiZO z8nc8~h^6xZp<*+F2^(Vc;pBZ2#4uhBSv-_Wf3E5R8Zl}@&$%-{8Tdsh?!Uf;#hJMcrpm1erwDiDxgk-0J zyi`6>f*59|p%C=K(bAnY!=?i@1EGeniU|>j4ao?tC7H_Cio2!ehgdKmU)O&dAeI~2 zCEM7K^WV4VxuHd3;b1>zXdM-%aryx?4*Nm7ak+ln!+a!%#clxf9C>!~qov1druU(1 ziO2%Wf84C`-HdVZ-m@*EWHw8Jz(!rqfXg<14Kl$mJWU8>`Q|RcZoH{i8x-SGjiNLz z;~x%Gn`&G#2pP|OZ9blM0+=nq?TviSCVKdO48cs0Z7?<)nOiD5?k$tSb z9IQzExsb$3XI#2#hQTHSp|<)W5F6$b+GOUxcBhcXJ3wewO^KlMxayk#^I=@-tfnkm zkcL>+xD>PcfU}L5cWYcKlvq_*IVP^C&%3rV5X%^se;w=-s~Z{VhQ8f1K`b>cq2uLT z#w1NSY;UV68H&=@{Yk83O(_ChqNVT86`b!j83?u26oJ?fi_ltPp&SbSjRkFd@;erH zbK7?ozKP47^mTx0ZfFxmGzHH?-m!SPp{N)^sLWXk#h3djmA;Bv?)-oE+f;|7!f=}%$H1oA$#8*lDE&kr{ z_auLLF<7ucAP>#nmtca=I&9LUYO1!Q&(;z{1c){jIK^_7~yMPJ%?Tu98sE(!(^veR~s2bT|o>@oECGVIiSS zX5r>JQuDbi81QP1UnH@x_FKck8UFfVuyCCsvsz3FSojaE>&JWrBEZ5ox*8Ui2g|Q! zd63B%u)X&1$wbyASa^ok+bs3kLq0$}H|r|#wot=w11pfLEj)W_xl#iU1p-7d-nI)r zqJNfYzKWw{n2sCKqop6sCRrFCy(HJ;%{0S4@U$@pXR|Ezzu#=Wi#(zi!$@NV!H+qS zXz6Up*L1eYBp8D)0R7n=3`t6S&{0xg1WEd^1~>HT@jgjJav;_Gjg}tcx9>rIDA=Y= z3N}=Mf-UohOYWy|V-*k5ICO&r9T*5_e;`6~KvvW%;lLcc2fb38dAD9^HS@ce$~_)Iz#Ui+>r?1c;5~vyW1V@g5-?!<@D4n$focjVk9Z?MO03N$ z>sLtNE2K1?ucd+Bw30Hk`*nnx0(2?8VYj3Nq#)(vTJU@p449Ce;|VGPl3h0$6EgC3i>w>^i&!|A zjw`ed?%7YW{!ocF(nA8|6E)MznCWJwfS0e`s>5mC`qymbC@Crp;WQoVqa*|oiUJ3* zFZ_*`et)ZAezw$$yJt*;(3&c;9_FR?Z_4_yhV_w7Szid}8DxEtdAF>O;2o@Q+|#gr zs1GmzHL=}iGS?nt{S&ebLjA?Q1kVlae6?l$kqZ7aoTo^zBD7G*Frbh19=$cgNs=L% z^|aB^((i5&0(_gt8gS<^VKm-D;5V!%?8&TuN(uf9t2*#rW~4l@?`y zx(nNOLrs0iIsw&K$+^1=Gi7km@V9)b-8(a->3kM+a}W5LXjMoI-~34ui%(l`SbWI} zi!T&#vEuu<7$Io6tJN)*mHtUF-oh=0#Rmn;+ZfNV_^2*E-I7^+xYm2T)N2j{VRYqY zO%(g_yNK?{kY706mgUIKsUI73;EH~C7Nlv z$z*~6cE>-&aX*~0@y_yF4wxis(&5h2cE>M}dKrK8k*dw{Q7X5^D!1a_*WMYRw{RXZ zu6_uFAVUMeYpZ#;#%KlJL60AHCtu;={_%>f48m$a+-q+iM39%+uPqVD6k$bwm`OFp z4?!P`kiw(~u$CV*g6FyQPeSG5-H@JEJSS>~cQNF{420T>r$B7X523Z<$ws23rCM+% z3kJ;3`yVD`6V#YVasj&qbBP_MmH~`z7c$REhMF%pg#ZCfp=MT7~I0nUhS#y+24$5&S%5gVFGqS({5udRJ@^H2YDlV-o8C z3w`4ak)KCY#ed(RnTDE70ssBj4@OxA`jw-kweW_1x)x9cOKUvQn2>tiPVaxh6G{e6nLo(~te;=+HMw<-8!LnZ9 zH>@Y@$*lkB25Gu43kDQu;`<5KgP`{q1-kq%O2v7GikO5<=}TBD&VqdoQgN<%w^Uq! zcTn-_T%$mTzu1wA_a%nU%~2vQ%@=q2TMhP-%ydT zTPmU)3RY{u+gZ@fUGg1~(pclIcajLXLJ1j`^E=kwuGCy@s9Dj0npP%T=sp5QeU^E* zGC7Y_$N96n8fxCTJU~sO+3kn;)HLp~G!VI&QP-=REj9nrEYw`MGig!Iokv2=8+WnP zoT?eFk_^ezoGU~br5W}y8Hj_WroeBgN!TqlQ4ZAHhXvWceJdM90#fbj-Vz%SuA&=FaVDD0!w?!%Qj6Hd44tVoc1Wd=k)Z z%;8Z~=gOu&YWJzv3nhO*SB{i)3?(nbo&!8WyARb2PfG?fxPcKE#=x_LAU!q1A8iK0 z7;|LaN8mSc+PN|q-%%Y`Ywt2Ty%%cf%b9;sj72B2usHm3^gbpq972Bx# z@PL^tQYyamCria;*O5qjMG&9YQIH^#82A(Aeni$cQY7z?Oig8yAz37+3qh{d3||mF z$Pe+bA}Kf+N)rBLN*=4t4@Y{_9V`_f=L2sg$O(BJWe49^J!`RcL;H(4N7(k$G+}l` zAP9zSoR558KVn)@7)>V$Ml(EtLO#onv@dUv|BwS(e|(mKr)cTjQkMOfJIwdFq@j$D za$Gd(e;;kWQ%fmFsJ4y;@rMQy}GM>d3C&xs3Ytf5Cb|zig$SA@2qL_s7k5)Bgm0WlKE= zp?@QpnyxW9Jb@4+&{)8^UXjQCgjUOTEJJ`K3Xc4ZmTqkXj_2Rawzb6{?Vu?_D?;BH0b9{A+I+UN%2Wsi-!$YOeN^vDNOyX zrXu`SgmL~RlVxLuIea@Gbnx~=s`&T#%UGGFEzT&YXFZ=^%i1*+gW1Y+?{%i`sHv5# zo#I0NtmTI`E-iHH;L-GKJMTH9YW=Q$66oi${s&m#OidN&DcIgjrtYn&0zI`s_|Fe< zEKEfG*{r{q*)R0#e^@_N4}QTbV%D?dJ=FLy8Ppvs5V2J0@XMLs391i$mAR5shfTO4XWDj zB&yHtsi;yJKnFm$f?4;G_fTd!_}l2|xCGwIGVmL!y|;CzjQC49Svx2v zhX1T|l715S^F4=2xOB&|tCH`dzu1|}8(g_&LKlc4_ZYStl9CC!dD*P* z>Ge{-&}RYZv+63OzTYmXVz=lHVE>tXsU{2A#27z^RHe_s`bkJf7vw#_0-HZi)V`Rt z*D!Uyrut+S`^OJM^#e7dD>?<<7$&|M7mROzKMlrXeT--KOOlkDpMmjIDH*`HH|slC zQ-#Qt-bYhaJ~w&^NLvZ%i}(=VOH+MFz1Nxg@Mn^jvan2wWB=0$k{0^*y);l3`ttBy z-y|qs`46D{{!^(fVIQm6#(kP9P)1Uo-4 z$h=eo%I^|>DAW(a1W|%}k*fOf#rx8%a6&?p>sjClO%-6)vDMR%%8`Nl-ob8M;<(?&F&Q+C4Za4)82YbwpmoR8>$BRszqAMRVjN~2QlhJ256%M0|0GH{5UBZur&{`!XH-qRC$u`Ir1KQoH9=z7ugYUb^ zduUL)wyJyqIK;GNqLS}EmbSVOxyM#oEw+_lvLi^x0gC_m5uYd#Fdcw(5LdgiTw9K5szB(AEc7Kp($GDhROQZd6P8Js2On ziD#mXl`o~)LzLJ*B>RV5*rnw2Bf^V@2(V!Iz{jY$_BZsq#2xl*Npt6>?z#VI;c7Y<<8 zv+gQb6eq3gS$DW+muKD0dnD;dD!We=?fQV+_HGA2PWkTuiQyD1`j06xjLE72zumW8 zML;n3!5w|*n|l+ZDvzK+=*53=@CWB)kPu@zpR5GOz*uu6pUb)UA=?`kD07P`gDN?A zgH_2iJ**x=X_hCMy_3348T`UP4K#xf-mR085AN6wjoqxVLLQS1rwYtPEf5-TIGG*T z-;7hM!%e(VqoL&dahIPTZu(5}IXIP%{aXr0%pDp(9Q`+^8 z=Wj#vAU)XBASbO40@kXn96#-WH&s~w-V>Z;d6+6|M3l7`#R{^OwAtKjCatEq)9vTN zyJkY*^Uh?_(+LvtKCM0>?{7b)@?OkFU>`*2Q-%HXK!N*B0gP)6=Pv)O%RWdW>{4Ai zVSk_|S=fIOW+KJs2c-B|JcC4H+#2`e3*|T5^eRP}0vVMIR)*8lf&O92H3?F@y5tv- z;`l&;znTI*DK3Eb7cvL+zB5vYeVTp6_Q)aVyv`9gwvlAJHP1uBzpmmQuG{!R2lOlfpI=rspMj9Jzm{XR02u)$M}cwt+Ngw25hR9NXX!BCaMFU|kQ||x=}mbs z8UF1UN8kr>!y-Z>@y62`FV=`aA{0B4Q5c4%kr(%$TxI1S@Z~YBisj+>gi>%}ctDlR zd(u>!*A3mhSarpBdFP2w`lT-Kp6X<=-!@v_cjaJFHN-Aez!Lls`MN0O3-cuW z1MnekkT2f9!8hyG04fm8_O6_g!0P44iIt&^=;x@j(x3UsW5bKo0?I*nIM>7w4#&2L zQ7(qKMwWU<5%km3OIL^c8$J?C7Ce8)@)5_{9)gfT*CqnXjKQrOI<3c(y$+-&ZW7}K zNLR8FH|v8tIGagx4m7J+UTy->uoAwPYb9o&IAft9lu7#q0-5*%p)AAXMec3|?8f*< zxrm@bs=XyoDD~jq%ynaf!i${3tKZkzUL6zr1Kw*eB^<~ zeMBbEBT5zsoY?1Pz5W*!hJ0cwnY)Ob1G$JQ_bJM#K5(n-0Dw{IpT1UR6+)Ve z-j_^5JMDkN`CmUOV*1@H9|<~)NJx7M{P!sQfMOilfPR946h%l3PNE#Q^#w>x;|r6{ zqHDMDY3&i>+iT>ucyk^!S}!!roQ#8KR4~a*$a{`=ALeY^<+yl=pjGn;0IK~d%AKhL z=TkmPZAS(-YaAAqC>^fP=JA1zj*0(0o5F3iIiaXz34Qs4XL* zCB>vRoG0##cSB`Tsj+nq+?!VFU5puJUt^(3(AZlTiX9xq~ZXPWxO=1M?hTee?duZ%V3aaC^at$SJslI)e}=g^K&yvzoy4UU#> z8V&Yiod$7)WI!lzU^W_{WyUiEGNV0@;xY-03mEM6wMV*5iTKp7;TT zAHj~bn>FMi-&C!9!k8-I|JtrJSBHPAYNfS!&mV&ppJ8O4qCcTut3S9HlKSJ`npS_r ztXnB2LxcLW23nD1yo`i2nDYkmY~&Db+$EtuhyO3?&zU|19rb66*~lM&;z=Tq(4WQU ziT>P#)P(*lFN@$EvUWSa*8UMkX%;hqdea#-lJsWj9_jU_{mBk`llOV5-VAQ_mYxeS zyD6bDkK#Rkp(@LDIFyqbC*z;88aZu91%1KtAK>t26>*@x-2N-{<;UHLNk@Gt6U$`u z8LMWj_5^DRp>uH4Jgamsw_Lr_mySgBBLzcBNb%VHQXcG=y$VAx?QnDtQ!ne0fyJ6HG{}Yz!@lY z4T6u7jp1P%+;h9Q-FvtryOg{X9?{l(c4o<%iCtsIXQE7D^V!*5)<}Bn_-rH$Y(BfY zpU_?HUNbKE?y|-ydC6J6RH_b-c*%(!pM&hh&1dKN+4GQabo1H${Dgi>pHNVEA56)b z@UYb-XJ=k9J$80xd(@9=5)TX*vZKXauGmqJH8zD$V_|cf_pp^E6`5Cbja6h~h${#8 z%;Y;=Uc>Ef&hlpsWN)`%=WR}NMR)h?E+ub=N33ayRd!d(rr0MFA4ZbQyd7xJ&G#dXl3gvS^4IT{>`t74{KRQkIrR~%?>Xb zuW{UdJ;5hu`7?%?Ye>whmXeCG6C@(mNGet_R`F@Rsgf~hbF7L#(qW^~i?&uv)IzjC zFGTq49SObq!LFavMn4Jaa8$OKUer4u8jAa|=6F|@LPLh2^@LO;o>KUSv!&AGSCoPu zA`qt-bH%erkS;Gmm=YMS1ctmdsUp%mr$Blq@3eFZNoFz2bdp$#hm4zP6h0+6OC{E>7v%ji3pV8u@*%di>2OnazNJfnKSXq7Fdg#5+{FBSFCvF%hVF5U}8{@9q}))#hn>dj4#O0Zd#*yLXrwI z)bc_Y#&7?t-1jGabW?At{&Eq1=aTqclDtd3k8QH@!7D1f=Z^$YpMm73#{aZe>FDRw zB@?isPKYz6rNo(+T!YtJ$7!PQuq;8PI5yW#(ZV%=!O#dlUFLuj=k!wziRES#lQYLIFWt>bO*~ zodp?4k-Ux)*;Xt$P6>JKu{4qfOEZ&Myrl5rV7rY_R7?x~L(?T~X-mt}(o&!-t!YvM zl(s+%O&dxKT^M7R1p2--K&k)V-#Pbr<{8;6;q&M3&&PW1J$HHTa_%|5d+xc zjr&>dC+*YvC)tN-L(7*AgU)idp8Mjg%P<-I>(=C^3;5Gpd*`(8oclC`z#4toe({-G zJ_$euY@YgA9h8$1oPf&cImJm9O+31~sTW0f-=`FV*Js!yr0io<_l55ecvIEHW|^nY zFsb?%x?#$bZb)OQJ5rSbX-Czaqt<~`dY(;h`OSXLVKQg5=iTEv8j>>OL$_yC2)NR# z8mvYleTrDMMEDgwuUl;d`?=cJJ5*M7=zFb>P@K#XkFs+|4SOKOy@A0xf;yz3p)&o( z*nW6cCU!F?E%4QK>%sD9w=O3~m%B2E(E8ICKf#Yu^P5&D&$1fTp3_!BW}RC>o=iiL zpR)W+&#NC7T{K-GIrLEuFRto3anp;(fT}&G-fD%yN8abJ>QZ8QaSxa`bY#`?^x_Ig z!^rrPYpgH)ln=o_RJT?QArSd-VZ!Nooi0Umd1E~Nb;$#!U{0gg_PL(O-fs+a`qpn4 zLNErx-usF*eZ~{dG6f|ZSBpRX`cVGW<9yc`hVBwI;FXw z>_3mHEF%5&p6y{Evj*_H57k4>mm8{;>8Cg?r`dCTz}}7PY%eFu=U@H3ynXv+-+p?> zQ+&IApyL_88f*nRv6rk9BJMSzC;yn*GhXTAzd8uCCv8EUwCh|FI;&wWJ>@$nIg`>8 zIoQk7tMfb-W@R8=LuMie6j`qlaENL?_eLPndkHk1D-yy!amQI1EE;*a_V3rCEq?r>gHsKhna1SbzPVF3a9?!I#_HToWw%GmKLoz0$a-cdXPGuu@N& z#;WTtTg^z<+cf})>?o`B*P5TYM1Otdz~%JUiH`;S^2<{QW1^q}tFRe^2eSygK~T?PMmtqcBzX(%17Hk`t(+p^G>!^!)ta zXh7)PK>E-}p05Eh87hdqc*o!O^fs%%SP?CL*5X0#Ev_KT@DuzbwpikgHcY^6Nopyh z;}BG~rMCE*r!+9Ek8j@W-2(^8;1iTm^trsC-%tIfy)sPud>9(rzr7!!amnzUY!Ro! zCZA9__~VgK-h?UTwO&09sZo2+|6GtZdV%REu~3>UwPjqe3!EQr-nx#m^-j-SM-3|b zJr8Lm!AOnmj>Y#SZ`^j-H@2)^ehY=z08{HVle#O7=bmBqS{2%R? zx&_NOQMl{+HtFKm@ zX?r89KfdkKxvbu;+9Ec$zVeep_eE@8pU~Df{W_9_4y9^e{O`-n=Z2xDJi6aA2URck zM(5ALAJ|*1{%?Nsa(&(QgL`Xj{<3fUyO;dH`dRy-%f2!5)Ze(+dg1lo4ldNbQfWjA zXIUc>cTa?86FjSUuXq>E5M4;&NuCi>P##ALzEe>?%MY(hp($>>zvy3QJ$>$4P=Hor z)47Y-0BX;F#NooAUJ}Gg?L9vZT-Zo*!`9a#_5JVS)-`8*b6T^q7tYxG-WERc=Fgzq z)f7bAZr0$duDMA?) z<#s6JqP$G{MPg(&J|HNHzCswgPfaqVal2AEnWunKua{hQoy10at=Hj(VXHIyhIgSd^2$(Y}ovh!dKVKlYqjGz1)oo0nGzvrPd zRESpKD?0=#* z*T5TJW6N+UZ-`Ro5A(14tjago-@=Ab?kaK}f*lt2^lmtVV=NQh^Uj~Xs^|5=i1nY$>#UoC6U{~!0m(Lqc%Q3>%U0r)_`b z&h-4>r9bqAmh{5){BY)rd-+YDPDW~cc`Ci>zpBp`f`lQjkA7he+h1+-qZck>J6PRR z{rwGR?%nEFU);;eR?+$MCcht5gTMX#mj6%Mf7SQX{#XCg_tgGpJf-%(LaYD81!i|v z_lWwBsu{Pgs~`t+uoQ`LR^0%0$|?{>7eI+9*E+LzvRcVBfgA(HQ2Umf7{ z{)75+Grz6NuZ^$0`+1@aiZTf0L)E9mq1%pPPa?X5n zU-el%@4kEO;K0$fRm}-AcyztyPYX=7f6{q1Ob42OE1`+d+QoGv}Yb zQ#;m2m#?aegwS(;ELmUgzAS$ZaD1&P-PGB0>On~m*fpF#idB0~y#wMxx_8sfy***8 zk{%8Bb2i;P+H*>7&72W$y7~5=Q?K?44#epPs-=bW%%+=X@IqO*_W>nudW{~{moC`3 z=cd<4k7^a%`-h&YNA<-EcKEjGHBt)Iep1hRsvgy6E!ZLErq|RI>m~IGPu1fxBffYu zau-2uwrO#D-qeqBBrQ)G|vCaQT}2wKanW^ z^Hu+wqWnE4(W$l;)~8#~kd!vI(;^H}zGgbgQ>XUCmk1l-Nm~hSCmyU_cin&B9<%sN2Eo79L&KDR(~Eje-Kb%m|55XRZs7hTJ~(lKo;{zY z^52J``a^E*tzbrgc;cbdgSC%uQf9vUB>ABxq`|p3+Q)&Mrj_&~F$^BnCed5VwJttpciBEFh`kzhnj;tBHXVdtez1ynK z-*DznNyMtE4I+^9x|7W(zOw9IPVICb13YtkT_94XRLxdCuA7-WA3|NWzTsIxLS86F z67u1}6d#S%A;#<8F0Tqi)QE1nrB|Q0sr3el$eTq$0`uj+h3-f9U5`Y*`r~@oZ?k;< zdh(pEUQPPi4Ih*o_7jae4$BQIJ&l^NJ z@pbs~uZ8Te9^FgYJueiC_MGC^=$kft)b7n}cr?bCI{!NL5t8m5U$X<<2N%dWNfQJJ z*ZIo_-M){K99gpirdD@vKS`;-){AMtaeIORxm~gF!|8>)dPf#FFB{qP;nLRhVu}2B zrDPiUaLbhp-HV^jPlfY^%`F?n!B3~MD^tPf=U0%m%&ehod8O+ok|5zRv#CRzvMJ9g_abaR%{J z!T9w%_3FkYz2Z3Y#aDW-=IljX)~jCWyA^VS?y(%l1skA(qbH{Xx6L zB&Vvue0uH}4UjyleL@}htc#-HsmuA2h;MlbP6OIkBgZ(=$(m#uzp|kzQp?7e(tBfZL!F+iPcrx{{B!%au^F`rxySAbIVkC z-x(qO1JMB3lBBo(PK0T#eE;XA2FpANp(43J{Z?S@}FFq9M`urutdIJ)H*qFVMg-(faE*l*!{#FTQQ%v$1}gg zBNoqm-vy!c>JO^e;ud7cgX#ZzB>kZ$Uy?p?mJ1@Eu+i7?y{S_qV{h&El^3nHS_9VS z6IiK+_K!-{wb%twN+4FW$69DznWhDc-TU6E6Vg~Yw?6HyNzKJ~{mEpdbbQMst<@wc zpd;_5+UaY#^Uv3QEHd#0&6_%S;-Q%b&7xh~jhH=M>*!{p{xzuK`uHqzAyK~8W`DU> zzaw_f1(<~fy=~1IJ+Z&&X+6Oi&`7NxIOOMbwLcEtkEn)|YwU97!?J&b1r`P_#=dteRwd1itGLc-+h+~SnU4D7HNv` z{iPRK^{?O((M^SQ=!2e92lynrq=PkczWu{H_%i*&J63z;J9_o}@Q%Kw)2EfmZC1#G z#qQtupt#Qr=Q1BHUVZjgTm<{qs`Op&z{Tj1tEZmu!~yZ&pcx|nkWc-vJg>3l>2};! znDYLthSl2lx7S$v-a%8od;6AM(!OO&+xNbACEK^Mv3)aJG+eTCt9>sfvDWMDo8Rn; z*4y_@J}evBcdfVY>p!%#eapV5@ymQ*$@tCOpKRZf@!S68OUAGGHXFZlL&^5tQE%UC z*V_2)_@3H#>G*x<{Y%=n`Hz$BTQYtZ?1TOdEs!ackcj>{rq* z;Xi)xg!R_?oZr_=cl3${moQ-8(gq$1n-gciRO1AXe>^#WI_{`ls|F%^(|m{i0P=~e zmv?xZF7RtEu=wIHs!aNJ+Hrz!_Dg!#zHu<_K)+{xyE0$8fL#8ze)6}!Z3p(hZ^;N> zZST`%KA5miElRAQ=lp5116r50{O@1VfnR=}4Qi8j;N!m#ci=Bx5<0M{-hnyK{2@l; zG9BpV74-ba|KQtp;MeTxb6o^TFjXXk_8;?RLXOr%qa8`W2Ge+kfwp4*cVf zSqE0DP5iuj=ztLK17CF{UOSS}6aYw0-1Jt@{kPO6Tq|kLglUWNRm_x}H$rrog_`6$ zj%=uHrz8c8%xb;T8Z7M_H5ecKzxa9e;$;{_A)2m)*l)j{4HvIgHU|X zV5mlfT)i5A+DGqA z`!!z)WB<+l@z`JMZTT^^C4NmhC2hJ`F>T5OES-V#f3#!<{-$9DmMq%B*S)zu==`W} zQ|<2GO$;Xs5++#)T<3$XDr)0Dm&mnr(2qQJ*+F;ztML2cO9y`Qk23J`UwsZgWx;@y zUi)o^{`cRR7IA>^;RmpunYqEfMyP`iG7JK4`2Opw#Kp;# z%2*0{`LbKQ`mvyTz0$<8=!=H$9UV!0@T01=_j0uw5)9+_!Ph6pFCh)%T6fy-l1Ez8 zYJK1TW&jskfAJ+@!M)~XvA+4UK3n_~s9tr(N2R^7V~gGY7_WUis$jhC5B{c_5ea4K z)db^x@*lj7K3YP3wbgH4!WR5~dZ@xzn5w9K^+Y1q(iL{~XD_?Luut9pR+k@3*Vh-G z9oAP7wL|}}Fh(9?x08^s%$jWj!uVccmbz#KNZ*Ez^}#1EwGUgq43>Zm2E+!ozVCP} z(QFqVe`T;ClG&=J_UV)LT;OSj&(|NHLkK)WQyvMCUaictA+ox5>|vGFmTO@|{z$sl zg|z2%O*Yc#*!hO{X@zWReJhX3^W;-zJ0z??0Oh9Bwg3DB_YgaydhdBiJ1bmUe#H-q z$vt4)ORH=wXrHym8{jfw4sYxn%5bB2Eu77K-X$oF4!VkPWY)?v&EdM>m+V-uAuc8~vxq-}i*{0hSu zktqNWM5a&`8ow?T#T32^eofz#ZX}7u<=8teGx7_q2k+Xb#!u)WZqT^b{`&ciZ9eX8 zep+a=McE$S>usJMur@z%e`A~f=Y3j&QJaN})MhVx`8I#%*-!dcy)??JRr!hcy@hg3 z=%*VHiL9T0Ii*TzCmogBLQ^esXJjOTF99IpOEVYsoV<_pz#9*!Hooz_P39wAIOvHd8emAAfDpE-{>Q#jm|Tmq zeNqQ&5%=s5TK)U2Y4Ojfw9tAxgU17V4Zq)W?io5=qNQmY{inJZPbc_$KfZHn|94n_ zyY}m4t$(|oDQ1EDvU|OI04_fB$zRlz%V*c5ubnEheXBkB9t`3eb-2Swu6HhZg{t77 z*^1QR$kdwF1ea`N0K(|lh{%Z0RO?uc8Gf<#H*XHQ=S`z^-LuG;neKV;Ds)d3{lK+M zo5OVK+%Iv}gwr=uKq4BxebJRP?iGm?sj1qJLACXBZWl?XYj61N%kT&K@7hTJ#cjZ? zL8d19cF%8XGNlp!{B;_b`vPJ`RnyATwV}(@$$W&RCl2V{Oj~%amRoM^oqy86!x0`? z3toH*+T_u1Bo@n$T1z916D>|&=2Ap~+Dren;k8U*BObXM03mP82H?Hedfxgh7H1n; z`@ir0#zl1eplakF(|3M{W*YPiNeWF#(sH$r-7i3bUk6NmyQYpQ9OZfLpZJtyxcor?GIsfSoyUS1mf+`oM1F8%IrU8YM>Gp@JS9FvXn*ZwzOd;3NY4D_>K z)xz*CX00a5FMY-Ny;og83D&MSrI(&Guhertq2Gyn_>4{=&OJ}zMXPY9D*Qba|Fr)+ zoAIiYYwZ_%p?>l|;;hdltLz6qquikCn6oW+mfX(2&%IztYVPB&r1o2s|8x3LHQHjl zzDbk;|Cu#q`-rlwfvELy?yLIgv?%LJWgYP!Q&ZMoRo1WTV6ror?TeyJ>gUj+f}a-U zkMyHw5#>QBwEx_RZ4&C(H25qH$WN_<-c(xAD7p~Ta zzx9R_58eJC-|tha4l|F*R@K7|?d$p3X>s|93q`eYMs1wox)GDi#~=6-nD|79_PE|C z{X50?H{{~oi>YRx?wQF+HS~&|zJ2C^CB~R~5#(;|<?|6p+JS+uVSl*nz~r~{FlGV@2~w#IEbxJNkgb%eh%Nl+^p5y z^l5JTB0umKrx!M}ozO_jWX7m4WiptFM{580MmNZb3i^KB|)xK7|aPeWdf?FIf zO3(jgt?jN07eNX`1m91Vk!#Lwou6&SBKc5izIMl*LoXY;^TAM`*H(Ky*}Uw>sB4Hi zUkxRFO>OJ^WOGVI{61fJb#KkSB!BAB$|{}cbK{ZKVEYJeH=cN?_YQI&S9{dfZ*h|T z2;q}wbR~)L6GnpT2LxXSM+l`WFX*|3ll`7+M))+)HREfFJ=gd$>$&F5=GxJ7&D+*I zKpj2Tyvr_S_gwRVHD`#Y7jL@euiKm6r?Z_uGfA-U%;UGove8xh1f!5%3>RVP+#;GT zJ^y7CHa}KwihG3+i%SyLQ=dYsYd@`G3)lU*8O~-IjoQx@m=f>L7%!})_}awcGe57# zi3`28k7%^7ejm|OpQ=7P>}wWpTGm1O{O4+aO6i5x`;~mA^2PMRGw-$XH~j{W+I`fI z%Q^#jwPcvuMco`1U;I0|D?0_(El3RAMsy$;gwCb_fYTo&zioa5v$Yl-$>7Y#YTC<*J?K-i@-Cj zRI&QO`G;#CvtIoL!gydDK3crtAM^!~g@FxcYQN4aYj;yweSGMlE{-hhXQf|TdlqSQ zQkj63FmtvpgR@Gw{c+p~bRER@frq zlJ~f+%GF`z8?JtktP2CR&svo?b*qo_AEuAD;A3_E6ij?lquhkF8J_>|F;?)XRO6z) zRf;3bC#><0)jnt){+#Gc>zDo2oJv_IjQ;1Uo!hSxr?pcr!;n8a4CHa@D!#AvG!pCvUH2W83^k zYvXFei6<{sR%-Yq>^!~pS5%swut{M;d?D?iZKuv06$@~M=uPB^^QRY%FuN}?x7Blh zONwz(ef~*1H$d^Ie(^u|&|&{SmEm*m*zo+{GkAugPkn6!t;Ig_ZQ;8TaQDdkn%xP#Ks%>8iOC@*J>|~n^OHu?U_Wj zF04KO@eN<2^|Z9|56W1(A}^ymCP*Qe*SueblJdH8ScNRQ0_ zH5{_mHa%uMfequI5mR6LX#2%arsw~Oibm$Yc=6Nl#M;EVk^KB~jY#baG(juu+3AHV z)AJ9f=aB$ousWYtTNq<8jP~Af?$20E2$IKlOOV`j=EEqepP+0|RH<4&3{|@(m*BUt z^a9`6`X=(GmJz4E(U`a+J-;O-o!V6EBDeV02veuOYyL-PzHNSW;F9{^`fc)amykBy zq_=yS?x;=2=}}Xy+)ysoS8@Bi{9k|D^4EQr@}mr|*D^!@enKYZEp zfBap_`@6qYFT1q=-=+LO?bdqV6Z83^WVtcq1{{0a(7ucRFtnd_0q(jpss4?h6Zo%5 z`0p=kUz>{XALwsk%kw1#7j6N7j`c2-Q(G5qSv#_@r7ykkqS4v{?=xulQ0)Oqk2u0x z51X%!)?u#Q`tkk>Ccm!?20k3;+4MahL12`j%`@1m8z zX?2}tH<84*p>?&Bq(&{GRA^D{SG|W*UY4SLOZ&HPX#Qe=Kmeej@sY(Jdt!KF)86#r zPwF`~a?QVOcr^W?Z#8R@2 zEdQtYKh6Ic{^$6Ai2rl^&-1^?{}TVp{IBr;F#nJ6|0w^DH8m~I6|5=C3uIW{&)b%7 zE%0aiB!AKzGAkpsIUOuAK-DCPw9;Be?vCDmbFDNA%t!Dtk9&o0_NQ2sh`mm1RxMLz9eV^H2#} zM)Q^o!`8et!%ucKZ_OUo-&{$5tDR`ns;W7>TgcrU0M8;n|D>`_`7>}tNvD%f7EIlweX$|H$vHS-A4Vbs?=Ck^^e(m z$0};WSoNU(9%JU4$1`gGc;R~f?j46WoA+96w`J&h^ZseLvpI8+k!sFNGAzxR*;)Im zamZ+Vn-6A0Kd8}cK3IionqXg34w~ zO3fZs>QogrYM!28=$ogr7S4*E%QIiihq7>b^Q_Tlr}VDby!|bx&bi%V`kT=k=d!Gu z=DD(3o6q`R)tML5@mJx(!I$grl-f`b4>uQP?Qd0YELtCnS`E!bt%T;Hh_fpRCl#MPnZZ2ol-*WaY`>WQLbLwL`cenl)_4aa6Z!Z`1_HxPcS6Fq;WovD@ z%93j?A5;4)8I`TfT3BnexpGW@4`(#*N7U=4rk1H$Wov4g%V+?aTFM12FrLRWp-nB7 z+#Kt#WnE7E+`>wM?OIqWa9qm}i99xE%2_>f6%jWV3bQ=6z+QS3CY83OP-G#rZ1DnH zDiy`HW-1wfD9hGDUXN|FS=G61E~ocxJ6hEHw&!M*wmp|;v9)Zc$$C_^+*)>&3aq7; zbfK!8!+9$=oG+_5i*UdnEYFtVN>*8J9^1W($1OQ);4NO~NVcrTkL0WoBZUdB3bgFZ zl1;-W^-^Yq=|^I) z7+Me$aF8A_l^%%PmV->c9=U1Of*u3*s3_+_ctQ_&LJwO~Er=FNJ62J-36n!D6DDw4 z5HE1K9IhmbcF|>3x_i z9D&1IvL@eJvhbN=`NQf%7Cz%KmC31{Q<+1mY-)0@st3&H4@-kzESA?B&>~y>ajQSZ z^kA(0!9s4Cs$^J`Jhb>)rmB*5LcobCGbU{k8Wg1TAF_S3+6k2BB34f?uEc}Y9!@N&T#@ys z$Hc7W9g(kEiYz=moFj`RiQE<*;(}tSpa$|#BZ@w8#i~t5DU(;7rHR90l#)*lrB$w! zwZ50KMfJAiy)6~2mXe9{mJ(}PY1O=VqCAmNxiTx<9!AjgD_Ied^XgH>dAH(kulOKWa(T_Wesr5h)w!oy&Z-vlfXW@tlvK+R zmc2cUdydRV8Mhqq#^0S4@@l!;*3t3LZ$~dQHJ!O;(4J@ibC*9$WA;4o3V-%3?zDK{ zInUqsZ{hjMkp8k;yCyZC!Q)N;>dyzlvnkN~!utk8 zdyfB;=Q|VH-SM14QPa(V3Erq!`kQ&dbP+;q}e5C|{Yu$ENH3P_NWj|CS{TCFyzN_5K`CJ;P<&yYbwWQ#*&tq5M&Qj${sIMF;L#KXzs+6KdDaLSD$N zb(bT})?Fw}jmNICA*@#RZQ5|R?m9eC279)SW{~oFN-gl*Lxsw}CtJ4m?_u1GjuKc8 zeQXxpr)P0iSgUmmvF^`F?GA|py7fF(o>Do%HE^sw)vvwf%(T+?hJ3eWW~+(|!C@h2 zy)9R^diUiftsnaUPRRe({esMTvK_N0_(AlH_`{w|yq=|O9#zzuschRl&hwz!uV*!< zos{t(I-_+WGclv`6En7X;A!xSC;Vjes+4By1Smv&Ix!2Vv}Zw(u~qQS=;ABIT?MvI zR894^3ft*DlUV?Pp2u=|6m)CWL0_vdoXThCiWSscYgT-zr}$FOQfUGNpl3nv&AL`> z%^tSBDNnzPZ&0B6#`sOdM*z%x2NGK;_$u2;d6gV zlS4

sj79Hg3;yMdP0@;8bz+ZW=o$?i7SAQ}fiaXfn>GLd1cAMx9t6JG6 zj7!elRW&fvTGDzVUeY#8Phi(w;i>TeaS1l^^l>QVre`cp2d!M-t5V>1fiblQ7$#`X zb0(|t67*8NdaB;?jA5fzu-Hy^0(#2erKgPpPhrZ|GAPvQDQ0B1AZ`GgC+l1B@_x@( zF|^u>*wZFkPg|GFmNwtS4NJF{k7R}HS{WT{Uqy_kIATHXS2y&Ys^kFA!@fP^Ijdd0 zo>kG0gmF7^aI>sAtw&HG;zK<*>KWt$FmDe2Z?knm#ck{ExD%11Kv+6$QY{;96otTb z6t;l4u+6j$;;C(DVj^2aj*c?{7lE*KHdA@m zDNtc_#Q+4@!&#t&7!CoOZfu(fdMHwS((o3LinoAtyalA>+xF(gTNXG{k^!X6)SX^o z0XAA~`zNz-odPh6L|j{DqGCFtjip16M46=?pj%tUxK{zGK`jRi9rVisW~CHmPO7O5 z$rl3Ei9-@XZ4)ynJ(Zf6Ma!`q+a`cd1r=xD%!t~CnSvpQGKmV42xyzkAtF_LGIw}q z6``zvY0(4bxVPnp&LDTa}b8_;$AsacbC)Irn5dRL`z2zaVM=@{m551>{ERE?n(Fd1b5H&{Udswi`{$gJ%PVeg9PA%&YLj5`!B!sA0dyP^#mg^s;d+qC@>1sEWAq3(fK@bl~ z8?-aDb+nS@lCFR?8bYiwDP1U{~Zm$aAv~OpSVPb`5+2u-EdC1xaKd2GV2o3uf5R!g_ zmd=#@0HNIx25OB^*d?|PkL})PM*;1_`GZSdGhA6@)4aLOVNa@h%|^fZ>q#@zOCrfKkX# zUE1{m!*v!iU}qsib{6unXP>rZ&j@?(c1_i!PLJCSeF!^wXdL9%e*1n9$mDuLI$z%#2ne(rsnjkEWa1V{Gl|+j2@;wsnyzXG1_^CLLx#OqqnJR zIccMIG>3!(A*obT1Pa0SN=00)KWgJgNSr8|z>;=^gtA$rKnStf38D19ogp-)BaL>6 zIy*&apPsOF4sAMHaiG_(gCHNZ=}7IhgQ#@mNIpV-SliC2jGqs*&s66!c`2y&T;8@% z7K%m}>@{wu1EgX>uwLfMn_&sHC0E|&_LFvt15!U2@V4@|2iXQ5KoP+q$hzNsn;nKHJJkB}JL$24CI z7_=SyeY% zDzx7`8$2YtM|(N9A2Ftu5(-EG#*S&zbz1aZ&bxMLi_@-?FT>~U@=P#Kk@j*iJK=LF z%ZiU=xw1dV2ts}e30A46GX2JhHUhR*%dQRdjw<$TSq_D1}BiwYFK3fWj`7Mq$gZZIu zhAACgq$Exq!lc|zB>kPT(~7jfSPFZCgdiF`1uo;nGw;Dtc58L6XjCApspQmF77AKY zFW#D+3MTT@)+%hwSVG;#o^^}amr`o0@(zJnZ6hUrY{r?z9Q%Ckul6)7Gn z1I(G+g(`&S2NxD}3q}YE7KWg3p@ISCDJZl7I!^5Zx5nf1iQLCjP*~18`DR&`u70l6LQwszS zkIm%dUy_=fEllI?1msBtNCplfm@UIJ>am$hOm16HQc~2pgIP?j>Kl@4teDMCwzyZ! z@s%#m3R4I=8M9J=w1PIG1gB7uSSwU)3Vb7w@4*~4D5L7QW`{IyN|;T|AXN5;a}OZP=V~Ea;fbg028lfLs8Rjjsf`gM^fVm|59Dr)F3I4j59# zn})nox$;iN#@d@Jk1;^nfv4oYqXvhd7LS5#V#W=krUFpYI3TSihfK{9oH&#SI-p4z z95bBd!3kL~Q*$w@PjSvO>PI!HIn$GJ5>Cm9$H8DK&y=_`2*D%KNJ>j>w>=8fqm{HN zG7GvJNh)9PjjJjv$O@&?z!Zl=CTy7F68)mPO$6l=qo6WW|eBN%oOfLCL--XaEAL!86S!a_KJdL-rX#d7;uI|6Mfz?j65 z2MvR*H>w4(r=YLj4+*ptF$OhBABVb z;~cdSJOo-2N=)IqIv%ElpiUw*$K~o|VcNC{DLWQ3oa;f`PNslt$T(RI6*L_{5U3Uj zQi4L;>ILU+(^v?Ux5BZLZ?aOAx#AW-p-$QPhri8&=KlmWn+>9vkMNroQ4LrL{J<^+ zE!g-|AURVVWB|ZLLn5^1pgE;rSjP$mv0_1I4F$yn)DWPZntnuQb)cdsXpOXG!k=YL z_gs9{vSoxi*4?pDMmAwO3s;GN-6g*v0=L;it8o;xGk9r^D> z^xFI@tSSX7qj0Fl=w8nRLaUEl%gAH3Y?(vlcNmD2m4h&1YezwXSz!dnvAKdgWjlrr zGbDZr*dd%4fJ}!8Ao<(JJa;GK@`(ab^@Dzkoh zSQtU4P@*d=5Eq37Ejo4-4n{|n3ZwQ7Kz6t_&wvJDY;2(oSnsfy8}jKG4){&&A#4CH zgbl%kuyreh5rt+I>liNY$xc_1Ym_w`h~yXHT}a_=?xWKIVvCLv6&|Y|#CA`f(Me2~ zGpv7w**3DV5Gw8%ty&+gzaeb>4PooA*w@CL{0c{7j`^%mLbs_-u-oo%(5P@co?|m? z<6r~Li=3G?)tX<_{X~uRsoC%D>jvYHVGDJh=Lo} z!jot!k`yMl!6tkzCA;;_TOWO%QI-P;>_6$c7~O zhXN#!-V69+iP>qB!ZT4j{os?kK;$7@xz#P79l7$3U3(oyb>!p(0`ycnh5NR-Z&ODA ze$r)8SXz`YZowc>%P-s(`YuSAo!ln>nGO##ks-{YHNFzPoaU4mI_JSeUAE5wPl_X^ zojPP%3Bb?7CO^q9`dH)w7S`FJq8hQ z=y;Smu_easB)lImynnsXr&$VY6hm0(U1M$z1~}hq?HE*LbsGI3YXZ1rbUe~EtycEX zv{*v$q=WauB(}R#_^`Fv=(&7FlVjn6%qcVMzB*VG&&H^w-YtTVxhv4Rr<1B>@Z>p^MPC1D2uue!Ly5s*2 zYKt~E9c7kc@CWQDGg!uE%1^jX7sB-Zf)ytYCBv#f`K2QO3zCPDk=Zo8x3Khr%b&98 z2-{zg2dku8D?9w?*X(kHW%~CF!s0eB@-{%HaBAjq>dMvEei3K$?-S2>w2!_)!xhp6o zSLoj&A0gnIMO;pX$Ue=brTAeu=us&cR>y)TMCUs8A{FFaKQg5rVUp_+ByFe8(5n-b zzMpxeDiB}yJAMffDZ7wT$sFz1wc*ZnRj`VZ9-nj)a0|Ls)6Rgvb@+5%7BFH&e<$!vfj+;Y@tg{*^f&Wg_Rw*OPtRiNB z3@+_Nu=oV5-l>M!2GFv(_0|v{DVTQxFv}5}`D81?me38*odA5xDa0E`Y#K?4 zPvkpeT(52ivcG3o6E9@17NB6S+ZgbqA~#+iN6H$xz!bw}`~i!?bSlHqeJPjW0vnML zZf)HvhaA-=2^zU1cH$yd$zl354w2Ea9K7;69e7IOP{t!NOc5Dnq%{wMuAP`{wL>b| z)Qj;r!=>3uk@AQ}G@QUA_(@^THLd0sp-Aiu(CJQnj?5JS`NWYz(HT}1ShaLe<2H5- zpkn%(h&F$;5A8=pP~B|W%BD!PDY8hkE3$|UsAc2kSY&zb+-ngB=0wVwsjO>?PR@u} zRoXtm*Ff_vqkFg71wut)1+56@GBWKe+w80XHi>XW3KLu0?>$7^N6aH5GB8Bhf+42U z9SV1vjPBH4Ad{vUs?Cnz;c|Jub%wKdQ$<8@wGWtx$m}7(L4l}F1DH`6iv$%)iaEEi zj4T^w*-`g)?9_2RxeOU~P6)M|gNU*zVpuzhpbZ6NNTCI`<`j`BIqHu^Y@sU!!w1_7 zQ`U;Gp39unSqkE5$RR@~=c_wOFn?tt!t)O1h+s$wyNAv!(4v@4kMA6z0&`fjg>I4A z*?lZ_fpk*xlQz`5LL}O5S<0BOtEU`g6QlizviWg+R<>P50xNrD7`B+U;Uy*TwWn|@ z5LKX4{;=KX)Yf2UCT~8Zozr$K?VA818bROL5fN^3NYRPz;H4bYgPS_13oHw!QDBKk zA>PHAc8<*ML=I;$rJGA%r*3~DM4dx?^RU?~&}lwXVDPdtSKfA%{jeQ5bjpJ4`*PkR z6LDO%yF$7FyHjnB_NJY4InF8a(;!#Ma2Qsdg=b9_%o$7z>@V7`LVlaR!_X2}5UwFibMRreMmynSEeks~h$1vmWlT;v zv?9V%w!=kIWB`^yRR{l_l1K5tE8@;kAthV#J+EcUmSki|SVc9Ff0-l%&Vz6xI3vQ6?1i`vRMysCnBE7); zDZ)LhiL6dJ6%nt7-7OJ18Mf7(W}=N#j&XD#2yV3JAzJ-a}fB{hEdiBN7>94 z8!k(93T%|t@3RZ29zj3aD$!+Dx@k9)Ny#5`mQe+TN@h0fN;?gG!w0%T5l6IF_lOpR zr(nMbeoCYqlkWEsb!)pHnsj2sjgQ|u-M2EZvYo|;EqmwT!t78UOOM=+JB8ty@v`wX zA6h`Oaiv5pkdqyjTf0u(8IJ4i?4F41yIRD`W)VNA>ePWtc2XZ%faSZ^)d8i&A`A%Z z>k<-=(W=FSa1Egn+jxD9ixs;eM!dv49OWFS!(7t5RFrmS{cN8!Ugxu|w;KkwgE@;i zRM@Z)>oaM^YCl5XY>dRphx_-iBm`eP7Qx*vw+k~Sx>4BWoek@Y81R|lvt2GR7<274 zZcpwq8?wZ!7E;%`moxbNra)ASLuehhDh7rQ-iyjf3@;iT=_#!!y=HJ-Y3}LV&jov> zl@VbSwK^MMig^(MCrmZkO2aQ9z`~7&uRF0^Dzl_at1u>pvz+sg6e|hC2Jfk zT1+fwt`>?#)l!SW-^163_bHZ-92b-(_!iZYi*S^Bl*SrW;GBe!BUXpXK(;Qb2=F+> z0zM8ggLdAd;j-af+{FQ?T_cQF5Zc6m#qu`uk9tJ0apae!fq`N^GY}Uc+paojRy%hU z*oiZ!aGJ$Hx6y^5uHC`dM0-iY;!dBkC9`r9!+$XHUm=Fw*~J<;sUuR#9;*LlwEzD2DNG7PeuZ)nx~3ao_na zP{6t>w=Y)#C{AKp$8O(c3(<4J$(afB%aBY~OkSyOUQ|q?IKn_(4svbKNINJ-VruL_ zyURf4=5Rr#%iv=@4Rppqp6mTC03-`o?1EnC;*z{aM+}d&oJkbL zjsZq;6Dmjye|(&>0~F|zm6)k@|59T4NeK?@Z{)O_oY_e~N9~ebm+gXEc8TRD1aUm) zw6=zsX-6(ySWqIipcX7};&NA0Q7p8D*JY26hdTmY#Moy|xE~uaP6gwZ1y9Q`5<+JZ zHKrZ9<}$|)W|>R7KGelI{je_2*dc6}+6V@7(AbqA`H@D8?4ju7q?I51Jeg zBWQO&Bk0woLxQbZOY;0BR>T1^Y&W{VTNAMcRZO@H9F7uKj6Gw}{EE>4R-g{kyGjnY zT#t7NoAF_f3G<@tQXk^&p2f1Ium>S#P)j^d-*pZT=x{4&SJ1XHpz#I(mRu@x}r=c%p1_DH>gmne0(5 zb=jks;8wJM=mP0U_Bif~Vr~oW612ov;kV|xWF3uhU>6HcTZ=JF!PE&hj)NED)n=QE`w6BJhNE58Z8#Va&ls6(MgwPlUn)T zeWvT4S08Wf85$I21-6rd#N@T$mxlO^)PB>7oQw-tw66v25M9@RCWsnHu>G!5vAfpI zqeM5}@PgRbN%T6mkQ(kHI*@=`MDL7^hgOwPnA`X~ny}cdSZ9{rep3NTHA&b%;~W-6 z?H1EArMl;)$$eGV%_xJxnjSMU>r4lfA5taXei93Q^fDhIf<7X3AX^(B_Kbdz+uco;YW1 z9x`7)HNyHEn@SDRtVlpT@Qz0v>nXY=gMbf)Dn)TvV#y4HHBs0r+=A*nt!Qv*b%?iu zy+512I5nU_Tef7Dy%YhJjDjg>@dWOYD*{*y*u$f-)pCV*EuJ!PU)(9m64k&(Wodte z;M5}nU)nQ|7SsiINr*t|ik-QMQZQj!DjGZI7EMLnxD)f$?tsViHc|tW7pH(RS4jAy zoum|1)`g4j3oHtTU(lA=brMmWQJ5JRr{E4oK_)=1?Ve#tKnseR<_MbXgH;R*f`O z$(UqbDE3_}qO$zuZ8$BJzKn3)#jIka+I5nEF^N{#XxKdqwJHFSV1A9FCjCeS&*+kd zSs&_A8)=Wq1{8L=%1kuc*b=qNnUN&4=uxKLE=G_F$|dG|)D>kGfri|#G^~gK%8r8W z!K^6DTh|eo=2zD%vXevMUVMn!lDEwA^kehs-ViGcL&OH%6-Z4P>7?*gm2O8Qrc6_f z@pvL@W~mj}T4c49GRM}jLaH2jHv#8}RZJ&`?TD0a(*rjS+EYI+p?^^vVA>FGSrShz zi8nR%Hsl{%lFn}y@vk|qpAYOe#4VagU*WHh^B-RlZ)$Zy+}`kA;V6E3N&W|x#IITs zKilqvsC;cnyeZX~-qh4*geZUSisv-MS9|uj{ZB55+izn)i^?}IN$*<{C%RmuDF51} z=|22%dhe3>^Oxjbza$=gmN}{)M@Y*N#Rrz;Z(9-{ToRYpr2a+aw=PK^SrQ*z5)Z>0 zm%n{UddHIZfe=6Y;z0{V^9#yk*Nem`m#-CoA|B&RS+R(t=p0wdbD6lL&9#C@3J`ZQ z)wKW}kd5N5xUMa-;X&+ouY2)NCT(-w!kP(mX>mVjH?&Foh7FDBc5og6Ow#Xk!<_V) z>c8X8x_!^%b^Dvgy@|4+0+;cl}TNkBU z+`izENH=g{^*aOhZ)cn=J;VW;*1o`?{WDAAa&}ARkKZ54>)w^prK|dJkP^Po`;43R z?6dI*abf&`+$>%3Xny6A1=bj(*oZY#mCuq@f#<0X8z87g&J?Ms4VjnCfvT+)hLkGmbWTc1sma2PIc+r6Fn z2QP2Umbtg$Uy|wO(7isNq)S}H{^G>z$KU3!*KPJlP94L!clRV1YchLlHIuK%kCwQ; z%47GGOQ6aQ2^yPw_ebqEIS|c1`6Y_s+{l_m9RE}K((<}V(j({`EGgZ7D(8D3t#91D zxRDXIHN>$$$;_}P*f65F4=d?r4TR~!QE+!Suk{K^*I6upF#5CzalfDw$(Ps+=ttJw z!TT@5eo;IEf9RW%j+S@lx6pFxH!GhxavK=##$Gp?I92UNnVF4l1_=wqLq9p-<;YN{ zGsJZ~{nCPtLeziRgE$$AY%kqd!|2;6^UGV6E{hdGv;PnWL9&O%`0SRV?$|cupUGVr z>r<2aO-(CxFqYIv5U$(!g5W16*DeSH4LS|Noekz2BeNbi1~R z2%@46)s9G=#g#^c@Ik=k97i~b)un2_#$LI$8^DV@O8qB5MA;uGZOMif_ZH>5Rkzv$9f&+&Cx*c1I&63 zFo%wv69o5INf2~DE14sFtgxQLwtvYSTCO;G)N|PP2{nYizBpQwVpI+%1o>bDtuKxE zZurQG)XjOqf)sH=edYqegq96ZAe8J2S6;;I)xrzx2MJ>V$A&xUvB|pln5`g9j0G6vusOgf#6FCo^<*#3^;H@5n-kTuijYj9|xt zVWJ?gdIJJbgGHzxY5I6L!J3&Q1dyP1cn%{p=I{h&pECtM(T8%g4=IWeIn$Xs5P`X! z7{lMse7GQhnYYNrEf${;O#JLIyNYs1pxKv__raGU*hEDb2!f6bktBRsLBdP~yx<|OQ-i#vnmf?}cE{Crf=xc%yj^YDlwox;#iGbxB za2v3|O8=r=-C=BH!Thj{7g4z_!9@_!$;X7*xI$oc1VD|OB`ng9_i5vTD)ZkMFvwFlK>Ljl05l@?$gWlR&! zg1|h$#4*DF6h`FoR^qr&PFX9>x@4#FeqErcC*ErxG{1|cB*pMCly$Le4-&HnKylrM z^)IM9v5Rs;!!8)g#`T+Cup#WUF;74NWF$RIoRUNpNs7aYKuO>VD0c=0Zb;N>mT$gq z0&GvIJdL|TQ6jzP`#z^6cXmDNd=x-15=Bg9k9+l$>&HuhBB|al%jq)Zag1UosPdg| zq-YNiQ_@wKRPX=_UO+bGh7UxsJE8LY4u~O8Y>CQeUF|XWQ?0`tD8QZQlNsLTFgnU* z77g+U@DRNwIO*3Z&zA!cyY?Q#K*@bjlHvyjPC*>f@unJMYx7UqqpbfNh{SKGKJc5L#Bs zDEz4iM5yM75277|D8>hK95SG_EKd^7u!hMK;TbzsXrP#}JV|ly%_Jo|J2j>c6xQp} zoahT4!eHS%BK~u=H$S7u+(CtRy6;T{(?5Xb@3Fv@6MZ@+aJj1p#_7SCwq;_>^ z6gwcS9|}?`&ykBTz3GgQ$7O6x(fx|x&1K5F$7~06pg}3XOVTispv0Drp5gKiCPs=P z=iXjDc5t{&!xg?}-xFzOS030idc5&_>f4t z@{Q$+hJCWR$NO#gD~zgBB4nd+c1na~k`zx7CAN9E6$Wm>sv(qtNU%MZQ?m6VX05?G zSb-Jfg3}{84cdtGH54p$c9av_7kc!ClrgTOr2!#SPaYtR84qHp-6Kq6`{@YO^h6kD zi@$+V!9ywWF83kd9@#s{gC)nD-`Rf(wi<=QWg(~SxMQ+^0>bbucD~jeS1oV>S9iS!s0To98TvrCRKZQdvcaV zk#LZl!NQyt!s{vXLl3vf1jw@8EJ)MiABRO^P!VP@C~S3)7OR+$qY*PO#GhWovD@p> zOfpqQ3E^2!mvbB6%ArUdVnpAnPLLu2*DE`QRUX@pA=&pH5~?4Ped?i+bp53T?Q&mZ zF8k)gQc|QX95qmV!cxMLQR^W^+QDtS4J0?~inPR-AyR|o!RrbtEZX8L*OE=XNKvzb z<}*@KXL(&wv)}`9qjCj#AMG-Y)VSg6jc`!J>dPp|VX&N+`oZ6NiZq!o<7Oba-5(8( z!4u|4PPXr2f3R2bTn0Q2hFwa6q~9!a6BpHoiPgpOt=ietNgB#ro@22_lARJ$4(QvBJ=dM<`vtxe`i_A#`JO_T2p>jee6kSEE4jKtEqN=N40=29;Rc)>}rp^uPq z_RXn8E+AJ}e9_>T$-l9W$$<_{4Ob8}kG>G1588nuB9i2;UFNTo#_M;Tqg<8f4u|Cm z0BN%>t~pN_9tz)cwoQcyFa{Rigw@ZGCk^8+%gi{C{h zR}3Elni46#M;ocb-f6tUOQu)(798_Qt^_&=28doaK-9hE$Ys~Z;P1L(?=?8kppknK zCisb&`6T#8L6VX;1Dl~=>WcKg;iVmd4ZY0%(|d!TXJY|QmH=DOSM1o;8)r^GmYFZ^&5D5V$Q`To_T*Pn03Zh*m-#}2VG~Z3?f=CKhl?Iw!DqB)keMZ|@z92~=Gp}ff>cpPf^F_lF?LL*yyAkaG zJzwZr%+Jc#xX1E*OLtkT)?wx46t!Rcw%fm>64UrC)NPz$$xgp2h7We=h$qxCqcH;I zezS@AU3v0xQ_A=mDS#sv2H90foMC8q32l!cy514_g!D^y+JONy9T&kt2#lcl15H{! zMkz+aXChkvIt*(GhlKCXfWL!?t7;liT zek-m1j!2|8(Bf}OCh}e89oqK!9o>4qV*L5W1T8-QOVBP;A72x+?>8me;;ip-BkFH- z2_czJzpbHh5uds=*b-kxQa-0ukPwlr1e)wbuB2_=tgQc3Mn8ViF^?M(O5Aa=d=7;y zPqcm`c!U+*tV*8G?L(vS-7el6wkzWZM4>+NH9#5%KdWT9i3~ZxQnN~k+P{&p&%YK; z*#y?{&OpOf5W7&Q4CruGbTAa7AfrWRLt%RZZ7I0n2HGmGI2`wc_C+**LTu*8sP)n9 zE(w4aJ{KHVc`jpbJS;u|5Cqt;%8pBfS|W20`M7z_)qi0)8Y~Q(q$wU`iGc~3m=K%6 zy0A*K19HjW8tHy%sdk+gvr*+~QOGEGV-`(P>NMR#7ZR~9i^knz4QNtC3rZCsKV@7j{Ya^GhybTAxVqLDx4;CEj-@ip2(g#db+%#k+d}NxJBf108 z8XsE>0?`ocB}9XjW)x=6a7ECPd?gFr8Pr-t^oA}WN&xFSEv5jYoFc{=HAxKPsZok} zlXcIzB{oRCJtATWxQ$JT07#u^dyp~CZj(g+y{}uceA741X{t8n`B0}3gI|Jj8ag%S z#js0&m|Pj78U3t6orq;N`uItL7@a*QbJBP`2BOA?I>DaoTwtGM&gltxW0=mZ*BKuQ zCv(o(QL~-r)^p+sIV^`MW3Z_4Qm3{bN){I}?2qcj{qq=O@^(uQu~-E0njo?Q1J0`x zwcY{{y&^Dn;-2K09A2?5m^h?|M7g9?!$*(d~r}T|&t05ko zMFZ^RTNblA^YOc7S47SP<3|b(3bc-xXgNyyuRTVqqw$#C@1$PgKbyA0{0&Om{KJk{ zushYZIXlUxRfg=Y4|SS0(R7cn(+?){D@>gPO%myjE9?8n1dCjWM!E44odC7IAB-h% z12q<`P`Qv8FVe8WpvqG`UOjH;h06EXE|YiQQYAp%fmjQ~5*sQC&~#92WNK;>HDPED zN=(#*ZVCE)2{r7HL^UDapWMHQ8ZDtZ+D=mI_&7$=OIvL;lGXV@$dghuw9dke5j=51ZF*V%lbURF- z#zTywb3Jc4C?#u&YA{^`6Tff}n-sL{E!{Pax5 zsK=2Wu$2=Kbe-xl-}g;*syD7qtqXWRxKuBaV&BI%K@Hc)bSd;wD##lRMGZlo$LfI9 zUZ?trcie`Mx9)nJ%xfY&>~`xl_{BH>EY?!0{D+b?B)@M|&+Alqfj8vEK_>D%NaRJ@ zNAjgk#nLQuB1as_8rW~_%+9I7OQ`YJed;yHyN^+~n=1)w{NWqTadNG=C$XfLG- zH(`j=4;i5#s3Git@T!YHEm)^YM60#BA$g^17@0=KkSNAcs-Xc9j=S|mRDCUO#*VxD z!=CQSp-ElH7lx&{gM;ApGRNR4?t+PRojJ=)J)84eA! z6d9plEwER{f38BH_<3dmPsOQCO;?45ac!KB*@4Xc_e)l|k;769i_VwVRj8S! zy@mL=C02A1Ut5(IJ>?Nr_!<~SR5RA&$a=?pdaqR}5yO=CTFnmO7YMjlw|t$gdT zEr{L0pdLE~q1F@-p<2w*`cPkU;py;~@oUzHRb?vg*7?{j(1-}>$>AhAzs?SMgo)hy z34-Khz+7?F*_lXN4q&STEVeD>u0*W2pdrY&7 zqS{3Gv8s~wudSAtJ$`BvQ4KU`-dcmg_}Hq!t@UJg^7ioXm<)3SOgBu)wKd3(tu*K2 zF7!3DvtaK#Y8Qnb=Y~3MtmqJJCAXD-oR6)!rqH>Qgq@^`cA)_^fi)e#+VB+~Q?1m; zxfN5QR;gI-6)4tGtK0!Qv%)k2oKTp^Z6Df|fm%O_j)sn7GpxiUoF-#wBDX)T0DyfH zpsAIpk4tui99F~{<_a6rQtO!#VK^@ZtFQ2uNaDz37)-L9f#EQfFlP+5&LHyOia<-; znpD#XeA0AqSn#nvj)!d=UK2>#=XjNx8L)a=tyFlH9J>lxAU=;)~L8+;; zHa3h3*e}NRRylwM#j^+tf9{5};Zms8ROpc-wo`1 zyKGebHb~$4KI}R6f=SPDY=xdv@km2uP(D_0%$!wz8+KjcbJ!OLN_+5k(yjACD92V% zMIp?mv8>J^KbD1@z*w&104DOqnXpizrYBFdsuF4|RG?zd9&S%jeZKJA_B+6*v1cSy zu*)n^6ZGw8(cVJvoV3peZm98*&~rM561!pCoC#8R%jRUyjxZ5T4y;bJW zL^CHHD0FZ<-zs47Is6aW84q2K$?4FeO@1gm4=-PObcTi#=$VTQMTH6upab*fU<#?F zUmy=l3zQR50rR_%g)2A*>>;i>)*d84hkQhUS-tD9loUEc;5l~P;K+VDWX6;(!*gIi zYHUAMgz9$GxDhy(*fcjgt$E9)R`mogLY))gny3gp5wIU6Cqt;Y4KKnv4eUGyFJLOY zoy^>TL>`z~X;4}f=E_4*FT%2!YHC?8B3lEBl_Hwj-@c`Dq6P^8ca z(cA*{0JXled7FB~uArxP5&_eYRzOZD1o&n7HZCcr#1NIABVbrff zFQ{Z_Y^o9i94F~T%N9{ySi3@1R0Fqnq>hAYA_Z4kldFI)vSBw*7+1*)>qJm599;`4 zcOdhK@&TvN@eB2tV{Rh9Kr?vHBNe|3GqmZm2Ryb z#!*k$;1IfBLocw^hzI*wRkrhmRiB|_n`e#ph7j0aW|e4cqRb=ILC`S^Mt(yGE5&iH zE>`sL0$g`%)kUtga0vVyj2|?>S*>rFIjH$>%wNhoA^payTkvx-uudL!j*>y4Q0;7wQ#=336u=n!Q>dVPZ! zj%Iib;(QZcSKu4DG_TYs6(>VLf!(Ap47S@129&^B9|QBVU|hcsRQ~W6{4j7xE0IUQ zvo}JsxA+bD3NVPuGdbXmYId>eXo9Cj4d39h8mI;GQmr`V`6=vku0EQ|G==D>RpCG&9^zYCc z97Vuc6%bQv$zJGVGL3M`m z=!sQK(Ho_B{S7+(LVp%uLhXy5m`dQHaLU6MmmvvNYb9P_$uPo7Y=c{c$adhJ)z)NTo$WPvHzb>y9)rMSH+eTjNqvyG*bG?zyTW z7y}qO)I`V+eJ>!1+meQ@G~;*SPqF2OiC!g&so<{g_B$)fgty7yT`1XM-QWml{lP}~ zR=S7YIU6i$WGnPeZ?qskayob_JNimi0SicY(erLa*V3AAXP5?oGo z;Hw%qH5dButD-j*Epg$cZ7&ffT9s3fHDqal9B_IGudI%+-d4bwmR?f&S|5bgO3+J{ zZaf&s#TdOrhZrm9K|`ENP^zkCc|X`ZJ6o+F!=j4nwyKtGpi|Bkg)c2UDgmo&hsTb^ z8t*eaN=UBG(ZZD6s@<=UC@f5q&?hNZwG9M&nN#h=vpVP;FGIb2JT*&v z$#eRul8yApwE9+^)oYwlRcvTeJzBL}Xjk9) zFlVY-ZwEPsLo9RP(n7uEx|QY;%rEGrp>g%t<5z|UTj9eQi!7EB*&NtG)9LT_P>G8`|+>l$$47p4MJRvHMm z#?V{Uj&^(7vW45*Hm$dNpm zXQM5bLi9S_kx;6m05U5WCcUQ8!YbQP>mf828Pxg@D^h?UqOmaGk`bq`gS%y!nB%p> z`mA1L`zR8HcD%L*<+RsS(nJo%DYPmh!@8C8Kz{6@t^s;;%ds^$$J+9T*KPFPQQSEi zGN8H|&U_iB8`a$r_MW2Q%$s5FF&<%^A4FeNu7kc^VsoX*i@g{hp1YlMr7iyGD}-{e zYL|c$mIIUZYGR$~rofs?f#J0ujnrA`PanYVYfV;AAInClldPswg{&e~4yo3n^?|ee zqMk+DNYn=$NmhbmaJCk_<6chnvnd4EBaaZJIZ4+p3jgvK8%x z0AD}`b<4uFNEKE&4x=Qv1Ek7kkP$6i&=wQtcC|Vkp)6@{=9&s)K2R7>z6qWC zQC_)YDWON;k(t=@<*rotL=6l@_t{M@{G!_!eF7iYc5Wq!{U6HW&>DOwIL~39$Ue0C z1l_Bsg_8BjATG@9u`5(Pw^P+8NCCYmu`A6K)t{aVjv~O?ny^=?;}akgN~4U_Of*OQ z#HbDS5jAI6{jM>-u`()rqnD#XJE68y!)%u-quWkq*f(T;j=~qjMqZATVkN2WM(DCp z<2&jbOb5GQSNgRoCRKKZz5%kfB|uJb?B7${Rn5)Ypc37`Y1tz7H*H!){|3(0FdKn@ z_zmPKnAv1|XNf9L!9G#LV9M(VIGJQpY8~|rC=@0&!H&a@Z}NtZgi#TA2sw|hI&SH& zb^zc{#n2V6X2Tms9c3JpZVp56?L4c>hK4w1XGrPlpIMPZbG(J+&&7q zu3?nI(%+E})kl_J9rj6>iPRBI1Sd||Wg!aAWW!2J%&sbKXaJ6nxOlKO7i@1@8CF@+ zHBJ>s#to7hM%Y&lZH7Bv(Y^}z!NR^$(hBpU!oG@H_*q}sg&%rpFpVVS5L=~TVLXCj z0$PPK;R+!$&xVJ#4cAp>r6huCki84le`0sB)QzPuRT_kS#-_!-M985MKT~$>^sB-? zi*7sWGpngiO#-n#s4H5}$ZXSYNsL7Mkw3#ZHBgIM=hayCg8W&wgIacUYN|iQVc9Y@ zXpdocy4eVoi`3|N-3{ z>$^cxceHa*68TE`dDzHdT9P=v!|mEal`w3W%l}}xUe;Q{AKEaGY(9J&K`7f{KWN;E zj}BflDu%KKj3>cUt^@Ep%t5rS*72Q{g}?=X<+eZ%_KUPmSxHV+L%qZovQjFnnW3kS z`hwGu!}>6{C?yM=XqZC>qhPSHK+_3L!Le)#X@NIwxndagDdFvcEg~^#Vjq17wqUg) zs42lPd&t737;X}wW-V(MKXg6po7<~=}6TSy)5e#WPH*X&hLQ{OW0Nh^Gd(WbeQI7I~qh28b|On%mbq@ z!3hhKlfFbhOeLpH)AmckXb;HagWDv?ynPdh}0oofL5m6n<)48^t&1 z6Y6=e9fWJG9EFu|>~jBFQMHg$>3^)C{azjiuzyz&%nG#<9nfr-H|+l$waS5Za^`{h~B!^*XI zu;^RCE5M^Cl}XdrW1$Jk(`js*j#oDAa98MSGHR#CVi=8`#uwY78jC7~<1wwqa?2L& zp^JllqE;NAQ};)EbHunblNPd&^KDH!wo>SNkvti!HX9c8nBdf-%9T|mMRFdtzsDu9 z^7r7kkFo0s`}wKeHi_4<=gV8?~yuJnM9wyx2SWiX&6nS=*Qt+gr@VN zMr8n2U}huLT5J#9!+F>-rP{eoqjBI26*eIcS;&ZND4fapQ5=vijFY<{AlJgYY#3@! zZEphFsx>=}O^J@U&*Ytjp$jw{VnlF6G!x?y*4lz@(`0s6qeF6Y?2p=;DY;>I|HRqb5XL~Y!;=x8QGq3U_hF%TBN;+2MTHrF**)RN;=fg zu*GPI12x^ZO~c=4)i zgS_kT7NN3)mNx3q0UJwOGKI{F9)S9XrYykoHT`(|FOR62mRIYzn1xHhJuR`ekSS9yWSn&q3Ncc38 z-#6fHB?$f1^|xtv4WEQRo2~%fyZXE0pUG+5QNk~ppbl;_mU^+p*Zyt2V|8nuAYzZI# zqQZL*x#OR#Gk&^+FVURvU%TVKdT(oM{S@q6J_$S$Z65Y%1ZENpWWks_1e3)N%%hr?~j2W`28(|CH!KN-?PMB{`of#-6P@Wz)E$z0x|Hl;?H!G z@a-u5%&*+}cPhT8k%SLW{o`5cj$iy>*;W#MKjDLY-1E<(v1QLl_-!jy{DVpE{4t(3`##=C3pKj_{!D4OZcbR{-?U*$KUzS;}ZTfrGN08yZt`$ z>Ew?jyh-J!`KLSnv2m{-lkf*9{{D~M{shTyJmijV|L41RN%)#9e-(GUdE&!|CHz<_|GhEvKWj**@e;l-)t~+t z`S<0dg{39D=W(S!qpG|7J6{=dyM(`+@WE>C_$teOe@en<5Z+ha9sl9X7R4ld+|!i) zYuxRp+p@Y#CHy=}Kl8l1{Wp7m@?r@;V?Nn$417|d+%F~k_sJHGpx(IX`M1hOCVYj^xlmCE;*@aw4mArK?~cG&uzSbx`^r{ZsBy7NEvW1V^u z|38Y5{{L}LzY6cm<Q8?R`^&DfMf4w9Q2l3|chCP#iwzaq zPd80b`U}SB|N7?fo5l8Di>E04W9aYvi>1Z>r&SLV{}}jIwemVk`tL#f&41m~|GNXD z3QPDK9wqr>DDgNiE{tm<_{~P3<6zl&!#6J*&f6mRbH%t7B!VXDzd6v7&fBDfeUrG3igb&2P zpS!=$2NJ$-9`Rq{&cE{c8EqtdX>Nb7b;p0P{QhXwe4UIZFG=`w)c@^$ z$sJ#|!Z^|YYee#!tK9M5-hE`B#J|KAihm4z?@^t$OZe6AQ2f`p^KWq(>{em&@efl;N`4`zn@qg8wf6nATN=p2_YbgHf z-SOWvxwt~YcYa0T&DY%V%XU8{wqFjA{J|LbrDxjQBk{lfZHoT}cm9Q@&Y3UaeH{Od z?)bO{lh#Q1Wos$^o80l8ee1;W-|IR4G4Q+YS<_qMzk3zM|8;l%dv@$yB;mV0ukhYC z-0`0U{uAq;kCsyWH@o9oE~+PvU#x#k;e#>olQ#!M|FQGy6#p&m{8#2Brb_WYME%d+ zt?u|+msAtuKbrWP+uZSaceS4(@%NMc1!LgvPb=A9!vD+p|4n!PW8S@9?7#Vp^zYs7 zjz2L!Aof4^qVm&x%N>7qVEhA;{1>?Vi-G@W+L{^?z9y&t4tM_FTwMI6gkQap?Eh_d z{4bSr3<)3HO!gme$IpJJ{SpaZcL(9Sy7xbRopSmH3158!$=}T#f3R)Ya}qw`CE|a( zJO06K?~C>CFe*R%z1;D^OBcoY6WQ|>|G>lU`ZKOxBGzAh$bSp&bH{h9dt4mCflxKbAf6$Y2Q{Aph6bkAjWd^`D$}^k0$x zV3I%G9l!2yiPt22I<-H&4c+CR^k&;r5`GHd1C8DBy9-qp%a5E{N`B8pcRZZBHc;YU z#BTq(f$7$++3CwcG-!%61XC(f|sQmFXb;obqcy6zR z4}$%8J~Ry9Y(ba+QR?F;n5q|N2rw zs6d~;How8Mk4X6SB)>NX{;yjG7m@G-e2QP7xx4&#J=<@Wgs(vHHyXQ_Kfb5m75l%= zL;2~0^z%-2$5;Dg{5Xk!ec~VVx#O2zI5|tgml&(!Z{FgL|H%JtqJ%%doJ&JA>+n;p^@4w%@{@oYf7}!V7zeri3_?y?er{A`l-)Je}$8!7+ zy6bOtsfA4?d}Y7lABduV^%hnI_AG(^e?28uB!8$Mc^&Lg`Dp>yzkxOCnWr%plz;s( z^gm^6wmAQLG}*7Wsk{6Mzm^>-#sBntrM6%c`(dSibK%9;0UwcnlgNI3&D{B${eKhv zZ({-RkCFZh-tb%_$v>Oxzo*^#zx+W~vV?z&?9bQQJ^g&oOc49;8Z1)sd!BN~zf$7$ zUnTx|od4Rm`KMg32gUaL)0lrgf;?DC ztp`!mLhD92|9NM9F18U8XqyAe;Pme+>PluR0?7kA0`I{krR~|B-9omf~NT${+Kn zd-{zoK5CVOpF#eUZ-Kl1Zhx!u5DCAG{jav}`0wft5zC(w>_4<~#~T&QW)lCV3zd(C;{$=LW_*~-O)2}4--sFzI{qAZwei|YFQqrGsvyA8RYti5_Hv_&6xBqzk z;oF4wN5R|rJNx}%iGMT9|9hbirGw0$@z-?v1M^>m{5vTB2BY9v{zDfJSCZtw{8a|JRc7N`KxM{I?!D zFiPUzjO`}|{;MAbzAEAGAbcg1i2<8Rh3l z_(qRY3DeO%{o5QLSyaLwA^+JML;hA(jeZh-ax&%L82mr#*+taf+`*K8TDZsm)ZPu^ z_~+xq-?PX){!Pl25%u2{`@f<5Hj23OpF8!!)l&Swpz$Yv4E-%#l(<#G2dVt^$M7F} z9-h=i!h5Ow^B;DP|IY&}iQ_+`YbgB(W61yG?9MAC{sWrDSp>}U?)G1z{G6X9yxE=7 zzl*#4Z5sU3Ucxt|{(pZrcl@hOJ`>w-3;l|}r@K3T+ORLh`V)_v#w!>D|JdmkcS!O- zMETcy#GU`V^Q}rt_za)L-Y}24m z=Ph3_U*i7|=`R=~{U-c&r0}?4HVuR1OMB}T3aOiu=^C=SmvJo z<@P>~?XQUTM-JfwG4MCv@ZV4gzl+Kb-*R{UC%(P4g@k{a^KXp!f8O>H(SAG3RPhhm z_}1dyJJxn#`mR%%yqT1>51Tq+)p_y&?Un;&?1w|zj|eK$6ZYTxU;kH8=zyri zA9DMz*>d&7?+fpL((${;2FFVH+tv~OL3e!d-fRDo@Gq19=zYi?U-ZnanG)Vm!nBs443D5sJ|2|WP&6e=J=MsLaJHA%mTV_f4?+G6cwiGPi0D*pQZOS=AjxBPOagl|UtgYUcZzw~6CWfI=nf94YyKiutZKWn?6 zNtEzspHcFA*SYKOx^CHTO8C0Dl>VdK`6nMcv|GZzLFw;*&7FVUo&yskd}mI7ZT}}- z|Bq)5ct^qyAiTNNo&QT;E&5HuXE1)7JO0Fvp2iY>I>kS@-5uX$dx?P(z7myR`uh85^dAy_0+rvv82FKIydmblAKNSW_5G7{{Wtu3N2ZlS^lkGRXf{l?RA623$? z(%;wa_}9LF@RWpa!v3$e|BxRbr zSlS(5;_J&@C46~m|M<$d<0tNU^>zuro#Jnnb;sXOaz;%Fzn|py-{|hYO}b<4ehELH z^yksm@9O%$;fLE_k?`lq{=C}$3p#$+_WDC5d_&Iv+WrMPeooroqW_8e@A)AAd$sld zI==M&8y=GQ@2Icxk3R;!VxwMS{fYbc1%SW4|A5Z_**W89Nc=w|{-(BmUB{28@oqB- z-1D!=so2XuT+>!+$n_;@IPtxMZKK*yJR_UYvk{=p;#*Vmux z_;+eH$&>I;ll=$AyVoDT{{DsNKlUX14`}-@==^(~e*SZb|G&+Y{HD*Hf4xVW?3M6u zkp4|={fW+h`_HfcBjKk}`Qa@(KnX&Bb^Mx~MK4PD`BeYw>sNIAJ#)V5AmLM4e>2?6 zubo4tiT1yn?N3{Oq4UqV`pf$z{>{k#^z{=ue(Tuv8zp?(XO+VIG5GK6yY*WMKZyPR z1Mczf7k_Aigl|aohrWJ5m%rgPQ;tdaXDR*l^#eM--*u-(N%(b~{@VO|9e+)+MsG{_ z_XuyCc8~w$?0MZJytRMnKJekR`TIKm$393G+yDEy{SYJn)%av@D~bOqDnIo3*E;`g zv$khR_-@qypwFMy@k0YIh~?j4!t3*wb$q|WPt23}pQQK)`ni`sV^7!pRl+xVQQ3b` zn?I}bA24L4=s(>{^6T?ob^M)EN8BdyPon&%&p*`hgA=xVEa68nUYq}>C5l%lt_8+M_F^+dQlkMcs>u090|5!-IbN_pAV5@#kJomrvUQOk%HvdYOzuYtT zi~SF8Eg}7D^PhD5ybA})N&Nri{G-jE(ea0qTV0Uw&y)W2`71j9?3S*g{STq^^K0`b zbo|uym!?Skms9;2(B@C*_~vh{D<$ExiN8L7LdRzgs$W&Yo1Fi&`4c++;Hp1F{<#0N z2g-ka{(+94mGi3Tznp)c?B|@Ef7yQ9biSdiQ+~GJwoPgN!rwBU?RVSW6%RY{Y`=4p zh{FJP{E?<*E=qV0`!Cx32R;7Pnm+cEgvb52eV{*I5BKt8PJQoE3E!E@e|`L1=ieiv z{!t0PnBuRGf9v?Ezn#8O!hc8guRi{*<4?^wVM=)1KRf{O*T=7Q{AcrO)ROQf;PKMO zuXX$_ucwRr8xuaLjbH2d<5QZnmH1oxm+y!D>+SJVC6A7Ovt?k2gfB|-5A^YC9e+#B z(xWB(dMdy4@oOD_Ecq?be}0ef`uMeu?|RcIvHgC5(%&B={x4pP7uyeWsQfk_cF%uR z7cHMF#eX^By)p1BHk5xx!nfe~$G|6g7uT2YC8+!iji0OZ=W>U`^V=Uf5BQeqZRq@z zyQ%%p&kduE^8}%SoJWI4#NolS*70z7){9X$bf}DV_G}6sK|Tx*dI=kWzd;=F&&o*Y zotg$malrxYCLZGi|EZH{>DdE@AtQ6(G%7f87Y^I8Pyb5JNrzLjtP=#)Q9UvePA*O! zgQsrtfjyb2_l?xfr*a^zbA9;$sI0WKTj5MII9v`6C{3{s@S(>zL!lxcyVGafh_P8I z<1*+F$688F_PIN`{5o_79H~~F>1*k>o~B!Mu5YArjdqO&HE-D_bSPB*lhgpLeU?;L zo@>$G)Xs$(nd~_0aAdM|Bod^JjD-`@P`|lN;NYs>smWP6DL{{(b;}u^Jqk}mx>4i{ z$CGKtj*SSV&4_WyWANnN!bW*e7OIF&v$M2SKcp=*KRyIDQeEvu&S^P#rn`NhV{YCU z>j|Va9Li*$#by{ciD*q7ZdMO?(%u}Onvff*f;0x<`ANX%R!25s>UW{kGak!=X@vo%#m#6xh&mSqQ$V8l< zRcH6bArihKjX$#fqv7ZE`{-T?-_1L{|-c*pka?%+kKexZufc}lkvH7>{+I0c&ze?9%0Pwzi;J@3N@haep>-foI zFx?78=%11kUs~6}4m;O_{gvsi=^xL(2z<_8MYq3;QK6xIteAtD`g0_F*`?ulFO9=7j>8Abm1`~GuhsCp4>{vFoc_{j9KVi` ze+`zO)}`z>P)GHnFpk67m8RkRj|lwx)PKVIH~Yxx_gCrr9+mKEn*MxI@E3h=_m}Vw zXm}n+WVtz9I`*TQ68;?;zhe2hAC7SxmfV_mNy5k5j;GQe*W--i@TmuW94X=bR{4nu zpzz#}!8i_$n+}Wi-{bC)p44 z4@AMg`tPCZB>XFsevIdNFwB?3<5k|gLBb!_@H~%%aU51UcNE8eBJB49^*`ABX&wpV zIIMkg0`^}-;7i;UuD@vIM@G`{IuhPP<+sg$oSc7Vez0|igpa54i}7r~y8qDky0$*a zf57v5e1{C9*g6#t#xXth)G%tkw0a%*|0Q()AJ6Xz2zb5zAJhEi2IYzrDcW6Yf8hBu zo+Dtl8^igt-kJZN-|xCd@}G{32l)#XGCIHJj^8o)bKHP2!vFgj@J8X-_`9o3OOW{E z`7ME?(0@tuP+5N*ay(u#5M^>^fv zWBVle*JJrrG&bJM?7ai<5&rioh`&$3>*-(NuOmN7{$EvCe`*wq&HrE<&q*o$ngQM? z;C24j|McZ8lKt(%_!p1O|3S}%s#5$90p2Iz_4K*=e<*_vy^@_ zGl0K<*X{3-VHq_f`}+~{pRZIT|3V;^^YYbyVpX|9g-Uv~{A)Z6UtJZ6*Y)3XUW|BYAWOp(ej1NJZS33#3Vb)z1u1^gr0 zKZh~>%0%+l@&DZ0=PxP!@cba(S0PPvy6O7=#P|76p#LJe{_*^vfPmNaU+C7gZ%X$6 zFW`-@Bl+v{Uw;0UXF>jm{Ez1cc?7(!{|13#dnNnF^MiZ>UY9?0ZKt!6{CIv&;J9I& zoulHw`qTNRUtjfpDgCYUbApk0oqxt{ogS9>@ zzm6Z6_-L+#PXfIE>$sTmU)sNNt0cd*|KZ=U`Bz)Cr?SK!_kZ*J8;RHL=a2ix?vU&U z_b&_l7m3&PU(`5#9OREEzqbQ_U&TTZ@#lQZbTZ#P@rqP`;r=;+!m;)DN=GBa;4c|AByj55-7nU|7cvX_Ee} z{Rhg1zK*89C%?Q6)4#Ode~kMNcwF!tkB@f^t_JuU8PEOSxPISLE|P!fiIV@((yecm zFGwn=Jca#l)ePSohwQQ2WB_`fiy>JceqjWHXI$jZuSZ^A4G=g?|p^=nBP)3fjH;t>gNEQZbMrPxq_9!Rq0WvOStI(uFuXN3-Z-QX zTbU!^gJC#OA2~u!Ia<$PcO4vEDlRU;EZx`ofXBDGB&qLBnxEtSM!h$5Jdx$V&p#-v z(WA~K82?K+tI4v3`XDs@=y;nD|6u)5c-8GUzkvE-{qH}c3iN(dFYvgC{{y8T zAJd5zGJSf#W=?~~PWqg_8ARVp>$lAh3rL^%_!~9f;iS*xg5~4^jbth{8Kxu5mZgUq$rilKmu- ze)xP>^E0KNa+VZsf5P?GdsxO4)c<}>KX-xsL**X&r?L7 z*9Y=C^#l#C|Jzf0@W_xc8<4(Fqkk?6{i`*+{xAC#9Gb~;)6f2PafbIlIdk?4CLA_(pO;iY{5V$rWmFsA=c$pt^7{j&hO)?C?kD??B|qC2hriwZF3!(QFvvc=->Z2J%NHs7 zygoPhY5wGAy-+lawXbjJi}{Pwm&?zp;Q!*qNrbC@)55Ux*5Sf$B7F-Oto zapB;>{LwcF#`L$;EcB{V|JkIU3D2kxdHrJW^Ze0IBKjOojxT%`>942qGmp}D?j-t< z&gb!enLqk0H>bm{EhBLLc!EBEC9b`q&*N5JD*t2Ik5+vdWnO-=H47IXfl$SxNbe$8G)OALf@n^SOWV%GadwVH}kYe)g}v&7c0kBV*C6aLJ!1 zE@JubDWmXg|MjVU)crRdA4UxR@lXUg{5WCM3z)uJ$bJS>{kxp)hvqe~{U_=Kwg2_^ z@l#ekjPe_r{M9IZb@_F?M&7ufJ&130aURmo*645I@{{#X>8s;4at4>r{CwH|nGYa+ zuSUON6!~>L)8Q~!oPVh>`{U_qu&Tm!Io(TBASe#)sP>eN&^qKMMW- zT&crLHhlW7S)Jin|0Xok==Y{^RbJoer}mK%D}!n8UwmQxWz@e%1wYCkeUn&ncw%p7oPU!Lpz>i9)n7ZJ)bFw6*UZP*R{z^S zQU7}VzNncJME5^q(Pz0iY<$mhod1=uTa$lwl=?jueZLaR;BeElx;Q^CVL#E|OZD#- zETp5eUr$49!2zb&rl!o`fZc)S1kHu)<#?6GxL>qCL#T~M89pV z0oI$ZiN254*9MOk%zn5WOd9b052&9*q@Mv~Kdqzq53%Ie?I-zxgiDhBbd2IZ#G`)5pvrt_Ib|Cir-jg;uWM*R=Gzaj6lmT&sR^9Jwjr=9fK|4Al8 z*6YVu^eNd44v%EN(;n?JNcMR>+5e#^l#|FDVehxX6$ zQu`tneU_WU8ei=@jPjq>zq!*~V7?567oFl|Of~|3mv%nACoWMW5wv zNCZ0_PVb2FpC$Q|=zPn;QObu{^h>j#6n`k|TeH^NXg}*U`ZHIcbzJiy?ay$9zN2DdY#q!hmBXV z3qlFAw_>RUX7xXH%xlP;jPX78H)7%B!4fmpP3J-5B2^r%{?P( zp}<2wIqbRr-*3@=E|C4C68+z!YNezb!FH*uU&Hl)nVYe=C)5qqKj`pv&-}gqb ze;v5 zAB@sI3eTM(vi$3kmcJ^Uf4oMiLWL51TK>vd0)5Yzzi9ovpZfpR_zPFEOw|zuc=(Po`g=$C4 zofNkR<*!Wi=Mw#CQSw(T`rJRTpW5-AigbSm(>I>Wf3p8a!G7@a(Ec?hl@GV5$I<_C z{-E&ty3Gz)^vVBUK=xyD{?hzIPjt%G8~uIpOF!4g@^f@?9-p{# zGSbf``8of-5QV;u*T@-OdN6>(2X8z%1=H80^nH@jcXgEXEv6IH{%@xJ|HICq%TWJ@ zCjWlw-_ZTrSoE`rK8FuA*n#^`B{U@YSCjk$qu9UJeWXci7)+PL_mBE-Li)`#`tL=l zA7jxEb#SOMF!`Gb@1cIYq@T*asDk+&8sFjb2fQ@CW0(;lYY)Q9)*Vf|6m!yN`&q^P z^V;}wZ2IwG{Lbzww*l!VY2|<7au|Py^53BSzx=$9vl#}D_{T#}IJ{|T{WmT8q@U50 zzKf&yS0y4ShClFy|7(0O;^8w$f4wGu(kk^K?;mDT|3EDI-0$3$lHq7(t$JubZOMK* zQ~495{uAEcDfpGDUt-bM-*@=C*(R&}(Z)~DHdFHJ<&Tcn)M1wo{CwA~C0|DR`?dW0 zX_WHE%fKk%TzWo(!p|mWlt%q{NI%CYeZP)U{*;VDmmhPxj^k;*e&IWqUss9W^Z4V0 zZcw-Mfcf#%e%VFo6>i;(3WZFU!^J;M!2N$(@)u11&=P*4Dk7er!}|g7TRmjD9G3Ux z4wC3UJCl(_pZ3Y+b*}tY51B59J#H9*`{zc;KOOR~x)gn0KUh%ulQL%)mFTZu7*0P( zequrC_g}c_M~VKhrHXzWbtrpHwf?Z6`XBn-nIwt+0(*U)G8|8GKZ{{O>HoR&THL=W zLjTFsf6nszzEkoSR6mtE9`{T1zoYtv>GSwZ(s|*{q>tA`oR~&Ga#@68&d1`{8p0%sI+W38xzRkLhxF zPp6eQKO{mw|7h|veGWqu!+$Yd4)4$Lu9xUs!Rnrfxl<3zZ`Yb>1zfn;8?>BFl zXg}+zd|>))HwC5N=&v}RB!8#rD$Y!w=V29;{>+X~kCNygBL7*ZUr_&~&nGKH{cqVE zp1yu+XK)xw(ePh-`(@RA^{2v?U!Qtvd z|6{7Y@>Bl_=Nlpu5ing2_uTgNCW-!SqX|m;ikR=`ul>$+IXsiL&YHhL)C`t?Fw>{= z7rj?VKXb*zN|OA$Y5bbcXY^ko{T6*Du9oNrsDH`aN`A=|(oc9IYq3PXE$N5PcQk4J zMM2Z|u}XEvN%ZG%{~?{f7`#II#p7DNDbe5bkVlo|I%@?f7ZK~#$RH|uhV}kbtCSdW$TCO=OigXc;2x2asJ8&oqz7K)>R5Y{~JZi z;Qrf<_0268&@3f6MzidGkqMpWoQN zX-jMTn%S~`{viGE`CkDG($3t{Ec=ox^ zv41Zjee2dxU$8&U{Y$avn@pI()}!A%D(U}FGxb4`{C-|X5{te^qyPHyxw|C!za#p* zZx+vAibdZ?^f~;XNndOI0<&F1`acw9{3sTE4-w+f+;bVvpSJbS{=*)!A3lG}PwUI_ zOP}RUS=8)pCw;chom4&tc>a7o>HCN^c9=HNl)G`y2e!Kb&9s%%`5`l(l|}*>d?)Vw!rw?OiXe z4~j)Uo(WNS>eC086oUCh{FvoGPyQR9FX6vJ`q$)E{!^k~hRO#%e*r*;9KJpD*a?aLT)Tf$X_WW(<$8+wuoN6JT@K?mR6H%w&w%;a zconj=18IGS8du@+CcpFtmrd_4(cki3IDIo=fc1d;nYmr0z6$+ixjF3c?MiX{csPyU z*z(i(J{bUEAFJtZ`?+t~b?6^N*ypL$iayJ4)8}z&+V5R`75dA1;jmTp*TnIIqPrD_So(5%hOL`HYvHz8c;9>VNff74MPguP6O* z`UaL!JBZdB<<~x+^;H-w(LbQmUvXvh&ve`LyF~wml}bM>Kc_2~3;C75PM^08iT<(I zqtRF8Xnyto?Z0>KmFQo1OQz4`)A^;}{qs$E68&wUAK#ZD`{8yL_jBf#e%<=N;{F#A z_IXq*Ke^oWvcF8Bie>08+dYRlxfOBzAcDT}w!*OeGkp%D$6Nsnb6{2^BKa z#!yp_zI}u-`&{!068+tfzYN-6_J2eFf#){V2l^51i(^3Fvx(&owU0Redbby|_m*_V zf$fH$P5$BB^^*LJry7R&4bu-O)twpNy8|A~(S{Wq9?r2fsfiWz~?)TzPB7Q$+4&NqPh_f?u{^ZVC<{X4HD>L+nN zlYVoF!Rg%pDbGNueZ3Ck_iv6fegYAlY@BLw|)ZbE8vUia`^QdXKP9HPfu0|bDvCq zJt#UbANt2WEMwi#==W}T{|gfRw~`dXlc4-HC4VTNr9iq!r|7i3*kC!&^=8NfaSi5nBz7qY_s}v#-OMajobfLfbjkJXl{fD6c2QOa+A<|)-xNI_+WVOj{gL1w;uQ#^UvT|j=PmQ4M1K;|_m*zEe;+J9<9&(#8cJW|Dw%$M?XyPnO5aQLf0?Ny z^8YXCC!X8?s6@Xn)8DVk=R=8dJ?1M>9P(gj)h62whi4w|Q%9oT4E%q*%ma!(o>S$l zC;cr{`5dSSTPwiL7t`hNnO}BPkmzq8s}Mn&AA{#eIq9<>$8|t7`m2j9&64O3K>r*r zp1*RX^xunna)Lzv2&}KOuB`r6fb&P4es0YfQ1*d+`iqyhZu&aHK095#vcE(h+oyPW zsojg`tVsGXpq*;n>hlQtWjDW>Akn`>`O9M}``77n{T28R{5ZJz;&kQkql&X{l<3!` z`q5Wg(Z}M>DgRwS68(o@$KuuXoSP~@i2KBfz0!Hf0I;r*3vd|RU5 zxPkiKTUptsL?6pfPv@(wTYVi#zweBCXC(SQx5be6iddK3Fzo ztwbODH}K+fE%BTlr~R=0v7f{0>rkIZ=%>Vv9zRL+v3~R-)hcVTA~U(GS(XUsuYX|D0WA@>>#p z?4Q9aNb6bL`f1$!pJ!Gq>nPFp4^i~Z=1MHA4}>>gOqau(x>YYF(Z~KD>+0t& zf2{Ihv%mFHiT-y~eg@_!{p0)wr~b=B`HZwZ6^j~p^Tl#=c=Y%m)g}4~j}W4zlYYoP zH$%T4%Z_0*`rV)L7M18@{}o2la~TerayeeA!&%e-5qudaXFKCvGQZoZf<|DXBn)Js6WBF``3`9qUHKY@>c z{xm23kbVL%Eas+vrr+q+o{c2>qo%4a0?(@YMc04gHBh#;k6wQ<{fieTJuT7S4*gen z@%}hE{qptPn4Of9~s{^k1w-c==N~pY>PAXVS&?JNED4<)wZ@*M2_e z>*I^%=CIH1%I&1_uMIT5Rv1c6ym(ww4~^3*e$nW^x9YpO68#UiD?}k9eEgc}Merd8 zEH{UHveFMh|7XPbU2*VlJ%^Rf5z6Nfn?#4lYa_<-iqHoXd|dm1*Wi3C`}`O#f7W6D z-dAA%yzd2{k3t>Hfg2TpP|ZjLO$sSk67Jo7S45vz%E{6wd?t4q3pG@mlnLekd zf2Bsh#9UYUQz~r2@zV(TPcBvR+w&-B9iR6lML$UTOe}HMm44Z;c2||?2T4CnpV!%$ zs|rScEMfSVuXYr)_?w9Br zn*2Umr{i5+F!~E`Z9GY$-{hrm`MICNe5GLYFRZ!qDT%&E(+{uH3F`FC^>J?Y|8LrV zIDaET|IM~2`FS21uXFUTQSuKsqvor{m)LKVR-ambIbU(uWM{SB68&?_6(~saa(G^X zcdeqIP5HM-iEP*OU3B?ZoSzmUze(xK>)P#gg6kCh^+X@#hbfQt#d34_>LW=wzb=CQ zP|`osH>e&9>hz7duJjAvd=0K|iJ)KcRV5PlZ*Y0U&DS*gG4%h^`0cpAQUv{{)+_qF zzQxu*(f6|apno^}|EukpnG*fEuM>S*-@@x;{Tr10`L)ma$3MjVQzGP_NBXzZmDY)S zH!Ax1&0jYjThc#+md}UeO@OUEFk>`FLdxo^m|hO z9@FP_tp3+E`70;Ixs^ZPAKi`X8zc1JF+-)VO`qonzM;{NQNC^8>J|Nm84rZh=XHGM z=7Q1R@<80RlKi(*{lfC|I=f&2>6f`S5%-sg&`*H;ADce)1NpaT@|$yA^?%{5+J8y( zj}v{{|D^N1%x#Lkoxdudb1?~E8*@R26qg_{R<-W z^9GkcL_bLD-2HDV`R(#KhJU!J!qYV+`lBd)c|M@M4sN?f-%N6?-;3qFjO(u=)+&BSA8PUe~8kT*GI7(1&RJB(tn|NziawVoz`=ZM1Kj&LMnL4hIUi@Yz%CGNV?1BC(U%SFaklLrFwmvYw^grp^zmi0M z66hz8QE>X~7jhJ)uYGVAwtthzp1FO!U@XWFiDj2>)V@}|1(D~%8^!=}ZBtr$PHtXT zSY8FkE9d2mOU^UzH%Gt;!6qLMoRyY#Yf1_nQ9J^cgr(?@%?I$1V3~B@M8^rm!{9$y zca@uyY>vy!9iEojBq<9H8OF1ZfkS8!6`mc;{~>ApV*PN~X8y6$QvZe*uz`bkezCf6 z{svwRRbZH_RKJ$DsA^|;6IH%&`f~Vb$GCZr|(dezQ!gM@_GZE&zZq5UX`w5A!7b{3iSV*$JG2ui~-Aa5q>-ALj=SAXT2!x8^)HBs}@Q0 zCm{W=3QnKta`;|O?T@7NoelIoP(It&Lvs4+7Vzb$_#fAP3r zU~@4eINmT$^#KWladMVx*`P_!N%FVwgZ-eg=?dgie*T`r)$?vkl<52Jf-nB%uOKa^ zpx*}=RYO=uY~%`r1{BC`)BaPnRzj-3kKATmAbb)yZoCj`d7jFL?Uk;bu|K&zWKWjn%{*xhT z{L^Lq>+7!BE}8z9M{YO^`72`n`Or*||5TiT;}%Z+G^zwhut%d#DJu><4&#OYeZ@;r zX~onHquQn+lgkwFn#_%RN^WgrS6$CRiZx~ z===W<=>IagLTGf zkRi@L@=t*IHE{EMAtSG(VcnrD684MpCx=-pnqMvP?+X4CUfz$CUw7foaQm(%cwZ_1zh<3oDDhuE zLdou_sQBal{}TVen5zuDuav*pv+olU|FbYYXI)bje;i+Q^5^sq{sr@6;O6-z{&VpL z-q9}BJBPm~jr2?W{{P+5HoRsvxzMG;D zSgHIjoImT-znCk40{}w8LjsIl+|5x_+?wRini2Skt0j}Ty#UIz%{D?#L}8@xPDK-(N=6KT+fVF|_00 zzS8)AHmA{Li9hx~;N^Kx<^TV$_;((-H(TP5{Rh@X?fPi($9@F7uQdLBIX1=nU>?7xU%twQA)}iT?^Nf1~g}MCtE62K?a0`NUVE z{||fj7ya*hDE|J#a{lWK9pg@Z(bn7Qdf<3-_~_JjZKU|)`gy#3j`___|3jajeWm<& z_B_}{;=kl3#XoRfw!gI6@E-eV%0iDn+^m12H2jZul#AodVc{PtZVwsw0}k2 zFxnq!_$ly@DE~K&S6_H#E9G6KUw|9j#8Xcxzu!#7W-oRH%0A50Wp zQ2cTJxHJB9uU7nmQ^Eg+yJB^vf5QhILwHBIm@kL7-rc^C#J{>v5%4Tl{C@}flK?thq_xThB^ERb_o&QzP-{5hqPuYEi{SPIsKD9~W-}64jKk)y| ze}A`+Mf?AO(%*Z#ia)M@aN2)E&HsE1;_tKvC4J;y);otM%DybFZ^H2l>!SUC3p$Pw z$yq&Nz8p4q{`c1;{p0usUOa#2|BHXg;giox{BisPFP`7?f5o564-U)!vZpqT-z6F} zzUKX2&1V?;A{3(s45RzeK9(H*#mWx^kH@+=TvcEF55yB$HCv9PyWqJuv?e(=X}Ec$HAg^W&(dGHPprH2XXwvJRCYdpdjNP zz6A+PE+XW3bNJH1jT5E#FNgNOr%0SJ<5SB2v`(1y&LOtT@#1)~AFiH8{^fXcxa0E* zF9QG8{3XX9*C+d6e?Xqs%%OLy@<;9UC-L#t{C;d7;>GbYj5Kk6LmEu7u;+B7jmu0P zKRlzoIXnkuIOy|AVJaz3)WFFWQRhG4BnO!h%%V^PN2LyjgA|(d$w*Je39OF!sqIZQ z#Wgi8BQ-fMBRwy*NsgN4nm1M#$AwWC#o-z0BQqUST_)z@i3On<9k~;8d!>%WXD|W9 zp^D6`ydIg|Q-^0;(>6wmx`T-wJR4>##3~ymp=1vqnVRch2lGXeGlu8p+VgyK;YlZa z0#SFc8;j4?43Tt^7tFjtRpmCpqZ@jsCTHcOKr-;dZaKrVN5NE=^b~VsdR~(|dvpd_ zhL24(VGeS7CQRT-#ZxV;ceu%-b;bp98!hrmNe5~2l1GK&p`~~7@QjSq9Oo3GjI87_ zsVQUCOqcei`nSsjP_&w#qoSrvGVCujqr$Fje{Co)%@5w21onRs=C=%2bCB7t{Z+!- z{Xf+S{~yQUuszOK7&G{X>2UtLX~P%SLH>(4KcX|X|Nd3yFBCQk+qi}`!|5-8DZ|VQ zL(c#H+%ksmkE$9VyGnbu#!;Bk2#kEh3Wz z|C)sUC(O@IB>&S~C&wS$6zk&n^ZdzZ>CbjgFeB-H<3X688L_`~*+pPSZ3`P%zZHg$ zS>9A2;I#LKiQ)f016@zf_soYwoqzl8Ys*OdKY0WYl?p}hp9OL`>BqMY|9@H2@c&`+ zN3qOvoNbeuHXLiFv{30zPcm`FpglV=4d*7>6#%Wr$Z|Y_xs_OZVbPZ(@*EE9Kq6{c zM`Z;k66JA?o0c&gCL&Vxo0h`Ac&!Ik%GP{F63;GgS-%{<^U|zYQvV8;uXqJkE4%u? zDrcE5hZ7&a@QlRYDqn%W=M}{t`w_0RoW-)1FXqc(+n!nPNc@uqD}+h=KkEFOVF3&M zo8~y!pBL_f*xw6&tq*?VJskFaWpBA7z1? zFXqePH?@yHF2#S%WQFh-lz(^N4>$8SAuaIci}`YxKL3ZH#6Lj%g9YW^75Kx={Jkg( z+M(|1MtsPgVJc z^E;jV4b9J75At}xuk&4#VBHUC?-jMk@!fB(dvuD#|EdNG!TZnX`~xtA=&WbCU)R$V z@;}_Hf3q3bAKZL#ygBUf#e?GhTR|FM=Y3t!kHo#8*w0}4EJNc~;qqjdpbr>-=J(O~ z|2OJ*6)FBl#w&#XPi23Kf5^}0^49#OJe*?yb40-Vd#&@hYO5%Tx>@RR_!QyXjg!G4-8a# z{DWN~f5FZCecizJ;AZ|__>DJT%$LI@?cNgS7at=2<^}ik4+3qxZT{VXKioEd`0a(8 zFXqc(`Iq-qm-PRBoRozd^y}+;c_R5|4iyQ@W-UapzH}m%=L4JUn`FnbU z{lU!_^W|`V;S)6_{y(w((fJS2_FBR+$ZszYxgZRSD{JroSZ@!o>hZEl{E6y*jK>WS2 z_yg@A^5Fb868OVy^M~JFxcOqf93C!S{7EVPjflTL7Jr}}L>|n46!3@J<`2KUaP!4{ zIV^PfF>!vsF-0MQvG@b+Ao5`T>A)Xun?L;a!p#@+ozwze& z58tYi2Ht!zUk;l+Rehku-`d{-K)i1T?qlKfe|R2;|8gk<@3}3ZKg6-VbZ@Qj|D*A* z_Vl%4`Ui1-16~iS_|Jg$j>O;mrIdlU&M(@0M~*j#l~2AR&TnqO<=-`mKaOvT{MSPJ z3hpb7|Ce1-@+AF_y-7vis4MfI4(&sy|9=45o7mpvXKatYh2a0e%@@a;!~2${isvUS zV*lfFRsZSnx9#r(@HgRR`!jX}FSyzM{O}uZzL+nErB7`BPl~^v@}Gy+x8c8{{;OYQ zm~dZd`nTECMLfS~!i!2`{{^LgTwhn%2+c3$_P1HHoPjrwC-|$te*SR(Sv)*_qQ(Eo zLHo{1@n1mwKfb>ef1j2ALhV2O{DTQl#BkbUxV>7qJw)TbssAjo|K&32-&bGp$Mtni z{WpUCPvjGK<B7tBJ%viRvH!7s~z>|4{z} z+rRH1oU;ix+kX&#~s{5u1ExNZLM zI|w)P4|ak7;pU6^a=5d~C(|YV&4wt1c}T@yA7^?N2(a!k%(?!5sCySUFQzwse0JMv zyKgsgtC7@})Q6I8GDt;eBT0(sUZhqxAq+yk$cl(u21$}ELI{H-3M)mD`lyimN=U;0 zc|PZPe`e{cmSqXP?iUxt#a&oafx1b58jB;&S8$y-L+AHWh1M+d}T@Wv5_5R%>%YPU8cV0CASYPE8Wf|<7&^zvSRDUr9z7!R ze4W(!ru32*IDaCT|4JqQ68a((}@+eH3>^(}jgUtixcpg~w3as1z4 zUmkfrMrwYO`ImWJUH>XRfAZ_xa8+s=y8zpJLG=N%(D{Wp*>SoYQr*#>)*hxT{b z279bOaevG<*ux=S&@1ZJyf7;M4pRPjR#5-_@^{eTVfnt?FMR#Jc0Vruxr@d|t}k|^ z{Ba&q@o%L37FGUvk5YS=Jjy@ov1$hUboocWljPyRH|V|HW>1Ua|A2Ao4ZDYmpVyZJ z^)IKH;@4* zzem?LT_b+GPHoz6#E%~}5om*HIk!;!2kG|xd_HS(9?jnzK#E1qk#j<+m`^!SmJ7Rl zMGQmiF+8ycMKCDh1>I1&MQ&95pUpQ6dp=^Jw`Cq0A)q`j%?|Mod{yj$#;AO&?)v|A z`OhyZz9UNhJpb*GeUo#k`p(|wzwO^@`sq(|-^TAX)AHxJZ-?%~fp6%a)&0Lb=D$Gp zqlfiXTJf!N51@dManxf&ZOL)bp^1RCoRVh#z$K)%6Bb{AKLxuO3SA zuk-Dz9EqRvAUjalS0VnBy3u>o4#oI9`a$X~-wqV~cj<5&+jo=InsVSjHUF2DZOk94 z^v{rUBEdH(&&#nx{Ifn){JSOcp1Pg>555uqqla~TK1%)xO8+FuAMraG#@~9`-sKP6 z0Cd~h1HRz><@EjQrcwLH+K8u!exllecpsFp?9E1ue`1k#or0>L;sJSOY!&4HYSOEqaot}NO#b+R4=ka{Fam#$?4Jh zua|#c-CeIArGJ_FFE##yFzAKdBT@duCY!|Cyly7;R{qw@c2H2!Hl zlx;lxk&>q&{Xp;y%Kbui;J>}d%iqsg-N%3EJ>);C#luBW`F{z`e>o5P@jDfaKd$`M z`LFx+l`lofKh^)OPwfvG|J+;u*Stbv|ChAMof);irpfKkN3+xG3k>N8Bi%u{U%(FW z@BC2oMb0x(cm4n18zJv(y83jEANddEPpbdjz>nX_Fn(`?ir>u7to(WB>bW;Yl|Kt7 zlm72AeEwyh4e$-B^FLhLU*(lQ;Qx}Fk2)?Y{_}@Z{AUID&oKVVuPOe~Z$&(yz>Vv3 zYVLY1s{Z5sMckynzQouNt$#ZI>GqH8OM`eo_4I$~gdv4d{4XZ{y*daY zMwh>O{NMik^WjnP7qb5U>&I_=ks1G`FDd!Qr9YVvh1|p+YCpyCJGB&E=zpU*RQ?6x zcQTBBlC-~!hSBU(H+fO5Z-9r8c=W$2Hh z98^!0wg38hWXUhYf0_EXO)uiVK_z3l#P3M_5FaS_OW7g*boo~)GyYf9-<^o!|M!WM z|JKlo6j@(oe5t-C(HWrcOZk^jFpS4(Uc#gG)#p~G_o*Fj(9nZNl*fZTvd4woL91VT z?0He~cj`*df9kJqbzjytqWQ=E@rb{KSmu3Kn19}Hpb-zf5G~*ct+M>zGx?*1QSncu_`Qwf(f*B# zU)tY@Kd%3Sb};w`?f!VdXHoGVe>3rsq&`SRW zOZV6E&Qfp{FlVke>(q*C$6p(6@M2`@sIdRD;WRVGH&9&6XqY~9{3-6 z*s0Yb<9|uTkMYmKZ!5#twO=fjq%e;$$ikN8U~7=LX^e`nj?>z@~X zp1w9J{wrTq{GxV>WhBmK>~15zIX-=_L(x*h)Oh7HT2;>K=YQ8D-5-mJe})!+=|0A9mlJnFP`lr)BXFs|%D*lDkXJd!)@6rm!e`s~Zw=L(lBVN7yTW$U`J}UlU!v8hW z|1SKoV*I}<<3Qz=e?2DN%jfr&k^ej?e-M9Z1>?_=^mpFed--?eg=5Z(ihsaTmHyb@ zrSPYU@!wCzq0Fbl`iFD?{qu#@tD@pBcs(3{X$9k7F7s zbH(^a{N7#aJ@Bj3!%xY%C@TH}E&kF9#=lzlH=o)&|L@-O#=@xh*RNFhFU|ii731If zUbX+s*Y_TO_vZ&h_P?h{{g3!dD;WR!6)JwWob-Pw`@SAg{I7U1tbc{272|)ZP( zzTcVN4?d6Y06@Q6TFj|V?Vpa?`Hg#uf9}&$ z*G0uYAVIcY)%^L#!at(pUo7@!c70XO;k!lesQiy`#0!e&z8`$iby4v7R>dnCjM!dZ$4g?^N1gI0B+lG{GL2eB((JD z*K#=iQjz~Q8Gl^3Qayn93;&Ad|I)8ix>@&x;~#{4Sx>!Jpqi6q?5~y$|L#93e`@OX z7axtFX{&RxQ|F)NPzeNi!Oq_~oYuWnsczg$FoWewdF#MX{((MGJUjAyC-(xyzniD{ zVmsF$4(y|bxGmb^gy>js4HP_iGvKG5?ACBK|T2xIpKgdu#V7`)IaLW@mn=98&mc5vj2e#v{zoyaZ&i%Oj7T<<=|ucW%j_w_RH*n zkL{P)?<>BZZy&rO3g0g`D16?uVEX#?+~w3zVL7;~Y8mWbYOSuFwPepr9`^nG47(Nl z85*-NKcoGw$j3Rz4Yb;!w|^Cd&$&l^!TmKF--0=UuS#vo2eplP?FC;Jr7!tnxi;uG z`@?`gm+q5~bHD|foHL|m6h5n``ht10s`vQ((;UNJpVyb>n^`W_2ecm!`PNO;HHWb~ zx(&Tgb^+Fhbf5f@-PL{j6WU9Ie4GO=(8I5OZBrD!se;dHsqzQgDFoXwD;tFIIGw}S z^W@r?UBh6%i1_1qbcH_i{IO`>x|LD*-kz&Cw69h8*p4AszQB&b=}PNI$-|z(rQhsf z*I?6c_ONfT=r{W~2f2Z^zvcbhD15_asV}(sDt+Vd*_|nV^1$cNZ}z}v(Qo#^=XNCg ze={Ng0 z2V9_YJ3i1e3Lo3=vUA05nC*0f_+t038&==2$OE4>g09H}pG&{l$2s5vz2wBr>!a{Z zx>|j~{798And0*(ZuY=uUQ*v+4}2E=W*_H(3-q4}KRq6WZ&hFQ1?zT&kL^rzXw?DQ z0VM~h{F?l?j=|n;r>)CMKui3ug zoAzwq=c4eQ~I5{{Qgh-!RqT}{{t83d51l9WR(0)o}%7$k5T2bj&CD>fZ8KSzXhBn zc~0dLDu~FxMd``cF8yYI4E584&(l?;11?ar(z2JM@b#qjJ3D7?boyR-INc23)6;Xb zrf+C(*}u{HO7d|IxIiy|teD!*%x09zR`LUg8uzeMGzE<+^ss{T-)ZR;_cay4yL4Nb8l7E_3 zH7xRR4!A(CJFfG&QTTGksV|tP2Jr>TXHqqmi+en+$0U#T0f({slG=wUe4Pjj`CeLk zEK_{1+1n!1m-~eLUhH7~qmYyX<#mVrJ72=j`1G9AFY6lBZj@jH{S|9NO@n=$L;VT* zXT!ViB79}mex&O?H{jmxP2L_W?zZlD*o>|QHM zexs=U=LYbZV&?^1pcR(iTO>d7aSpgZ&#QeCub(WFzE^Vl^hrV?>Fez;d>aWL`8Wq$ zppPzV%l74E@GTj$OO|w?Vu-Z>`ZrVN zg{)z!{(y$imffN8%RrKbejZs`4Fi_Xe;D^>88=hE&b<$)<)r}0t4t5D6WZt3C#Dg;^Hm_N_h=*f zP2;=Hsnpkz{TB?`hXOeU6#Fk&@`05y?_ocy`UUvzNs{hZ7h77b0d9q;o`0WNxgt>~ zJG)Hz@>&7${kXqBgqtD0YQT{lZoj1GQ6yZ)0g%WSxL%ukal@)y{&`AoFn^OXo#gj1 zVHEjU^;G_V+(32t-S(OKj;-NaA-J&~SH}T7dic!CCtc6wi$1@xXBy>+0KQ~~_%4+7 zXs(9u2U+)89zGh@PC4Lg^w=G5a{iqv@LzmDU?-Ssb^Hwd|-cWzZ)ziMgquRVzL?-P0o?Y|81T?M=8?MhCFXZP<)e%RMR$ARZ` z`SmpmQ|UWHlV7igss0GI|D?Ty?}F;-y9ecqCO_DFz}_NGex?8g&0hSq$>|IHX#c%Q z`PW)Yp&~y+&LIFUP#xbm*j5F{4t9BwQD8B(>Kf>oXI0lV{$@!qxfzkQHd|pLh zNj$pUDx$x5i|F4+d(XeXl`Ah^+Pm#c#|B)q5G@oA-*~(8`ylze%{1 zi>CkS&@Y4o=i~)9^M*{-xI=_AIG>VoV_MfpNmN@z8?S9~p*U|*xz_)eY zF>f)x^%}n2l)lMj{{A@TL7Cy}`Fgbcp1^t?kt=Ydfys|NjaKbg%L(cq>_-~&{Lu!g zLS+9QFGGC&M9)k)_W|)=B=~fDZrlfLjUPhWY&~`r*T1FO`gZGfsy_%H&Tq31j+P(y zkJwqM|5O}df1N|r^JwYyeM89==Y?cizC65o%h^Hsp?rCF3h5v9FM-dH_)zYF>iC9> z-7W0y1-3Cz+BM~se|q}Ps`7Q8AU>q;#wSRAEi0w*xf$Yvy$Z%Pfv3@tRd{zKoQtqllb!YbtrZ39BG1UJx*ZcbC9G02<;>y2?Vh@)5c<=QG*GR*654Epc&&TIg5MOdX;WLLF{0!qWHGIX~{(IBMXUjh4C|5w^^q~Hs{Nw%ComxOa51TRRJ3)QOlJC7QcF*p*aQdR%k8t3S*U|*}0_nTs zsmm^8e3mA^e@TAcB0qn*G5AVns!v-ILyq)=&`w6gW2IeVpRLM26E`%f>)+pFc5I;W zp|t%h@<-dd>BX=7m#xF2R*~q`|?Z1;2SFuSVFO{g!h<|lLQ;ZSnpC!{}Q-B_gw6JLioy*&tDXf{%xi5 z@@-WvI8BxOP%eYcsI3qH--0^y9?h$-Y)q8q_kW>*B&%yy`aCoq=e6kE#3E8{KEF_R zIa^K7VH8_ST0Z8Y$YYRGa`i_?LMg5W5zrT*3e?8g9A0eQ;uN*ro^`CeWJ=62Y{i2r$ zH|2SqBqRX$w|y{YF5|;f)0{O#`efWV3RL6(?Pa!A7d#a4N5A`m@h#Bs4eCj{^tqqE ztme_>AD=70&Px3^jJW>gzT#^*;GL_ue0HUMit($|{{Ho{4Xp1>#^B?9|Jhlo|J0t1 z8GpG)^b+em;`9%Chx%>S+w1RS`FSEg)E|RxrSiGhm!H!jT7Ejd^6EF|oW0j?rtpdK zZ1d=uLl~a~8>m0}-AMXJ_#i(sKQnw-7od-yqJNI@am0^!K~4FA`=i@`-7JW&P{v=z zFutFSG(Imwd;_GMvzCX;mqzcZeB)~C`GE_xqf{WECHL;09K@IWUJcl`ew=iwVNM#K z-7+)zJ(pBCj2Y^AXoxH2izDkD3IRx?OXV7LLCc^13F6x+1oOF3={1j}QA@Vzv@EM2r_}u-3&pc@F_y!0N(7w%%84#4;Jdxk~)ILof z=Hs)D+CTDh58FGwj#4Fnmi$|3U=Uxi$nSWPpJ)2`lKTmtb;REBO%?fpHgxW3AH+9b zib zg8F^|(0kC1@&okh)0*BMl%Fl~J90AR-|D{nybSRTSSjVp1ceXf3)V9NpAA47h1@{9 z)Lm1b@s&vZhWewF=4Y(Z!2EBUX!&9O*OGWXKs~F?zwJW3JYV%Y5x)j6U5_W^#uXb* z*b$#GdIHYZ6_)eB~sJTWx5BWWZar30YS0M50#FhZu|NHz$QsW1B zZib}qMz(MN)t8@}A-->99M`y2;lp=_eig3Yif}`tkeeyt-X;HT2+9xb(>$Kv58$&B znaQttiNcW-IU)Kyv1_wGRq_K4+y^z~N1o8u?|WN=_>g~dhEw_m@Fg?Eceu=N8U4fZ z`=87omDfH1zD9!YuZFwEF~04RKhS@3Nq*L|&>oWIG12nF{?C?tZxz}v{Zu(8!A5oH zUpey&rn~_8Ek7&k@u2*We+M{(X$S3lDf5Hov6fge;4uXE0SuLbeJzT{r2-;7;8J~u;r9Z`;G<7-SD115&Jg4K{eOl*PQSzHa_LIinzWkgHnaL0Pel<$W^@jW;T$dB%r^|KHz_BU))9sr| zIRF0R%g@UYU;bgL{IIWA>4+Mr+qR>vPYav@|MxALIVzf4=;TPMP7ueiYUig%9y|mw8R( zYaIuk)6@6oPgf_S^6ysCKP!OG%@AK){>8Y5T~7Y(C_q7*Ra-hd)IN~*Y1=8Je*t_} z=gi~>9L~gW{y_f&^@>$<4ef+Ztf3ieC-UE(l>z5%Mf322a($e ziXW7J-6a1eo2q1q22)1>yHh)RXJyz z9L9%w&wf$iPiQ!B3AuuHYPRUyVEUqc`Uc^%0{Dz>nWb;KoYUI($k)ifh#$DpR4V|# z81`kYVERIS32I+C0eo(T_zGn||D-&xr>`gbrC4b|;U8xB(rDv;@KaR!zRu%o0esep znaQub^fh0~EPVm<_vX_k1k)GtoA3ZVQOVc8WQO=)-)Wy4uHR~)UnluGE`1S>WIp=X zN6ri4E0FQ~Ufh1p@$orw4kz*jsGdJ?{uIhN$RTatUe5eE@PR)6bE5}?_)vdz7(rjA zO%|{}k9ksN>5KNC$p?l89NK>fNBn_D)K3UbZe({~%KL|<%Ri*=k|{KPy3LoLmm$75 z{X_X@)>rACC<9CdG}6Kg^IWpo%PnIc){5=Js`~hBDbJ9upnCfLCiR;s{Q*SxBihfB zz9w#H6ycEX>vcY98*0CZ{!JT3G?P4U;WFee7Ure@qp}4=f>dMqm6IOl6fM#X}Eob{j$oNf78^@ zXm?PRUQzAS)cWbOv(xAISly%Z2hQ(-{I<*Zvp&A@hxC6jZ>Zyd9Bbl-(3i(__?Pjy zTL0tKuGD|~CM%6EnIXPDXh&)NOUw(yt};`67g<%uM&aZ2-EKgBj;!;B-ht}!dso(> zSkuGhb6Xi#H4hDkYvM}Vu|Pjh{=>d6s{Av1k^a&Cd^n%U?2%deq8*@@&*^nF8P*@b z_tEnkOQP_l&M!X5*FP^qd^kVNxIpm(`5Y(p8^RGk?t_~01NVzNY`QU+f6=~5IP~BX zK0do=X7bx4^S^reG7|Og=Dn9M94$LD_1`cS)tptE@$HiFNk_`Re9}Lox}UyAugvgG zlJ>JD&!c^X{pcJym(P;;bz({YXtNI2sPk!I2PXLLcd30Ez~^R&Z}oa(!pPkzD{$To|{c51ar#>$J?|hjPT75YDIV*D2f;wU2Fbc)NRo z`2+ZpgwJ{jsY7EiG5C1j26k5JKP@SReWHvrORxd^MCc{tg!`a+_?7Oe8bN$$zc>z+ zf8YA}oYSM_r{ilR^DtQFhIn7byqwr4>NxP69{$_`yHf3YeSg$5sQxv#`}oY>|7ZBd zOT7%-Iu76~kRKR-IrHdmzY6N#g);u~U0;$P;k!-J%ZtJHV~+ZuCEr~j^Qf-2{;gEP zos(6&Ar7A@-$DN9H{s^_L444^U5t;)Kj5>^h?bv@FTJm|w4)?C1N&YeeusRUCaq1 zCXSdeWyqv4`Zz87b~#eltB%M z;C`8~L&ft&l)!vmA+CWIxInEYo2EqJJB#f9*g03LbmjdCD;wc`M1%43{++@7hJol|Ae1(J58}@GsAFpF15vAKd zW+l2H`(XEQ+JBOKaouqIc|+(v?Vn^GN&8Kb?>9!>_nOjvqvWw)QhD-QaO6inMd8b% z^=0g^-i6l*2Gh64-C;bX)Sp6JOf9lI4ql%^cE`c%g(OdN3iWTg)Jb_2TUq%fuB`M| z6uzc{&%pkP|2N@t2_Jhnq$_BxUvK#(3g3r3e?-phtja51$5Ywx&!5!weSoRtV|Awe z^T<0FscX9v?X^dKDBTb4KUu)p&MH5DJly@4JEHLA^rH94CA$Xk`T3*pY|4Lhj;8fl zy_6qD%IVNLBjb~LDgRFkh0j}C&tQMsY4kDL&ofESv%h?_x^I43&tMM+xq)^%Zp$fA z_#DX}&J8Mm6l(e7BLJ>|O{LI`Mml#x{<<;S;C*G_f~ z8poqBali$7!RT(6MB!umdv>0z3)r7__-u=x+D|dU4j;Hci|!wOK@>hdKb@VsPPOCM zjwx8aU>^%(2^DnYv7d$g0_~kh9{XCDbdNpuw{Ynyxs;!S_f>3V>yIh#PIRL1Eu;1yJJ`vw9aFGD|%R&SUCRsEsx`R$i>qr>Gf58DRI=gwz@ zuU$KQ&Ba3S`8a&+$emxj=V8m)gQb+e6W3*;7?Nf*`8M|<Z5;?&H-A_He)j`ty+wMD{;cc2#fKjg|a(oV2px?~jiCpY0>7 z8YxeBSw2p)ss{W1P35{dU6Ws1Nv`whn*7Ei)V0~Ns=*!(xIjNzJ8)Q({F>gZ-tb%{ zKZVcFzqb<0j0Y~KS@^oPcAZ7-DLl(mKlddL-`UlBZ-~N|aO4dcm&_EO-G<~z9{8NL zBro#7XCF=X$!Ci1%7-4Q6@`z-4^mFX4S1X&*uH8=Ny2h4o}vA|$RA4A+}}ykZ}vUp zK0m`Qn;uiY)c?lXwZxY0AEL$Z_oye>{=Urm)tb}jjZbL(QDg2XP&qSLr87mFa-f^W zsOw%5zLDzTYBPV-BQs<5RPY2}C`jR}nSoc{s}EDF<4$+lQ(1 zMQ|VIYdd}99hu)M5qzZPDF+&NzHlG0hqbCIz90{ryK2u+e4Fw;5a0rJANl6u;Q1?Q ze8(t!*ngw&LKP2ifyUv(c$K+S)!)FkR>rZc<5js(9=^p-{QXxHzB%tIjN&Yhao}vogw3s1sc8ryJGS)1RwS(1ipwNFRkTUtlu58x{rQZe}fALij857?L6G7lGr z4>jIG zjt$GNq=NWXiXE@HRN+BDzUsk#fLSyr1wLxs^J`x@+%mzf8^)=tngudO?mhV?csf+@I9~PkJ1X_gB_~g8Du@sHKWS5MPe0r*NML=U=^EiIX4F_m-?j&X2;kjm9e2L4E}n zS4@6eu^*wnSdo1co+--qpJyYsRjzCO}EeNU5LX$A3pEBna0Uxej1R`x-) zTAvlKqq?-o}O-)hMRN$vb>)Nk%7(fwb@Em!i(hJl|xNaI5X z%B2DO7al(~AI~rghr1CH-VeQ{AAuExVW#18=3i!S*luH&P$s=gWRgvxtEn zfSL~u8X2@7DwOiix|ik$o}e_A@hi7b>5=Mn($X3cINNowCRlQP{O_v$X=&$c^q2L& z2uJ)l*M~<1?JYHpgnY*odXHKE^B_L#fAAw2`Z(2qg5tj{8XxcP$mf4p^1X`gZ-#L} z@A7)7@k{6(Xp^iVv!ljOdH-T|p6sj4`zTkT5mfNKy*AzB`TK1&pGMxjS&fe-f1&wS z@+B9lYiAG5r;`8ka=A~>Cds#u`7eyA9)GgBZ+}H|b>!n5aDz4&)M!-{e#cc`Fn?Ea zW&4gQ^oK8FpH_Pi*>8}?eytw;W{-Va&B65z_Kn&Rzhs}_&~NtG$2Cd6*<(Lf>q4>* zAs^>}8?t1v^ibBRc*wTaeE1`IxN;4|$K$1F~eAw)bdF_{c-vb_?Q{ zJ(W28zI7DgC4csb>e@Ym&aWgN=YSiuUF|)Q_A3v`_`7{T5Whcv@fF3#_A2H#WPd__ zC093r`KglQ6hH2F^$hmCX3~AjwjTH!Uf)BEK6w+-{3DgM^~`*voO{CWRccHUu1 ze>fio^~Y>TjJVrA`ko~{bnEMfE%=7>%r5b@bmt+Dc5BG;~<55B32yFQoHw$YVcJhkmoizN9w& zW)FJ-gMPEeKBX4@W?w{A3GY|x(Qo!~4!A+Tx@>1;`M+kYe4(4lzic1EQ?MvMJ&KRZ z8Shdm|H?9V=c-e-L{h|-7rEiKi3>rhG$^3Z>N zhus6Mso6$$bA=!GflsHv51Mtxp7v4tQzZ61$s8qrp5G42ALn}- z9jY4aO%_?8{;I8&|BdLH?;FR_^W<-*@`tZIdYAqDGZlWD?y-+^zzzD-eVb2;!k;}- zeIeOS;ph49D%6fd$|C)fMKs?{-n5l`le6iXe0Q2aWm#HukNvBn|JI#!O}_eN^nKQ^ zyUBi&{0c3-;_&Co4dCy*a8+o32=spnFQ9quuPYg*tn0C-seDYZQV!Iib`QG&iWvGj zMF}?ab>|7W(NM-q&F@ry*TM@i)HJBzBbO_*-R>8DrS|>#cs%j-IjNt&+(312Pyc){ zQ|#P<8x-eT0e|j$>U~r8!NhkjdtHTN{iQk$*Dw}fJVDmACJajGy*Q*ls6BqzPuxEl zE$5eD{F3eSt^2Z#IXOx$$r$`>x6cmvizK};uAuH3#&c^GeyqPh`eUBfuA}r6xbU7% zk#5kVt&7jRh4B{({=PCkcib$)FzNiCbpP*~X#K(YM8J>znawc@58{v8UwFn}!k6ru zX5obxYDzfhg6;>dWcpiDPpf$4K6w_=SA&o=!VT0N%gl)2Z(>emn>LxtsN8Jwk~WCo}wU=Ud+NiR6nCrH_dJ zoL5yi&I7UhC?kJ0&_ZtS-gke`d9yF6HSD?&JM!t=~_b->_Zqqx|1Glw=mbZ(pAo{HCxLPw6z9hv z|6=?Qjm9l{}Byr)y#hyGl3+MOd9Kh76|{%p9N^e5@R?M{!@ zADpiN{1rW4V;bfm%Gp-}ND}e`^qX$qFJk=}Ao|l%_LogkHQ>}%Z4G|KzA+j<&bI*m z9x^|Tabv{$Zp{9kdc9`hg&2x-gZy{@`rJ^)KUMHU{)P9F{D1U6V%`*u|9vS)fxl4B zUon@5%g_FDew?YT{~x_v@~?!)_uLg0=nv>)b+Vf?{uzS5NXCzEpG5MX>!077jKNQj zr5x~&6T1Oh^g(VL9kFlib|nYMaUIT+d_$F=CSHi4`4SHKUv={Z4>5i`4*9R<`gd_w z`ut({=4kor_~Y8oZ)y9dKz}z&{R@6A0EwX;B^-S8x#qBvApVZh{%LRx>3ltZe`FaupM@jo(#;t_EjxYaY zhWO*;f75!Azwl*C{5TKZlzp2EB|MIpas&K-Gv&1t82@^${^j*+$%nGj=SRD;jt%uL zD31%VgZ{uS*qawFe`a9cT3PpQrrx45Ld)+736CSa@H$RF+J?Nt7F zrT+fo=55jXuj7YZ4%!2VX9D`UB7c;By8Lx~cpnty4&GnhtIdv}{84@;Nq?+g@fPV) zhWN3+ds6fnUnrG&3gu)%Zk!_Z9l|ZV5JPqR+x~uWO%(oBedz;d`t1kz_GtO@xFS2~ zKk%EMsd7c#rT*xC!VkHF-f{3fo2mTlg!NaD|LZjV>D13o?;mc@RQS>F0%iQc{#V*A zPCK73!J?q?D&ub&C?${eM%Hdx-%cLuiA=i3KF*cM4bb5^zrPTae``5EV;ha1d(Zj% zmzj4&%OCrfLH;w>sd5tgfC0x1vM;|Y=>q+^=MVL~bAT$ZY`hRdp+BG>?fN=&{>%WW zfB)d}zm>ngXfi|m)1^Ey*N64z7}=K+^%U^W+@SDVa}<6n1~-C%8~W4X?DysbQV9oN7G8*FF4V!%#$0~7c{v*rI(2pVkq!~zFPIVdBOG%?0*`$r2oJB@;7H? zh9B#1JZ=BTGhk1p+4BvDJ#Nf;1f3023%LB-(@Gh?zW?gZCkg*9AAd4K{Bipa!Y&eg z0SESTa%A6j=#>UDeOVyCETQwQ99Qa?6 zb`io&ybwcyAM~K#<}?W6?dwl&#W{AI@^rzhGl|BH*BxlR-{@Mxf0SQ;x%Xry|D9sjoV-Ed0selX|JH#j9QePG zauwmlcp-+O{sO(_%#VI&{8I&gfz-dlZ=>@6A7B3Vy_w;^{ZFMQ`uI<>nvyfZO~H46 zwuFnlyA^{Q!O$CAzje~qNd2Ej^S{Zn0{h?2$qYaC$A>;6o(1TCNk1L(|4Qb?k`iv> zg&2zWaJ%8DkA%*LLH?cb7?q#@`tna^i2wX;;e3jCF#m{t4RByz%cP7K>GH+h@q%=aeMVWFKuM}sDFXKC-uL)0zdyI zGsF-5(edl`6!2rb(K0hD|50v&&lMXFN!kCd6#XBK@mm@{F>=Yi5%#|iM9UxhGY=4f z#O==vy+Zj3{4>$6migZV1RFy;O1LTX$b$3jVEYaB!7k0em|y$&?FTc%AJ>10>p$Kt z``x>O-xgeP1pMX711Ejmq+<|2`d^FLe(a%2Y5AKEWriQ;K>2nKDx$No9!2aTfTKhk zmoA6{F5!6^t@Z4J)cNPecS-{=f9H_>k3;*n!zBej#vMS}EVXlz$07 z_K$TRjg~+5j|G0coCl0_`$zNyI67iK4jGq*Uf?~QvJGU=E%?6jv30Vu53*{j_7>{j zi!LYpwSD>9k459pJ4}5I_`Aw@2+w}?NU(~7M0G>lg9ss^Mx(A$g(eTJyxOFs?~%Mqee_EY%_k`h=L&#Cl*W?KdOs4 zWz57ello2`F?ocE`zF_bLgK0q)?{_?A+{C?nSzDh4Jp^r8`J)cO^>;5y`B>>i(vPiFM@hMyn6LB$ zdI|cXj1QZ#FFeH40rh^TaDO~s_T4bLs_-It0pk+(93_7jAJQnE2fgr-2M!M6-y`_f zETI>-`S?rsGk&*QG=5j`=lQA`;-FNnK(BxGr|LocIWj-7lkC>40RG}9_EG*K=RAoQ z@^_9`_+^>20r@8de@TY;Yj*B&XB7Tcq(4pof8m1ti{I)Pjo-Xa=})HkfBAV&wJ7|# zOG*C&_!Cd=U;J(ie!Cp}B_VC1BUHb?F|@xB>ZgyMR}UipmhNZ#p6HdXKj>E$#psWY z|Hdm{Eey&Z`1_Lnumk?$h5J|j<_XdIQ&IfI9lG2Yh5xo^!}trI+Q0aneZ*g^rORWV z*WDb2f2XEDiADPtf3h6>1u&pcVod*s{(#o|Z%(ry{`OLSE_{<-`P$c?(tX5lNjaY< z2vB|+sMkcEC_i1vzj69sDBl4+yZM>hgZQ75`m0qjmHz?!#ZT{>{EZWpp6mGC?xO#K z2l$gHeMv8|KlMc_{{#377w;Q>F9yHUS@_cAZ{DxU|2X*<34YL< zFRZdFDF3x0|AVOg;05p}p4q?n%~PWB+k!t&%cn>O$Q`uC>;sPt;?EWN=e$C1d=t?B zeZ=or(fZ?^timBj=#N{D{O1TGpw5J5q55mR$lqQ>`X9hwT)c1cPsZR!`x9~o{-oeH zGn9Xutyk<0%KuQ2fA^Yk0DtlG`zC+n(>x8oDeZsA8Tgas=nrs%dJpVr9)sluMwy`<))z z-)xfP-<1m}!M6wWe?Q}QyF}MtF7W$9^PwyNxq}WKJ?yfe{1bw|$6V6?0RG|^_pkip z%FiV5XITCZT3KaL6#i9@lKuzq7rwNA@!Mz@2~Ol+^TCSg|GXm)Ee+yF`BO~&7cYQ6 zv2_39H&HKZ`0aA=7s>OW-s?TL2Jt(hKiyv-wfioh|N9xgg?dfH?+X6BnEp$iJP*3* zz;2=OtA2ui{XEkD0RG~a_pkiZ^@4^!3H&knw^VX7sI%pSJwf@`6#N&H{G9;)!dLbU zzk_zN#EbgZlJciO!qfWykkbDW;Y)6(3C2A^D|es!b`bv(X@9y@|9S!ZiC6axe=-I? z`j4iD-xmCC8gckXkz9hFTC3JiLHwTJ-^1XDyXKRsetTvVD_(9DX~d|B@8^MKStcC=7wFI&F4n|IVc% z|1*n8{{#37U)wkQ=%?pt@<+eENWvk1^I_3{UGQ@4YIKIz=!u~I>=OLDmXQ7j@F!m1 zH~hw_(d~bfKMBDD{I=jv#N=Nc|4H7C7o+eu=JNlCfd20ze!GJB-3sDA_J}5ZqVO-I z@i!}gzxa)PlfPF%{K<0gqu&nN^`*t3^C{4OPrgL@AHZMe?Hhix$KLhF)bz)6mHx-| z-|;;1)4Y~f)C$TU_9c^!RSKBi|Mbmh{Bh@3z@FTceL4{z)=y!a8F=*lQjsr&y)?n| zpqI`6=>8ynN9;3hk^&a^ODl-~Wtopo%09QiUq|dYt$S3u0EfP>Yo_?0e){RILHyVs zVTUIF;FOwYW69;SVV5Y}+Ef9?I7YpfpaU-L8VW`wWlNSXAze4p-y9B_a( z`@Ys9wlBf?$guBRLiXk6Cf`2NTCU`eY7vyzNAYh@yAFiHvWStG`c`zUA z_y!UlU}IV;_`G-M{6O-{2v2H1&*ha3i+s)I>Urmb$_D#Za*c1)O{n_@y_@n1P8s|w z#yt6U6n=~BBiSVfDE-&*ZyH561Lcg}G%WuDTiv(6Bs)3s3(pWdn<$+8Qo8m6>EqG! z!E2uGkIKi8JLn;gZ@VxGf3+zT4>`MjG=7f?9mtC5jw)LGntr);!_QCc5WaR=hp+D^ zeF}bGp((3BFSo0@HVS{6Ug`~VqpBy_jxeY{r#A|Je;o-V7~h7o!q;o4USN6JjcNZm z@=uOY_nm{P8tkixzL@oBuRHQpCPd4him{Xf{bW=ByU4z(%=u?ssr+{~8%EJ7s=T(| zSLIL*c^|ZNrV1D>;YXfL?_HZ^9C3n*e-Np!LG|6i-BkE$y7nj^W53MO#wuU%ewnO4 z*!Qk2$;axHWpF-lh{9R&19a*g?>rZ@4;v=^7n}BH@dj2h8j0PZu}a~mWJo#CsZul- zO85$~1M^&!ZW3H(-#Sxnq|aO0t>jc7;r+xO7w22q5}vQoDj(j{lJVQJztUNPzsDt1 ze|+Ne?Zx27{%*iubNe}|7+|j{(HU2Y-7v!Q5Sf9&rD{9gzjL-rGd1n&M^@#P+&(xpIf+$#3Lrr1Z8Ncg9+ z9?Y1io=-}+CA6c^kKTE&3*#>m`418Nt-I0#>*OIK)(6q}SBoM6f8737CfY?}_iW0i z6B6z{rEppjUa(Q|3wv%`!hxHzN6HmfAHJONuN3?Pr2W5UDBb>C9%AxgG=A()2mCu_ zA2-B{FPtX(`y^!_F;i}Im2jMMZ%MempO+Me>3!Ic4<7IS>ivwrMDU*@@*gmr^#9W= zWByQ;ue=QL@2~y!u90=8rq~UGFW`p!r>rVn!1!(1Ujy==MEY-^k!?(pbrH@-(ehub z>CZ*jN8kme4m5v#+Rf1$M_M?6p{Zq+vbA<;F@WpY3X5Js!ecRt(#*4v^{aGOY=Gez7spJOydD8z%N;u?*_1M5~%L}DH zNO>#e>SzfEAJG4S@0{{-5Py-BKYTv8{RlPE#5rrC^#}W#06+FebNhw$f2X7iaOTQ) zr)c3wm;a=`Ge1#sFy(pR$Mx(6zvVFgU7|l{ivBNslH~tIp#S?xG=6SZvjhHtJEh!S zp`KTF4P)@;a5!*&DC+~U?$MMN5)Bn@myT3lx zSeqICi$7L4q305fU&21~=w13z#h{W`wa;!&1=LR(+-Daqex=&x_| z1V1zil;zLsyDR}}O1zL8@ay|-m~vw`6$HV4OCF5_SlkX>QN^$?CleB8BhXL6d!UoI z8`lQqkNsgUn@r#N)0e-qE;IRKe@U#j7nlatN9paiq}b=Xl~jHKE}VaZaL6C}kMDN9 z*}aDGd)of0+wUd)`OC*|eVQ5m^-}J6UBdc*awVnD&@139(87W9hpl1#u>>&QlS`x9 zE2VXU^2hkwn%npZKmQt^Wrn|}rss&~V8N4=@(}vJK-TB$d^yry#q;0``j77(I_jrl z*8d{Wf8ZZIh4d$Y-^&pHDB#rUuR&Tk^4|vFl;^=$3BrY6Qvd@$-XHpP+bdZ9w&)Mm zcP*s#fmS77{?7W$3cw9|ZVX$+{FhUBCzA-?T=)!}4FM z$^T!{A1}wpZ+)H_{-v@%1?nlpvs}WlKN0YIqW^dv_&$_yJP-W=h5R4-UvekoM?8?f zJ%>W7Wf`-iJU2E(sP8~;5lz#*Up!Eesnd%Ccp7m8Y{hm&P$-*?6=dkbtR48kExdOJL%e` zYmctkW1PymnC_Dwb0D>MY5d=%-|Q#QwMW5qnK$A5vC;X{=eL$OrL+#rFaAF@-{o_re&tI5=(I^qLhB!K zKF6=WDH&n>Ke0vWDG%qf1C6tPz&;Q5?0%`|q1PC1(A#C$|Hpnnm1l|6TZVysMO>*j zED4Vz;0yGF8_pORv@gK;`tqHMKiEg)ZLJu8>!sgij8%BS-{;ysK&AlI_bmf|kdx^s zIazUxNjUfdt#eb35#;Y|8NYBo4)a%9LH^3KpFnz;f-BB`LO+MvlIPV-gO&KpW59 z7CL_!`>PMs^t1Tuit(rCGw@d^^9_3b)AxA=f9d^t_fbE8sL{Q1F#VAK_Gsr17kyJP z{tl4z10Ue;P%YdPxi{6q!JlroWXbb!1nGu;=0i7LA3EO~`>VElFRY)1-&Tx2l!q7> z1b;ZUTF-yjzYg*Mf4Ux&#~%#qe*axA1@a>J%9;W@PQGVLn6@O?sfO5Ua zW9^7Hy?>z0>m!~4(%#2>KXB;n9JE`wF8993HZG}7?d*UZ!jQIpJ@0J*3dDj_x%}&` z*1~MsAEkOP*Ia}5 z!t|P!;rmCO7`{KRN%;N)?ZV&pIZ?lIwSWe--?*64uZnJ;_Uj00FL$kEaQ`jHpH1VR zL419wn6v`?*xL2$G=Cp_e)(zP=MyBj;Qa~2Pw*Q3jO2IK4fopW#tS5m;C+pqR2!MY zz~|G)=DiZtKHD-;z3Ej}_48_K4_2eMkdC7%U4rpkdv^Hx1WL!?{VU~p^D^pBkw0%_ z`2Km?^Ji)4{Nd^0=SwaMUxQEZ1^VEGRS!h*SLFC{E)MC z0rh{#Kd0gOq*eI&^QAxFbfNwa`LUF}`Foy4{U!4EUlx9TX-9Q!oLt{vKN9_kuGIe` z4+p+Ludj9HFH!srrSU^{-oL6`;c}!JU4y^pOuC?PdFL$ZyO5uLxLi}2W`A&VX5b> z*Qq~C9_L@;dHYOt-=SyO52tbs_m~#2Js^G0q<7iRmGm}VBSEtl2fjeB9(+}$sPsE@ zih9ABqVk`fe#=HtxlQ8{=2%zEtaDjqt@bEsnO^?^TI5_^i68*n>=w>hf zd{bkG;*+X{lmo^2rZXgbyYvs-4^;n0f{nYsKPUAwDd7pZv0LV^tr{wy+Y+9Qe$j_2 zyi~&XV4pP!Hz^AQ-2l1hCA8U#TSE4I4+wt;_N52b_-`g-_+z_ocHnR78sS6iu+&|$ zXO;19%zKz}WArELd2^G>=LHh3+j%(>ev-_Gm@;1BN;rrmKd8D)xjwtzt`SVX3xvPI zL6rCCd{>;0>irg-ez2bde=TJEJ$bs4yF_D{9|+$vACo6H2Jceg?wW9aSGR)%-#EVr z-J{Na62ZnyEd^Z63N4w<*ayc6PGP3=n_kG2QZH_Rja@otZ<9lFMNw>g;F zcXW;MZilY9p1^o_lCEvKkMVBnLb`5RAJG`5{Awh0_q|i*a{49SRPus-+p#?f&*t=N zhW$r$`ZW>(BK`DygD)&ZzLfPwrrg;1t%?`&K>F3iyq)MXP0yszXYhw})ZD+r<>w5H3(966Xar(K!-#{r}hEn-yzLlLmf6&|&&EF*X z9{7vfe-+~lC>Kn5Z;tTcHC5k7`fdD7r4!0kOP;qRzq)f&J}#7SkY4g5Uuf;8YTp_x zKl=!OQy-!S>XQ8>=D+`n=5H;v>)C<7Vv#S(3w75pP8EAf)DK9H5n^wLa7$jWe^&hA zJK&?H&tYvu#%%kP5LS+|N2bP3%rEE@;XNu+uU}sCq6T;nSp@XAe|( zEC~mJUgG(4hjmGvFOrb`k+Hva&RtYL1o(6IWX2!PivnK6tK-d+8%3+be47$}C(2vR zUS%%oeMwhKo(I8qab5b9F^21hm0JC<^j<1I$vzb6XaAEKf2beqJ^%024@f`gr*Xr- zgE{|o6#FMz&bOI9neyD90sB80he5vql>5ExkpGIL{i&y4N3lOfIOMF?CuZtvhM}L^ zU`e=*eT5}mZ3zcS^CbbhI@L?r_gcaq>USPr@{aeX z_tt+>PHJ{^M~Xcg>Vbsdz1UECf%c9C#)O(e@%`kgX{qxK2MB+KVt-vQnEDUT`}S*w zq3Tnl8>r4-KE~mn3G3%*tX~nkX2k!moUeg)3h<$w0=qn<%Nq3m^1|hgu$68HkmAMBhku4f?v zp?D5->X#>7$NA5d^gB=LhX)>~@-uKgke8KN`kB(cu>IXY;evq4;8Go4Pg1#Yov_BD^ zD>vfi(asmXjf<5Y0=Ff4fN;nI@$`}(C`ZrjbMUNS`)shJ-$TPF|Gh}|W70lzDn;{$ z^KE9xcafirE5hZ=NXa+JWh(t3-`>Ip!okNIl76PFw*epPKUL+CEBoKu5-$k&!t+Dl zJ%4JDzgA5Kq#o@-?H4O>evh4#8Go;QCFP;;fp}}L4~K)lHs}usUQ=G^fpF2=0tv@C zf+$yQ2?uF}A40QQ-17vVj{y5+)DJ~me!k1Rm(NS+eTe+9pY z+@&4>e`iSh40;QEg<@BplzPrg#bOvg%6JXJ^CcXl7X}t2pznj{-_7lp0vUe+e_JNf z1058&F-ETk*?12WWp4%R72 z|9yspmp5;Q_&^^iv0vr!mxMO{lCuBIr%4_-v6I9l=-%u?-BG^XB-@1YI1210*)Ei? zVK>P(p?sa5XCoU>hu(+XB-?~~BYnF`wh1-pKI|shCe)&9-SutpMe8X3*#0va;4fK0 z{@5neB|Jg9P{t4b*d~;(!5`a%@-_G~$mY|b_rV|AgnA=<{@5nep!?vDZ9*-&h903D zeXif~*Ms&UH%a-K_+2S7#?Oj#Rrx~8#8VD5&i)MN#G5ZGeMEl4`L)*Z>U*Yq@ARcg ze;r5V+k}Mc?NeLA(VjJ~SI;{VZfSJsVef?Yw;3+{&EN?>a#*KXRIOtC!7e9xO}IXo zFa2_Bs={TaVxjSEX}_7bsprApQ8?dowFC3Wre>5n*Cs2 zt%~utMA}{Ef-rwNUht>m1wMU0D)4u*w9}xs;1BHsVb}PpQRQ{qKFinox0l~V-2V&K?>T7SYvb3s5{~iAJOOZ+R*!?C0y*;90~tW(hv4*MG~H?(K{Nv-8E`{n)feZ=gPh-yiZAW`pZ+n#-wBD zN5C#?7|o{zud$z%Q&h`f-@GODx5)m0>u`4Z{#LyIO7MN`cje5Y_sN&GQ}zbQyK5Qj zbK9$HZ+0z%{l?R2JZvu6H{472$;Ua=`<6T~yK~C}QvC}VUmGdq>mM|~WRsl+>VGd! z=`Y&dpgez;MSnBod-}c;Xbykzr%ES`|0d-5HPX&DwSGh$8SghHs(RFx=R4I<`ho92 z4?IdAC0X@f9xp@m^gp(8JKjI86YTRaKg#=OIdvgy-< z^$7dA{=gcaYp}9`na{yn2d% zwCF*({Nl1~fJErRenIMW;P@ZPYe{G1BaGJ|znk(xH(Gzf_B2S-eyu4z0_!&tox=AA z&j?@3XUY)pjT=98f2j|Tk0AZgKjZzcy!!t5q$lMI(jAofuSy@wmk%z({FU&DcswdD z!3)#>r}oQ2{GiBpxL(p@%F)cfp`EWdi{|gFkI5gP@|)K{r9aAbP}r}y^1%X(UrK)y z@q8!skzRkDEqZ})Q(pL53kU9E(Jwr2$@2wAO1&ZR7D%{GI!eWh^qRlR`;Ya1fb`GN z{@QRcm8YL%rTgbz!)X4wf6mTL{WlEVZbO2NC8+Pd5BCc&UV(k8z$fMdokLas3H-dJ z$;Flk`b+=GsG^=PM8q0JKJ6&sxohV9m@5C}`XVX+AL>i|lO12W{68R?e=h&oxvBqj zDx-|=CS{)-2{x8sKND^LoKkI{4O3nij{eVWiXThDzm)M0q(9^Wd12owTb|d6B>|B0 zT?bD8GRXfNY2O%^Q+ZPirg+!JIx z$CmbCFNvV5$k+Zz2~TR{_`T%&2sh`LkXxIh2mHIC*V^DnN%^RDDuYkFA!M@zfV z)#TC(^_C`=6JVDk;ii25J{eyHpODLz7bSm{s`9~-=XCd2`6|0Ohk$j)4= z_$VYht{QZWbi?`qwCPvYrJI5N3fB9Zm1`L6-#9wle`(rG^#`0PH4OH1&J6bt5>y=G z+f3KW`h#TE8V36_DLI1oPar`AuM0YdubCHi;2ZSiS&2jx|Ga-6J6HA{oJ7BC82jYZ&@EyDzE35X86hW_6vskoY1040WP{{ksPVVDS6%NM6C~ zf9X0X?@6@2guidLBzcpEyzJ&R4EAu~8+7oU&9bBTzw$Qqh8I{r6HNbFt-|p)wZi=E zA$}N-M|%je-%k3$*KpUJBzRYl4I%lta-CdG>xIZSA%J+6X`){E`d}W=3+UUzBf|Gr zQ~#LX^WLQR$-{wf(4wm!tQEz7{ma!GmdvB>p?a-X4CV{=y~!f z`B?sV$4D)|@c5ub@^tCj?C&};oF826I$_d%8gEP5%}0KMqhCT|AEcdwN8 z-xh8Eg5qYX{3o?eIncQIKYhF%dZUlGoANz<+@6ZFl&c4OHfc{=5}rhTB6bM{5{`P- zl>Go42?s&CgAT2~iubQ8Gycc>i`cCL<3F;`2*!Otx&6oA%9jW-9sk3AB=#qj4fb*4 zf%eCApM2c@`}P{TPafle9zDw*np@dhLeiWWBlJJkK zsrCTET?vmP&?C@wzvZoE`FJuuv{>Zx=_S-Q2<(rXY!NLV?C%Wu{4MQ0^FsAJaAd^QX-Rl9E!>uH%xflZQ1LnvuJ5x9xykJ^#FCJXLMPY$ z>@Iv{af_=AfK)>Pk?oV33;K) zVJh8Whh$0kT{3?FeJGIdSu&4iJ*ebqOSo>&R4CzbWVGBEAhhnPA5;2+=f{fv?7Wub zljDysnXRJbgYh-UXMc?^{q(zPFJs)v5`gGmx}6ms$R|DSB;|0CJdbfFSH_)O36CR? z55C*T>Y18nF0uk#H zFpdNHXa&p4?clQSfW~=GT2C9B#?;`Z))-gu8EtxA636CQk<%TJA zO!vvp<49i3!$Y@f-r2M>%cnrop90b!FCd>}A~X3sCF_Nfvi<;(Efu?O ztGSW`Nk4UKp6oA-c`e%9Bo$t)hv%yBDPm8Tem+lyPepyVP_+w;Mk>7a-{Ep8Pr`vq zr$`5c|9b7>_qcqXq1peOJcZha1^)Q4acpMt$rCx)+WLru*tt0Um3*K-n|CSvy8ic) z^)UDja1W4thwoUz2<)Bl9q142oe@3&jK@%X5Ak(qaev)Z`&s03l(Y|v29f?$_3iV` zcG2>Ieg0C3FA4cbc?cNkc^3(Xe14GfIVt6jDKDTrM|%=@r>~RxNb(otkd%21SHcVB zJC5X2)bA4jD2Af_1A5gXTm?j30ktAxuP=yPg#Y(B^L;kwjH%-N=}-J!&nHi2=b1S(bDnwTndfs^Z1`K6z7SMed1W4}MMhIp0h6>C2%ldFO9O_-SP zzW;4U3w)jAF?10->o9mY zYgyoZ=or7hF0{qOOaDI05jcFUiMzMWas*D*_y-XOi1?NJD<7KW2>bx!S>olpXE_4T z79sy|o`ib~@&lg7{pCyG-@6Cp17w+B@|SK$9B{ypiHAQw%MrLU&G;_F0bc-Nz4Grx z`G5n)Ox*eSEXM;rm(oSUzVjdam#OHpbi291{f?P$WS#dgpp-rjOk@2Q9N~lkPcklT zkn0&Meg@PE!FwP2#O6pjA57wUJxqVO#`U}~jbDid>u(9)0rvLC@17Zq4jU}>`&%E-^zu$~zcUYn1?YN#rvJI?1utB0$}63O^VR_STR+h9l|HWiV0i85 z@>hs{sP7l*{<*Kge_p-`ZPn|wW}K3+xt}x}e#J5@b8;NiJQLucK@AmoyvpZq_(C{0r%VYle{YJ{?arjqD z)2BO0&hPH&Q_JTEXh`j0x%wTu(&Ky%;_Z1~=`frAG1X7>xuVp=Lj^;J5X-rk^S;B4uY!A!ZuKVGsrxESg^l_OmSKs%x>?u8`!`^=!qF!CT#n3Ioa+<$Gz42Hh50nm@ zsCVi7T4DZS>ajX6I!2vw_Ay=aZ9U|vfPenzC(VH(-%R5DGn^lz?=OYVn3_JiKS}9x zIQ6~a6DB{abM$?t(gCLZwM_V#>M;uq-X(sYg)b5xrJm$+pHGGO`;AR#KtGTRV#T|(zC&*u`!~P* zQTudW9Qg_URs$uk_J&68(2W zAF@|;W#n*2;6cV!-#Ql^rN1To z0q8AZX*<4m4|ui~g<=0k; zlYZfwrshAz|F!A&mfLHdn~Hu%ei-_RZ~SJ~y*%kx*$@2`|JSD9;#KdNH5L7)zct8z z6J0M;`n`8*{;LrG*QVdsN0P%+(Xam|*bhGb+b0{galPF1m&*J0LqFpG+VuO6xrbjr z75y?3LH=vp@baXed-K%vQ~Y0=ezyJbrtGVJG?o4Fw!EQV@oM9@k?0Y={o7wY1qk2% z>^B|*e)a9=KVMw8zI63>x+h_OJz)21g89dhzv#<<{rq5jrDfmz5b4HJF#q2H#oAy0 zm*)lJCHOV`k5*FGEHjJxc2khrJ|i3b#&kPQ!|?|9SO&5pDCONY~#I zzT1i)e{nFqo$Eb%&qR2#Jr(rpD%x|Jezh-u8R?ISfe-^@k`j=C6j)9oB#T+ zdh(E|`0r!zPs&w(pW#2TfBp1p0==Xy#V^9%1nhBx&$9^hll0Pkux9~97-|yNYwZFP zFMk~ND_|4pQ@j&-0VTx4mrw4epN4MKdnLS^?~5pI*V16R?Dvu z|BREF|HH@+ILFHG5d;5J{%ickFWvg6oG(_k-oM`?`>(%)^YiJi4fRbe|MYzRy)5uQ z=s#0`zt(g3G$W@JuRU6#eXDqNA8yw5Zu%DwWTH1|F@2apC9}2LGe$uaet(K-);%yTWJB_SJLwz`98AJUqgAX zOD?6~HQdipe52u8lM13d=-?`ydJ;qpBF5c5CFa&$jU5An_Pt15mI z@zL)YKZDXQOnfcZT@*h+{875!#qtX?*-`(6_S?HBPW>3@_exFI^FP9`hEHVIfsXn~ z?ms}r@8MPX_l7k={-1%ttz$#N^V323_8|6S`sH2z`e6L6*97C;X9VM!wZV7^>+$~b zZbZ6M!20@BGq5bW}Qd1z_V98gd4<6gQ zLJZUQF4*Dsk4EXgDqW8D9W&`)cQ#Eues%pp`A_#>+y2pU^%E^N{$L#!>JKhi{`HjZ zC;hk?_sW;|DIYVxKF4k38|6Rc%SMhJPEMdCHkc4)Z$sqfq< z>&JTji2DCRc>l)noxc)#-Akk2-`XE&_k;Qa6|c|zr~Fwi`>jU_$57>h;-gp8e9_N; z6Xd_g3y^=eO!8mx{Fg>QeILD;Gx@dpeO&+2?_q|S5Yzo{Jf}EA{GD81*8D}{zo6^O zXB)m5Cw}xhM$Wn9%M$TF)O}^d-$MK|zo!3{e%V`zSHG|F@h;*un86!2N*hneN_-@&T$Jx_2WESkq<7R~aVXlat@hmk+}sG>18x zM1K?i|8ATQ1{jBaBk|Iw4)fp%#HIau|9!|W?=O}F%!%cLY8_{k`}*==*>k@UPrkMw-A!neHG>-~{lm zq?ew9eh%2*rF7Ns!yo+3l>5InZ8arSF7wlO@_ax&XR&<95stwB)ZVT%9^nZ5rS0u> zXHb9I2YFKT$%A)cz0hxO-w1K-kH0u<=qWUn>mx`vzs&#r(RUXUG<^GI$N$hjf9>V` zb@JKBSbLzek9JWgV(6@Pg@!%U-*x}YW%rwTp~&yiL9CdIdb;jMnjqRfuWS$T+w`0n z>d_VAKlK|^zWW>=7}q}Hf5rJu=N)a2>T`<6k?r2~Wt|_@&LLjkpDptouUVR(^RK@5 z+E{%sHh{r>R#^JXxq3^-$d()5rwf zFQwn{=^?&q*Ydk_MdCB|J{Ugde?4R9UbT0Kznkl}ijNV0lD=0)`VJC5^GCsQhKc_P z?PjHKhIlrs8f5qj?C)KVkNog3KmQiVzweEMzBtFBdc~%uuk5S!F4nh-eCqIhAiaN& zzCXuvg49kwm3(2JtJKK%jKhbTehRUm7e7t@{g$x{v_Br=ca_S=nEXZNe^lQOc+TV> zC;r*M|+Jx6w*WBOFzLkV5Uat<(feGf(PwZz-!;JU>B zkbagT&(F;eKhFIE?j45iwbM-b*RlO-ce%u$uKNth?~TOsF{**?qf^9S-Mfwx`tGv! zhYgk>?{A&7AIgI-jlR2RU%KB7(pS&_D!-O~6%LIBd_P~uuS>kj8TXUs`MvWt(CB-< zP5vc5#QeV|ziWQHdgWaQsU7?YQ%;!p#kwzz_zdy)sl7{nFB1PH_LF{>MEu=TU230c zINbl0qr|?Q;5?S0d>Fq1^gVELf0;Y{(&($_OI7&3thT}4Z|E}Na@tR7zc&(Zzb_af zUiT+z{vP5JluL>a6F;JKqs!=cEpV(32_`n)J<*4!zceni{$c-y=i1_@Qx|ZDmm36#G@vB+R#)xbraT0;oM(+>7!6ZErB?p{LP4z^4-??*0z#14LGt zc<~YB2VAS=J&y7K*X&^W6G#UOzj?lJLqSKsPXio{QG&IdQnEfO1N^F`lIy9L-G&s%a zX_<_dho?CYvVSDMTn8?nOfTi8Io~~PGVUVo4Ey5wX^#IqrVxa!|NWlI>#*MBqhGjT znseja$@@zePIJ!0v|(z-8DHUP&avHie)uyK_wk0w^l*Hd^R|VP@z7^6cEF#SS3;$) z9gY*BVSDX|j`8as70T~hRwLts0In}oMod2(!uvH0Q@@+dA!fga!0gU@b$_7sou%V> z4sN;2$i*Js@ZsN@c~IXg2ov9MfSKnMUnE|?*QE1oiFiGKThFbSAYT1|F6Cy0_!XAE zt$NiZ)_W$?_`G4x*CD>QQ%gLH`-5O7F&fT#-;thvq8ay*{*MU#Z<{PEoSvHg?t9Fg zN`G4q)p8&GNsyi{6ZCx>rDurvM%8n^W%?yde9xo7a*D*K^!v)x&q~B+UkK(``ak(! zLHr)(znb=~_TxU{@7DJ<`5ue*%ahNWa>Cn8JKaf=@y=k-$Y>qIo|7(I@8|zEo)7uX zH(~zx$${1HGgmTG(|_M}rXZ!i+QT~kYwb_U3y-)IU&{nN2UYE7m-t$~hg0D>$lBhF z_6zlqQ5d>!ps z_jxleHxa+TKt=EFITK{Myl(?#21-AWxby^LA*mfS@oaY z#JBKV8}|*SJ!RrgBfj)62ERwkIUsdvE}tz#^X?_?ig+%XO=R+kbjk%Xks5O6T$D?v z+BeUMO(t!gGv~GLxshZc?iLcMd}~WJ(>6hR$>*dJdAo=La9(0hHa?gbjpytP8RET6 z8{>oVY&;c>o04?87Wc4L`cXY+K#giKbJJYx+n{w?tl7VFJjtv7B#iRM|$Vl97 zO1he|AU%@E$44^xG2bnJgiz*AUxq*d?q#I=3@g0*@C(vY`4^m1OvVt`2V@=MD4>)t zUkoAQv;Xc|X6!pRkNv5D88C*$&Z`u0zBHhgaly$|gN8^LelyO82JAV_#6xdA#1Z&9 z%L|Vp9dM*HJOuyAHHZUdvpn}Ls1Gn((@|F#aNlfGUhztt?+tLR`hUvuOK7WruJ22m z9OozICra*?^tuzqlN6z-EX8DW|d(`2l*_^xrtJu4^j# zi+|m_=vS9{)K7o)FE}5Dtq+(JGWC_N$9WQf6o#8u|EF;N1;9Pg#04jpo_`U34{U$H zFX(?L?wkfc+2r}x;g2F6p#B5rTGR(ndWGMDbig?6|M1a>1Lk(K{^L+T;1jSzq+Z9x z{eauJzpFAE>44kdfAIE4;G5pAN0$2{eHZxFIPSaCg2si+{kw=NkduJmwnwK=BuA!J^E9>9N_%=OcEJ?HF{{QNF0lz!n$OfHH zf4hD^Geo?eXHfdE;iDen^*k%pgTut{&;LI`zmMt-MdsJ~8Fl`-^ZQo_{b!K=dVb8w zVqf{_AG-3T(ceB_Q|p;d|AL;!rF7GCO%xBY?On(6ToBbGUE-wh;p4{}I)+If?JuRj;zKNdLeIHj{vP6=px&?f!^B_oEaffpXNcG5 z*6^B}9{ty;=3hB~U9K?CU6*s#kA|ez=ZcDcgmoU7W8`|~)n>jiu@_%#zk#WAeE04~LPf$S&KXSUai^5|gs9zyZ$$Pd`xRpErG;q9S| ze&wH^cX0oVtbbMRIPJVx}^t`DzL;Phthh6bS;ul!?$BDPk_b(C8$E$v47VO|%&s}nOz(0B^=kL&J ztbeYV=IrD?uHrRDerdmG_$=1t5Yd>79^9%7VZ_s_~B}@Llh2uxh%Ly_6<Sab|7@7}K}!$3hoLvP3Yr0>7+93t&E4fT9w?LXbu=6>I_PaC28+7#c&ghMC~ zRGx*2x6idw`aVJabPqJ;7nxtb_oDNnt`l$hgz3N1J%%o7XWd7CvA$m#B0b(qe_xpL zsYLwg0`S%fj+-|n#dz3%yr*^&v)e zh?2>#{j293>3KXM%};$r@jb+=zh27^6Q8G^ta#;zEga8b%HbmO>$%-7@#Dm|eV5~z z{_A%TZ=dUQJ@JoL`OWn2yNFl6v({T8eh=k>;wOmLAj}^jhU=Cze`%`zJL681LHlpt z+y8j~h2LrD&SD+yKle(5uVuoY>c7%{`cKaT3bCArbid?{ru-h_|F`wu=f8F9cc<#V zAMY{*(f*tGr$63*mCsDwf8jrK{8jeTe|jE_-G7Sz-`anldei2>`86s(2i_m-zsx)T zXZ@%B`clWA`vJoTjT}!ZKlPlIKj^>r{qG)s_uLddOZ1l>+6UTy*NXq|xk>+1=!U8L zPwj(I&d=5Pkn;w+p(;;H#M}KDI?w1AE^pBJuyil=4&t>xwVaUV*ZJ_ip#E8vr(Bl| zGkBmsLRmW?X`@R(4%>4bIquxh9OdIhJ(B9GVL&P6Ny;bo&#J^hc zJWn=EynY{1?aO_{znS%FIS%=JgO;QGO#JH<&+=X3&mvySpCJAhY=4RLEECV_{~#E* zF#T7~dyn{!D~B36rvCd(3ikaWzQW!!b^jg=zolF{es{2)>IXBaj`LXyU(1B?d#Ddu zezUiKI@n*0%)jQ7LA>_kZ7g5?)*$uqW?(g zpCSI6+>fF7BJsPppU^$a$e(fI-^F?rKSBJ%R{lN2-?^91dz=|B`-tCPFoOviZu|G> zPp0xuXXu}HE;a2d!k~PWb4=AgT}E7eu@b)2?*)fr_?|9c*8cq0DSR&%@TdIOC&Pao zhQGIz!1rc4g}SV;h=zgpY4zwZ;5qPQP$m*o%tQ~qoHo^f~x&jZl!89QjZfPT+d z>(}oY7l#jZ1R7oXtCNTWgF99ivOc|WFz_gKn5KG*|&FQ)X9gB=0yy%@a5Qm!B!An(0+`G15s zKKV(Dz|VNE7fH z>RTVt_hU-mM>^oPV^N=!_XNrV^r3#Kw~XHc`reHD1Ed4={h1=#BB1ZllpaNSfJ09V z(qG=M3E};kGV%)CoH6MY{1(X13HImtCk5~SNPRH=vCs6 zFvDN1d*bVU|IoFZe;f`U&XQ2@}6k-#cJ?#)&_b{#x~GPY{1I*X7i| zUm^ZkwnydvUgCFI>x%n`*Y6f+J9S=uob6Zrp_X*3CEeWL8#?HF-7ftiT8_@wAN>yJ z9r`&MS&lv*o8jE>yUX7-)%@Fq`8VX7e~YE5`&Z{*?cX}?(<^h{(Rv&U?=s=P`96Zq zUm@bdoR<~fL;P$DA0~d2h0hRw827DcIYr`sYSpWB*=dziV*c6RGW67PCWyb(!k3A! zv+CVL{A(e9d;79K?l|Y5 zs(ilUAjk*2HyC;k_Ok)@K#>jOybl+@1$Nb%xP#vUI$u@rTR`U{=O&~B@-0UGgb&1g z2Dp~-;&jYEfL*RhcWy;~z^x(1zlbc@@4#4>;{K6ED63_X9R9X8Qk!binh> z@B9ny2OJD}DYCElQS65Ue46){?!^8%z!#R8^za1s-vM+#U-@H)I0Cw#uY|G$9%cU0 zXAlSMX8q+mkRKr5Q}XtAy&LoZgu%TO}wko!nYFNZk40@c!m0`%Eb`# z_x~~|7kh|*lzOq|4-+5ziOFBO%ILot;y{R3bcC4Su6+X`NyPP9| zt$@|>zZrxVek+gS{29Q}>rC8v5Gx0OJMdzZ$B&odd>KF+^c9Ia+mQ~qo$>G+aCVPC z*rZDyxiVJ#DUQ$Z2=W55T_%6|BGeCPTN1qg1n{Gj6HX&PV4~B+i$B15Lx9?ZiC6vu z?E@UQp7Adu4!DftEqpib2gEKm>CQLMen969CLaDe(g7#3yz-rB51@|ah3+`Q5!i0QP5}m5?UzQth(}@(QSZ=BDxfHQ=S%XJOaGqzayNlwEPoJGU?%e!h8zY*B{J(3A#=4R&K!D0?_kn zLq9##5!l;p(%q*Ibp$?jeenMM@sG-(eatX_*Y}(J^UGYWAFqw#c{WdX%Il4sDu2|- z8L+K)X{hhlKE(M&-*sFI@6vq@iVv&tMVn2zK3`|_8$bg z4@bj~wZ1=a{?Rb`N6w!se&j$W&-HlccEdkMvqTML|GHfJSns{+SF`k!52!vs`_J|6 za-19Kw^Mrd5PzNe3t3K)_-Cn)mp^FeP$K?E)I)UtL78~nH?Q~#@kde*36rn1-&=M4 zxNPXz$mhD1c1GAWbkKgc_v`mC|1IjLeAKivO#F1(i+WB~k@ywXexnlcZ{q$JZRZ5> z$FbkT51MvXh#%2?vBcL-GY@Q*Ro*x*R1^Cv*IUG-WG43 z?g%_X{X)z8<$=NSp0(mHSaE#Xv)UFZqsEHYTJe6+U+a=EX2p-U^3Sp2bymE=inmzt zb}L?sjo1GA7f@eO+$t-7mlfY=#gCsCEbnA1-p%<-%inCpSJ?Tj__LUR{Qd159gNSg z;^=PgdUm?mVZP5XVd{%t`7g|WuhaA$+%GEUzm`8Vxxcr}b6{V|j2i0x-Zt|0CEVW` zKH7|P4lAs6nekA($l${)rZ7}0JL;MZ&7ZuMk_#*MA=sMId&A8He>nh4eonK4L z-^TrQ4)^6w5Pz-iyW@OQCjLJCZsH76?;hg6MSPj>8SLRmeBl}MTxxgik&eKn=ZYx4 zLi`5ZpGEs;AMrDO5iG|&z?AdTUkCAx#D_R9>hp$(zn%Lr!(TJ>>Cybw{^ug`y3a`4 zIZnKN?nH_B3oQTS1o8I14ZPnu z7wrYyjJViuTIQ`*dA9wa{;*;z{7rz9-C+4u|5!W92Yfb!{j!*hwS3po|Mk3RP2Y4> zu)MDv7mQDXc#`v&HUFFjlV03__5iM)8_d53`8BVEq3&S(vlj>BpR?A7t~)uHejkRP zzkaZTckR$047UuQd70P`MeF@7`F=|Iy_4qyIG;3f4{inT(opwr^iY24KJM_@CO@+~ zx{q7&wM@`+?#p9l9Js{K<$h1~<1`Zgu*w1YeL}=9)p5;pH+zWR!SSo*go(e)Dknqy zO_W!2bEe9GouIE?mBYwx@rry$BCf(sgt8!Dr1*P*VQ^`;H{<>UcewY3M z=r1QbbE@+5+m`-yz(K+B@oFnR0e`%I{QW!Rvp+t*CKz|N1mkrl1mkyf1mjm*_1$E} z=VJW$>x0WF5Wl4^7;m7w)_X!${P!r||9;tCaY^~sQ*}Pj`{n#_{Vic_t%-*Q@VyPd zy-4@_NA}_Q#lK$eJ<@~At@h7d6f95HTm9uU(M;C}?{cm8hzBLJ%NKYqIao&S|y`iq651-Tzxls{G=ZmwgY*C0OM?9LAmV=gL-YaR2W?-)%71BR@cy&GPyYFM zH^j5vE8z?Dw<~V5Wxs~3`G3oG!TT575R5-&m3N=C-=~kfRQ{c_?~$cb@$bBXDIr{c zuJ=REDLch^byfcAIjs6TdLFCB^;}ks>-nr2*Zn9O*YjF6uIIKoF*x!8dVZ@bzX5uV ztLE49Ts5xex@ug{ch$I_^IAk%0PLTip-2E}(qrjio52NKBYU#66?VoXc_JH!U z%3Te={gp+JPsP7-{+@U7+`awrud^K`0hE8kpPbv2Dz%D*Tp1W^7h-2i$5lz&U_LL8v{>!54_<=;vHcJBn}q+sa=Zugbrn_v3j0 z%DJZB zt8wLDjVu3ZT=};ehraCBx0Qc2UHMnz%D);{{?)khuf~;sHU5|4UoG#Y@~`IKAOEg@ z>X_rF;@_h$=N&sH`FH-`Kz}GlFh2v7e=GPcus{CQ=T-jIxbm;Ym48D6n2!N3m4Cy? zE1>*a#BTxR-x7Wcyj1=zBd>t+Zw0>v_Q$_Y6lnmJzxq7;<6jqf1@_0kA*2Z?|Az5f z;LqjXr@$`S776YBwx2jKm~QXC{cGtLo8Ix7cTC0K3;vn>J^ydZ-%2y(Z;k(@_*=_+ zsr;?^mA^Hv{H^hq%HNt_`CH@r<8MuWsr;?^_s8FwuKca>|5y0?{%G`jQ}Oo!A2j@3 z`Uih|UH%XKBPf4u`|sr{zdv*BW51b-zmF$>hfe*6{1yiP2Y>&4@^{Tw6U(RK@B80x z+8C2PDAI_E6Vczcla=~4{H2JhLayV9qYBN z)17O%FSy9_9F^}ie9GJRbW)Z7FX8@T-M>b5b{^pS2>SlC^8XB;hZvF^JokXZ&+6sd0|oI2o_Jw#J!%%w)Wb^olRP+}CaGe|k&?s&74e zhHw8<@zNUSQ@-+w?KRHv&B%}Up|uUyTl<|-)_yGUPikHXmmC}1&$I{i6|vr}dAp`KP);OUhHO^an`<=>H*ZjfzbGIPf|2+3$e^tmw-*3+k#*cS{&-(=O``f<)>Hhf7 zto>S__O-{otj2lgD<;cx-dy9{@v6yq=yGg!-Or`#o*I5*;j{lXmHx8?`}5>-&oOd7 zgZCpFu!BnZ`jtL@5qj(X=t>RV-v<2J$KR5E1M>U#_uOpV|6wb>hW+Wx#{OYI590p& zA8eX@UMXMq`-NxX{dT}?_P28+?gu=E{+4`teG&Yjza^Yw?YFK)|M}B(KUerLln>a0 z`~CZUWdF85f5|~vhk#yyKX?E3tf63iouk3Hdu1?w*EPZT!Pfq!+Wuhr zxmI~O>-nC*enEeK=zehbDC~C!OglAL-t&^*w?C@U4W{qHei%RfmO+3^`K1G~Umh@c zqKUiUErHR~g85s(|Ni#0H3Z|$E5OXyPZpkz{sZi652oL@!K9awCa}Lt$Bl;XyD+wE zs_`S|$H*1pxiNB1Oe5Yv(DBo3$>(b={(qlO-V0qut^7xy5PbfBxANC+38qJ^{vY2N zO#j`7gYidG!T5#O2jllyv=y4 z`uO(`K16wj;DvGkyi)fa@@x{N;5qy_~Og1a89k z^QW(XLL~9ZhiV-G{r;Bbd5Y=9e?j?xw_&_#nuKRy8j-Mk7Rm?g@0v&);3bt9zVW9k zKIVV_I`j-CB3$x)@9-xl-=7HWHS?6~rB3Qu`u>D|pTRx{k=dO+++XkTdtTZ?`#po6 zX_$y{jq?2oeg9w+@vpSrO9&Ico9`dE_ZvMlqxd_GU8d!fh@Y?LF!8;F3F2EVe3|%P z>U+w}zlZo)9i~3jS1ZKd!}py_KR4<7h(C|-YioYzK=Zs$*96O{C4LXz`_}hAT;i|c zdl=54=XmsLB>oA$KU=>3Tn`^2{!x7|WEbf}d{NI;V*VoW59zsm51ITE#NWa9Axgwo zh|m3&bSA!bx_Pea`F=*}8Pm=X@w=^l2@}7Q=VFFun*15!_ws#_(s|UE_L%Zd<@<|@ zcfMip<2*M&@#DlNJI(Vb-u_FCW;kRF8T>mlqMbiEDi^To*i^Ts=>=(J;Z@);qR^&Gh&6MAA zy`1bBv1$DFjMy}PReJ_Djo+RTdf4yt-2(RbbL^QFnIL_8pg;QQ9k$|sN&83I{{ZyG z;+fb#{rVaY{PvKf`|Tl#A3QT?k6{a1l{X}P6ZqS2zrD_Szk9|!Q=jCO>&~TkUf=r( zYfcW{kJKrzXNlD?a^UI1GQT}rHu7mU&xbe+`cS1+y$~3Ozc6xT4)51czArM}InW6) z>(1?zAD0{Xq>VU!o54F*7`%?-%t$c5%Nur#F@Mg;=|o_~DddG=>&yR!cFA=}Ss&|6;r&x}bUnV{? z6nw5d#9w(?u>1<~$Flt;(tjWE*IVUO`~Q+)IgU|(oHglSy|u)jdr=TSoA@K22$tg# zztig9M&gq{3g!_1qY9-WtSUn1VM%AX+qa{75Sf0_6Tl@6?T5Aol%z8hX4zSeqgdLQxn9U(2>AwS)~?^`Oq zmiT9_cDls7JjYP;d;34pm-DT1Ld^dt_2$Z>rXPEVe~5ODe&?=8{GmUiKK&Jwe}ed{ zxegTmuEAG`->!BG&l^&E>?!T9M@;@k^7-4SuUD8qO#BNxzbVZ8MdDBRj%kle`cDu) z!S~0VMP?o=6Mq}&ulNe_4?e>2m8ZObULe;f`(4k|s3l(C$1i={wBIG(-1Ue5H*sL^ zg}xxyypQj0^UH@PerD|356Jq&4}ItV|JKL{xV5}XLzNF<)_cueY(LK}VRom@`VO1w z|N6av%DLuwRc`E7dxrL;%Yw>kUlCtN{8xU*dLIhv3;I2)BFk4fa|O=_C~h+Oi!A3< zo>yFcx51AS-#5+BSNXY2{C#>(%ZaA_Dwob8pE$(pINi;DSNpb1SKqD7ulPO0KTUaC z;`3IB|DA>3OZ+3c4tkVn&pzUl4;%WFd49q^=$CTs<@hcAmi&hGR=NI_^bFHq;1Yi* z{R<(UKhs0}jT|rTv!>0BiKloNvVA1D4` z_E)LR^jC>^+kP$+|9j;V^-~bPi}tY6ze4;C>=#{E+eiF0YdPNj+k_6@=auW;dJ`|b zV8UABM_Im>;}ZW6$94Gy@-6W_l%K_$$e+X?L^>!xl-8SiD|+4npKBNKHA>GVrkn}l zZ`JY0{w)*VMtP{^?<4+2p1Z2}XNfQJoFBzI-KITXryocAv6lGV4+Z<(C4Td6gD-u{ z@W~wFO=*+=^*a>9oUiVD_?o?b`IVx6a}DHI5lZe3o@Z3~ZzI1JvM3EzevMLoJ;d`h z$~@OhYhF&dqtD|qp~u2E62HIicc1+LpYy|pKYEy7v@*UUnKrb zl(Q9%|8e3sshs8fS0cVdeMRTR3F2!$MgC+tW#V7+BZF7Hd=K$io3E&EU1s4`Uo0s< zlMbpc?z8k))fZ=Qel5Mxj0@ElH$TGmupHGFXFVLmhuNOF{4Qbj`>n*^LVs$Bc14l+ zhOdzhEMN7@*_6xfr%ijx%pV~?=(yNJ{2t0jSz1?>2jd67G8q5u8Nv9lmH!Cj7k{j_dA4=`a-SbX@=UkZD;pPqKQTG! z{a0J<3)KeeUu2c9>!lUYR^Z##{S_pw-dv1lm zDEq$8^PF!#j+cKdIR1{gAsByPI2d2FBN%_~q+oqBYl3mn%anE!mX8X?FSPQ1s3Dk+ z+PrHvLy+6M?mq6&9{>Ki4EN88{41}U?p#j&u1q;dGuqKm<)V?2*ni6Tt@!!#Sc3_! zR{fLmUh7XXzxzd_KcC3E{PMNr%yj(nHFN;p$%edBdbrbOIxlDWS~}FcAFu5V9}ao( z7nHB1Bk=tH7v*d5sGxi;A?}y2#bahVe);Omp6U4IYv}~@{=L#e!apWo!zTviYsvk~ z%Gc1Gna*EQzJ}(`bpDp|HFU~M=a0$PaNSJjkIC22X@8!4EiRbp{5kT~ZJg=+J;~Sb zfis;yCSS|*pmXq&bFt-8y><4^(HH&pbD8$@^{}7I|2=6xyN4JF8uISORLM~7=USQ1 zaOLR#b8k2LvB5gdk7;kH9jo&7Ao_zU% zoU8RbZ1Rbo^W8wa!}G91Ea%SOLXpL#_4X)U{Slo1Hxhpx`9baKF!5jc49g+iGQ{^- z{;*Nv&;E_cU;2m{7e(T~&HX>xo^j$s zhj^U0W$5rKQ+|c`K3!KKJuCE!g)RJE;-4p8>)l8E9G=tebaC9lo|EfWYq9vxO^ch_u2RMdBMAV`n%Ly zwCbDL5o}M3RsSB8?{BYt{;;gWNqXg(BOQTFYl8VZt@4f<45oj`@^7SAp4NG-)!sp? z{Eb%mUjx1U`;VWsp1=Q?VEs2*^-Wmy+2FQ?fqxeuYDomZB~2j^Q3=i z)xX!OztO6Hu2uiPSoPcIQ-9j3zu9{JgE2k%+dFLa$G5HfkE(MV_ohjI$rD!kXRY=; zY|*3DYX6U|^fgxcrXzywI|23k+xsi){$E<{`2zUY-`@Gw{Vi6!$D;R{R(jY%KqQ|u-1k-P~ zo@c_kf47yMvFaPJ+CSGC5B7Qe@3QK*&+q@5^}GepOTJH1d;#(Su(uR!|DQVVU(fRo zFT?x>IB0(G{{5ZrUpjb}BcT5I@{2hC9^mu`@BeZ-7=QI>Fg|xtF#e>KU;N|#{_3&( z@nXLF(@z=-#-F#!`*Khm35>|gaY0-0+)t~)Vd0FfJ zUt9OzY2BZ+?zg}H@Pc)J*}8wsx<6AJe7>u!_LMFDf50kl)Vlv6EB$J#zLTu}4D|== zpW&K#C_W44v(IwAYSnLlzv9~m2k+m>_LPsGIz2l7KovT)Nt?%yXJ?H#6Tf)N^Z5_#NyVO0+ z4Y@t;1@mI_M(gIxcjwog>Mn5WRLk1k9!<{C$v7q`3Z7oOpEMmq;P)1A51iFJvt zWYW+0MyVE_))3XRs&HlkUm&MtisRj`XJc&hJaSE^&VH z{LJ~eIrHbV&zUo)X7h^8D>wIUK5uhub8hqY8uzf83op2^CNV#e8Ofz`Ik%9z#ldv&Qt5$de=SObJ@MkyKYCy*@IwKAY~2ba!t}_jGpjoVVhfzRq(ai8-jTy(SVHjl^@2ZKKhlbTm_l zrE>99Y%q};9El9(Gec2#D3Kq^xQSGLB$7!*QmI5TJ#bMb+L6g;bGhMsWGIi@8XF6- z%opy;eeLetV>@pC#pgcbwYeT`JiVjCjpSW-Fw=oTTsM((-DI}iO%J+m8gZ25<}&So zj(H7@gYz1i0L_D^Y(C|b`EG|hA5VDN+SFiu{k&W~!iDjCbP*o2-OY5gw=Zm5Hk=+= zmQN=-ha)2^BDvw!8&-FoRY;DVRY=9VRxVrBmBrWMpJnCYwkukBk&XmPhiDt;<2<-15S3BG#EMr1C4$L)pm6 zY&M-;jR)DfZg?b~?TX|RsjkGxK%py*E?6JQMu)o#x#7ZwA$0nNY+@|3Ar~2nZ!Dw| z(cV5#zb~>io9K&-B$9n7CD%8Wi7z{+yLV;Z1s(Hp==SEuX6f^~NH!Z8lb+2*hhvFs zG?~uDqtc96d@!CJj3jgM!AK#QmyXO0CexAp&?*!-6iuXthT{3{v7uZvk{XtNmwwG9 zFhrW=-y->!OQb-5^g~lC{w-?8zt)ySraPWbN^gxs^3mau;kb;dk$5f>LF=Wro29#R zS@5rm(zoH?a6Fbv#^ae>G7*iVvs;?vAG%%oy%0+e<+dX=AJ63*^4Un#>-#ogfZVo7 zvJl^%P2}V5x$@JE#9~?WHFzuP3X7x5)3JDm8_kdA+udj(i(VhZBf9QTIst~b2))zc zCKEYfg!(hk;i>p2erM{>faJ+!6>_H=fO=(r$b-9&HD)(ef;^4;Ao3BuFB&K9bwIHIYol zV}~o0{8}Z3AaVQp@8hNaqBYMTi1ENv%j^g;5gu zT;~|1N;J#A1+Ay@{bzBtedn~%pL$vl)Di2pGOFqO+p z6U8KrD?S=c79a~n@-1rig4UM7bT$eRIB2pAMLm%-WMaa*=+s2YyDyPKO^Mh@A_q}8 zluBo$22aklyV<5jsUh3cWP)ZBEHXih2^M=noBVgPOHB|N^252QXtG$R*M#Z~UZ&T#*GbTgDBw!R?Xc*RBUqa-KkRN4yyZ116Cw zAg2qyzz`C_x*g;~DDpQ3;Tnl<^};kNjb~kqf#}wb3na`Ja_+nnAj%|lU)XIDY=%BWerwy%H1 z+Kn9?ZXK)R>Ff~dTb(unc6H$*jEj6?bs;-a*gBk8lgNVMQxO@0t1zS`#0(xkE3z#j z?OP|>0n*n+#v;T0U5PHVGLr3I#&G%i$Z!NgJkg!r=CyA_vcGdUu{F^X$>!o~Q~91@ zbbEhKK-y#PfZ_g{(K!5>S34L&Gwjmf`Zk zO{+GZGlcmG)6oU(+tb-t`-K;fPe6EFH8nHYKQhCDmoU4=Fb;D00mvQ9;9#G8z3365 zW)H`sTcciSk)$Y$B0^&Yp-wtA7;S8X%CuxC-PF+3+OPe$%6}JMw*Aw z>zNz%Fn#Kw7uMICxi?o|&mq4s7T>l|RP^S?#wPUEqGtSP#*e1f=9ZSG7SVPVVKjOe zp`{Gjj%9`Xa2nk{wj4t&(tmDbcsVSQt+~S1#PY<@%9P9r-tb%7y|S+pV<7=jkF0=3 z;_=Fw_-Ox%1lqJVg|P~qE+%7Uy-c4vc$&cYqPRxm>xK)l$ac&~U2D6~+0@_M(7GNI z&lq3?a$_i+L|xqx%)OC#B-Im1j*MmFskk?ImO~--ew-sb7XeXWoTPe1!xTZ_X-YCe zWn^@AFI&G-eymyBy=sH}ST8@$i^q@yqwRwBEgUZGkz}ecf^mZ%nc;}{BNt61+8HE36YYVs?c19r%OlHg*%%T*#Cw91vvG_n? zs7nTED!0HG1M#Sg(xyf)wg7l^)z*cg&55NK$qwb}gnNX!vYvs^6_0oW*_$r$1g4w3 zAK3!*+|0JtdNB+!mM|q_gpTxLs$2mc_kM`oA$CGuMi zGSTEnA$f7^VyK9c5{ER3LPWyirbLh*+v+nSCbQc|&7TZ@uVK02^!9pW#Ek7JEQ^}; z$0GgFqCXbvk5>J$M1QpDkEQ(4(x^Y0^oN$*q9wOz$t_xPiNpf}@Rf`H6^l$1 z1J6RwKnUKMD&g=|X1C}ifv!fhSiFE{{1ST=}_S2rKO;Ajw42fv`#2&3Sam zBKcuYPI{XC!dyH*luZ{hxhBZUC5@uyw>C8{TI@Lr;LQO)qBeI~EQVP&4W(!~#_Tr8 zo>aaQQZtepQR&#ZX4!^bPfm9BLQt-VgViy+#$zkuP#vIDWD~19g>KP!tY-Cw^~*N( zY~0Y4XxMw&Gg-R^Tjp8j3!!Fkw!7PrFvyr|u3iIX`h`_4o!!OFdEfE!dTdLA; zOI7@Bsmi}CRROrADgn1tMc|gI4BS!`f?FsBFK8cSDMlWGC)+6OU{q1jheF~BH~6$* zREc2pT#3~9;qIf-k6%M+bRQ&S9CNg%*FzEZMAO>TIS{1jd}446-nKjxV`!_fgh-yj z+(L0mEd+DMUC#%^sU0RSr*v?R=ixBoCq5F1!p-H4q--9N3RAr3yOGXH58>{4|f=RHT}uNHjFHB--!T*{sE1}%4l{Mu6n=R|F{fRoi5IBQn+uHCR=1s)~WziewETUfoJZ{xDgmCKiPu3H<6ixVyb z7mKJBoskSg3^Zz^o-a#{t;bM>sdQHFhHn1sgHLEZ7zs|#7zS)NSWR?j3`DqG`#pC` zAWw1Imfh5pV&s(($S(2FVOJkfOEjY$vY`&Xp%=<4%eHKc}+C!aWP7_(hJ zBx*E{K~?4MWF$Lchz+$0q=Uv^h|7#mRa}0KK$O7$<^6<`4EZTPg~YMMwgEAGQm#1P zL_0?(y6|40`v#!yctRI^h^Bx;T$%4-7o(b-*a=B^L2>Wocu^}E1Ey(m?D(*YhN7PS zFS=@CVcKg0I?EeL5J!;zaJY(Bv=^O>pRiXT;qq{VLV1jNiUrE{9F?h94*nc50M^1n zNTuu52Jj|#qvvqa-!M1`%K*bsEOc)?%Com)J)t@v;Uz-DVlj9h5=l&C7=E7T&>MfQ z=LdyNfX-PaUQ_eavq(%y9$~yO=nVp>+#nicD@+bo23cMNB1Xdn)JNj63ymYm^ZUv? zCld-*3b4R26oo>Piop$zF$KSpQ5igwxi6c5>lHrC)C%aX99AirWp#+j+_+H2a*g;W zMF&a`4$63|jvTQjIQLaYoUt-w^vM8~xzlr*nVHfvC^|g(Wo!!bd%n0qIiBn5;fjmb z!!(R%>!o%xFV-|IZeHBBq|NhxE@^FEx@c*O=i*upzhQqTRL*QV*|~PbMrGEu3pco# zH24^FlQ9SHl&9gJ1uuZ+?@HwJ$+)o>)<;GY@TGf_Z9QE7@dT!+vG~>=n8(|P``5tj zH?*-c9gAaP`f9M0VE+Bo9Pp4f7@1eMx>Xk{JBN(F-^o@!iio>(2#TqZ1%>FR$ zQFTK~CSgpWCSpb_9L$sB($tnQJ~VYUdjhz=zN)czG?^jmIWpY3MQu$jtxK0Q(+Lf? z{$P7!dn1;ypjUbX^_<763#p4>Pxr6Jk^(eI_=+PVjDUON{p%82BU=jzne5gS;JcRP zjo!7Z*RAd9YInu6kI32QtnF)eWns^A)ryWXFV|k22|( zy9jaU>dRq60f8oVPu}RyFW(1j$0pG_sDA0ty$N2vD7lFw1 zjHnv3ScXL$EOU>>o0c{%S=7?jy2$h2Vr8UtNz0<9R?oS#ECphFI*I7lU`wO=7{2V} z07l1~C61NiA~-J*%MY(#{#rBZdiNT$X6=f848Lr?2P??&Y^uL^ER~Opo?Va%AQ3U2 zWVd?LMmM-+rPv5y+-1u*f^oeygv|}7oqA^7{7Wym@RG~6%&ox^peud}(c?^AqC$Dy zBy8}#J54=x# zJ?A|UBu)f&2_~LASkiENGp45`gsAeqiHX{UHm}6&oQUUy$3=JW%vHz|CoPz51{yoJ*oR{r4H@86gn24jw4dCw?LP%fmCH44=km|S;3 zT%97oJO`f{C|x4Opvc5c^c?XvO0*{@Je0*^!*CLdeivd-3Hk+dxhGPfL_ilwK-zlt zbws*pQZe<|9@;e6OD0?KJ@!kL{hlQ8oET7t-8zvx^Yw8#oo$Vefqmi7G?LI*pRO(_ zfQi?LIi4Le_Co@#gaCyc8o|mk7v)s#)aXc5*!RqloUBQs1esp3mJ78h4`mJX7{uHF zqeJ>o)hZbgFr%P^dOExg3Aq(YrZ*`}4m;HisZDSk=u9;^EW})$v`x?w_z9}1@B&Om z;js`RX2fI=wG~P(#yOV1A<{;ma(N`mn1LhiIT1^6n<$rCjO|4sq{Qu@H(=8Uw?0HL6T?Fd5!%?)yr^YyE6jjp%R5)BTs0Yw3`C)c zH7{ywX=+=%WNA|)-C<_#0{eNcKT$ilJYz|C!xvn0Yd1!&J7+CsFK8Rd{$(H|7O#EA zdv`kD-L)R`mN>%tJF(`4el`5OOng&Vd`?6?X}`+bccJpWdqelic3E_SAkUl+H`_qu z^;nMUy%=kM@fz($Pgr43*&v1k$DIoyVV$pC*#woS)Mu6jvZek{g6D{Iyf|CE(U>z#4{jkg;k@^+~tZb>dCC? zz;lNn+lMCgH1V)Zjzk%V5OcnPIs~)CZ|HD;K(#!&z&!m6Q>v({E?h8B^xz5yqfko7 z;1va`&S-%1jm9WkazSJL(hE;Dqj^$A73l==D+KUXN8Gv|EBja)tOe=X;tF z2FMx=>n;ocu``T=TrHOcF2*|+oTJ0=NXs)$j#)E?H%%hUARcXMTH4&Ww7G5R;>C^L z&bP%&TN_(iTUwSZS!^~yK^mF85UQ2x6y+Ht=wY8G=lO?HLloiAkz_Xyv}c{D&~Fg+ zP<+I`=!UmuSVsFm)w_nZ#wx<|UPH|je}gP>L4R9*PA|GkSHpnl+|Uh$PDT=Qtd)3m zeX1AZNVJ#!KI4Q<-Q(UFFXy-Ggo@xHOBno z@wJqxhP_!t#`>9f?%{GUoM*O2iMYksknJjivS__MvNc}Fn9XdWV|v0`L}Uun+Yo$b zk>oPjRMFrqaSvr0L{SvE4}%!m9GJ|wub>T~0kRVQTpAH zMyS?X<8C2?$yVA4ro>>9r<4A|&RkD)c|u7L;*+RK743W3W+;uBZzC>L1jp|@PxXX3 zmM&l|14}NkF-QVYJ15O7kS3n@b_WiLMKaU~$?p||NDS)}o)_NR2;k{R4Qrw9aA$x) zbj9JQ^M-%B3vX>5=rg~H5S2ufAP(4t9y`FUnKavs;_MspvPijMuzCyT3`pkwq3ER0 zp!TALVtL$%{tK#NL4MQiYypi$N2!wG(kByE+lh||# zxvqMVS-%rw(wM`Br`!Q7TR{VdZwlK3zrtKo}r1QfT8>_7Ti1oRPvff zXPErQzY>Bg zi0Q*n3u0s&2r=#M`A{8=j8Ml-brq^Qe2o*N!@VRI9}@k`G{CGNcM#o9s=KCTS*VDWzna$g)eap1IF+o^!Wz&pr3tbI-kxX8O0XMzOE!ZeKG+n#gg- zEs71GCC4X@E;)E$_Yw%c>)`m3ZO>oQJFu*$w|6OO0P4JZunr9j_6!d9pa?9Zdzu|* z6}qz=eRizC{}L}3IukO(=2K$Eu&b_LJ-TBh?~b0{vDupN@X-ydei3a{)4Uy{thFCu zWx(gK)~j7SBqL6?R_3;w!^fBv(Au=e_!#3o>wWOQnPp6;uNJJ!S?`V=C&nfY@4z8I zL_NHhmH!=RXFHezjvqRabeUaak0D1J`l;*x=3Q@=6Y^C54JBa0%I;FZG*~y!NHG(Z zCIr$0VJ8&xCk28qvAApuAy6>eXMg?)Qw#*cf_Pjiih3!NcY(aYC70>Q2ghO_k*}Yi zcIP*XF<4op0b(FVI2ql?R>F=U>3^Ds;G zAz_PAA?Ym6oDHC~xF`$LVflwrE`yc+LKLADZFO28v~OiR-Q zEQ!f5`Jkbd_C4%_j8PleBQ)_iIx_w!tWzcXq~<)>F2Z18)h?$&$Jjn#Bh6xD<^6by zkxr>*swZl?>jDy8MruXa`?RCTx*_5+S%XMo`yq{`nH^9D1JeO2(_otGri7(ZL)Kla zon_hyozO%+&FS1^J4kGZ?Ucr%Y$Y+ZZl(6`>SEcN)vJRnmnAPt6Rmg{935XGIgSJD z;U)b;eS>|=dQf!+mi8`l2g^14PUAO+NW7Op`tZJk?EaXL+}s8~<$|-cc4T;&_H%r< z+jA$jIKPM)B^6LQ7K~*usW=9c^?T#i`>}pko(B@BYXoEPHXjv+`%#t|tHl@Q^2p6b z*h#jl>>1w{GpZe1G=D$ts*{Ue#KWG)lK_@Lvu@||$`;53+lvb8vQ;yZT_$Rq$57$L zc)0sG>leqmcORJydqTTq+$|E7n!!+yi%mvpP)HDF?U^PfejBSJA}U$eQwcj8pZAX+ zJOZyEo*CK4%q>Dxwuyj``IKDFJ1kiuN))ptl{O)N&AEI0_}2recU-*URcnqZDxB2neNzHEfC72P&buaNtEH z0FIS-zQ2mt($KWVAYGHyYdP&nvTJ#HxmVL{ysCOK-R{P#lZ;O=sT`}OlxsGwt@~Kz zQZdO$H-9uqWt*X7u#FhDnqg=K``rp$N%U>-bBSl$Xz*==GzOCZ_i1G%!H=+YLDpd( zO?>?~EK9NaWU40CCG)zVp_m1lfS_43S)4rLlK_1Jjh$tOJ)_5tvz5R!{^dxFV$@ajuqdTgb_K$8BQ~nK zy66+KTt;rGyULZpv_fVcx@@Eqm&t+#)45AyEYqir9RDgQz{^iX4)T`CzPlB#o4zOe+t~ zQ_VEGvEbr1XLe<=;q8g>9cyemiK&-ZY8w?yvnJDMU2beJrOuX7WE5h-uw0E+yIZ$| zwsLiZpJ4{cPzs_2I;djag<~<>EEhKRsFRx&PRl2_NXKpo)?N-DV!whq24mWhaEWp; zj9wFR*2>|ws?@xumLlv>q*7u@Djumcxo{0JU9PlBX|o8jBbPBQQUJ>YsM)%i1x$L_ z1|&(3Qdd)N$E<^~pse4-{sVhioVOKq`t0MHTZ!SMIKn*RW3FX2)#!*%uNuX-jBQ;w z%7ibRQ$Wi)M;QeUX@PN^ffKGfkvh05O_*opXx|9j;tPb8hfL~%nBL1iP7~Nl3fPEc$7AsRFvC(&`OUyk92i=(J4-N~Ck=3K3N;RB1g zOWjMVycv15he$(LxW&-}N`tp+QzG#KobnGb@-n|h{BRS!H(Mai+ya_bspRX)rUE87 zsW_>2=$TAZ!ftgE^CvB1>w0Jr?onawlx$oL&vbgObW>*hIJ5lX1b;9FiY+iPNx% zpdCt*s$s;EK92TnUNf=_WAIa2no7wqroqri14GN<3ZY`_fZ!CZIKO; z_&bHhV?Cf6RYPw{k~tjF+?wH;HGiagW8QO$_JB%F22eZhAHZZHCXOHs!|o_JFA_TK7R%t>4T%Vu|eXCn>r+<^mpl zc+~aG&;Vpdyz%yA6RWGN!HS(`_3d71hHWN@%*D;=(WY7M&kECnn1ptqqz_h`8Q9X6BI9Gg+>Zf=HK@eGza>jFBUIX{Bz{zvW}Et^-|BxwLi4 zWFsBU`dZ|zH8$y$fPK1$8fnH$4ZaH|Dk-L3iAa-M-1t}{xRh9~f(6sYB#Jo{#o9x| zz>U>}mVr^F)lw#Y6%>;J$en;1x{Ox)e4k+>80*LV<`$X2?!sky+A0{ilxEgUW!q<9 z8-Tpdx%Oq75gJ{482r0Up!oEp;R$nKCH`>1G#7wIlUJCNe5O^Z0Ga!Sh7r^Ip~7Uj zD3LhfOwI1IlPrF@ZCXl_o1J4~F3xrT$6&|($5D~vRgKcL7Be-Dy12Wy zXK^+s)T}|%eKAM|4owe2;^lY9<|sDDa|Sp2L^hV>cGFlB6wf7N6I`%yZDu#q!bE91 zV@+b9cd);&ceroqG8{^K2Yd^Hyy%9OF6~*?+dqJ7Y0prfdpv6=|GKR!)^6LecKyaR zcP)X%ZLc%pElr|&w_|Y&C*r2s;)u?uKjGB{x9jSuw(+FKo z$HwgxA2*#f4j>`t&|qx2z7){ScB(Y8BsUuyY7bP4Dj@+kHH$!Idk`+R+(unBDMwK5 z_j$eUY@GS~=FZ9f{d-QgMu>miyGc-e<*;b0Hfy4^;b9*R|F39 zK$l`&8Nn$!QU{hE7(}%5Ma$!A zR28xhf4+Vc9J&7W_hVmKifu(_ag_dg;&mm)t`%9kZroCtpb^cnsT5urGsB24_wS%n zus17)Gg@RHlc&%{eDbqS&Z4sA;U^NlF`60BdSVN8OOl9LQYK05g|EFf3O@~|QbZBu zN0?*E;N;e|%wU2vlK&@rl{FfbiiWE#m8#KTgO$5<_ujGl< zMLDNPL)zr-V6s#*mC_P2nvDB4_#_R$q>98;vLU1wlSB!%qUyGHL0e#CC1$n`|MMa| z6=-N?N~J=^i*QgW*V~+*cwrlbqH0ho=Dg{J*&YBV8<~84EXJgo+Y22S2g{_1v*ng6 z7AH*(2WQ7Pzr5}aNp8yDW-I+^Yf_?fsP` z{adnKSj(A!-Q`YGbxzD;U_@Cj-2y2G<9}MUG4qH^aU^Fl4{0z(^n^>#7J5)+u-WU! zDVdGNHX4j|?>$ud0ZtxheJo3zAuaceF(Hw|#bG8w%n4LicM{XwJo+cSa@FX1C>@TP z4Kg8l{4z3-mi8?fOA^Pps+1Km&BODLEOxn_$JUcbmn|#Q6ldRKoMUMYkX_X>iJluQ z5;)6Bc{0^|F;kBqp*_P7j0EODS88-pQ7zMCRw+B7jSCEC+BPdwXJuK<7G!)EM_T=5 zT;+T^%~p{L5}0E?&Pbk=(ibIF9AzD`>~MagA@zw|TMn73Zmibk5Doid$7$q$fQE@o zOH$ZUB_m19`hWk@{-I?kd$k*=B z(u~n7n^&LA1KP~j!VQC0&%+3SM=ia-QQu6`!JF90k>o&=Q?PPy;!cFcr$ zbtHQv))djt_tRn(YNhLy{4`l==@m?j5mOa&(Dm(r+%QnK=z(}(`A#fE zswyTiFLFvH*tbV>FB8$wgXvH%pu?IdJd>?xCrl5d5@EbR4rul%rr12X%}#vslBN!- z!#mODe94QQlk|`DDv4ZQ?=}t)kISBTbX-R%(g&GIh&|EnDx-mQjl6_-Wws6t!_Ih{tYc`YSJDPA0$cWVu`ivkQoi)Qnht4s z3C1KVZ?Pnl(|Cw=Sw~+o<1zPVSh<>zRpQb5#3+8eCbzZeey=uOH``LZt9F{^SE&+G zvC?ErOZC}0ar6=&RFAlJko0h=kTS9RkjS|Q`|ij61?FVmzcQxK;%y8il|WAW_bQ&I zZ(Oi`NrFaK$3RNb)vxe+d}uea&H*1BveBk>$o0bj7-V0Xqf9i?q{l~SCF6B>Qw zGf~T#7SxIlFt(~x1hk9itu9nXeJ>t$wCw>}|zM?Na4|H-H#okC;!0A3^mL;Zt2 z!^2D23)PDx8XRJVV~3#JuMRK6?4kRtD1i)B$Ot67h6&>(i(e6fv=SbS}8>z~Syu2^)1LJKKl9a;rx^Y3sZ1 zGE$kVr6OshzT)zboFXOC6I;20rk6T8%eLs?)l+sX$=1E&vM*pHkX`~4a7Z!gSgh2r z_1BKU(cTe`HLZEO)fD zo6T?%!v6{nDwSkOI3ks+k5czJpNkgb3@~4ahJlHwd}Ebbr`%) za7qh6X%x{W2yuI&iuc*r6V;+WQ<8YO0fmx?>g^hkZI)5K-0WtEMp2OTAneAmnCP+O z^nWpxCrOmnYhwgnk$2!J}`xz-R zhnNW*8W=Tfw9k}BS8(i zGC(b0zYyQQ4w_fzu*EiHZ#JL`W0|WgmhOm(vdnTb`G`i=MF(tw85Egp0+lUzYIv3*W5aO>u^Hk&~25J?-|mA8*> zWl%*6I*PTG(T|Q3Gm2i~^0u$_TTOZ&+~y9@$ss9A89kZSLI)~mqjCaGrtJJ=DVX6{ z%)&TNKz^`3W!G9QNtkvkH+OS8hUm78Ue{L%kb)+4+y%j9ST-AJQ2X6F2tkf=_6MGG ztiU2|Su>0gPO538&*4&&_@!L>3;B%3(@H?A7y2SsSeJI77O|_L+-Zs=$BCUPNlr9x zALD4OqlY=ok+H3Q;IJ);FvPftI7y>qV{1^uI@8-p#$lULrngCFbPbY@W-M&#I0A^Q zS;=Af%>*gKD+Ae0Ck`Gy?DB<@>}EZ~`xvD+TZC;x!;jCTmZlyJ3*M!?^`dC2%XDx=}M}7plI6s6igLlB$w_PclSsnAb_2ro^!+X@Jr>Bc-I0j)e+od(72k zw56;Pk9wO329BMWSV`8VMJpGEWy&QT!cYZ+-MXlJ+e+96P3qOiNApOyI;~s`qU)6N z(XE*~x|aDg?aWN0w$)kf%PiO4wwU-E&SDd~RPeYPiPOx-7BZIW{7a3fn#|FOjR@?b z$47pAj8~l;PRV{L-y$hW?&{VsUK-1Kd;6CT>x`D6K6b(_Wy1y@h0H1A5cV==*W83Z%NW`(rC!hYIP1y@F*JYK{P<)3R=E{@zsA+6-NB%&9MXp<_>*EctF>H@F#2&x+>!TNcZHZHF zv6-vZU7Er%BAG76@>Y^!lVu#r()cM~04$OG#GX`DHq4d|i_&3yOQ`k|Noj;zP)6;O zLF1!rbf_O5WA^3C*pEC)zr{wU$w8M&V{==`#5BiT$Ydcl|7XnrSPElhfE5jDq0Yy< z1ADA1F@FG`kFS^lk3hiEsWZ$lyoaX=-NtlQR-m;ln-c<2)mdXGH$2eS zi{*cS1$qAUaG2V_@W8;bA(jJl8g|$5QC@kt3MxM$Uw*b_jg6)fbGDahP1XE0tvjX}tbg0d^}dtr$ftudhq3v-15I;^ zUfnI*@LFaem=|yoOvVLGxnok0qJDFqj{Z7_ZIb3}A}04Klld6(13w9<2- z?D_2S(nzVzh+@oi#C-W4vzrkl%{pvKl^qJCO~m1p)N)GbkzIgf&U&q~!#k#F$pMee!b7)`!f4#h1%Q1cVB#9 z4Y%SnrdFkR3M-cXt8+WZM}@ljCv@A@-$U4`QQ7@OZPA+!`G|<;KFgzHi{15f^3=S~k#fhP(mk*~5b24&oZ{I*46JR?qshsd))U+fs z^Sh=IHzH$K-Meu$tB7{+1aEW za?IwT;m+L+g_&`bL^o1H(tO95Wsjx zive-^US++%pdZAO(#cti)wEO^p7%9zIdC0aVC!E*S;5jZJ?m1uP~-)y5Hbi9&xam&VvNi~O~n zBW z#BL>*eX@Fy6vU&e57@R0RaTESjV>j>i=b91=oD17k?Z^j5ABkM5LEOCOjF8E;0-6^ zORez0j!R!V~e1affAt-p3Y5aS))XVql-d*(RQq|Zyx2~_hkFD zCh-06X$Wmx3(@&ch#PH~zW{=k_F5oZT!t?={iqe$N@m&^!&^FgEhvAFtNm2*9qakPALq|;a%r`z24TB>>pJ+>cS9o> z-LRkm#LXP7%!Q4sJ!2e1&G$Z-uIXz9X>~xH0s9-=S66Jw*Xk!}S4x7LxA4JV6I)DZ zw95^4q<0G^%$^({l)H}^KXhwX;1=zKvlShTc|GLzg5%8LI7pfmVPu(u2+X4*nsB{55h<_oFgc!3`s$54HQ zxqs7gYAFpL`N1l2mRZE-1Q<0g7-b-~WX zc{cHNaV3)(HWIEB9?|-^5|x#e&b?m6L)GqAj8uzOkhJ-=sYc@OKk!@WZsTg&{JlQ0Kaz3A^pat!wObKs?K zBvI#nLf>D&zGaRo^dX%=t+TddL1xSriYZ~Vz3g$eGfq1Nbu5#s4RPL?rlRuP*RuPe zE<10@Ei;G$)GnWzN-Rj@^{<#p!;?ht*=cTp%gjCWXw)LDIhDe(+I<_dbwq`IRM8YO zO^kfeRce||lXmS+s}*CXnsqnd5@ijYnw>?>(_S~0^V#hnVHAevu2@;uF5d2kw6?vx zzQz|XbnGL{XsQdnaJ*@wZ?^7k!v>Yc;)wRff=TMM8X&}p3hZDOv^d*Y4dp9#!Rjy7 z5qT*$wD|Oe?O7c~aom_(K2qXRHPdW@Pm|k0t<|hTqMn&2hen4tyGbXhDQVG|KF#bz z(+D+ea*=W<#kT@)8b7&BPQynTRvR5zjb06Ou}`bp!uS>&x+->|i~8a~81BSy)lm$| z#glnHr-wy%UZMpWfe1){dV6V?s$z)Wz zEgwH5*CJcVWt9tokCu z5wESI@FRatNH~~7F54GL5|G;C9AAEvu_ddz@M~eOm8%vxP1{NutEGs@< z;zS2f_gD9@j??T5>WhTce1gIx+fpoXr~=v17WhD8Z#7?wT{AzdDf1R#<(Y^*#KoD@gp*x32Bdw|Hm`X4It@ye*M07`q*zbMW{RoOGeJ z@umZ9d?_N7R*}$`Kcf4`@e&P45VjF1+mJ;SG0EC@-k9deCZi!)htc9wIALe%a^kMk zc2PrWN0Wwp5ouGUq<9;5osM>GN-53HZGLQvWWj{FIV2%5*`0{$b`t24}dJaRf4uva6 z*%jr&b&GKpFFu>Wq^~f`bDH*Vn0foKP^ws_dnE4|JJC_%wYRsohtrmO`Ud#QGrLCy zSx(Zx$7Yh@o@G7pZIVIuarO2N^5qA#A}OTav@po{5p>$&g38LVS@-0wFej`fS;IWSYZ zFCDOtbD`eI2Q%B-ePIF9>=exxR#6^pQYR6>1Q$C6+Hte3Ppg!VI^AM1cmdyCpI~{6 z@4RZXHy)5mU{>P55l>XxN77&|>z+2{Xz4;xg@q2hiM{okw(nTEef`GOJJ{+_8Y-$Y z|H?5mj%BfqrGeB2?xbdxSWTm`uWcQ`uq)Y7P2}p6Cvx>JmOgvx_m6Jt;}Zpg_~mlw zn+{>=#bA#wS`T{xU|U!>K4>t?R7;2EX__S~$|^mGqCU-lAI&Z=cD2Sr$%hPpky<`x znfGQK4mXLbgPu)ny=MYX=0w%K+J~sUS4z%WB>8k{1!&iyacxfKby`HWeT?}YMuv~v z?!9i+7Mx63xYp2KT0-y+h|eF=jm)N>cEfAeZ75&*R8PvLoM2gZnPm5AaDJD@XNm>_ zkTJviqb>e~RBp7NN^?@7HFUF~n?;1OR_!I%Cxm!ova!_+Nxo}#p#_@ptUocx%n%v>l!DX&a0@@~`aJe9MT1M;zR46*;u z&cI;Ri8E#SGzWWP@LS?ToxbgbLo$Yk`B0~J!Eh#qoSE1%!v_IT>)6T9j3;@oPjbM7 zdhuNWbp%A>G1Fpc0FwsVNyPF!9ueAS zWc!NBFKeMbP<68&ORqH(ghev<6r@V*@NQIC=;IAK%Y_shWWZMFZ2GI(8Ln*BZEW(h z^7JNFw36P!c+O``LUUoS)H8!Ui5oOBo?Pu02IypXN8G1k4Nns4zpN+d4XTT40qSeqaUz6;Q zYe# zd_Q+qpOQlJVjdnk7E=csiJ6+qUc+VxF@`2z@*Qzg)iyQ`BtdQL>#`Fq0k09$9>U6{ z!OR!@65v5O-S`k;c0trKn_jo>$*!hLWtVhpa>z+jds+SV?ZHHj3zl27%AFK(MwM@2 zu&opq*w&P4Q_1URLo_j|UKVs0aUpTAqXVGMNj%1F??LSGwVxNLDW zKsg(JQxL&uh^H5WbZOv|b`z*$Jz@kI9;J_Ed{XK@;qwX?J8 zu2N03DyC1fs0eUdLx1h%vznNy*anHCz3m1cU}MsR-lZHk0^^>)mb6F09=am#KfgK)NFW?Rc(oX z#X|~>W-^*i=ftsWky&MhvSre09rj}DrMbTAMrLKNS+Z%x`Bd(r zVm-uU2$%{r8H}XKKFeUy5;Y$#lD4j9F`*ze&&F|`vWN)@Xn06BPqs4JHE%aU)}1tE z_V!qWMLLp<`69?D>57SUi3{lIS>kY%k1xg{lg|=NM<-~5wqoSs8=uAnmo9ih`pv%jqK0qmWDdUaIqi~b zW*jMJJ;wIkc=IKX2&xz7_>?Yw(Q~ox`HF%dlygN1xrUQAHeAw}^GzK%x z$wmo;q+*~tjGr_kVd({cS%B?BTXgoe2~E~pk|9RAIZWa+N%=VK+au{q5+R>UL@im4 z;dhY9&eo#pn3@-iF#dsH##Q6+z97_>PA|=;mYWiB46(tjCv<8hLSt2w0p>+l8 zd*%Wd$}-!UlX`t{uc^n~oN&Fr)C*;9qk8g7XZvCJB$~3g?XWWplRsM8d?Tq`+%Xws z(Xx`WObaSYls@)k-~N@g!Cf+PSxbLPg4S$WlccSAMpwIjO*SO2SM5eg8#S%{!VInx zCSva1VwO6wU!TJ`SsgVSqpx|3>kPWIJQpU9Ma(Q0a|qforqbdCh9|#amM5ue%YCs4 z*^Mnt@=>##%IK%&OPaOVA~fYCL3~leJ~or~@t6apt%<--C0{g;yh#}jCr~q=mB<$o zeJjdic(xrbIb)KKnforAS)|*)Cw3QfU^DW*@y#@DUbkvOtl2Kz%1+!{B+(VzglkRq z?df}%Pn@oIjooF+2>b3AcjnAd4aDg)cv8Rev3U1kEFR2?&GIFaCHm<&h7kGpBYTBD zdfGl7v*H-vwzTivYs6t;!_Az@K`u?Re3Ub{Ef|{5#SIPXZQS4DhjQq{O>R7@ZN@N zVE6rg@SIjtme)_qNeGUzohY!ZaTQ+*zFiJXkLLK>u){nXeh|kd70*H(8^$gqYmMU$ zn4VW|xuB>hkLKAygEL0ZdbWS;cG>fe?WZ*u|MoEdQB$Is!X{<+h=GV%l`Wq-Va!I{ zAZSYb%yl8Qc2PBKH@F)l$*yU^#hR;RdJgg0wdVlF{{@^E+HxYlRv%J}sl4551~^Lk zYTruero%3^7$+9Z*1FTO7K&=Q^D_5qU6&p--DiL-y;@`d<#ZE$N(VEFY%$5;u4N0U zn$@a{7Mz>L-R;G%e+aFr9SLuY9KV-B-EHFrH${2z+h;dQ_}%t zrOignz6$)L_Dz-g%l}|t&|q$#aX~@2=-5CPXtXAoqk4mj1Cl8n#9hDT7Belob%}56 zrWY4ujH(~EJ(|LHL?QvEYQ~s@8)B^iIw0F4z8)rtr2UusM(0)*lNC-i6@Ey^Yn*Qn0NF=aARDoV0xm7|<%5nU$7 zmC57dCm8~gXL-3*O~VE&2`u`#hN$jI({tLTO?5WeYsPxMwaR`YGE-+u3$q%p(XLrr z<1iY$CZ*kU#=c{(Z&a58LNXf*GL5D5FgZd2*!c!lc}}!!oHU@#q=CntCcbnS$3L`~ zi0U&L)u&wCObZKW<->#|mdvzQ5%E@E*m%NrSC^dnd`m5-k+Mv+P`2P!?IOKn7jEVB zzcgT!^F*`Fwwzd}4z594oavQ5oVr37e2ZBcOnk1Tgsx|SzSHf?rFb&_ zJAUYhTTWvIIrHK+snvSDPGy?#8LW;;*9khDpKCK0dC-Tx-lRf$5AhCuQB9J0MK$BI z5$%GOju|CSln&K&6Le`<*tJ7WSTSok!YQ3O+VrgqR7zQ!o>e2+w+CJJ*iqb3#*dC_ zRkd4QxLd;(fQw4Y^?!F3EV&Ej;@ot4Alz>spkIVJ#(J5ide$Vn>fLM;t(Gy7BKC2Z z=;_h&-Rll(Dz}({we+w`bk_uXGiShJ@zG$Ojw8+{vx7aQiQW~nYGOL7BYJF#?i7&` zBDRLHd05}b@rG{Iqp-F-Tc^?&>q=)-Rmr?kL(Ra720sTKG{3a1TKaA&8b54?OLWPQ z@Csd-e8C;WmHWkD|Kw4OmKoEULSM1olX>{9)RU6Ew zzLfsi+J~Etv*EJobPze?R-U{Ub*wuqI;wi=G-p!?{{~$Ucbp52dSP$rS#!%I(sbWG!qGiIXZ3vEyiQ4 zj{Yf4QO5QSq)|t+shC5Wr9dViFBK+K6XJARh~n!bF(rr-YSJm9h#&35Vm}2cW}JCw zQL@uT_hHVp&-gI9%lRerQw`bw>$o^N>O+C1R+v<99Wur#;{b8Eqa8f08>SMh^Fh3- zfyx6^Bwto?7Dzc^)c#%3!TjOW3y{7daaWg*op&u*}a_!g~2y*$MMCT-p6DGOxhW(LJu~>w{(3StAc7A631hYpTBGO9wcU~O%&Bei`$m`|BK(XgS|Zdp)Q0ayL~jj3?7Q5CV4NP+{J>rNmFQ= zY$9EKx7U~Hyc=z#Y+7kbbd;Jx?{7E?EO<&HT68HVZq4MwzG9RAZkw*HP8%nQPE=<@ zbFa^RNtV~EGfm_;9R0HL;@0_^Rw%S5JLr%Rm|n7LtTb>{@~%2w3*j!OlklK-{URMq zCN=I3Wf$NW(d_s^1nJp7;~oVoFW-h{ZzUbflY8QM%k$}-JNK*a(jb~*{-6^ zV|*F4VHE?%a^H$Y9*l~|7BV*r4`~xl(wYL}sY$0nHvsb2`F#UYdU)!ode=pM9Qshc z&F@QKep4s0Ot90D91r!|3)|WqxN@?cQzHW>Cr8C z<6}K+gyh@{9WON4vlQ1_yuoqv=7fvhem>g4#|HT5z%YI$c!IN4q@RN?*fiBQ#HriM z`n6w#9hCh8{kV{ECZz4o4 zxHtmBqJVb?BA8Y+_deI)!{0#CqjBikX`iOpxx6G(SC>V-iy@|gEjTbuJF^e77f^>d z$xy(u!|6%!SdQAC)0l=hN$=I*&M<3-#96tbM3ds1MxG^L@eOF@>N)x0S#LVl(YE62 zpPByGe=zT_Wht0}$zcES-QCE}C4Q^G{Ns*xa=!A#-p}BKWte*Lj7~Pl=ZJd_9$2EK zC>f4soapWD>F$}azjt}hgNOE=-nIVplPgx;JGSTkO%Lroy!5sWW7{7-^yHeOeWUws z+daCa_sH1V+s4-4)tuzSk-feBOYFPMp5mZVJaGE92iI=jylPADuG@xBuRV5n$=K0- zeXH&pJl=D9>*19{d!K)@fAxkFOYVE#in}_$+qbIs74zyxi`j&slWQTiv z5Fpv^($1F_a1M6W8-!&-H%F2R8lK%dAjGl#mWpth8_?F1lh)Md0??Q(l}Q+C4vf+< z{Oq2bgh5rbGJYc@BBRA*aZ5cbgL&zX?VnU3K)&!(=D>^%jfnH`n`)&b%6Co0o&2t$ z&}B5O;53!0d^eF+MoI(@-`a=3Ecv(o$mT8EMj!2@pLCtL9np^O;cgCd%X*02{%=XOCKn;CWmrfCUC5^7VHO&&S7HQ)T zWLXY)}^rTl^v~9(>g7_ctU2wJIcuz)#P|rm6u-3 zT1?X~;reUUqKcAc^jo&BS<9z?(yxkAPV{YR)Tm{7q{u!+ofIzO07(>Dx?E&-mrAfC z3cJKVu(EJ*S&P8x!lQ)|rM`8|x;4++Qq{O5@rCRb&sHANZ8B?ctfPwfY!Ry(MA^I| zY65CwzA9baw`Mg-rj{n+dLR5Bk@(q)6e(9Ejx4=orqfO?PcvmNSf18)p=T@8Wco&o zt}e-Ua%XQ)!_UNi*(Z?zbavk!5xg+AB?zh6>3)sII zCO8#IYufdN#%-wh3mtbH=Fea<8I_MqIHh@E_yHfQz=C!o&Wvw5We88U4D@u_?iF(?-X4Hy~f?o=+j%PqSKXkv|6ldSM(Zlz6xbq7RKliH<{$hl`@8Ow0 z@bK)H>QA~}nEyB(S+atUw!b>BZ z7U7f#&(=JjbE`Z&`*4IiMjd0PhdU!Yx7VNR`#e1N%B_ZX?iC)M>Dy$_BTGFzzr@2c zbua(Od=Jk?c<#!0-m})?)o)m5;h6}}{hxqe@9^S%k^c)k-kIed)^~Zh^S;d%|9pfy zuk`1$a{_)vgd04p-|OMdgX=Bc*?k`FJmO)o)5H2M56_GTe8R(>yFEO=-^2Q&0Y4Ps z6A>QvaO6o3&+qZ@>|-9Dd0{-C^04^w7BA1R*Z<57tL?d{dw4FMN8))Tp3lVd&Y$sk z=l;X->vKHZ`C*3_Pp*$B_P%K5tZw&!=|KF6y^J17XW&OT@{veC z!gF`{`}4mM<^70;YkFs~ibD5O zv-@e;z251ku-)$bzAd|-689Y|s`NYNUf_QH{{Wt+vpB==%I*(T_w(k~=9Tr$>fQi< zpu)dU+2%daI-Lf3UZ`GqIWJI0(Ja3boduiDb$PrOd}iDm%>f7}(O>s!4_&%f+s(=D zxiz@bnOd)KZV0&YQd%irC6v;y(U`i|rJq9OqhG>Ne!3U`sO@#HG?kz3^**o5tbkkj zc_|#ln-OrueJJjgW~!HP(!JFsa0E|fP?+wOeyW%9$m8D3vtUYJp)Tc{aP%x-f~PbU z3Q=(7TTmI@t2`+!;atrnxb9P$das}0R(D>cxCtlaBe>G<41C2+^wj;E11=n0DX(j@ z`?+zic!>_WPjD-L;OM>TuXI!v{Yhm|s7p9`UMWq%Qr#0Q#Z7IkeAU2$E1%TXs_%2T z1lPUb%3q;=Dc?kM;mixT@=f_E|F;D^)g#5t>9!(plulm96vt>1byu3V1%66Pp)O^d zU@EWfmCwSsS9;PO1-CS5NZkvr=X9U=M6lUh9p9~$f~n(Avinz0FX8jvQ7Z*g$1fYs zy(+6{p=&xNQE2&cr+ejBw6)p2o~J^91g}Aegs-|JxI$g3S4v-L&ZKb!S6$kPpnId| z^_P_R?EnS0cY&k(VtQV-3TGOn)qA5&N2lFenQLBVm0=NA!YMjB>|W(fx8s zM;%jJ3#R+IS(&HCy{F^xoK}$r_>!fT9^qOFsC(sgIf%NqJhLUL|~{>?OX+SHgq-mKKR6_)G=~-RsKpO)!H)0fj1$F5Rmgd1x_H?<9m9#dEFE6zz2GTd-NUK|S3A5M zK*G5k1xxoTf5OqT%9r5MA$6~^B|2DM0oS{t&E(^nZZxTd%?k=-kO4e)}i4DI|)I9Bd}>y6-6-vGvF65Ov;@wR!W}xSKPlLuu5dR z>)y%>p>=O%oifGltxZ;~8WCLer6y9d?Oq9|xEkYhZ+Y>zyr%*QM|IJ?u42jzE2r|B zM&=1F8tPtoDJ|Wr+$vOpPe-QdUU4N9^#0O#F7c^Xf)~YbZ;3yp&C0LmV%E${6MjQp zBwgYo6UzJPQ>G<+3Rjjt#nroFW_yJ{r7)UHuhdWPjc0DS{`xYVwhW(osmzE)eqKjC z(=1kI)pt6bKjEZ#irQ4~Qksd*g4KflmQLhlWw_!7!?!ZGT~e0qvdb>Bd$l{mzVVgr zQyrCNd!(s;eIp5%^(v-K*S&D{NB6=nrcEtzQe35Z`5dRS%BD&QUl%!drgR$erToGb zeG=U8SvpXtH2GQESs8c`TxFOV{A_svN%)sVz81H8VTF$nNpYvs;S>Jc2S!G8uXHF) z$pgqDYa@dr@`a--Z;N88^ODh@8tA>X5m@QIXlpkfGde2=a8%y~T*6U5y{WyJuY0`{ zhb0`PTf*tsx>vn4zUy9br}9ttK_A1>bI~^2;C4S__9Y4}{dTXT?iq8fUIynm!^zTj zxXQ1*g`<2GNB6pl*)uFu8DMSeBkI5Ul{m%pvTU>43gZW*(S~wR;xKsVUg<+O<2}(p zdYa%WL(x9X+Q`e?X5}~fXLJ*Nt2AeoaU0qWJySSNx2kWFZ&}WwW46`PW$b@jy)=&X zaw&h!kF~m>bgT@>u9Pog!|tP;hA+9HItWL!Jbn7K-K)ORNd)&gw!z(T52Egsemf1O zdn-rn9@t_WjH}k-4`>bTN*A` zt29$ODnrpW$9P`#ni_rI>k{Pxe&5O}Zj!53PV@xjV|h_w%b(|IA#?1Rd7?r~lRxEs z)<)F9cu8p@=1ab6kGiXz(w7uh^;Lx}ZQY}9r+ZLJxr8oJrqfX7+SIar6Wr(kS129N zBTK*LJmWZ5JSXKv16n$23+y>%-ATaig{PlFFTcwx^#%2dGM#DDri(U$f3N{QeVX9n znGZ(YjXn@aarI7&p50ezPW3Vy4uZ1G3k6sAR+l-~Tv6T!J=HJtPH^3~2M>E&*QU+; zLR+PH@qXS-qA_FE7&O*@NTEa(;c(HkB zH?WKHP30}xy|3xn%X`Ue^}F(Y%<1*4tGH@zO)|B_mxd6}UOvyJjNfKmyh@K;8uCZF zDPQ6H_)^is(vz~2y}t=f=%#qK@^+xy$Fm9&&1dO(e9d;U`m{+i@@KtAwUhP*~%`e`o%sIbU{!Q({V;SFWcueI{{JC@WKPz9%AN0=3GwV_;2vvE593?%c zM~#KAtC)9vhsIXjtGt(7a*3L=#4n~GAmiD}Q|R=mmGn`*=wBACeBah?#n!VWgpR^( z8K2^p#XFJeO*w;P{r%tVNnqTYi?Fn{({h;=6dX=hPkw zRbIuv=_VAl?75hAsZ9k^eWcSRd`oYNEIl6I_;E@l->iJIyoW2k3Yyp7%2%uM6aM7( zX*U|A@=a}~-}EZJ@%O4#t42si_)3pCb6GxXuWUTE@=rr)3w)JNcDKg*nOf$uocER( zq0-W|*sA3BR^N^eEFk`zx2Nu(!AmWar)TsCg6qA~r@Dr#dyRX~M2+-b7wvslJ?^bMw5Re<_&0HXW4w>{GLk5+o-ai; zo`r-?`4!k5RHpPy`+?=pmM#e^?erdv+Z0AUt3BTQ#%HX;dRBckz9o9-*;~IcJyl8g z!c*pokjihJ7jR0CLbpxDz?z=Z_@!rSPo=?6&nmf!uQ1^=KwVR#0rYGgu{LFj?sZxI zgb82iO>dVa#>*qQUKIZ*RKpiMs#iW^jw_fBu`@XFiU?ksoy-twO^?b1YFRI}2(`eEBxxG#43a0YS46Z8ahdQTwUEUs$je@CcS8(ww%O@DxWBIH!)qzs` zDh-A|>r%S6hQTZ^g+kAYNNkI*xKhM66zlox@5Oh9lRe+`vX{N=%#URCnc~LZJbfv& zN>A-8nk0S}%zJxQzuJ^(Z6GB4C{9^_`p4`fe?$+7Kb1-O`LmZ%&$^0^OR&89y*;?Q++_yd*i2$ z86C6f;7ZHhUv^EK224GxotR$FoCTtu73c0d@4T~^b!Ua&R=ZjW>Aj^_gTX0jdKL{- zfHJ+|J~qVrv*p*ua9W#V?;Y2QTgJb%!^E9ED~)33*!a$UN9FvS;rZ7{3VExusI`0*#kMm&AXuVdzn)E@R+)Mlx_r1-T3 zH|uB5K~JSpre|vmL`>yP^Pluw%=7tP`Fwe8isZeXRo=vJ<@@%lG2VImiJr`FYyy$q z=k!$l#GcZ?^4+dAge>Kg6L)3RfI<1O(2#%%%}i z{&QI|mfTADUwf@uI!kXBbG)`0rl?;p1$YIy~5H{`&t)( zN%c^u|E8f!n1GKr)E7Rv*&%&AEzw*6C zDDg;o@3pJyUld=t;hDt@AO zs!#A#6@U5Sw#CsNR=(k$-j23`GCznq?XF_J*`>s<&jiN{S82L6yRGEU*~rJ)jG}t4 za!i-R<4XA0M49zD|B7EEpj6^izBjx1y_omUZEf?cle&BGyzkZ;pI_bd{u%k%wc|KF zucM>hF-Lh{$;B@=~XdFFJt&6(3SucNqq3Vj3l zPaKue%6G|(74xUg>$wcMpJ0d>200sT4W^n0|8eJW^_=RFU`FRQ=|q=xPP?%v{`0aCfI7-lkiJ2*p`4jlfe#gKMHa0&tS4y3TA0U9jJhigKYx# z#}MsR0i#&fhyM$hctYh9UBu_FIKuv@?r z?8$&BueWeLrG)vZZi4+gm3|u)dU?QZC)~l+NkJ1`1e0~{KNxI(IPm%jzsU74HjC34 ztWKV)@B9qb4V~T&z}l32QOo6uX|#Gg@B|wt?z9C}-2~HM)&=Y%yi=J4dqKdyP8xzO z1$HaDpUz-E3G7jbm)cTzzXfar8oWEhTSy+KaPnRhusaFw z;JR|Ks+$bXH*$Rj*dGxpU%}Q2PC>t#!TyT-*HF+zE8)GDGItJDWfANH!0yXncLP)T z#aD|7m4{%T4_IFYTSnZQhKpiv275a&@c~U>aaR&P3~V};*$^<5_oKjGN&$`qY#rft zu5SUmCt&vyitlft0M84U`eL2ylOWB{V4o5FR#h~8fOr3w>m6&V`U>_RT#o?z0HNw8 zSRZ8(A1ojgY%8!o;9g}({Zg>6wSavBe*S*SH$T!7-j}KW{(2)!tCfOXm*L6j;r+lU zPMPnc5bne4i()K;ePc#Z?1p%Mn8E%9A@Med@l*!8mA?Czz*c0iuK@cRgq%;=Q{9HC z)VnuT@=9fX4B_$M=AsbI6W%;@^B<>u)y@g__rR{FW3A5czA_gcpIH=;zr_0oV4|t| zZHl`a3zc|0&tvKpMe$!md~JsJT3}zARutVC?8>X?ucJlry#afe@RgKH@?bG-pgf)r z>_yOC^596|JwkX3*KFu|Yrq~Qyj^ty_ZXMr?gVx>u<1ldZ6w%-c`rWL&3(fAM_@O+ z0NpL|cQO1Z+Q{Wb21^7R9Rrc7RZQF6X~PJf9$6 z(R6X(JxTZluAK|3G7EMy1_MtptuCl76RiXjKMOWL!@DhD_XX?(;X7$B)#Hu~_C8=g3Xy*ygZ)0R*WOr- z(~A3_z!Z0D)I+dKDWBs0Sj0U^D8Bm$yr0S<*!KnO=LuCe!L)AoqX%7AO|a(xyBB`> z33yPj%fP!`xa7Mr;wt_3PenG7!LAIpggB>esQRVwmID*sstoV7z`m!BcWegxKJu({ z-4-y7J-^Q-8jJ)?eDM(V{UQM3HD;-BJ5#hNw8m|;@3C9?#kklW$`7-Jo-A{2dMM}8{*GT zy`kb=!H)1pc&ToJooa&7gvI;0zV-dcW5T?Af~E2)?jiF1+*@6D5FXvM7~%RBF!8Kl zu(#=4uY7wY?_pbO_iqDBv=U5m<-_mreQk<61K43Mr8l22!QR6C)VJa96fnqZ`qZv> zR&*9ja#64c1CQiwKgxT5&~;p;Cs;3ka+qlFO0Kv5P{?@j1p6qJUiq$~_#5sOS7jdO zdf^Wj#V=>DvjKaEbQ9hWa{m?ZekAZzx8LLX#=9%sTV<9^|JAcqeFgh)z@5yH1OtUait3=ZVr1}zz$}3?`{G6 zv4Fia!;>zc^m5p*1uW0ww_Cveum$XD3N9L)j6Bre)MwUxuo`Oxy9S!B{>iEyg3WIM zlTOo&r}@lRiJSV7;vNqex7HqlUCy88xYqzvSyJ7E_izimEz>=Z98YTpqLuUvwYlP6 z9k3%AY<|FYWUwUxdpd)CKd|->HJ0VgEnshN0ee>q*iQy*Lzc%c1nf5h20Pju_XcFn zbpazNAailw&sXv^!QRpWcD@B{#m6Sc-Q5EAvKFwv`Gv`Ghd(|U_Uaa}*L-v`-iKSj zelLTmuK&jMo4;7i#YLCra6R=2=w*)N5`#`{sX6b!8V0j*Qs)FR3m*rCd%j@xfTHxJ2&Ew{H#{!nu_ay;K zd8im_x1WZl^9fVC&EsA?ekb%1OnvopAV2*%^j2sgn38${*WZ1r(hme%N}L_PirlB1 z!b21kE4jW4>;}RFn@>8*V{zocE8~qXg4Z2*yt4Ur-rtnoY%al`8*zmvm~@Nx5vKC} zKKEOHqpF+6>5W_`zSszpOj`QeRi8#>G`>3jr3z25*HY$nzl)B*z4Ew`@D8p=l@UL| zZYJ#F`upF(CJ`{A+1Udsv&L}YiT0=v#nL}0ieCztn)VZ1zxL%SU%@`h^-md0bpB@& z{jIN7c%s1vg!^ZWu#dHXX_ZTOxAIP9QTeW>K;Qma6<09P^5f?#o)qlk0h1jt#g&2o zCrNLVcL{b9*n9q{qN(Dl|K9WG@LLx5cX;s^z~*OhpQbDmzHV2+yh^pegZ!n*UJOqOUijM+Ic?kBOEnu=sDefn-xcdY4(hPPqU@yyHPql!( zq6O>?Enx2o*e?=_ek$Lm0(K;W$=;;$<*;uBO!|9@`yVY}az<0!9Pg4Auq#`@NE2**j2>6;#=5=GT4iNE&7*6ytf8y zd4~6y7I?eJ=(GQdeJ}9T-_CH2d zBhh(IlvyyzM8Ogbl-^Zbl7G(-CK^m7QOVu25m$5>3>aP0@FcH(gzIP8YGqprhIp{a zL?40D6YO5ndHs}H@%NFQU@zx>4y#H_GQ2eu^8LUx)~C3l^RIlZl50dWdZ-@P1s;LX z{tzp2X`E4gVS(Ze2*!k`xO2Ih`R}iRz3#UwJBaXTTBD1`b(KZ1M@Uq(PwDZ>^pJmG zLbQr|;R$vbSF7@=F|H3h0!wosgDH<1f4+_zO5$=P*Ddme=lo?wpy>q4pALmd_+bY8RAgHk_L0Yd)uv59^&!UTsPlVE13Eio?zR# z_5eGW!Pasw8uVtc4FMYr7+KjGoMcYwzk)r=CD=U~-dnhTHwGc)mFn>>?ls50E`v#L zYR3C?3z%rojEAT<*cQT+$BU`pi&2WkGuRara_V437xjDTAS_UqHV+=HEx!xiE!-oHUxW8d}m4|rfxm+w6FGtrfYV1LE^FQD+tw<5v5 zLD>%end|-u_FZ7Yn@^ksdjoLiJY+M{_>q_8IRO)2CD|?<$z9PP zwUJ=MTz|ym;(o%EuN=^S5@DqJ2&Ny|6@R*+kyg^jRgVWKyYPr+Hu~E3T4^&E43)ju zkBt2!VZytN1amqI@3p{`-jb-B=&Ugy=Sjg3%?&WJF9!G{yu|l_tjr&Neq))p0aw1_ z6P1OeOpgBXV@?;z!%MjyU@)J<%Ju`?Tb_jczJ7zn@VeFwoS**Z)4x9bFQ@<0bn&wCl?$|zv>NeO zaE3C~ui@A6aC^t1S`RKX^J;berZXnhPdx2vZ;+xUxDi(bR)P7cUQJ1taFr9+oA`MN zl#b}Qw{47nJ876Yp{FB!FTQHvwMh70du_P#RuEjY(kxa`kyTGsIrUWi1W#=sWD)az zF2O}3{W_tb9MJ3B3-0`*zq;CuE)~4PN^&VNl(Etlm*GRJD#%UAezW{;<#uBiWt@}hs+ zlsSkgz0*a>@XpTv{eWB+OwY=B5|I5;JW=nS_NUtyxBo=@ZS9Y@-$BJh6WM_EOMT?C zyFpo$e)81ypZ74eq3STTxT1Ci<)34J=ho)h{T!1;b>6E&TVC~n4?K`vdKSk= zU!`!g1POxcAa0bt^T}E2y@++zo3X{#KzuJ@otousz|(7OUG_s}fkAIeI)?TrPWlm7 z^i%rn#am}I{%bP`uMEfALE_D*h!nECYiDSY5pYBU>A3o-jr2P+r+8*gvGKV@$2G-e zSGfH1xkdE^qccD+UhQ=S6{AiniK_xIN_|Ec%-)a?|nPSGBxBrla8ZC>+#kgWXY zkc3lEx}A7Loxm*-7%x;IUE>6DjFqhzztS~ygzUQC%aGD|(| z7B2hM_18F_+BB5Y`rVZRrXNkQ9{Ff9w;pIwE6%7_sIOUM?@l78+K_72E#`=`is1!c z0NQB|og2*^cjPs-&4y}!lwRPG(#__4PYJKvQhV-}+H?3Hs7bGWJI@1LujWdy_XO-M z0aKl2=a%2t(hRm9SRL5DfKl$^Z@J_z`NJ7Z^F+bYd`NAzH();~}Q!g0COH9GL1SJdJrj$0h&Yk7h94%g63q zz%*|h<$93LApTQa!5-vV3ruMz*bc#gsb3}7PVR+wZNP3I9OwE*6HIhdJ^C`d_XZw; zrKh+*$|by1k2=pv`(q4jy@bkFFqQEOz#hn8cXKbi`Asn4C79~-%UtsB`BLBsrhCE0 zg3b$go)6Q06SD@*+N*R6?B0n#KJq%1f#&5`A9kk=e;i0*0Ra_k|A=r$7-46aoxa3p) zPZ3wJU*)$&8crcii--5;<68SE9@i}s5%*sB6h`6;f-@*s6z z3GF|Y!5#{j+CJeO1NP19i{b||*a=|bgWt?xp8_^;gP$J`xKNp1srT^0R~1ISM|fUR zN2Uc$RTlZ32=;;uwu<_nBE7y0b_AH(;~Mfx>0LGh-$96{wn?xX0w#N{V1v9<`Tyz` zA1JsrnEKnl13N>Q@V-c#PtZW>+X?pPz(mtTgCX9D$Nq-0JP~+;y^*VvwtRC2`(5tE zr@~iy!c*NRU}Eig5NsIO`?!At^-cUz2c|YwzZ@VG-ZH|EK`ZeFO;W->5wJG}Y&oIU zrvI_8;)4WJ+(m(R2jM0z_21M+f{CwG-(!Tz_b$R~DWCl9nKhO$`4QZ5Yqee^JWO8( zdpe7|HekOJuzLtMaP?B5`58=Q5o}AqRuU>-(M5Rr)wvQ~R92O572!T;a0l)F{oLz! zBbV^*1@=C|g!dBgG%h?Jn0~@L%%ySR2%+#+6Mly4C+}p9FoXSkzq7|D zR2IR0hfDH#JE77OJ-?57d}f7f2MP8%VDbsRC&T-6;HC5w_m=}N@uXnCK|NjofliQ* zeu5nbPx<~hSIXmwsp$U*Tgl7>I~uS@1Gbq^{@wCZ@6BK%0edW94-l^75}h9=)Gw#A z=%_q|r#2Lw*AwcO(^<4nc)Pj(%wQj;Fsg_8n|^scuH!l7(K#Er z4sk|=#BV3pOxoc^6nHK732#1l-+?IN6a98_T^V?3EK_|~T*lr92>Hj{r?{(uJp?S- zs)hI9<&FOAf;|LG`it^NaaUgH>8TzGwhEZiJC(sEfN3v*8A7q`ypU6=^QH~u6XH7Tr(c5*0=z*9Mu$2j3KF7@eu z$zbByt6#{TFzA!;NXlUE%kXw^zXrU|1x)StBV2C>Mv@j+upbLpU%({u?t?Cp8>=$d zc3|2|kj4Pv9R&6TU`d_|)=9bk0$Ab=!Onsw*!(QL4**l$QhkMY0GcY_#TniqVA}Hs z8(Eo!CttE@V?K`XXma{TfGIshM~SDsYQj^$&`)s_-fHeeKfyj3cpR67QEI zkKqjV`G6^pl%9NAcav}G`%3R?0ZV=Q1TgJ=%IPea(Wt|WJJK7Ai>wa3c{6<6(cj_WlCC~M?9!SfuhpLwy< zPk4gO<&s`}520XGwdml_j@MV^OR(Sj{zlkydGSZ!ttXCt!uvV$dl7iMxlifUdC|Pr z;YMJCZ>aj4;x6Hj@)bQ&T)~uY4to`_=Je#-_p5I#ijgetKJMTC){0+fvf>yKK~dy;p`SFk_jdga^EV*@sgXX%#B`y^fhtot36E+ss*VKd&@z`L7Jc?j?S zalM4NNj3@g_W}FYXg9$$rf4rl9#`Y3;{G7-m7eO>MOkOQi#MP&GH~esAQxI$jnD%yjKcULf0j$oo>)l?T1X~R31hB^l6YO#BMVA{gnA$SOL#z~E z;nE(EWq~J{_&_kpB&8?VKXTo1wi?d`dk>e=6VC|`6|8tC*H?L=`A>qq7udIeoeP*~ zFPcBei+@w4_z5J*JZHlfPIm;Ne(IQ3xO%$wHcmZ$~T9}&r0dd&+s%xUCls| zr>C)}8SgKEZF#@z^r^nf$z1vVRFAVff6e$Lx$%11Ey3EjSKMz-a~RPIvMk<29#0YKN72gtG7BOP;r%%; zRNsfWS9%GieG)nBpIYDv){OTZV6P;uXsVym+rf3>gOw~1te>*J1wy6v5NrUL_K)1b zeJab{E%5GXf%m&D@P04whO+e5!P~0unhYkLcpc??D1*Hpn*Ynsc=-Su{hm)D#V@Z2 zJi#HQ(Yad>{HT6O=T~yCdgv#--O%NFdvdxQ2U+`SZU-hj;T+_e@d@C=_3k?>v^cuH4! z2=-Xu4Mh1g=0norrROU9kYF$Sw)X(EqB!HX4+x0Zd)Irfh=2t!_Qn+}Hn2spqSzoR zc4NPYy%(&(hz0D%*t^(!?;4FImS{{gi9II&=h-vwz3)B2==Xj9Z(;7tdCu>hwzIRd zv$J~^!nY1sMpWsj&T1}e?BgBnPqrlPVUGRY_{Jx5|Nk7_ke{J5e|>PamuCFP^U{Q$ zdy+gRwm#t*o~l3BK(H#CIl$KHHFUH;=wR|JlG^OKe`gTMTD>Cl{T}a`=qJSA}_QnF+V#OC9sYGSimDc*tYx zangO^mHK|OY_dmTAHpUR4(1$a%d7SAa4_e^*Mu!qbTo@GKP}r$O$Hyw3 z72fP=>BOtJ=>5JDl*==vW%q&N%FA zhru>Ux{C;(0ed*H`-*N%V)qwa>^JlLSKRowNgLmEWq8%IG3zB}UXT4_=Vu+3g82;1 z8c8>@=$aGTx#-v>RT}mijt?v^)z!{^OW3vWRo_S^)cMRtw;SsH0w1gUsjsttJ#Y2p zvw2qMGjM$xbi51gzjVi-yW^dXXQ;J3fIsiQ#~2qs;(LtnCN#7bzIW?|^KJ5`8)dU? zaQOY#b2?wceD=iWNQ_V24Aep6^E~#q>dwUv-Fnl|4K2EDi6?ZP2fd!LA9R}ocLdJs znb2WYJwv$e-#hXw>&+jZN1;ot;*l>6u<2^s zgvrXiHLR8grD;p$cfA%$l;?EM}G*;>2Tx)#q7hUdmKc0r} z3s{Z#-o-Or+r7uR&&GJ)C)nFX!sRreIDUVO-H+DiJ^qz!-zjWJ%HN}~Ye?Md8aKYGt%-Vr}Msa|GEZ$TfW!U_}1so?tQz|T<;(31DNN~wUh4C!t9Si z=UT$&`*o@2If5+=GrpHgotlRC)EjjZitbBxn6?(teClR0PZ%J$BgmG<|1yNe;Ah7Jg}8`{$Y#6mVgb1MR~Oy1RDW6mt-Qo zmx``yV)h3op>w~e!>g{xR^-5LChTTTN8%h?+KkDMVCum&&%U(Ub0JdFPdO= zz8T6F55astR@BQ~|3f#4%2Y@6)%|$OYrpSi{-V6&343mz8OL7h;`;BMYOU1u+O^?b zh8yZKx;DDY$hqos!0vN5iviLJ}W3`jqY=GJcY>*YC>)~gh+dcKOPqr_xzxz_Fj`9GJ9 zSDoW1wt*aMvoWc$520migW3j;8`w76)Pa)*9zF1kfhP<+W}qVV^?WoP&Eq+3ZI`y4 z<=e-*%+SrnsH~S5QH_s>bLLu;ytu!jK59J=IiYsQDYcc4sjYlmt)-hMTO`MHsWo-0 zji6e}=6-3xO>6yjXtMA5d7%OZ;k!@GBTb=tci#m3TCHuSR(64#yk76^3u!CEe$u6K-dWxvBYchQ1xUSzl8)a_ZA z=LFxe;yN4qb9J)6!3I%*hY+SX)xBEla|nON;fL-F#y74bi*&U;r?4%O?tIui*j`nb z=Q+BxD&4aZ<1|*S4LuJ=usRBos@K+!WLskSyyhxw=2x@Zc~vu+l|i)(y&Lt z%(Lg@C#X}`WUZUnvoP!BH;KIh^WDU^B(@Rz;%GYGs8i$Hq_C(1neT)$zU_0y z+`kVeW_`%curA1-x<_%Rkic7{FY|ojb=2ic)Ys1Nu_||eeAh8r4may!0PZE&`uN&< z?t6-TyEzei>;>~3U9!oE{S~$+46{n-IO}+v>;Izt$zH{&+rQ*l=KPE7mcq=-`?#xD zuD2_KRsN7v>;E_$t4*EEa>&e|dAA*Wy+*yG4(42-YU2nAo4}gTU6R;Y)PeW++Y&p!u({Ej7t`<=V0F$91oP3Q#&oxbnT9r@+o`Y{6We!2 z)=O;AaX(c30kFrZj5sc32f~_2_o8I`Dg)0Yde`Sb!BtuZ%v)clb$rsjQFI?CwiL&Z z={6@e5aznH9THm>=DNAN3mbty6z96gC-L26wl|N#Gw>~M=vPWEU^~~o4ur~?K`->J?rxV1gm@Izu}l}g)PZv z>pcUg*uW zE`H=?3~|{Ht&nW@hYdrQ^EVD=UfwUdz45oe$v#PpV%1jInfq!b4Rxm%-4WgE>B@$3 zY^^h@-X{52jn#+1jISS`&0pwjSIvp-g6{YR+wG@et1jCfNF2M8uYCN#ueu9JXT#yFQUDw(G7ZFZmp*?QO6wd(`g> zM0~dwc384~1=g77*I*v28ztSFF!Oh6V*9e+8g1RbjkX8Dvh6{{;TnJ2M%2CRD46ej zb)M2Z%Z`QFPcB&4!7#5MeCO~Sgw@I3hn)o*NZ7iPd5_BW9LI<3vtm1paM=E>*p7xZ z+Kx=RZ;I`x#C|BYCr`t6T+vzIuj2khfmTTDHNxM*)=caz!nUh(3!~Vzok(Nr)9UAL z^DG+$TNxI4maPtRE!arH>Nq5-cjUXSDvop6bvRj!CuKJk<~dDUs=exCwwTz_hGea{ zgJ3J;hi)yx>JCb_55RoSDyM;V9aF3oyEU=TitcjuQ^dD3g>enlvLqO6dzkYe_b0Y$ zVVh8Z(4A9kS4_GyreV8xgDuHd_ft&Q`DNpiSx2&7B|h10IPg)) zvNqf!u*p5@@yU)ZY$o=xX~_1XUcUG()fI0*WGNNnC(&aRAQTu$!?q|T3~L* z7x%`R2}c_0TqmP0*yb?rmu1_yUzTmvHQH_s+ql7YBK6UDZ%kdI?e;&@R$Zg*&aj_T zUUiMOyTg7?dDS)A9t?Z1p}ejIYb>w2M%yD`=Gk$d+mG#|wqm;%n%GCj!OU~Eoz^}& zaT>Pw!1Db|)1B7+%lnG0b3>+UJMGq$zWeTuF|};^!X7XAlg(6^<8p21hqdAcPwhDG zGt{cqI*ow6lyvLCy$R-6DQt%m*4A^gTeh8pv_j``p>59;-$V-dW9i%P{&cbgSA7`4a;cVt6PY6Bg3oKh&=jo$Go>}H=JzyQa0JB!W{R8?cOlgzpR2E?AL`2PqqgZ z=Cw)aKIi+r7$|L!Y+ak@+L@VX$f0vC+`L>&v2~5%E`;4|ld;BdJHpzA&b~=q zur|JMy<;29&Eq51J3d?TtnGOIn3q9?;nmyP+a2vib_mY3DeiOAkR6Wm9kRm{bN}Z1 zAL`tfvI$8yjxS_?D2(D)_oXc_6NuGDSK40Q8DXZY?nC}qUT%-Ivt8MFvi01FY}!Wu zY~L8R`}6(#@9|E3{9rE-_FmShN#`}h7O?9Z*sh70%^mskuP-{row8y4aZSQT#a8Bh zDA$OnH(mR%HF3TZw7KYH?$_!6RbM}cw9;)ypaphU((O#R(RSBjdkTJ|?HS3|KIyN- zcXVPbd8pFuir;9v2q5Z;BGiuT(s7@dT~V#S^L^ttl=x&{<79UiX4_@={MY+GwRw$1 zBY)~>wiWv)zUkU_kH^i|qf52^fMCVu#b0N-F4g%k*nEYxmONXQ)p1iexedlQKG~Xu zjZbXD!cH!>mg5`T?cA$a9^Z{-QQfET9fi$=qh5%%_BL!-VWx2ve-@|V4&)e%bf>^p zfX$HD2{4a^hv?)&_aN*m?#Ew4JZ>#G`Fov>bN`<-}Mm>6rFWypZ)ftUD}T~nf zKWq^gr>-hpb&Kk#=YvbSGV93wyE4Ap0Nl*DynoegjC234iXUk_LiqVUyvG#Z&Ax9i z?p@emjI@&(_m{9^Xi#BG)m66arfSQ!7f-|Xp=5hmv7N^XVav8lv0scbr~7_6r^p}Y zPhJPV1T4-Azv8>d-*bfDf4yTa++)yZ6ur+rf*q?)wqs#^OB%9ah0ULIe}`G8rSKVVin6T-}jw|f`#5|6?xBW?CUL(rfuVMQqnD@^; zwu8L`dxDPp0{mdNlTf3rbApYw_rs3fyi4uyWc&AGyG%->Cv|W*lMzGF@xRJbGycu6 zEs8CYYHsARt-I7NEw-}V`QCM<`y`$F%Xd&l{ZVDr?}C^{GhsK&ZP+v-FY0{1zfWn+&%wRw_Ku;?p1%6meNOg2XEy%M$=^A<$G@|?PwQWOZ0xw& ztqpfSZk&#GHjdu#65NBh`*Czl)j8hd+d8m3a~6jOz^FFW@p03@TFXkcmep!4YxpyY zEd#r>46Jo+spI)OuC?La7@D^Y zuO0JRt=nt0uICd&H&1%ARpqUZq3xf_wlzL2ptf}zuC+FGn^t_;?ZwAzYaNx1-4PD;; z=TC-i_D^iKMY@veJa8%j&kJsw;qIb%x7}#+k>40^W6X=V8%Bq{?$0| zqnwT?nCDyBd5KLbYzUPdx=RZ4d2tzSrdsRdym$*?H+_#k=f#`xL+7}~Iq)^`F|TxE z@tp%7jIU13L%1_JxO$Z|WRDc){DPazG3pd_x1bYe7HjC1gzw9jU(pmSyPL=U5!iUY zWfsDwtL`v#zPqKhfq9=N*wTFW0nT>^H5Z-i3*6?!w-|94UodTD{IAk*-H_?NQEUg{ z(}=743ieZOEx4#ZedAMi7|!~8j5x@Cr}}#x7P^!8&i%0nzFUsZJ|lEz5H`N?_>J*x zS9Fd~{M|U`?SGXRhj#V8qy0#i|JArD-gh*<f4vvJdDgZ&@%dh)OA2#ej)b{?iMHDE{uO8|+XH<3pX-f7ai&gd=}Zjy+)! zU%#Ij-!dgWviM)|t)JrCs>F93%+30XdO4nOq-#0N-x~Oh`Ewi|I>$>t)m|*G{iN|7 zMYu6O`-+Hf6l0v96W>^L#%H-3D+6cSJqQ6?HB6a3IvcK{?9ky#?yCz`6!pzel zILm9F?$&~f{ktq-ZPgu#v;I8CH+j~G z+YVo+ZWO*-3oeeM0|^_Snw@a!PR4JH@ARS@iSIK7Z*J3ZFJ0!``~idOeVFmdW{0`o z{zW*LbAhg9TM|Fmm4r8;kZ+=Mvk&NpJA?{)0iUm{cT3ox^`a7A#1GqN_|o4^f4aoC zH{X3h<`<%{wkvfq=P+Co^+aO6d&IT8t}6(g^Pt+^TG+nm7iB;GRC`wU3v|}sU4$F! z@9vVW^Cc_d%*z}l4cTfq&jF4F%!`bsQrl=W-@*9bslWG{THR7``xW!o2j8s)HvngQ zSpq+FRC|@bo$wp;w_nlOUjKwMKErM~KF0~h=XamsEbnje8{_+3(OK3m@yTk$MlYg9a`8fh1oBhRmwZ9`dcUIoKrM^=i)c!?+TdZFh1uht-ntRyXE@(3!g*x zMv2e4^~U&CE%DipoQX3&%kGxr^LyjdzZ7Twp2u&D&*M^^d{5$b%@&7EJKG=Tnl1Yh zf|V}TY>i7g$2q=(>&C=J5~=UtYEI1S(B;Uu`!dp%`Mxb#q;WCKbzx^Eook{R8?s2aXmWQ>`yV%ZPaB(RJ92tHa9wtS>u!0CYFWmK-j#< z&czk~5*rP39hZHb@o8&2a2?k}MMrb0o{L&_67w`1pXNno|9v5BHwqf;{lb<& z=ceuwobSTAqS(&NXV)N{NQNzswle2XWG^M=b0yPV#@rU)h0ZxNb&KK4IJ|2;2)oW~ zRI!!K40D}Xv}c*erR&VbCEcv(_JKuvR_FRu*Pb;e-CeLIDlgizI+^bsiuNq~3T7J7 zo@F1w8sqyE=DVw+J*$%$U$kdgSN<4Zv}ajQ>e4)We(dKf%c6f5m4ZO(VzWdAc#aX)$g;SGGCb zA7hR2scU4vq&=CJZ&EpajA`4b%Zw&abMAHOBlMM||Q8Q4GY-Hh)^obkncG0n9aw|M_LY-RJ|WVwwmRM=birlHPrle!l2 zEbGPRWpUd*%Xf(_4;uqpzm!AW8n~liAC$V1Er~l7HV2U#-zA}gD#DKD(n$_%&W4_L*qIR=KP9jxR3f$_El*NeG*#;=KB#o zO3e2g%dRMOrEQPGR^o&4na&h!_J6MKsSP?AJo~Dac&|<8$b)LT4QundTVSE2{O|}u=eUu~8i1>I?yFI?%)Y~7w<2*ndkwzcb_b^VQ?aY2)?(aM1Jj{#l zwHO5Rd>FPHmiTT=%>LH+Zc1#65}(%`VY_9C&tpgCG3c6$C%W;D7s75c;;Q54p?dx- zo6Nj=-nxK&;1)X1M^O%TU$qXc8yB~>H8R>1jti-V(`(0shSih34?7_nNmvfKo;lf_0kww`C!(9Iq`@`}L!*xH8 zb2A@8Hw4yuP?y?Y6I-k3{*{>hMjpQypZ!K2zsM|`EXFUg8OZ<1%XMjg4%@nNUd8-1 z6E-ih-@we@Nr_!lbhjmTanX6+3fs?$t~s&Ki|(Vu{$6x6nRZ*RMNIeD#GWEUjrsGL zdUcNZB3<9rrS9v*UM#wGN__64LkQbvHy54k7?|gZ=>KG1_x2pYyI}B5Lv}Rb^|EMI_}05|jKz5`>t%dx`{1v_m#fWLz3-)+wZfdIW~kWC9Mi~lqa&ybiah%3iFsoTCq)F|Hd}XN9J!+ZDGG49P#Z4 z`*5y$d1OoQoq71bm4@-TzA>lK7dH0)Vj9M`Uqc%GV8{JmOvCt2Y)E5C*r^;VzGK5{ z7VA%T63pk=9k&H@9#b|dF`tX~y&E?r<~dK+Oj_D{-LfgJaZT1jR9{c-+| z*H`#qdmLeZ$1ARr)lIZoMQ^_L#&S#q_3^@^LxJc_t&gTH`(que}8RN z{LtNoZgUb{6Cd+xKiaQYj-6nQ<**Hh?c*5SO~c*+z1u1{7mvOUYZb5s`>e3A^&B-{ zzxuuRV4kB~`|%)lGV5hU%I1BN$g^zq!W`d)ZjZvcm;9+a5M~{mP|A_(VBe%$bo%-} zUke+z7F@KewFyTWP3T@AFIy(o470Ar!5Zu8tfE^3-|J-C)fB>RIgKm$Y#Qnu-x%Lu ze5#{U8yXG^-DJX7uEgQ_2+SmNvHa=eTJ>`8`jl>u*SN2De0C&=RN=aFt-snk2&jJKjK@t==Bs1@%9YNx*Ca#-x^|9w5KtF`gDKno!EIWe?x8Yloy$6 znPk?Ld5N`5n3Y47!!j9Z1-^+6KpCSJl4E?O@o< z^)ya3GPazCV|uZ+k;Z9B7ipXWYfR$;Sd`;?(r{d2+YR;u%=+_KFv?tiaSkvqJsHec ze-j9shPpV{+P_46^K*e09Ym0%RFN<-a`vCSKF-=LLo7`EH?qB0uOm>JfX#*eYaH0Hoown0f_cl=pl)>SiM zw_I1l`D|UO)7JMQ84hMUwyrLQHP+Rnr1L(2X?U&emeV+z&k^QGg?IQLi=OTs?du|CE% z4cYfy>+gIzIoYm;&b<5y7HLG=^*S!{;vB90xb+=u4%iLDcz++vG%U|_XdJiSn{zg3UfUEFw(fJ&u&ueNi!_cV96I}3)385sQx|EpCKhQp-=OWj=v?dk$u1r1S!Lr& zJ@-VXd5b!n*Tkj~w#TBgO|A>GuG9^{xqr7Tx`X(%2VHW=oZfkUZ^Pqr59 zHOqk>Q+X}Ov-V5jNAtPKV8s zm~l_uubyY3sm3hV;=5j|6+biE)tWH#vN676;Fkb1lzkM;wkG3$r?xhd&%vTyeUMnR zs|8DZoAKR|2(9OSgiTjA4(2|xo{g^s7wzR3!l4_F&i!!{tZ{!lTy*jciR4x~oaV$l zetyYLb3dDgy6tg?z@pEVc@J9MAB!gIZiSf_>(IXF;d49Eka>OlN0_#uqd8V{g6|>- z=04K)m!uWUYjNijKPYTwK05|@?^2F`!s=va7xu+ZFrQ)7c6P=qVS7|zt%cDwaBrc$ zMr2fpPqqon--4Tzm}^b^UA4~|nCnnvL|x4%9z{7_=i&RWOt(AyFd}VyC(t<9@z-_i z4|O}@{5`VRA2Q!-q0Txb3srofi~XVQY;pYH4x|>THw#~4;z36O9nHgVZccQZ#{~^A{a@fy=?e!$ySXXz#eypyd4>Qls zTc~@LaAO)YxAru~a}4=@j(1>g+8#*$O!o!Ckr#E|*L^3k!(o=~lDvOm*46QaS=Te; z8t)O_ON8q_k)~D3H@o`$L*slsB$=b_=|JS>IEQh++(H-+l{k{rW(4)ORtmt_f?uFUhP@2_Df*3Q-|y0uHX>V_2EUL_5@+D5QLD900o z-Fo3xqH<1zjjl+YtpfWS?O-BIJ9X#a+~Yb$#S=euQM|H_^# z?2q`NGhgZ+L=f!b!VWI^vpwIA`+e7r_nXM>z`f1=IkraKRY#^>T>~eh5Fs-|BtHCb9Hx1`fT5$eWiNEt>Ika_5 z-P-HCkRdq(W<-Il@)#=Q$0Nkh?2 z=KkF+MQ%Xik3x}l`;5NtrwxeraZ89!{@hcfFi*oeZYhIZ!sgF2FK zXWJJR{qBN%UI2IAy1f4a-}q#@t6=BjV_vlzx`L{_7vPiCYK|<*dm*1Khxv%|-a^>; z)H;4?yyxom$*P;w-&tfD9$U=>d{4%9gtfCBHsgFx#`^dX-;wAXUyVxa7MN)aN$ifI z`zSGwv(tw09v%{i_#Q60ckqKvCG5LLoW~00dD1lE_~2u0GJnj=vh~`jb+L|dxjN&P?L#=ybzFHzQ^(pE zb)UetM(2Hm(A^C?2zEeXHy2%ug|!{ULHg9vo zy4m*Q#KQKIWIF=}xAd#G>xgg0!s5Ed{LNfg6KRER*21<*Z1%#u4iBB@c+;4gn9uR| zp@0l!+I7yA$@Wcb3e4m3y2P%9IX4r>zWF<`*tVp4-o4nqQkeVve!^3isgJ?TpUgFX zvWbL)+3(40FToxvY}=9-Z67YoHXJ(FFTIX!^tv*yn`p+vD2UG~OUnw$l{}yS3n=pInJ> z#P=S$aqD%AA+>$KFzY^a|Ag6|y}oE{&kT{(<2V zue_%^JMj^$>Lu=}_D?MCsXm?39Z_umhMk+`2wVFwH(A(5eCi_%pa~_ zzt)I!`@>Avb5vuxzfb87K<7Q*cN1FE4H#mm^_~gq9^2Nh$I+pLLl^5B#=%TiopU#y zw~i%j{zl+C=C+;}BkY#zxtY(#*Mb{>b8KrkY!|`SdbaI0?%$(ermKD|&TEJ^d~GqS z-tXx%@lnq*=TUujKI&PvF-%?5v&`{<&u>RPH|k6`>!O}zJ|ENg{QD*_pLNgiZCcpA z*hHSUC~Qh%j@Pw)B{6?vN#?!Wuzj5Gy)R`w278{c^A}6APlCNrbPFY0$0JLf#~c{( zhVBEH^Bnsm_8x2(*kkMrb=HIZ%e=6(6!p@m^K;fk zJREPXVNuUApRMv<+F^tvU6-$W zFO6N&&U(Z4zLIfaV*O#$ljySz%sgl2J9&-I`GH8o=N8qqCEF{DZgOH*!F-n7eHFIe z4>K=+P3#6(m#Y}7q%^#jX1eDlHiWigJr7N`YZW#!u_IvGoBId zw6JFjv%Dwqr*V#b3cAKQ_W8)9EXHOu+uANg=Q!GQr-#`l)SXjUPd?9&oAoj7{}iUJ zefv9qpuWunn;xg$>K*Ja;~Sqk`}QqJbPNK5m2Rh^TM`yJ=a9V*V!!I9w;68pH>p#; zQ>Xne`Qqo?bK4GGw;MXzxVAgM{H>k^@FTvFgnj?Q35j`6$$j3tq|3+J@%)+b%Z~VD z_V+T+LB=P$s<7AagE^nlgl?X+-@GQ!cCT`*^068Zsat`46}D@UhtFXH_}eG$`vu=KPDgt@#ja#lq&F zp@WSqY!0ryLudVI+cF~owpnqWi(|7s>$O@Z_0MfpJ=dDbH|#LEdFfUc)Vj6tfvsCL z^H6=?TK`-%-TEIuZy}re+|7KMhru|nPg;a*`tEnfkN$eS;cba$h(uC9bN?xU-UZh8DWaX-~w)V+=~KKCib>s0p}@!53MJ&aqD18}FrULkCG z$KjioT;8*j?gPR;dr`Hm&$p+xO7cvw-Y-hx_7Y)2EG5ZzSy@@SX(s%&h zyyW=qg&Ci1Xf$Ex-xe&kGRFu$GhiPOx;mST?8{P)>*LM!puusV%NjWi~F}RFT26Q*8a@AT#DbAm&=mwX2Ry> zo5U8T4>DbLdwYC~!kpJIe@N@~H&gwYkX`s}Ubex-yoP;A=we>uV3>JP7xNm25so}B zNE+vn#@`b=aK3uKdskuy7xr#q<6u5Rba*Pq5ipO-UnF)s%-?FF6^tsuA`H3 z?#cc%bRWWe=Ir~#eD|m8$Db=@Gk;Uj$@VN`8QH&J&b{|5V;Pz6PV@P^)v2#YW(HJb^9gT@r9k-!0gBW7uy!S{k?sszGaiy*I4&M z@u|X2b-DqcL$@4Z=S>ew%yEOZZTOAtWn9vE&OE=l{{AxKbKku~T#a)CGt#EMph7n< zw(4Z7URP%ny|R59=6t}LNjE#JaUSA3&zIOfOTmmw7q)M}%nRACIac*OZEb{udB1eg zXX?-U1@n2GF;Cau`Dk9WU5CIu_tCCXeDf1N0bTU>>TEmf5?>eEh#OgJf5+PxD$g|L zf-%IYelyei*umz6x%PJgez19q&N<&;^T0m6pdN29x`NuwFVbFa{@>m=5tu(+45?R15W#*g@>Cv1F| z6oyy(6=L6wwsMJ2wkvF#cRJn^E%Tic5B-sGM6x})=r+bT4RwbX-4Qg3U>g?QLbRn| zLyK;e!brXv3*N}d^6Qcpne)WXi7bxqXXNd3B1aQ8KKY;dqwR|LHU)JfaQ=Rs_jKGc zb9^9{ZH9ABB(C2r$3wVfyL4%98#4P_-#6D*Y)vQLH+Kpw$~FnUDYl-Y)aa`BcM<7Z zFp6F=rbw#yRejfB>+dnf`OWq=&WaoVrgmoW3E z?I4_U2^Vs1G%qrb4{ev`L$E~(`!y`;*>%^4aDv>J?}E)l+^4`?S7o{_xQVzcV7CDH zy6TgEiGSB~^?t!Rv0R(-{a4R&Ul2dybN@SE_D;z&AFE?V<~dE>9Iz$%V#4zE^^U=I zfn5wc0zcRQ!q>rkS5z>^P_pe4v+c;PPHfe}s)Lj?P4@xZZRp;n12Vn^`P__qZ{7Nu zS%TG=urI!AdhPFtrfQF|rguX=hpqMSEw-i=Yzdg}3%am@&9ff+4MrBLaljeWM{m-& zw&<*D`?a;{zz)NAlO4?WV`1AQ-B<8SU@f!O(^dC5&U$`o_728wtTQ@7^QX=_RktVC zX2I+ypCrD`TI$R^u7Pu{shc|4VBGF~yHss1Gj+DZV6B8*&$=$Y?Zt7=ra0HLE{z|$ zH3_>u*7g~CPt*Wf}k?x9wBi-51_1USOZm>BE^ZGK_ zT!oD;jE~j21m|D8u23iAR9Vf*OyEPXhhe`#H<^qCd$h2-6T81K*KLGOW*V8@S=id; zI5OSai|rL9-NpI*YvOS&+scHEPj)%XXZx;5>@ApUU_VH<(_+rst6QN*M||FUkv&5m zBaO!kb4La{9rh{d-c)QoUcSdoPeUJt?Yb)zYzM9ZQ-OGBxe5cc0NjG!R z(JZU}Pu)v6QPf#fL|-Ei#%j+b)^TN2Fygk3}I7|BiMwWQ_Ujj*<|{n2?{ zv2J1q!A^y}1+(3&>jnE2wy!6h`{)Pi>663`hxwa|jt_bi+bM+4gV|r2?l0gkqC1mg z_e{cWvL0xDy=Z;x8Z3SzZ683`+MdopcO3DVzb2f=<`eWIH{*xyJ9Jl|vmS%Zfq~a~ zQKzOmJ{Ndj6y3`B!`bJi>ztLF^%wO#24;EHZGp~mTmXywMLURdqq<#6e7*6b{vy7`VG*C} zY>m(Rb5Va0->9PVT5?y?bKPz~!rIClTi7S|O>8X8XTuMl20J3LBhh&+>G>hzJA<(A zgEC(0$~3kn?6cvUCEW>xeTF>BI|SX1IP1@Io?EWJt@vyj>bAjI-V^Z~>+htbJBqM< z-Lr{}Cu|y@<2UZhFOqIc!rIG>sNA7x|0* zwiqCE1JGFx=a*yu#(vv1=>`^^eQ4wUJ-FyLBQH~CtdwG<&*9X>j)B>?a|^LOKF>|sPEO1=YkN5@?O)Tg zzjvGvd6@(=FU|PDt|4q1M<#YFVdMJ?KIWZ{qtBA=KEmc@>691GYum#fPV9Fu?90BMWhBRFVn@Ojg`E%Mf7OPbAydxB+W!T6qp-&Tmd*Iuuw540S@|y7 z-#?3PHvG`-fzEfX_?s!_PuqCsitpD5oojzA$BBIJ)`E+2M8Bc!<>+jaOkK3s-vGka z^TYTNU)-nrJIwqUU+7|<+W368uj$(7HP)YXV0`(QL!N_l0A^1Z)<^>%45vbSK`o}1YIu#?gKYLQQai#OI^JR`U+8ZN`D z_?ij3<@^oev+=1Lu5NYCg^77NEc-Gsuggu>Ys$#qSiZMkn;jPMaamgX@{s!YB-nO^ zomh0%!-+W8dhSuuke!Bet>?zw>+#7>$2GpIwX5AK~AMriRch0N$JVdYu3LAi}jO45R=I@=1Ash^|+S*Td+;>rTDbBfd zPaY)GKDWNdLml^B)J?`Yx4urP0~ys+y9Rb^V)j4&2FeC7H?rCOJ1eePG%tST{r!LZ zzGIHt__kq3xjywoz6;%k*r+>-?<0Sq+q>xGzadg}7RCC@@wrag_|#1-I?vPQE$db+ zI;yc6k2>EO*BUa%P(L=O>Kv!#Qa2w?+v!SqWn1IA!SbA{b6?e(E!qY}uWT9iRJOhi zJJ=$H9S)0foK0ef($Vh4cfl@(`5t=5o#w^zZiVwb^!9_Hv;Te>-JbZto*?}8!d+^U zNi^7JMYk0`|Eu`CUhtjx^HOoawuAXj{4HVH4&pP1Rn`Cfl{#>1!41H9-q#P^?+82A zJ3KLu8T-1Y@HN+VEY7~}E&Q;?+Hf1mnTAv5#h`P5C_E!a4>bQs~#J%_D2&q2X1 zgZbQa-=upHwk9XqLz3<#*b^}4WIT>cV>o$s{?CRI@i|v+8Zkeq?lBA;n++ozx@TbS zOY=vRo%ZE1N%t-~_vITfc3r1^`DW6+ht9FyCyD(LcHB~(^L#YS{EbZIa4orY74z+0 zcY9yK>-eY_*#KCVe)Y9NmP58I%y+!)Q__`f4)fYR##gdmz`VAb62>+jS17E1%Uxzvi_>=)Bi!d_TYlc8c%c zNq11uc}+)??W7w3i}-dxcYZTt!o>bFQ~f%gDZ6&vOf%QlJlPkMOs6$Z`|=s{PHUcy zNV-__bPUWqZ-a9z?e)hAgd;CqNW*XdQc22>5I@ryHotDab_FVOPL0WD4 zQO^{wJ&iliJ+ndm8Ya@c2WH(n*TSLFsqP1)G@dSLoCmWVW^BuL%Cw64f#dB7sdlc+F zbcd$Aw83U%pzM8`NZ0Y);;>t(6xo5;Hu1gBfHs#jWW5V>e}&F-(;etyjHzyU*h{b| zhs<|ne+Ki|4%^iV+as|x3hRd-x-|nyUR>F*oD*#p?GVY#Www$9d~*_d3GCwk_;$iEUq)_mLuvCrQJ$)(zI! zHo6xbUUe_iv3xUOZDmb3*@VQ%TE$}Qqi(6f`tTua?bEeAAhG2OyC<=439IW->XeVQ z?+S}+4a?lS*iJ0E9(;EFmFq3YZnbGkbyn*rJbulKI@fM}gU|D*x|6r+;^_kxEhhR#@WgrpEt37+w?-ud=oheXt?0_upfT zfFEpIz8~{-$2&Ios#=rW2HPsx+6T+xIz`=KIBoxubdw1CoJ-90sk3cQK<7ILBHim@ z#^-(x_WQ!VOw9ASx@{?}I?H?+J75Hz{&M)i?j`K+c{x@J_Gn?w?Fai1b`-YHaNGp* z`gk&IC3e{VV(w(qaGh)D=7wqemsva5QZRpm?Akf%j4ZK+hxx3g`n`N@Wxpuwd&0rI zcX0>0J&7aOU9eYRhrqPcdG7ot?AXNIM{_l^4xrSPI*-TYVQ;7StSi&_Ph$7MHbXZP zMvGzB8`r*3-g;}UE@Rtz^2u>)t;s+0;i{!=)tZ!QLZNLoP^*8M{4<+>ditlEf4cgo z3xC>b{Au-1lYeIOPf!0;57~4z)P+B7e%0!qrXrdR86PR;Z0?iUknyLQhjTp8Y2*90 zhd1aqdBSGX^+Z;->E=t}Gx`OtO?PGrPe@_MVPShl3J1iWZv8H`k%Q{MaBS1HcIn>E z%__4NRelUd-rU!H_{Q;>zoXPlIM_~wwI((S<~vbr&lIs5|4{|i`%jKeI?vCJhaHbZ zd~JkXi?A-fV-M4P38$_#={(=dyv~m_Xwp?0QxmfVct7$##n$uR>qNXqQ%5;utI=0Z zf!TMO7ukF0y#L=y*feBuum3W_q5E@*@3F*YDe*b>4&6Mk>KT;8HY~cnBoMjW-#h2qc)oY6AGR@8hse8S%OH`zF|>_`%j9`~qywq-)6#|* z!=!61X?&g7nk5a#3O$Q$q_J2j$1wO9oX1CVv6UTG*cFKxxBW}pyH)pnVfNGJS;i2k z(jAzX`PX)pt{u9MVLz-z{UvrB%xl+SG)S^v^$~IH>iXSaaqT)Ym14T~tG}j>-5-|2 z%{m=`bB@4sQ|Jys*F;{N8xD3TY(>}xi5&s+8Npw{JU&b#o{4l^9JWUl-7&Bp4Z5?F zZag~o`9-kC{o$A};=6L5`gPI6iCt6JSBYI)Sgq8v`THHrI`BF$+Evtnb2pL34d}*f zRKM46yVCaVxw+Q^TR7={kIp=A0JH9`)3G?)sn^p{-aY26-y3y}t7#mJ#&dx0*YrL0 zZZfZhJ+F?0HR|?)Db2dGlFs!8zMFF|3Kq7(oa?h3+72se_&e3^x6Ce2w%*(D+1OWb z5#QLt{GA_}eW-I&)~V-bw-#K~spo^x^+o4zx7i;MO=Y_~zQ12bwYKZ}qq9zTg_%F& zi#pvc>6|n1m>HLtV`%0=IT8?ZG6zy`tq1+;vkB)CZkvtTaXNg?s(V`be>;>wZYDvNV_fVK-=*} zcSK?r6c*1Ts2hgU*5B=m_&jc8mnXJmVg6P?=vrasBa{1pLh zeOAy-+baqCPWm-cUHSf<<=?0uXHnjxV7?3g6Y^*AD0ch1@UJ2qEZ&80d&Z>For7;3 zOou4gxiHgpz9*;QGd!kY{JMCCXXd0EMl`zO?smTL zT_T5ADMe@db1uf`@Kn4oS1ZfA-p>2#+<8p z{08RxPrk;`>f&Q^R(gu(j|*cS&KdmNeAejnj6S6yGC-jWK<~IX>64MSM>co%dWV zN7hX(?M3#lq8o@PY+rzRulh;OE3(D;ye9j`dx|msllhzPUjOb%ICR?s*j|ISxO{HWs~O;7Lj6oP+UA#&2wsQ<82!!p8R)K3=Cb`FPQJ-S}0H zdVKCLx4hq)`E35weS^;Uh7qGUf5RP)cKFK6_jqpV*vywjAbIx^Wr(n`P^^Ut>-`3;jlT@>u7)Kj)5%!dx9{*+DP1t zwC_V{%yDd~^IBs?ba8CSPJvkt$J?>r2Ec9iOO`yVI~AQ{>Y<694jZvZy=_GPe74B4 zJ&&%jY%e5RpUJhJmm%)39S?ha{rX%*u;XFoZzFU>-Km~EUx#i2I@6s3BiL#GUXgSc z@}+BFA5ZKOnD6ENdt$z4(DL?6d3J5E?I72|wXmYbWSh&jThY1CNve}>sZ_T6 zxYqSv`l>07dtlCOE}PiBFy}V+NbI?y`%Plc!`#2u!lG=^{_HQK950}=uI`0-yyd#O zFX>)HXI;Gu>xm;V(~Ug;z|QcqF7mt<1q)mA;_vX~>zU_Z=B0^!tj;*Ep*|YlCEfv?kViM z#2zioXSqZ7ZecGb_G)1(Pd&}|BHP3`08 z$WC<($J*P0C0*lFXMF0ycC!-S`S`&cx0uFjiETmH-@aQu#pjsY_=YCtcwP2pV!wnL z-}R-ue5}ojYg|(?UttqU{?u_Q`mZ$=3l!D|fq7Q9MPV_vl{r>6jeCmDx>={_99w8B zTeq-SQz2WgFt4XWw|-&HeFQtauq8`*=~AlqZ#Vv)+eG+lEIt{CudOV9A2?_{~Qzx#RhXW^q>j)VDbfTytub|&ma8k}QW%jU7QHO}`1#Mss}93%OB zzt^y8Jl{3rd=J1QrM&9SM7zc!#y5m`*R;zNoO8hU%g}5 zciLWxa~<}QFovL&t?kEW?XSx=lTH4V;#ueMCbMR4T-%2^Ljkm zuev|MydHl$>HZ3{UV7t4e19YC_4ulZeMs2r@#ho!2VrdwOYEP7y&k^`-+D3K=Wy!w zO}b|ZAC9hTDen?!tV4Ap@Xd>C>B0_9tUqD%!YQNbcXArB&m+Dq87~?i(N=lk6i}sc zD}JP5-(fv}i{Arhd{NJ{mOLBZA~^HM(w=tPCYW`&h?j(hR3J-!}C?J&5JIV zcgwO(KUUtmlWrZtmUnvc(pX-myV~Ph7oFv8PHcUc<@MYi z>3Z#^&U1UPjbWB|m%{q;xpDu>V*egOSX)`_-|gWJxPN8qrw#|f%Pu=|Jyk;Fr81qiotQ#bq_a(e1zf)p;U|x?$-)?+f zXPEB8g!!sdx{oAVul3(2Q?J4-ukGyodF$8me@!~C|IOd$Fp}?-zqpPtU7v6JIpy6B zook$S#K!WPZme-SGO<|WbSy0DYF7*_uXCiqc88h2TVPS%v4ov_jDFnw`TVDIsIL%? zbYm@46J?C}ep%vM9M)J~>pOJEcBifM>A2@@fAbB_XGBa7X*E8GXGB)#v+1ski#0^n zLBw||@qLKxzKNX+^I4KJ6T1NBTBGw4n+S8Q(c}i^eC`w&&9h4P7Bb)%rp=jhZS4dMKJgI34|?g3ohDtH&w7k>Z-u#kw?ap-Q~TRGjpdE|K-S+CMfV4E z9>3OowEMSGd>0hm2=;wrd)@|SJ+FqX$Ke<3yk+r&c|P)avy~G2CE+gpsE5S1BkXfz z58%5mSHYQopBbCfz`95^_!`$aXVN_SAeZF2mp63% zX6w9$P2Gwx*KZ9YOctwpiS=7M^Eqr+L1&&%gt>psOXT^&q+1=GYsBtKY;Z}#c5iu2 zH`4et>DDZ|FJYE9>tYU2whlV$Wfn5r*q&o7a3H!Ps3U(@ZYRQSvX8Mj5Ef;VjYB6p zpRnbXd9OrvX<|MP?sGlkNvzh2vg z?of2r{o?ph-l+Rlm^%5cxW~xIP<%H`s{56Hgl#}LbbAo?U6wm1HiqzQ&vne#8{eL| zrC`5Kx_t?+2RkmY0|@T|y9B=n&VIqMzVXHNmhtU{YlF>R$|l!n~{;|DvM@L-tpGMTB%>;!bi_az5!=uRqZvBXX; zYzPNJ=*}u^9x5Q%IWW_hFR^or?!d$@Dy(NJ$0XPe*q+EvG(Pv`eYj-^*jER8jIeFv z7<`J?>9{;K>Db-1?a{@xi}8Jgv;D1vVPk)_a;YnI-{U3{=uzrk_8RUM0+TVM>#6d0 zD8AP-*Wn_6@4-yt8<=)2IQOq(vu~5`$)Y=sdYQ37cYLWU$K%e6Sl(p_yBXgAocAmB zO;_Cs=uG!g!d-DW-OG~hBy{gIcYYt>=_L*GL^s+gji-|BnI(;nVb(!TXa;XiqE=_JYQMja}J=f4t6a%kFASwcXMt$7v?6j-TNN6^AbA<=DHKtKDenn1m`~5 z+fJNK7W-}g(w=44;x1o;^9q$`9Sp|x$9WF*okGE^^Os<*<**#u{vN08x-g1V*@kZQ zq`R@`u7%O`JLwK+(A_f!c`D4jI2JUGhY7po{M}YZo#ML(X8zPUhPs*o)YF8m1{u{^ z{igF54b1Y&!q$GuboFVLozjS7#`v}?x>N9@4x;{?6ATvhax5&;aJ`0U+=y>GFuu^m znAP*3Yb>`JTEG6*R(2rF<6|^o%saI;_jBk@M(6SIILta|!HvavTt0yxx(Ow|PhbQ) z#rJ8_omb-X`h5DLi}>iq+T(MLllgP~4qm7DVs6uN>|Ej-gs$;eShlnSb=%Os9ls1B z>?Vt`MJwSb$7bjpmu!{T7KM52gl>D7^+jLaWt##sjWf_Swu3X1?X~DmVdsC7*zGXu z!1?UPI*98*^YS>l`#0eDPy6>-m}@C!Nc-qq*zbmR{H~L>Z#)`59!?e(}OFz1A2d(Yg# zTo3prc|Lgd4mP&1`Kce{voD&D`fyFF?|X4W(!Qqk1j3=4ADwGj-$6&P(pfgwzS<{- zZlR+4gouK9&#{e0Iyy0Ru3!BWX40k`@j2fgwu=4>_M&SNHYGZMit;?oc2HO8*6#S?SB z(Y3j;c9V~_LHzNz2=*-HkS)z0ZI9vv5b+Hux|b7M4`#X}=wm{+X|a8$v^73f_hr5& zjcfU!&N|$Ku*bgV47V1XVaG@-;fL-}bhh2-bF@7fW`8;}zEy1|*scn*J!adOKUFsgo&C#M=qPfhKKASs-(~3RV<#teIm~|C=K>-xV@iCFlVJ{} zPVqef3!UwAEVgZEg8d6-U0nnt*r~3jB%S@4<&ArMmSZlMeZ=}0+U{l1N5uUPSu;Az z`x|uDOA9Xgx{0vJOP`|aj^9`>dF;Ik-`hvLj~}*Oi|slj(AZC|3k%(=q-Py$P99`^ z@ZE1e=RV@a=o~v%{c5qj1m^t!``?JqYbtfOCg%Oi#`}%V$u-_@yt&veiXZXaLfHF_ zaqcnCws-G&dF>p!I|!TZL5bZ-*!zvP8~25_&*9YVnRMq6_I~5Hh3$Z52=3ag>tjRH zkgbV3WJLWM18Fsf-5o3Rke3d z^|6QX>ht~geZS|MnmV;=?NGbIiQP@!a^%{Mf!L>iI``=xG0GC-JaT1ULYcDTkxxUz zIcLtoKDXvby1wYW5%Q*k$8rB0_Axxu#y$H$^|8O6fCGB|Oj)i?#QGvv-fZlTfKxX* z*c|NBmlenv7uT2D93IcF`MuzeI@p=mr+=R#$COC(Z?nT&gnizp*7H;P$LkMXTOE&v zsejJ^qc7|uZmus6qpZB=z@y!bz@l+^-{HLk9%IlQxyo+9KHon$A34VhE@M*fA8<`p z9*^0K)$0z%^^gAjh+Nkf?YEyC-ly27e|x~WXj~3(+WP=_hjzg83J0S-#wrx-IQaK4 zFy3dKENvt9BrqQs$31-}#_P&9mG=5fF|M)X6@ahUhuG&mTCSIhvAt|tA7G42b0lq> z`b-<2fXB8?1rKV|`h1$BkNr=(mpa(Jz}Sx7a!jGV2ZeW}gFP!ez8|Rm@f?}@J`xN? zkLN>UR@>`j@`xpX9S7{+*mtqnf}z^9kH>&Tz&4;GmDds2GGP2F4Xy`_LmMc)A6U!M zY98M!AulYq$0L`wtbR3*&p{spuVbTh>}A0aMq`7|xoM+s!)ji4k@Xv=W0WPv^@Vm- zwl4aU?I89EQcb^q!uvkT`xN{9{gVphFlYLE7;^sZ3g?CLKEpnF(~vVR92d&Na+l(L zj(xtXb%KL^C0Lb%eJj}c4)%j!S2@_vg5B<5Xrgz0Jj-1Bsee3YrCqj1u{^=31DAZ} zd(4n!-Z+_co2NU-mpS|QI{PcD_p_b-Vt1d0Wvl1xcdB7uxy)ni4B7Jkp?jEb&c3;c zSzX1q!`Ss+V3!|Tx!j8|_kcz(g>R70^J#n{)1y#wC)UGcpl@KLcB zfbqE!uYGcmsP7P9e6Cc2+{O4@iI~cAO`xp)PJ=7U@4Lu%^ih_W%03~ooiQjmmt5KM z2u4|ADtoiY@?JIPk}LZ{1fwi5%JTf+x;8z{qa`1S(7y_&=lItJmsJ5dIIQ$MjH!cH!@jVg70^MNFuk<%*5)P*C zj;sKt`VNFF?G{21U6N+E2$=FJz+vq72F5Yu#(p1%HwBz8;NJ%hHce!|0fyZ)*>4@* zc;RuKkH%_OVCqX;c$L63Ryq#GIlK?++3#(P!zMS5wTT#%jicl0M2GhYcu((-`}$6MzX8UW@){T2pB9(9 z9ofy`@w@pdz~lK3{nPK}8wrfDBBt-G@cdOVeP`uV2h(>qVKjDkL{7V$m&)UM%WIYQkTWjyPp?%rVqbZT zVSn(xK+bVRo?febiG8+%bA;zpeCK|ggRKL`ckXr0koU6ic&@LqJYOcSn~YQP)(UTD z1W$Q9ZzZoG2#UQW*hdcbu3#r4pvwCU7(d5f^a5`%*t+57*4OHuV)b{dNv`{9MT;sON^zroQ|AQ|zlgKI3Oh zIcKq(7Sr!hR!n2s1U%YwW6CvKF^wtj@u`h9VuSB+&=1P?!X!Hrb{QYV)CSjL&Oz4( z@0%;8HuSp@XnQ5<`5Bk5oN-TV4aSv=JqV276~ONa+#PbwklGBWsQCLIVo=M*{@fXy zeUR=bqmJi;e24#ihj$$Id5^BSj3e?eGz@Qd8Ar4` z9f>w{Y!N#FiTAr&IXwEZCE^R$0^X0i0J-|SRAl)qQn6bE<8uzh<_XpVV@I+1z<7^t z6fmyu^m(oD^u96uI~Iw*OL(`)wm~@>KVs4NDOOwj$ooC<$-J;V6Z`*zg#I1d0?Vydfk!VAY zg~Z-NVhox(yp6y(S4TM*{bNjB|F#E4SzaG&JDLf$-obbrBag=w z2*&GOVk%oAvb_IU;K-7P+d^p=ulb3oEZ=LP-8|$xKVv)e-au&tqdsCPnmP%6u+=l!NhiQh4pd zHI(sdjx-gC*Yb?1+GvKdk05b;!5!nv;)eG6{%D8SQuMWfBXBECUt5VE+tD68UO$g^ zur9#f8fd>eP3?9UyZ1S~pP`sO^Byo`<@($Zn9Amg>>$C0gS!%X_&xUBuumQ_9F7mn2uBB4F_+K!+Q*}msV8YYaox;5&ZuA%?|G=V3fVk@nsV*e&4;04a$BY7_Yt6 zKVF;jeumypCy)2Z*$$qADv!?@t_60BgYo$!+os=_OwwDF;XZ4hjh^d)(Go=4u(4)(TSP4cSka?X=C$-x-6Js-!| z&9COwh5y5Vz3gE5z(xT(4h9)NWahp+^({m2v~9)0>xoXQ7vb@J8S>B^^LaXcfB7!k zR%0>9@_WvYK|OX2?;ps?d$&D*)eFFVk+B3 z+S>|Teuo9`De!(3eIfQdumSMn4F~%X7@uSE*^%<Z1m4os7e`rJRtx#VsF!~ZYHu442u|{4?V5h+b1FtsP0=o!U zPhcE>yCLztq#J?l>hRiw$96o0aiFrTMc)Swwi_@$$J|54WH;zL3Vxm9SARZ+*eGE9 zY~gI|Qy;N0z}Vgk9c+p4G|uGR2&_djtQ8VxV*E`iu7CWF>^zj4BkB5gt;CtUr@-TS z#rIoaDs8=b%He$lUVqro{-7*<8xHIq_^m$I2e!n=^Zh#27{B9+*yj$f5is^!J@7c5 zhan9`qAwM|IH&2euAL(teHX%)@vwUmI*4|;X7|TF+k1Bw3fSEC-UCc|1Hj|`T;9)9 zY!EPhj_^%jXmZ+m&+|&fbiL;}oXQS{EPduPeYln8GtW0vR@eL89NB$EmhU-1MVf5f z;q?KJJ|E%u+zuGqI~WGAo7P@FLsI`bppyR00~U?xGKaSX@#VAd<7BEbUG=1lw%yCK^s*lHg#Z=!4 zV5;v3=%df4JFyxCjB(-pDvha*` zx4}Pt=OdOe{@jImKj*$HaQzERWe*a455Y0T1`4*Vtbg>G*Enpi9+QdjSVHUp#8qWS z0HfUluo!Thx^_>Jb%V0xQI49yZqe>z90Sq z^+tGO9ewwrp6>?g_XM>Ew==MB8{5yXp=i!GP6Zaj92$f&ZIH+Jk@!27K?LKug^TS6 z9=|V!>y^s#dY0=Xrf>>70NA;}Fci!hL>qi>ir*pAQhX*h1lTVaU_BgcI52*Gitmnb z?2^a(Li}EtnGWw@vBCGh>IhG5^a7^-9fp0{pihb&g?-vsf}HDtYvWvp$Io!^yL$Ay zc*&z~VjCm|2LXE)$H8-&S6_z`dl49~Lo2Zlx6QFfuS2;$LrvOs=s1U`*P+J(!>~!a z4m}QKwu3faf(;&zPQiXY5?nBIllNLUx0LrXczjlTE-*CP$m(_Ic_=f^)Th^>w>X%d zm)r$R^}PapJZ`N9hTXK|)+3Iro|k;)$gYI|e-~miuu>%2y#v8u{P>(yu{#ChJ0xoN zuKM;oc3(6?u@8W8{ONOR>e~tPiuZH)9f-|tQE@dB{A5gYvNS(SYiJlZ%I4l}0oWhxTyrSTcC@@@l<4JweBR-$+-5`UM8 z*Y@1{B9$TWdS(@J%98gk64$j}9N^feIwxr z*9}*n?_jDg;b5xoV_?*WCVC^_7k`Uk5cU=0xFZ&KuoHk?v(SF$73G)${3DNxi^@&_ z?=kT7o*Q}mUN&Oyp#alHw!g@R$W_+m@i;?S<-O$aMnm5r7hvp3T*$i^*g7mEdhezt z>#BGun!#UDqw5}zq3_kZw9smJpKMX+PDQ6+s61P?{493a}TBk>sv{)`P`7Yeq>!7jo+pJ7~# zoc-7vNuOcd6v6l$f*5_KzQsscZL7aWTCqtuVSWj9aL2qKI2HXh57;{>t1RvDGs%xS z*d^E}?|TOeuuuPZ@0{y~>mTp2yBPf=rZ#4SPyhJ5NwG74(Lb)S9OHW;seijlpR*lv zk?7xnQ4IQAY#w;@S?|-JTfFztuY8Y1&&`N6!@r6RIEIKmVk7X6@1i{EU;}~iT@?NN zJ9)?8ANBF`v1|vi$-*;X$ z0H|H^XoJ5|s~F$!p}yM-tFhgIvAw(Eyo1L}6un*15B!~zJAtX}uA*-ONT^QZoq`Th z9^bv9-3~aYD#q_wB{l|&5HU2z3z7K!qn(i}_AvI}%*jfI=s^zo&FhnfvtRF~ODq!=KToHuyb0 z9OJaBHkLV<+6d7{7)EKbZ$Xf;cV&|frm`e4_T;JEoe+Dj?XIlvU@9Av*i-&zB!1`Y zY8eN_sF+xZj3HuZzQOn&E8{{8;WXHl4wfs}2M(4eSa-BTW%+!8HcoZ00>K`0FdjF^ zYk&(EmF2lFF}~xd7@tEBTjF56o+b9RgYjK&VtdMXM$vpWlGt1at0z2Oo2U&wk0);j z#9py7!NxgQxnOrXSbf2M5sZCwiC{gEQy;O#*kATI))MS1b{VkSf$b%04tbXgkJqEh zyF##-gRK;7t%E%z`Z#b^HWZ%kU=Ir~=3uJ?i#ynA!2$<+MD!&bjK>4U??J2!YWIDS zoq$QD*hj)^f`%&go?xfSIAsiyz!i(<6vV$?^>)yI1>Y{%8mqrMQE6Tx_|g~#r>vgXjPo?FBt7?0h=R3G0V zY1|g;krUHx1l#QJ3V|_x_c=UbY+Dp#I}}66yxCa1e_369Pm9<&!0KYr-&tZx>{MXQ zf%S0aFVE|Ut%EK4Odc_gNf%ooyiGDr$s_=F*9xzm^d)&UVU%@w zSBUKOh1EV2BhSSy5FWq#UE4;CJQw?y@YYFx&=+FlxftU|%#Gi1BFp2x+8{=rVmvl( zi*d!{x&F2ivBto7Ja2@Yvc&kk1;lg>Bi355=aHkE(vEN60YjIh9pAopFg?C?kba}S zZlZ53+ROEUNspJ`07F>Q^nL4Ks_$~?H|pySeLNT7XH~QvJp|)>FpBjQY=wjI9vS1Z z1~wRX*O!ZM(TnOdY(&G~9?vTrO#Pd&t-WtSeR{s}9cXM%;7{uQ^n9Dlopowm&c| zMMjqIw%-kGCUOo~+C32aY};4|8-{)QayoL=Hx2q2zkfIw?_=}(4K8-D8N$>1leF;< z`T~77I=orJ`%eKUBV#`DyMtzERgJAmXojiUX zgyVqs&9vXv0;eyJI{||Yo?uA_<2fs3_1-mY@LZIbe$JcN8G^A-wH@;W=#ku+xDt_AfXX`-r^v zYrz(R$G+q>miotQ4eH}{zhcX=PkrZ0oayt8g6Z5R#{OVm#u2M%U+(Y3PsbYPw%V94 z`i^n1Cj`6S!JZaO?_JZb_E9c;RDEX&Zzl&kTd?+m;Z)W9zSDowm#;yFHYm$DyM0NF z*Kdr~bq~V+3YdXgMB?r@a^kFR+`-pw1zg0jR{EP?n?TcJ}*7BP?padDXY(gh%FUtn8SNXu%!;RUNC(wMA?L3 zpE$g$1uK9Z_3s+N8VS||vb+~~9VYiQ>~rgb)DDT?`8S3DHe#KT_#KB6ky9UK$3d3& zULSF=@xXZfak+y{0>E4XwP(fwhAypDW{1Dy_Xgfv1?Zm*=S}dmZ+NL6)DTQ0!*xvuz8I^903hTOxw7 zZNzxe$M_wLeLidBc>;z_+Vi|5FrH45$7^9eYb!_IPQdkNSy@HEafVK0L>Wm$D!lJ}~}YF`q2Lon@2)yLoei`s}{n;|=F zd39e>_A6j)hxR40Zv@l6B=)V?)tJ_VeFvUt2Xc+ok0PsmN!cyHXjl79F~-WpXqWAX z+Et8wN!eNGQ2xH2_9d^Id4A3Bl&`=(eIZr_tfUK$|1yS%-4CoiuqUw3aX~B(^?iXg zmAOUiA@GibzLOk`zw1rjRSw4Y+WC%61(d1XX26bbUHuG~`iPOoXXOQA_b%+mFdpx7 zWWR$Aeh2MBjBC}m2G~!yM*iBtHj6KM9Y7mr0pnWN9kzJ=(Hsd)FrVAm3z+J=3p}oM zeBM(kys5~!*718-mA6QEWrz=4PkaBM+==ON;PL$p9@A9zMDgVs@NoD~^W`Q-md}sq z%g4a*T6vm{Vg!o%+5+eO1ODdB3COv%M&kJ^kMUEGyF6m#DMl`_deU#y*Aa>O4g`j( zG=2RdJj#-%`t}ul`o0SF4HAs!fy&!cu)U>!$;*Td1zG1-W z%he7x92n1~o_4TSLU#kNxZR8?UvM*HdKk&_2cfA+ojgIeF1OKV7iKPJf&u`r^P~Ce0VV zH>!5YqdxK!TO!zP4u&P%@ZNDSo|93w(urv%>{jsD=S#th_BlTnuXb06zK0#`c3|xD zPaN!S;eF{~_W)y`^B%V9~)`<%yI<*gRpRluTszS!YWAN!p8 zqJ6Gw7{}E`qOYg)d3%)m0loUwwuJ6`j(1pM<;$a3O2~Weg$?u?K)Vt#AS(talNI_FFII>V6QnCKbt{) zUF29nU-(RnvQr(bnP68tSPQ}Ue1kDS6TKbqkH0H<0QMF0fhC7#d7O&~tGO@V0T|y+ zUgq#x04pArmAapZqPgza6&SD6;kE};MmOJKe$v4X1WtXMA{cotHUvDrW6jUmqKW31 z+6+10?fxFJ>hpf6C$Bzzitq}6DQ_tD?}Cl9k@Nb4{_TTAyXQFAzQE`o&l!|Qj64?` z2#j{01g{MHosrZ(J||SW!>~`@tH^PRk;Z%0;qjX3W7rrdV+}>`Q2e9pXTTapWM6i8 zJl2ud5skv_|1=vrNT0U`&d+@DzQ7~cr+>tF{Np{yrfw3KLJJ?KMJD{@~q@HbAh`Z-a+88y-j5t zaK7_?=-Phvd<;c1PqzcccI=8W?UL6;csvF`O&V{8!`nr84*`RUG~Nb>x2y2@`Q-cv zPsa=GGUoJe1^SY6pP2f$R{ED1`++>O9z}S32UFXzhw#ou&N=Psd)eXfogV5dLS8Sz zD+8wb_7dJ81bfiIItrGbZS69KmyD# z1Y;aVBOQtd6LB05X@l4p!Jc%mv4ZV_!Kb`R!4^B%dSL6JZ?l7Oog%hxQMD}R05N?x z3Wss?`!4kP!cxm4b_rrc>Mlkl{@rcoXa^KrM2Jn4C_r5pvodS$wZ7KHYGci6-BgW%{Vy6nW+QE4L zfalroIoR34`@R;8^Mc2>mWYMgxCj{6*qDRynH_CRafq zC>f{ZJt){X2fG3opPPQ*V9SB=_{Ps$tAF#b&vpC*8#Eu2l6AqLh z$Dg@|V1I3CW#6g8urv34^!GCBfrQW)On)yEr(G$1Q?Sq9#_aB3><8YHX_jBjn+fb; zoD5HMczhnp`#v`~81EZw1W&I6=rf;h<##|FWgQ~MdzNj1Wl6sg<9wqpdR|BDCgJhC zPGfK_u)QHWvldydh5W2XH^f$DTR{)MZ~IMIhiKzb@FoGf5In9`Jm=?iC1p9TRhFNT zW`F27rEDGO8@#>e1x~E$0(%VDDhH!o#_CnJ_@UWY9&yCME)$W_9oU}jQ(*jmkd|rw5;a|Y`+)R0IfyaAuPXohYAno4VGY&5a z-qnz0->d964f1h9>q<_u9;l`ZTSNwclGvvzq96Z|H z6Btyc+1<s|V-@ZTl5--HckeQ z?dAP29Ol#7%j*@@w-0ze^zj*#VvWQXK9A?|s5z3xUZ2O)Mh~%Z4g$*aH1ag2*E{-} z3h!HB>~oi=pSh*J4q|sW^l^Q0?T!GZ{&fOxF$Tdj!LTfwwWt#&RU7P+M~vq``v7b2 zV0&Pnyde(8u|pnxP}x4ho9tjQ?32efDz6{*sqah&>o2@>9Bcsgc}!mHV2mlTkunbG z^DcsocQE=-8#_5z2VnH2xr22QY##@s4a!zHSQp_P>|nG@-Z%&AD!d5}#`x0b=N+uI z$nu>7jmyp=%VVixl%);5eq(#v3hxDn*8&)A=zTr%I2J}i_VWmjn9FM^`uMzC?cxw) z^bN?a#(d!&C>Y1eSd34;8=zx|*hIl5VxRhm9S@A}2H@7&Z?KCUjPDZh`M&l!Wfi-` z;hh2=pR@C%35UM4=j_j*>|%V*PE38F>@(f0tYW8%zWtyNQ#+-Pvb`iO^o6`lkd5;A z9eFN~&l>0-&v&@yQ1%e)lgDG8i_r!#^@XzZkFtvKJ_+@;MC|KF^yNh`>LcdLQXgd% znv&?f$dHSZmf$9c+k zT=+Tv?l{hIBZkX9b3Qa2`^tL)Jf0)H=wMwj=6NsoG>H{uTjM;O`t<#AV!Q`r?)f@) z>w-tD8T6`+a>2SeSZ`pn!Fw9H@-kt2pq}5guh%ZL%j*eZT<=wuzv@7JdaXfTCTxVr zeh66}-^k-R4}Crubwv>@0ZeVs9(ns>A}Ge+nkh`_5Zk)|NqKw^iP$#|#`l#NgI1Vq%5$;pB5l*(0j4i}myNRgdq7Pv*=P0rIS>El~=SJ)i?f}#CQ(|$Xqkt{O*ubCREkpixc~)v3k$0r<_`Dc@ zX}tH~6Wc-F@ksxGzMT*ku0zCrM54Y*=?`KjAd&Y7+Je6{UNHdGccSn{qiy(0#yMR-4NW6z&mUO!;U zTL2#0(Hq3q>iSHBlRc>{2APgx8j6PIU^j|Mi}!PW|pzrhZs{!MrEDaPw(jp;4W!SA+z zA3@={H{+t;JAV)+pkn&H^Ctr1xi@(iA@Mz}6%Mut7=OFqHei`-aICpDx+2Jmsf~ky z?I=98G2g+|#s$D=1K~8^_j<@-)z2V_J%kP*_BwLq-H-j#fPDrh6nji~4?##VKBJ`U zCm7d?@p_xsP7*)bctrGdl0GNK-=-k1sjO?nUKVT+;;j0f7uit~EArkD9^<0C*M!$s z)+X}!T#GioaWKB`z_#ULp;K92LlV2(!9Ee$w`3inKAtyIUprZIh0(=mf zkMQ_xlQDLAe2%I59uQt{kg$xU@pcEMyoZFh0T_mK8t*lS_X_HEn3Uzsa@LZUfziKP z9c%-z7#{x4gfa|iqwh#KJ`q^CvrfK_I<|KaFdRnH>|X5f-bEele(hlIh-??kx3Y+= zKA&N%-bbP@pM!@Xo#xA2nXBY&LZUC_n5#T?yD_aV^OwA@kdAl`_0C%N9k2@cSLtBi z3wFPQ{UBJG%ya7d5s7xk0mJZ3v%ApY{e(KUV+iIx*G~GUG2P_w_%3P{d>JNlpEkA^ z>^leJar`Xs63%(a5aErMc~048_{Zl$*)j)-mEzxRknJp399R#GyPb}(-(kdYMXWb4 z{*F;!@F{l`Qd=bcj!{1Vs5ak2*$z2>PpCgISGG6w#eiWsHqR>OU=Z{3{FpW=ULUc` zXAdgN_X_As5Wx!Ii;GPFkH^Ig4sQl9`n)G{bX}Uyqk+MEn$Kf^sa?v_E@c&)i+$=l z81o3>Pt$iaFrFVAjifP%15??BkbST}>g9M82k$yy=j~N}y+w@InzYdz@j=(6+2Hja z$FpmrJ}|XGS^i!WWw9I^+4ji!n@`(0yodXpE$BRh-@+DsvnW92dr5{ zwp8YH95`he1Io4#S&ad|Lm$K3;~cMj3lND6+l5>$8i&nhr&Sv?#cu3Hs#7&)hteI{ zxw@rGU%vI~BWkIBXRFE&LG{)=hjLpzbWt0+m+o5QFe{^U<(UXO!=lxhrMGUoFlC#% zu+etx&}(eLJ0iK&hBeuGSnNm=Rlm)$vwRnn_BhagQcW=lfN0=|-OA=~r4BQo7U``C zoB7SPn#a|z4#x8pVRP1-B@G2c1V~~$y?4!WgChBW0yayZ} zW3U5wjnEm5h1WuOMRLrcUB;k0czm~pK2TpvB>H!_!($8vgLelo>L#z1@NRH;I{_OF z9#2XsLtbkn>igE=`M`LtFa$jAlc&eYe!#Rp7=!uXneWRGUI*mVx5(i!2Fta1f*lEXsz&5{xcQ+ht2r&NM-zGU0Q+Bw>@?N&u9VxQ<-O}V8 zCcGErSWJxX$Ca=o=D6$hBUVGT!IJgayS9x84v29N{ zSVzGoH>~D$5^Ovsw94{16vxYh+uC`AZb{vf+W<^?d_GJ6esnN?Zje~ANi}bKvGE!v zxym*d>~1V7inS2g<1on;Sh zYRuk28Fy%U7O}Y(RZw8RA#?8yn!KY#3Q@C~t$A zezRpWE1)m;H+I>z#%}e*;iI9U)3dZ$MgwHMp}*<#LT~8FslFt|_GNTT29V|XU}_7p zLCzi;<;8%xyo3?RiSi(tBRmct*@EBl%7E=|s}oAY3qwPBewMcR=A#H{5DFulwZPVu zMJbufT=Nb>)jYIvKGxahylH{WN8 z4ov#O@5N^Gnj@(%ya%EBz7QMtIM|oK`1|QRPAD%QO8EQkZE<`;c+7Vi>uSUtoMctS*A0SU+Gsux%Y|ATY+c6EMz2`mAy8?C|yjk8K+XjOXv5{W}8~+xsOjj>m3D`g`{6&}oXLVj$;yv@sNR zcZK}vzIh8jwgr#=>GK)-{3F`Hep?E8<#9~%yYAgFxe^#{#F4jy zoNGg$<51t(sHctVk*mHz*k3vr3HDuVRRrU2q`U#_eusB7FwT#9a^6cDGlj?BK~jCh z$a68;{S{+0YWHXGT&yE_9H*6ttLp27GW+*TU_D{e?ccK;-VWffFFRsg>LqdMjGXI6 zCt#{?C-4}*N?^T(Hx)V8jd8#V3XAHLl$O+y+POGd|aa=bjeG*lGi zdW{Y*@dhnu>5Zt!LCW(g@L+~_bmo+0d#7Je<}JXFUtWYSFJJs?mA7npv9~2F+uOnb zd&xfD^5xk+gqvgAc~HwD{%-b&imdDr6~E?Gc5TxAxGXR0%tssLEMM+rFJHbT=T~ek zhcta}5Ty5Od;Nus?_yw8$d_ZwmV7xL4`a)2b;Eu8Ey$Xdo9)kUvV8f1mV>hIn%i$g zMZ@LGO|@CGz1V^}6?V&`er^l#fd_xkepl;}ls3504!82$V76Igy=zU`)>i*lz9N*< zeK+^n@ISs~ySo0!zHvUozn}kzGDn8JivWJO6@8aJP_&Wmsiz1+l`Je^=iyHlRQ~!>@-w{ZUK-D9KxE!u=ThKC{{&(r`2>cy^ z|4k8?SALFHI54|kVb=Gl#Ih+|u}Y-s3J9aXUgss0e~Z@`Jp-vRo2IQ%^voCu^1hw>JUv&yRcqQYjm&RSQ ztBRgmR7GzZqjBk;!1Z)bs?wt|r>rVH8qH#GJ>8S4^k|@Q(Ni2WF3l4(F5L~d?z+*q z>)7q)H=B!(H#oh^-LxLIz{QhBR$O%H@=25UfCO9By!5TGs@!Zx4I4IeKDV-}W|6I` zUu3JAlfLCv6-BnH`jM@wWn`-w7}=_f_3D5Bul-o|k7RDmZ{=C4Y3Y;jP_C{VvjY8Hr| zY8}>4MMYK0!fB@4Gjz7WtN;C$F}%7GPmb}v+^%zb1dAFE-uab7Mxz*D|Ea@SVYU@} zo%`usiSHg;vDYaLZrS(kljroY_}V_*%(hO-Nh!Z8${7nA=WgzE z=_TC05dK$EzeVx}F{{6&=|OY%c)9y?$1t86}Rwaq83mwc1Wz0D>M=Iq$l!xn$H zr^(mWA7k=4ubg4>%4cqt{29sLVD2BC$nJ-?eOrHXOi6#r@x zd6mUCOYQ{{mxn&z?Z++sI=%mp$gdXuuaKPdsWCUcPtHwW4r@8; znK4-?GjY@0n`>R<^HOe#`=(?+Q>Hjx1@KJgBPZ|g@_%`@mta`8$8ax2CE{2W1%eHfpr$7=&X ztND5Is-N;rrPNbiH`e3zkkrPq&Lx7;a*y*4F^@d}dJhF)jOt)v{y>YZil)&63BFc6yz4=)iZ_n&V0crDs&qwlum_EH`^+?M&d z6>c++wdKaP=zUdb%j(~GhugCD$=B;_`2gXc_hNdvZ=`%tBtE4#TmH@>|4O94F5b)5 zqvQ9vA?gB@1J7p@oKo)ZsCVwu<3Z%C(<7aPqp=Uoy=@6&9!B|8^-O* zt8KZZEqYtdwq=d~H|N{3FZEYM^zXRA*5~7WA#Nu};`hnzwqD1lW#M~t+7B4PK3&xC zJ$~HZTYGU6e%*w3rMLWPa&C#l>HK@F9_`oZ{16hh`sP30x7**AbsSG!W6M3H{;ZX@ z+)>J{{%y;hr2Ny9w!Ev9M_+2o&82+%6SmBEuDG@7Y|GMY@0r_dS=%}5dRx|U-t{S4 zR{d8*>W_^0x63rk*M1%x>F0AJ<>w;hlFO{T`v01Y(+cap_fe#Md2=jZ$HiP3w{3)9 zajvcRrM&PCTW%-idvCR6ZU2F{*s{vcjFh)|#MbLN)H~8&-#uvSwSSgG{JpNdt>;?K zZRAK>)_H#AF1D=wGaxdqH%H?2W?#$Kwff8xZJF;{a+?w<-!?P7et4w*qcOH#&!46o zV#~U&ydGJ1MlP}SI$mCh^vAn*+Io%m?ve7wuC|`XE^ebE>-L0=ww`m0Ti^WSUgLh> zMp^t=k~jYaTi=(J*p@{4=aoo#Cw^!To31P8tg_`U2E}JLBJ=*<$Z_G_Gb~@n+eeZ1 z=U;2*<*v`!^6paJ^)6f1_yI#V%yC1Yip6$dhfKY&#yn){?z=f z!N2d-|D4SJhf?p=(EgPFHPq|;tI2=WUsHW;@_)8o&qor^{IU3JeEmk5ga6R+ZNA6{tunW-Hv56ve<8DcD32p!<(cbi)Bji3*Vcc3)_y|gSIa*({z8$D z@A%imPuD;HjLhRl{ZF2oxqg%O|IH(|I{uPbTlc@V`agSos!6}D4>i?m|NmM0waNca zt&iHiL=DFWt&f*x9>4c$|G$>GUgc{#KI{Aodv1Mv)FiL^{bXkO^*aA*IDc0AH67oz zeZdcz+gF=>YW~zP{%flrD*o3tKL2ceP2*GBS5v*lzoz=evMR*$?Dd{564C3cn&ee~ zP3`-$^EZ_ECOT#AUmZXG3z_RRJ~drm{?+vfoqw-n9{*Zj+x2DmPUiM${1abf*01&c z=b7vE_>de|i~cV&%d7rGgRR&5vCR6_etcr)dhOrDyP4}#_CL*RU-f&FGRy1w5pS9K z_^I~&4>HTE{$O(EdL3Vhb(!ncfB&=0{?}Ho^Q)%yQR{2Ee$sk>r_A=XK4_k~Uj3_S z{_A=Ye|ziaA2p2+)$f0o+5TFcU&WdGPx~kFZf5)6>-ti|@imnCWDVCBe|3Fo{5)LC z_^Dz1&(ipG%p4z$Us#g4UhOBtTI|;{zrzWCOg`2BHR!LcKGpy6%=WcDK6dN%;h4M(V>rd6!U_Vt~Lwwih`010`KaHPPx%K$e zcK(p4;rvkb2jesA*Lwfh%=P$4zS(M8pMGzBP3PaW$*26QVf>`(*Jt*Bt;FB!vGw@J zMrD@Q^}D9_*H*9og%@PjFX8p#D>9Eym5;xeS$>+dFWDyZ_|@ZYd}C($H99_PSl`sY zn#P~j*K~Z+_|#VKuiJY2{U$kQ)crSDNQ}Vn2v3l(vzlQNwn|{51sA+tq z-C5Fm#ATV)8kWoRp$2BHa=8;FgmmRG8tbrtt9-5fQ^WeL`fEDBQvHb<*6;bc{>-Xn{i)&lA))hgVP^Ria{n>hIrIEq zq4IBMuGje2bbm(e*K~cgR`e%c%^d%f{u-W7{!iCy|0V}!_Fvbpn%2MC&VT>g>uc-Z z|91at^G_E=|IN(v=g-#b_=%Tho?p5?sQvI-%S-;t`g6u*uir`^5{vB{U*Yw(K3;0; z&u_4L57x(TO|K6wwe>R}81n(^V{`Ur=Ba#esMYi4-J9*JRUe4FJV%Vpv-MN2-^Cn2 z67LVQ@=_m4eVaAkf5wW~jiO)b6Ng#(HEmutui}M!r0e$%xAogkeq$cx{pIQMaj9?C zp`kgjhgvV~_m|oBU3y0o^L|$RoOJ#E(N=$huh*VI{qa`zjWxZG8avb0e|Pq#Hmpy~ z!%BS={Zilf z{To-B`X|%l>yNhb<39iAJFJgAVe4aJ-@DVcf52T|bz{AMM7n>`dT)@_OZ=ks@!{$I z`Hx!rCGXzz3-x=urPs&Kv-RCxUuXOai-#DR#xFS9`nUAjZ_Mkmi8i)A<^M`sf9&D) zhEg!mRpiCLgxK$S=iXgeAM{MupRBa@FS`EPey0Ak^!nJPw!ZJk-LqLAzexH=;umjW z?VsAXO<&e0V(H`08)W6relvSd)+ak1$SgHJ;!?ltUxykz@x9bvW91V6w0Xa*Hm8x` zA0qxqy;o)HpSk~zxvUSgUfQqE8#WBSA&>R()6(Pboo3}PIl9C+o_KK|(o+5Ue70#ul_`zPuCu=X@7X5)swhQ=GUSfmQj~K!LHv4$(85dZg~fs*Qc}LjT7E@IUcA!;bpD7 zxr)5R(Q-T(mCp0;u=<|fGB9CyM+#5)YBwRgx0}6nuHjW$o+tK|=ih1dO}zNSq~VPb zeZp5>LU?-&e(e*(6Tf20zsc(HhS|7XHQ@8}$@9PFHyUDH`P}9);f3c|{{2@sUd#HJ z)Q6v1Ua0zNI1cLZE_Sont>JhR94PCu@Dg(@|CJ59ZZ>|&x*6+Z*H2=ZHXR>2zI1)m z@ulTVvcyzg`FcOBrt{aR9+mfGJjVC8>sc2q-~IdMr~0q=8`K{yN9}4^?f+T%Lh)Da zHI}mfiS(lyjO1#6g~})G{h&1}AGv=N5l_W`t?>1HUE33V{!^=beH(v0zmH2fDyL=j zKV|<9%CFb<%JWLKpN!nURJ)o-?d$yzmDjTJqq)j!yu5C9yy^JSa#T*sQF*=Jsq%@) z^Hr78T;;X>I(}0AN1l(UoaQPY>i9Xv`mg$8@BhB}qy3kxWBXt44}*Z3!7{%U&? zk>|@b$B*_w}FJ^S`$1jr#w4+pqogN7wKF-{rMm^nQkpA1!NrG}rN~ zxbpvhk?%Za!o+D4$4{9!qp~wTkTLoA&f_P}=y?3ZlPjlpo>@6%?9}O<$4}j*(=I(b zb;AzM-(IuhEBw*smsOlSz_h)iy^f4a?#p$j^5Z{Q{=l;NJ;;x>xBP_Uu@1KEud_V= z9-IF%;Vt{otu6Na$@|6TiC=B5{Dkm3*Sq~T>Q8=e>*L?qJoaORf3MYl-qPgcQzh5& z`ERR#ZO*&qqgVb6Tc0rBbPo9w()kJDKQ*9-iH|>7_{Z2hu69I!>;&818{TUar#rz+ z(KpNHp5*GkH`DSPb~thl`LTbB-oWND$(8RvWc}Z8^F=$8?~A_)$%Cl>%0G4Tv*d@T ziT;0ye#uk%L#zL!2kI?0e5sGm5x(TgPYD0jf`SExFZJ=$g)h1C{fDjo>|f6`_bEfE zkIxmpFzvGYD5dHhjZR{e3$#{aTj zmzx`QelVP3o`0In1Id-|Wm*0)ecoD6UP9`WZ zG2y26Q}qYg`eel4&5^Q|u9p9^_EkRqragbXSL}sH*?vsAIKJP%eI`9p8cEG0A<&RnC|5fbM5LX)ZZp z2V1$gxlRU2ZI?*fk{Sj9F#w+`WlntS^7GKSf*q=QMJWO?MOYblfK_>4A0p+1^tY~O$pN-Mmnr{x+rHl@7C`m? z)&8sgguIWh@$uw-S;{||A7u(iS&PwJ{r6>jCkNT~57qL4wj5~rHtBDPkAMGv79U+N zQ~uX-z7TzXs3!k4K7Uky@(A0GM80kB)obGq&{pDfInSLd=YNv>XV`Kexi?SBlB>R; z!0H>e^J^WbFMg)wB_)raC1uHDXWMcpdF&iprfjCoJmf}&j&FTFtm9kPn+eii8Xq0+ ziH-I=WU=;Vv^HX zBmB&^Klz09D}K3@`*wSXz9e$Y<(e1d+C1@#eIFr_E%=YNoc!75p5$@CgCB%1&Ac*Gs(py0*V` zyv0}8c1Po`W%VzRcx-6?5&q^#S^bIT|Ly)o{WUMGI3Rx? z(B05%x9BkpE?~mq0H*9PY`GecathG00;#e9)nyAfWdpcn0%>Ic>1C_Kan~!25b8yM zx)Gox0@R5B#Sx$=0u)97{LW$;BR>MVe?Shk-Wf`V`9gb^8WrIrrmnoX9~{0 zA+^*WR7?HQ&8&VsZ*o+d-D7I0pIS@(RkhTQt;N6XyIB8cmKw$-Uqr=(ta zb7I*!Ihbw*_Lm$=%6l3N6UxrflDc*4mYSm{C37(m!7ae|Pun+LU?yAO{QP`-l*`J> zCaVx6%=$6Zmt}rQA_o+11(S%Gt@mX^&WmSub{ zEG#amhpqG?!OGGwWYJFu z>-)lEGw2Jqk1a+LyAxYs(bvSRFNR9?4+hiGVQu|vG20fl23qWQ)|vv_Wg=K;hMV!u z*rDCJirLs0ygo6Ant<3g7i?!R(+snkbG)?>Src|f22QuPJcy=Dz?h8g2LX0 zhcIEJ;b(j~piB0#m>dpF5DE?u%*Kk5DJ&dm^pS>5Mrzz(#&7F6957%0Tpcgt{CLqv zk_?1G{LZd680ygD7?**?42Oe{2f*{x1_u&r^79K98+{n@W{4J-;80s{nZXce%q<)E zqT)MxO@{F67DGVUdV~uezHcxNGzI}93zO+f zgJHeMHeMC1CfF`QP>YHi6Ehu-9^upn6F+gx4K_ezoS|?R z#Q+jzkMy#bAE3_Xr{m@1sBJhnrca<1jkfbkMdF1}cK zR4AK+86vyjGLf@s0gg}?*SVXRah6laY=sXQ%uEI2Fe(Zk zx3X+1JvQ4@s*ft9=2^jLB9CJMQQTnk8DG>y;X8(>ePoBjrj$PRiCM7fd~IY?3o$2b z(Jz*#CXJ7|a)JV{*)$HqqI$#(z|o7}>&E=p(O^1ytUIklRzhqtiy0G~=N$Y+oh;8r zi(>}pu0|h>nDChyQWO&#W>lH*7ZmK9W`n()le3@dGd*5V!~^ERMi!NN&?>LraEjq& zWpN_lNX9w5&1u9;f71`3rDfYJ5?M^hqB=MaFD-A-;3mV%FRoL!w7k6jHVqm!Y}DjY zi=p=skb3pX>NjYx?OO)JV4=UogzMG&T(H8Tk`n4_*r;)nVxFkMc@tw!^3t;MrWVUD zC@F2wc>C>}wrJO`{l4ae&W>hI!<@X5^23Q`=NHr|EpNPi(;fYmt#)pEy1}?=Ko^## zZ5nRd_$s51lZ6{5LY>mG+YE-#b7IK$fWZ)})RvnY67vwM0yY^xDTUw6c-~-~{oFWx z^9t5m9_J-m%u!XRWTVl?zBKC%BUtv0mE~N^=Hx|}7i}>-6MU%RK*-O}tc6uGm z4Q>Z1R^4&MM_7yqdlD;7ojMbYeMS(PWJ^Qa>~Fg!+0Mg}_bOv8gwc7z!Pg+&X6Mh{BmH=k}up%PB5x*t8j@Rr`)zx_1AGm|2P<2bvf(Elq^phutdS~q!b1dw18eY zju<1#KC)ZEEMnFV8+$OT1WOsfPEf5+Mpbt9X^I(y{gj(K*I-7H7c^W0OBNV?=Fr38 zW5)ee2ICrL=7Qx}KN6(qi;F)tE;_pBX z43G1IhkZDQA+yQKa^SNG-10snM)d|VL%+a&GS9|~7mo~dRsneoo!Mx(ppY25RzNB( zA!eFEx9wJHF;k&cWoekLsu5!V%t*GK*(gocIFQ?v7))}Kn!^X;zq8@7k5Z23wol0t zw>6!OtcJv_33=TukLMOvC1Ma0eP-mFMWV29pz5<{A?%K#VMZULViyU{-@`KHE9NBk;K@YeLM{uhEWLV z?~Oil2w>QakzWl@28E3wx|7~Pke1ud62nT2_G47woDJt(tqspK!!Q}x_QYg^ zRujcehF9G|wB21~tr=r0yJt$)NTMnyXE%ds+4A-jo<;5dy;8Dj-SZ5Va?eiKzN*iv z;{Tihu0Dh3KKt#6Kwee;jx2EP|dwGS)C>Io7ZZTs6ei-x`tB;0L z+qJF@pp5-e7ZdA(87n4uX!Fg6CqgF7xw*F!GZ5Qrx4YByF%Y@A4;UV;AxJnUMy%_u zQOt~PGfwlLt(K)$vmUIg#;kX!c`=HiMliYAf=Q0;4VMQw>U=we>8Q-fc~3A!*yaza zd2EE)K2n|~n(4Kfm~-S|@V_I*k%MW3t0A)$X1K8{SPs`4EG1@ZV0duVSVX+AZKtxP z1*ibFqhcJv7RqhmV5YTbM=Og-G%;c@w>uMKcyV~gm@g}9*s$R~#Ap=^yRMa%A8aur zYkMd^|47v*^MGfR<1GdS)tg{A0p_A+Po1VJ&vq`yZoy2kp)E$#3QkpCwK`8RDnwX$ z5>j%e@Yq(}&Ptax@Hqy9(cD~IVq$T|KGTX zYSZMWo-o6oI?g|~^4O`D@kQP7Ge%9Hk-?cX&uk%l0{N48@9JqJI0+@DTd@dha4$D3X#0ENIi2re;sa`^2U9e950C! z10H)W#|sZbd1H=JN4#6FV$QI;2!B0*1x6ugME9OWBwyu_;d2d1vDL@Lj z|2E`qMm_Qn$$JMFQh*d9dGIU71bs2|s}Fy@pOKbid2yr=$zKY2U;%S*g0Ilu90Q1T z5?Bm3@Dsd=e*CNFn!OD~1%%<|n{t4|#x;L|+AHcd%c! z=apg%EW`N5xC*czAZA_}#sKmV-1x6Ko`uMoCy6FWfe6(L9RiZL!i#O`5~vG3JE zj^vdfNAmb!0^=#s0k$xA4nb^VEG%-AHZVR_s&Nft^^1Bar%nn)rTC~ z;(Z4H@GvEYJRF?s`75A@iDitjczw*LhQJ%c*7mtxa)(?m^mDyL3*_KnT1kR^`&0Q&)Q z|4p=&b>Bk=Qo#H`=tZ7Do%aLeabrG!?HKk0B(D+L`xfHY3%;`aBV>@gZNNhwA|=63 zfaCpyIwU^{`8(k^_CqA^XJC&amdF#R3z#Dwv1<`iq@X?e_8#a5?)?HCNa5v}2XBLm z{dfn|Ax}W3w*_^uoj_gqIDFU*Yd+gB8TlNPhd?hl0eMK?udw|N!FPgOBqHFNPE##i1)i?qvf*3a&#NkcUWK4ltwu zDMa#eQAP@BA9>?8N`fFlJ+{(HcXd-=eS0;CYh$DHx-kS~OP32;2jr`V0C+W=Ry zfnhC9;DJUG$HcHL+D`02`1%@R_HVQic>;Vd2Rd-#+}eiH(pcf-R)*Sm?%slmPqjVc;JG9q$7NH;Fz?pd6wuXn;Ne?lpm(CEzVZDuxcE z0LjBVh}{N%kz&}7UyXXqi#X>7#((?~*yddM7skRDu!s2*;~GL8!?Ax4cy+Lk=mjvWv;08z`l2;dHqyQ;I^6H_C6d;92 z9*+4jq!9YNw-Kvu*hliZGY;5C@(%(ZDTx#t4qHgx2-G8mNPY$Ck&;NUk*G)V4n{pv zh~ysv{7~RX0rtJaP=}Pneu&&Z95_-EDRu;SNZyg)AcaW&QK&~sBE^nIJ(3qkJ(52P zbx291*l5%tg}}Wrs7DHs{ITF5C6Qv4z{a5-DUOst*&mO3q$E;o0x%?RB6vvtB=C?2 z$dgF1V^ELeO$Lq>BKgOn9w~_wn}T{IZz}4MLL`40>W~7Y*m0;w@}{F6$v++(Qh*dP_klG5h7=%$%(p|15p%BoF);WuPyH6u?&42IaOWBLzqyZ8bv~DL@L5yyhq)c`cA51xO*1 z*Aiu<04YTBTA_>-AcaU?Ym|`!q!7v58D*pZDMa#MJBAc6hwlMW$Tq;Q7=433UOVg~ z1xO)t_z}{V_P~(>q!7vLfHG2m6e4*YQAP@oLZxbh zk?#h)H@L_Hq!{)Cq>$JisM{SmQow|ANNi8!D0|qCVLxCQ$=eI#4Z35CfI)W>DS`di ziKx36wvl4s1V{;BAm+!>m6W7Nu*c+ok+3E zkt2Dtk*+}9eZcMq?@{a{#U4XF6EN=q*gy)A{FUG!C6N*jqVC_QLkf{%DEkkg9w~_w z3&BD19tH;~MDkam9w~_wTa9`o?-A4^g-AYZ2eYw$_r-CcAC3h`$wN`@kMaPNkv!I+ z9KRN_k!@c0!woWYkj)bVY(7nLU+@V%EWTFo3EgaYO;?+@k#eEr10~-i_5R_Ow?g!- z8EMP>vHqTb>~PtWkN%m#Lq_EHAOU@O#?4jpP%=-ayIk9U(l)r|oCUYee5B$=e8j zt@z=I{x*^qirvBkto&jrZ<4qaihXZyTi-?Uxa2GLvG`EQHw*4dIUH!~=S%KM-bM1b z){9&y`PzN0Tukz$=qrk_jyuYBm99HFKxHvvm{PK zCGR!F`gO15vm`H*_;1?H)|d6Rd0g^dlFyTTz2qw-FI4-IC&m9|(tqUYwNh{)Kf6QL|ZJ$`s) z1cKFxW7Ao)##hc5J=2?U(zMD>ohpy(l;%nQQDY`l?mux#<skH_ndRj{X6&EbI-lE z*v;W%dvL#2LTFC%L9bQcZ5Fdrr(ijnj4K&5Ciys92x&G8NMVIPM+-FjT{Iz@+cG(>FvmsJGWUGW^3T2p~_DH)AZ}54u^}=%K+}k4D zeK&#G9JU?c!TkWC6@TB|dKe%`vxJc1QE!~JCI_8nE3=G;y?z;$gFT>aww);J8<1_< znsjW3fO{qFW&!;&aHc6Dw6>l;_+JJZhX z`e-`YM^CT`3bUZT8d)H=9-bGjK?j4TOB+mw{%6taHd~xDd}2O<9)GiQb}bM)7cY() zr?R(Uf$cmAUf<|yReHPb_lxz7K@tw>DS%{n*D{|Dub>A8_Pg17e~QlQ0OPEmH46^_ zJ_p6){222bW>AlC(!0!_X~S;5dy%zXygSBiWjoFBxaVcu8y;ulqE}3^A=(>NWw{|EA$yh$2Kl9vz`z^* zUMt&8Wps*R+1_EbTV@4BKI%LlVj6C}$lM@pjx`?=}n6Le7xOmyDBp9 z`Z*FUV+$Q-FTD=fZo5V@0+XqwgQjpD*rA~a9Mlg#-tA2;(AcihFut0-$@{nKZH(n?>ZFyj2c%AFFRSj;M{ zKtik}A(tSD)T8G3MJpc+U_qMRRA2zMCd2cnj0zYq(6)pjgw45o{QP*Fcd$8nf^AaE za@ZW^+)TBA^$pmg8uNBNoP(m2!+iKSuO{4kiRsiPcc#PE@vi-ReDrMl$Bs{qcAZLY zXXn%IF7%R&REufB?~Xks8$ewp2Vgg?b#oZh+0d)|;pN-e^`2OHrjph-I9j%gA{$d( z?~TX#_;y`>Sz$5)8={y}DIDWiBqR|={bo-wjVRAy8@3C{CrW9KM(E84!wDE#5qgu{ z)#?Z;a?%{S&S(IwDQ2tzZ3;^$iuTH{L{_$^KGkQjKW+{@y$$1nW=Y9>;->p^Xlz^@ znYBH8VVqC;XZKu_1bCsTLB994N}P3$5AK&z(2BiD)9JePjWZVUc6|tuk2+2ZtZxwS zw0Yjo*r>Pb9ZYSuCYbhwWkR0}fM`GaU1AZA1@gF!g_$=ztu&O$mxj{Sd&S<%Q9hn{ z69#!eOM5J&joSHy9QLdzKJ>ssTlw(vbjxAMw^zaP?KO;it4THFQE>7LL0fx6ED>F& zQ+dUCAC!>}wj5GZh7urdAS%#a2?-E~gqeK|9d#zvW93@k=ywp5(RvYSWeq*{O?wS{ z4khZ%+x^ZkZ)fkI%eH+L$mz#ruI3;24fU8^Vd9)R-A+)^&pdOGkcoiGhKx(IMRB0e z-s6N>SIWcUsvwr2lfbN_r2t#+x(Ll28I8}Kr0W}<-b)PfyoC`k&Ripd@+5u+&2sKn|JcP+RhHO{1fUx`|l@(M@JD0S|1S~NUX^NqW z!a9n1vK7JftYC++QfR3CCfBEVv%QZ6Q$Duf^C`^iN#ml|aqURb9f5BL%{gZGnT~jQ zv86}G%@&<^u8tMUXU)PlP*n*EDC-8uACJBI$}XF&DU^n*-$_0SR_o}1O<0ATYcSQw zqW?wax>+I_#++MQdFf>Ptk=Dm9CKwM^W4 zC2`(wt9Bct+HGi)ozSexpdDH0ck{7pblB#V=rXnsnNzn>5Y;3sgDwqaxjo&f22tqJ`i0bG#9LJIs4 zhDWRKiJuMd3Byu5L|l8LhpX8Mx%B#dQQ+Y$iA7|KYkEvzaEJOcxTZAIXy{)!Z?v9Px~*lyXJVDiTB3x#r}tE7S#Q2WqI~Ybz1xcug17_G{mjQMwxjis8#eUo5F@; zMejI)Y?{jxHaRP?l!AryDHv42AMax2>{KfDjJl`BJr+zhkTb$9rsr5Lw07F$4BX;wBGd=UtJLtApHBU)T`0oc~^JLn^2Bg>IfCWnf zd_VKXop|k_e!vXxN?5_Tv;x$P8D&5QAPg3Kzi(-}IelZ1-w-2nzr-EuA2bh#Jp7LN zMEz&^_^CZtI3JAD0Y182Oi7owDcx3J)1egm@ovO}xe;``9`3L+jE$V!=SPd(wSBP4Aln>pgL_y%?J_?OSuwYx-+Qk-%-dpiN z6KHgpt3IopF2^dSOKL$6b)dDT1wGCSXdpKqi^hJu+cPw57K2JsbH(DbEL=>xWmK~~;i z#z1?Kp#+Mf6AdNQ1%b|BSv^k2Rssw3(6QCC-Q984_B4V=;%)d8EmROI z+p>m!xWM9<{i*e$(d@V(%-wv#K!U^xD*b%g>%-BHI0{Q%Mxu_3jCYNsptAWJn5S)M znkti#0(a=@zlto@5b@?b(J}9V6TQbngs66a}ao%dISqfki8WcDsMU%sV21**lm$Z z*`KNO%V}?Tjj@oo+&JjA;1SOnttMXZf}hng;u_~9o1iH@G0=@*tz`rD#@lr`Fxonl_I4aIGAprAr(D`t++@zEk})HxP#-jXZQ<3LP1BOxS;?&=jflA^qSNk=bxf4rh-xLZ4yi2GTqkb^&xuo0m$oq>r>lGJ*aOS+) z7~X*eCSSh2Of%=2(&?sgn!&2oY*lq;-{$k4?!6fJB*lqFKgG=M)wD0CeD};n}imtN^STOhy5A((-Yr%Qp zRJx_YiU1qQU!j@hZPd53HX;O3Q7~~!7K@%ggLP^!t=jwp=uUIeauJd)NzM5Qns%=k zA(|$Ua^CFIvF@eN@IdGeOmPNM4bd;6jfxNktd|E;@jZ2JoT-X;H`5=2Y;HOqjY;DV>C!2mp^Z0bh!l4xrHOjdD*1l7zb=&zjfI!^p+JjERPsXPiaN z@1;ajDynK+oaV6fFxy;8LW z*iuz2L;n#LHQh`#l|LuDLQcb2BnBoOixeOV@^)*V>*65PE?!@ONkPYLB_$J+*0|Po zscQ6-4lQSP0+d+#m$!|p8byr}t>!4nRkUz6wT20CTqz3~$Nr)<>WBVdD<_4W(6MFnG#FLmTC7Yg zn{#CZwK9^fP%gI1Vg`c8A+DK--cN=ORpBLG3n>kMyFT!(90NRez+wWkjPXDTTBKQM z_I?=FIABck*&zbh!krKW7f+w1^n8nbcRz%-2oQsi88x_%#6` z^avqmPURL@uO@K23{pT;nax66s9~-G3XVGoBv6q8@wTZLQ^gq~>{?B~O|*zRn2=vU6O`gn;SVu|6E9&k-#9tJ zIUETk$q*6AYOz_c}%|Q>T{{Fv4Ipbz5B{b6N%@> zR+F0#o^w?)+_uU z39Ky(>*mL#6^)n#K98YtFmRh^q!EQ88ylL3O{gGgdG4Bk1PN)9on#g}Y2d{i4iF{7C<|x0wQH8BX(R55yEjcnT{jawm*RB zYsB{OMEJQfq+pnEuqku|b@qt$AqTXq1n8GlDVV8oz#n-ae$C&1_F`QdFflDF23GkY z=NOz&GtTzz;tX_)jcX}zS*o`P)u}EFvjhFn4{-z(X44uYOxv;)FM%L<8wqVCnFkT2 z;GJ9S=4F$&xX7pd_A%C`P%2@b#S}_>*nVuYMRU-7?6gc9o3LF7<40g%TAmIvN7O8? zajH>KIxQoe>rKnKS8NlF5dadaYZI_{t!Z7Ztio{{dlJV%OGvMv@nng+;oK!(I74XD zg`#k6C*MP7^~g7m(S#JyAZ6#l#En&nr&tMO$Zkkk0$jv2qv)Kth@fMCLtcm}^J4-T z5*>|@aB+vM*j(`0w;kTV4_A;jd0=ztg`LsIF&qn3frZ{@Xyj<4t}$(UF}~V_ z3xNpBh6U+4l?=dj5K@2Z{Wb;)1(HoSWw*iEbfasYSeJPzMLERU_dfT)z}*~FfxFrxKf z6Wi7D61^$WfeCrq>U-e2=z!5x4jrd>oPxlO7(qj0`0XKR`q-jl60`bo z-_^UA`p!h)!6Wyj!V2Ng@lKgzA{T(e!ZP|WyV@g`)3WVxK5{4n^k@z_j5{k3b!~~Y zBSAg`R~M=^Fn#plKdFtjw^@f&*rUcZU*4T8 zCi!UG&T#5K?E74NazEHIWAz*&U;}V(`amDTY9?-@-jD}SyZs;(5kUfMAM9D5$2;sM zdQpcXZhNzc$0~|-k@#O+w_+s}z@F5lrzpA4E-_h7UAs{FGq)Zk(6hBTT)a+)D7M4= zUAJODsUHUb+}*-C<^Ubt3epXK`?X7QJy@ z?E0n!%csR-Fur3L!p|^<)P+8-KSZQwqh8zVLSCw?obwF2n?G(aG&`uE0D|oZ*Ind9 zuCsffIRn>+{&p?Ii+`ZiSl!;5%7fYx0=`oNmWg zluYx_E~$AXaraV10!%iQ0>Q)Un$FNxQ1>?9GfYDgJGP5^2pse&2-7K^IdDd-#=&FU znX>U*v0phqT>s<093B;*^0EdC}fM@ZMmLr z#uC+(MbJQmRkDY=&ZEbTn-8yWyxV>06@UZ4!OVfACP&L%?BcdRkwtm~9s^7(7GLW( zf2eDaKdp(P6~Qeb70wAR>dJ@pM!1ghCI#FT;AY-IFgUcL_J@dyOpux5I5@{B8pEd+ zfKRHYIV&9+(^{c0t1VpP75*&+$tjY+I0KwTaXT(Vz_9Z+Zrb^QzubY!IYwXJ@otSm ze^d|zqcw+eJXP)TS@{%(8gtQR3Q5JKSf4bzaucJa5+80O*bXXXbb6Jmyj*2?;)Kh5 zF99A;b5`GG=Owc*mC~K0SRjg|#Ws$H@ode0zv+3G!_xZg_D!@)D-^=p*XXWrZYbCWX{*s0TNgWy~eP_$BXl-e}2WyX#l z81dlK?fUz{g>ZgKd|8~IhKr^!6+O+oTS3anC%j0*W=bc~IP>}o2zp(5Pk0BOb8-3L zD)jR-dMgcXSAcs~Hb2iI4fety0&F++_~3_0)?Z9Q@7_s+UHkc*?>ciX0N+b9xt|6* z52??jmo7{vQct$oym{JV6U6OW+;qdEM__E>FthLa_IU9Qz`)}6(qQMDjXf`GoaB{; z4iHFU>jHlt&|8K5*Zc_e#ZnxM&W+Uzj=fx)e#7-NI*6`OE{vTxD&XM=ATAx{&u9~=O({qE{1ivbf zgUc^W@G1}4?!(f&aEb{K*f#LPI~AuLHIJ2yjbK}-+5Rf7y@QaDK1@OFBq;z_=(3jZ zOTfPYo7ymglu4h4e$ek$kACfDLgFi40J2MR5;U)#NZ3t-hGP)s^$hM|& zF0aV23IRO|Zoxw~SGgv7-NPIwl%x6)Otr4q_ZN3%w#cP(h4bw;9{|Fotd0Tz+{Zyt zQQH%<-~l+Q~D>`%#8)Oq5#37c$vLpI(K-Nh(UOAatjOyie!oCc%=nz0kjNF_J=shT>=uDXSr55&L(_Z5UOYUPj|X(aj2VUgNdGo3F0@ochLvA@RA^&$ zbQ)cii_bbDEpYV=iUmiG_Z9@^P$oN*p^c;3F$g7$a99@s$n)pidH2E#Zfe7-QMhhF zfc{cR{Vd19>R#5~!#ff<_uxhaCk82sw_fHcqf^S^w3yPV!rlkAw?(mL?Fe00k1Ia_ zM?=Nb)~L)$XlEP{jOm$?RP=Mm=1q0DS#la5X$P#0JC8&H%Nwd81c>X6jpQ|oz-Wx` zL&;lGf$l@kh%Yk)!xe?Yzrk!R=zBqoxC1@q?xb56z`Ex_cEu&!+;vInW;vU$pAdCP zVJ6d%w_h*7ZMB1dj1Y!oSxM3fDjY||Q%P~;s^c#gG|Q6FJWVCv}y5A20t3ltmcJdvBgHz}AXtaLs} zup6%uavbdS-R~NjVva~hZ;wVJ@kEd= z_PEQrC%hO0-a>ZO@MJbqxy|J(M1-teg(j~+K-Tl; zaU3z$mx-UK8N*hEojJIL5)V>Vdye=SUjxhWcyxKU>V|cMH=YPO2;z%vB|K5#RyI%E zbR+iCV>4^n6sZL?N=5xZcPA5BD@bTu56<)OzPOfc;Nx94W7wP5BOB4eQGXI{WCgP+ zv1Nk!IPYI(G)j&(|?BhZQ^XkZosP}XDL3KOgzM!Ek`2XD*c@-ehg360M9v=OR^9_HKc8LBw~UA7C^ zeG$LKHJEnty$jFj!SsD7@psTE{eTR@p~8wxbpqGcObEiUi6SJ_ zt2_}9%YSwCTLechV;AIb>E11;?Zz+ARG_f!)!Q*K0(?vKJ0!pe0KJUB_E8JTwXpRv@7t3^CmZiV;r367#=9dfO4IR}trrp8T?aKg!DWt}Mhtw+RXkD#wsOG_rWK)g z^&|Jhv>a-Pc)QaMsRZ-}Je*1YfNM;57(xXI%h!C-nuY;bW1cq&zfaOvWRyq}FO4&yQXcjMIE=u&1q$@9! z?#kr_r7_wqrml>6ix3&17J<;q5M&Uykc5gwn9we!OQpvjOfL96qu@*@B=GeN(Lm5KM$VWp11I z6LxVx1RJP`BxzhVM+QS%#<<+6IpmfJMx?qoO()=LvCJlF$Ij*mP0*2WUo5hfpN}s> zv?g_V<53oM}+oM+lO26JVssQ0ctgyu{LblVDRUxw>yF)!1}(UEzod?eg&Q_!#>_yY$&1 zQe6<#^#oQhhCo{)el+-a&{*QCs*$K?UF(#1?DF9~+u`)71r;z<&GUp&)-#y$0_GXX z&(lYgwZ2qk7v+xqa9dy%^%^)yd_`u9;Atmtl8|A`V@D!qWpg!7+GYgp?39Dy?gg%h z4I7X8>e#!J)qDpnOd$L|5t@SdquBHapNSdzeww4SMZ-RIgBb+*B3eMf!fKGSLSEHM zyq2jDzlL?!#R|Z49_Vq#p&@Hj+xO#TyGD!`;SpFb!EI;LqfAs&#Bml5*Lkv(*X&_G zoTxtu4Qi#~qNgm!U|e_zF`v?`yw zBn`durdO~(2&{3Y#HF@1h`^I+P!Qd-F769yX1Kn$xR7_L?V1)h@!P)&*x5<4puS*_69?wmhP(JNG@R`**(Rkv+WoMW61$y@wv*y{)$%c$5#`eDmIeT5x1> zJh^k`g;_KU34*Y?1}_Y_eZBCsA%+ve&QWu%7iYy)&%eUaOR}77Tb3bbcz)METc`&J z>)Rsp!+TYlpWb5!{Pbef1=)K^n%}Hz)35l=>h`~-#(jWPx(|?g_W@G%KH#p@z7J6i z;6qd!_>jBz?%sJT6lUwe*4_JV*(~yI-QRlXqV1%J=oW9j6&7pj&KKXh`)0`P{@pL$ zzjr5O_we4shY#*V{2sjZ)>~U~E#G_d&HMM`x_;~K9ngm?@7}w=br%dmrdtml-oN+e z{kZn;J$U%moiCQ!;H`Ua-M{+~ecx0NCki=k;~>*>?7hp20rAt!Umaja*55Qjch+7u zOYV8yEQ~|hel!_mWxu3#^RL1r03sv4;4fO;L*ri@b+7$dv&NGeg!g%?Zz`p zq>lFAsmb%zSUAO-7wSNfMaSLcsmH2A@a~UQ;6JKL*r`fr98|D6am^oQe&T{ct(tqs ztx_%Qm`hlH<5AYM;U<9txjQHX)?iphaBD>fPNMtqQyzM7hlYc@BWWHi#W%b?!y!j^ zXZQ(eNxXYAJmg*50B!7);<+2As0j#S%h2CouOH^TJV-B{3QLZ};A&3)z5$CwqciwW zM=UKU_piYb>$>B%OyziiYic?TEMYL=^TX+`X?QITw&W(>TLBV~XxYdYm4$@>9p^;s z=cM~02t4B>zYG(w2$=YAD}q}on0epHZA=vh88g_HxdxZ&j3;N-=Wp3lVeewM$#|t~ z0#Fg^=zn7I?S(i&VSy-wfhM~815@rZEdDGTom~JU4#E}_SRr(P_!0lLA91re&b&0t zenApkz9CxD!O&3Njna7$DsVXcHo`td5@gq#_4`v?V?&{9?aFd0#2NHAb{Wy zr1U{Zio?N{7xX+%rin+$!cs3Vf1%@!)2(lK&vBcVy16u{*R%J{;-r2i1G83!tNEw| zM^oT5C#R7zjk$BSL?pKXm+|Qu=XI2c6xkthaG1`xy!(xxdc(}F@=nVS+Rxz|ST5Y# zdgG@ZiN%z=y}epvZ*mDQ4jy&2*d~duJeQ$obd;9CDt1k#^b#ZK=?$($c`l?(3m4U}`2^KiPBPbH zyOdIU7!=zg2H@Ig)NH@;-q!t}N*usXvG8|3i=?;m(s;^Wo)rt&} zZG@TQWI(AqloKn5kv`SrYRHPv>q=;X&H25pQa5<-UKw=140^K!GMVVLp&8rAq9VnB zPl1a4C){0)O=aARlj?cre5A5aiG~i(wK`~JWw3MhaG8!Rvmw8r=g=F9xapy%vNybZ zm&^LbI}APKP~`OHCxt%M=jc%g=MFH0h6ylUeM$=_0g}s3S9)oA?M*UKB*NPv$;1r4 z9K->n6Q>9+YQ5O&@JW>OBTXJRy_4Ro4(&j5F}=!nw~h74B$OVOJ}m4k!m75W@nvdz*aFcMv~svj*X_7 zji%MjY$O(nUb5L(I(la|5HNmk?y&N(}Ch%#a!~_ z5K!Fb;%mOgIx?q1WRp8Xd}gCyYCN2ewa2H&lZ+<$0;A)=bL#tDU%i~EN)C5$G6UO* zD*M01K;`Z8I*&PwfOdq-9V&98s#X&5Ezb%hUB5HfXbfIyB1fJpdzVIJ>;sM);bhWj zJ||bD>g7SuqXG~YwJT~m>kGJK58Bu-forH= z-Ma#`=LkF;_pcH5Sxw;glj}IP zQ&m=4WQ|qP)AS^+w|A4W_$XWH%zTu4^HJ{4M|pET%7ghRZ_P(}I3MMUX%yUf)x6%W zR0f;}%d4Yg4f~_T8G}hwX?bO9W;90&JQ5~^(`}uM-#gl4efddH|UuRX& zs`XP4VzDQuq(VH%6)?Aj;!8-zFm{;&o#l!Wg=o+#Bs|xNB4B8$31|``g4bTE1hSXL z%EAFX-bi99LRFZ$oWV~x!i__GV%mpsOZ|5J7_*M1R)ELYrwRaYw>UENz3e4K#kPKc zWVct>HxwHH9Mve^y=VWa-!Uwh{0Mj1%loc8&JJgzZLA;N+%;TJ-qj6!5_WV8A1k=4;q?uh z#*S2C6!KvV0%G^37&cgX8)Od(Uj=M>fmdA<7sbzl`D3wd1m0YU=vM*&?_ z1ti$HoLne$T(-g>@XhI@^RWI%V#H4vBVGYNfV)O^jT7m7T%k-$2wXha37SEYX1gcx z>1meg;+}vd5e1y)29@4xYw3&07^h}0@sxr*+E+8*YT<%Q6L2*-tbzl%Qel^GX-bV9 z457+3>G}pD>U)SxQ%8;r80rUWb@N3B{XRNBdP$i~F7Fk8qe(>QR_DR}>?Oi2EdgQo zw#qP^>QF)n|9e{VRR(c2d2HKMYMZ3=q%z<%I8`HM+IZc{hx`nbp@gdmU=z2=~J zY96&Us9q)^g_m$bH2&VZ%AYCPn{gHo!$` zXnX1E(!dYy+g?TBCi_?Xh-!j|*TrDSyqpLx=vG-|as7mOc}M(qRstUnk-{%WxZ=ie z_S2r>UC!R9e{B;rGG5$sFrNUoxn^zXHI7tE<4z~?B7V(_dj<0j~}xiO8#KX6{tH`uL>a;f^c09+21UaZGi+#R1pGA z7~Hkt`W|A-dOTeyFZf!P^p6hPqGZ~EUhxw+J4j+MXUL==GmL2jMYAWa({_;3D-MQ_ zas1|@*J22k&HlWQH+>QAVR-B|hdZ#bMA2E`^PzmhWO4&A*I@;{SX!x@`jzIezC;80Tz&MK+EuyE^p0eV44EvVxn%r=_+jjW7<+!kL#J zr)U$z-CfE+#!m?1br3vYj%|1=vM#%Lhz(Rbh0UjxPLldczw>_Ee;Zv=up!oV9{mV}qxBn2LGwznk;QX*fv zp{8~#cHnsnVz#B?e5J>hgTK*GQ3HY`_-U8%&06?Fb%maW`mV-&6_k;;Xy}npvDW{&Zw(dHjW3lJ#dF%1A6O5+&>0G%m=!2 zT;UaH2X2`Z9}ClH>Jb~ApMs5HLL%Bv!<1;a3pnec?^!V8#hyveu^@4mowP0;5*8d? zry3RaK!>}Xag&|DUvFT7#c;(y%utIc=Am{sE_Fk9$+(6CGXqELXw^g@Ut25wW{<>h zR8Y8c!;CE$lYpy9af}~e{zt3X93FG|$mbEC#>Tde+cb2-Xljj4D{3rP92K7ZsPF zur>(^tEzQ5@$=VGdlCUb)|Mu3g%N;&A~Kg5g+(!VF)`>$h{P!YOMti%lyEUrl`*Ou zU9K`zYOD-akgz(zLu#`MyHwTKg2gOg+Y$7qTL@P--2-jmec}$)*pyM$ggMiy$AnHrv6C!xAe2FMyLR5< z(*hHwt7cNxJC;bd3#WP&6RT@1noj(MN-$~o384=2Q<7E|>z}n7YhVxVPXj(be=_jl z!8{%$l+AjVO{#iaYI%|6(xP7N=h#xW36&~VnnXFCU9-}Nm70j^*23eewF$|ZwW;CM z=D=aST6kEk797>8gO@ASPb+mHn^>+=n^dY%o1!aJE)are2#(=lb9`NgDLmd>tY_X7A zMPXCi0@<(w`QUyXhVq^sVV=TKY3my%3EP{pGo3(@Qg9(78~U>l)NKlaFXOo?lQt)U z7%kETidKXIuR6CmjY5WyXnAi;5R z?V?-200afRUqLAox5C2rwHZoey&<6T)sm_<|ReZN%y@NP`Qp zWNHsl+J|;MAXcNd3@IJ6FieNNeu*WnP+>@h3ckVNHM)!H^ibfY4TKV@Zv>sGPh9=7 zzM-Pk9_1zg$%Zza=-4Jjv^Tu$jq$LdVS-)N7r5kS59jvWbtDS4oWxiwElYEBnk%o3 z0TG>Sj`{A02gJVY!6P&zg4=Lmze$iYstLH(}^YvQwA$0m&O5okRt3IZ=2SWt#@5j)8Gq@hSR4eKZb_g zw_icc@dH6PnhBO4!@RDeUo@;ik7nO&Q5Z~~3}z&eMnXRt=Ag3x1{?936%Pk8wLGD& z0-@9lWY~3DLmUG&UvKk>ulXQj`|*6pEl-mqEoZ+(0xBadqPoS?e(p1l&VC_!$Ya~c zGKT5t{z*g+l^2BCL>_GpK3rYOv}l+#6f=vezp+cNb2({V#W)V+(C{R|JM29%F5nt; z$Y#KiHNzN|0^7z$LFxRU`lMZ9^2l!w-zF%(p1L{(uFb}zy?Zeo;%qDLS?LuL=Ak}N zML0Cgsa|&2B}h%Ml*9f2J~8<`l^a?-z5>{ns1XliTipCUxOrZnhwxl2IiLnG+z*?> z+#}*A-X_Z7AQq(c4Kl|ozkIMrAkPrOaA7*KVllEd-*^hSF`Op z@d>-BB)~d6<&6qB7RxFzrG=%{Fy%F{0u??&;dO0Uu)#Ye1Gz{_@se+K=adK7dw&YQ zwPYp;sIM?<#8AAnc?$|!%wm~Z3+j`xKBy>g~IFFt?hazr47t}JkUWIuX{a>I}m zyh8+BI|5vcic5U@Uuqm3de9$7gpBv8kxuEn7gB_@LT)zR?K%Ri%Rr^#%kaM1PAxG} z@crJnn0$q&>`Mq8lZ2-=b@3-3z%#Ef(Iau~C8EUlMtSQ(!6aGSFTzYdvGrzY1aQJv zon1P-S>|hulvCUFm;rXM1(O%&+4x316G#H$1EB^Fj_?*huX|r1JD8}?GTuXl$C!Il zr<})5zk=3lmU$qKNqC%NIt(k>=8Y7E!zk|44|sf-9N`>38h-_wazY=bSuh$?3y#0G zVpR8SL{$(LZJ*DE2y0hR>UU!5F(K-Htl!{xd~|Yjbm~?!Li&NUz45175W>h1RVANh zWS07El;HQ(Q#7Mpw`wkCti|x4am|dt$5oUC*vmINMV)2E+Z?z_OX+C^#n}Pi$<$&9 zRf3e;;22t$u_>;?usobK%$P+y@>DF#c;l;nN>ndh9e*i_#iAmD9e(dpk|nN4Cn@VepQ4Cmvz1tp&Z0iTqDenR z9g?FWl~o&pafz#?!u%XA)1>Yg&ksigYPVD#M@j>@luUUKpjna$=GE(Jam02=(x#iv zNt0dnu)7v>rZ`x^$YUO<{={_EJ4&Rs;VRNedV+>45jvT4tf+B`Ihmd0WBY7G-+64Xpm zXrYP^e@dl@F1H&~A>aK+ywz0eVf=*!gjz}jDg+5ovUtuCwt~WM&06nw{4KVcNh^BK44_pD*VEH*uy?5EPOCgSTBP zy^Gc%pJ`F&yd_5m)uPc$QOl`{G+Y6PyL?j&5k-aw=V?{qID3Q#iBp6)_c)5ybe=S@ zHb%QmJmQ)nWg%2~f|6qzqN+k=VA0{XdV~e*Qyw1jYYhjI)cP_6wrL9qNHwsSvfj50 zNAFwi>VvNfSATiXG1Z6neTBkN=XxMA+7{U{oTV?xiYi8-4M~_j^*|~C;jkJfa35U_ zM=y&jUeQO4jNSlstDu)G_}Z2Nn3f3zA%SG0{}zkIBUAbs0Mxm`M_)I8a=FOA4|5n# z29EzfDt&O*NAN$kUuwu(F|_^TBqpgK5_Z9GE6YlM6GkRTrvEVB1u!C3W3e8Tk^dBX?gBx-E*h z=D=6^=tLa01ckwikaS^1umd<(bT@X0(zFqxMBhg+;JIQua$SEg~ku!$7wmpq^!znw=eCW^ITZ~$AJD;p1rfF{1?YF5UH z6dxPOjp%!)hyV>dMDMY|pI^4;eUuMQ&M~E6r}=hc_uwER-;KV%+)B~1#D>1mr-Hof zm>ls@!D}I|f+_KX2B9-u(+6Z$UDI($v}rN3!{Fh$iCayS+BH z9u*P4VGp)?@)nhY?SqAfA|ojN_WIENh^MMlhi-U(E4UD z;VFhqxKD(mR%#A)xOkNk>(+BmAf!oHvcth&cV1$HI)H>7l!ZsK-zFNwO((`$2E<-@ z_2@)$BSKQ~f{G6Rmkf3y91{uaxMPI0u;Gl6=4FW}`8K>7I)>gMOa0=p!Kj*WWRAs? zBS2A-gGXFsBQ8P)9|`&sN|agUU#zXL%EWDgkD1tBVQ2PYAI3m%|=1aN^yW z;_(3+g&>14kw{mFzDK@HiLE%?qhaB+QpixYnoCfb63fUWO7I{!lF6`_k&38f!wW~w z`qbX$TUkfui$`?zPNf#fLPQ~<{nh3(otu0@<_RvBZcN4}8MazAh0q7m2t?=uoNaZ$ zSZbJY$)by~PPd%aH=0GO*8}J_Hgw&|O`))Y`D|eMHbw|vu`IrXAancSH6tIEO2MVN zP#|QHN{&*nhnm9LO@oDZPz@*92+wk+Sopo-G*>4+P34{9ApHr?&+lU@wZw#$08eqI zJ^=Q3CM|&UO_K*ua#IIdO|Fo&&jYUJTXmCChuED?@XE1w&8fjx9kRxbqXrb8(6uhs z7|im=Fd0BG@I+oiiJ`dGhAq5vjbsV4i4oKUmV`D`>&I!7Ush8pL89%eS!2Y-3|#Za zDP&zj&jur$f=Z#v*is2@ta;x%G#%7;*i{@%+S+~EZlXZ0lc?{oi#RgXLDaWwtjQ^4 z^{u*xm!>7M^`?z;g&}5(ji>r*kq_%?mN5SNFimeQlxk;(oy&!G2_KD1d9Z;S@_BOl z?5R4J9wn@AJRcU*kvf@36D05tg-ilmnLuYEYk9Kq3@q4odlC<)mJV@#@+}K5_cu%wi8TmOumwGKO_k)ryo>2a=L9yNwunii&( zKlsv>uG<|4u&qTvXD=_;kogIID|!jASbK^q_fbC%ph9jkHn;66)FY$g!AuG8$UycTAhGB9CcY(+RAA)iJU9-;_T5QKCJ2AA~93D~@a1E1K{3!-1QSN#0feD zmo8JPWI96T5@PSHnk#SdlX$B1Ol@;dO);KuqkL4!rJ(z82hS7^Wx_ie%gi2$gcs=L z`kAm^BGQP)rK(|-<{V?CnBcIF$X1bdnvYT`_ENco&?XJm*(_2dKcAO=cP@f=TuSCG zDY7TQ^SfL3QcMoBZVH^t@Js;d-4ybE z64*>b`xW4_iGfajm_j~G3UN41au%C9;^OXz3aeV2Q=Gp-@TA#28ZmCJz^0k@IfNMg z-a?oXO+eZT)hnG4)ia=z=_RWriRC7hWO8CzMd#LE{`I(vDrh_o6g2Mo3Hy?d(uBps z-0KW7Z9$Z=N`)+=Bn+uCQo>p)Bb7{|GD_O=DdR=$OlL({{0Ko7_;WGDyD%3^tgD$= zN}JD?NclfzvJsSpd0`dD&M2p>@j8h${onYhpDsy4B|BsFYm-gnrr{fkTQUos03o7V zd?nU-a>XY6)z%YbOA#{hY>=vaJePr5nkKW;)}wO#hI!yTr7}91h`5u=RIxnKS-Ao= zJJbGW4O>QXt*vspVbg(!4`QHlJ4KkvZbQIEj6H^v3XN8RlZ$WhtNp?*u}$x;p-a)!2Myi zE8>EfQZw)*;+2$F0vl)Ik>R`W|G_&x2XBZIM0{9vCYof6Se|j#mgu_}`+VAe!7YUQ zaRNLNtqbband~t@8Y6^&ma*`*87pNU&TV7*&*Y@>V@9}Bu0poc{KY)!SeH`vm}}UE zgj)F~3s0URZflJA{V0hyA$vohdOQVa1#e_lM=**q$8yDYL|c}! zE+bZS%?d=h@oZ79%6YQ@wuHq&DeS^8g})amU;7$STD_L+#x9TpqRq1QqR3Julw}b? z1o@GYhOZF7)3Ja&LZ#I24T+N4IyLk}HQlVta{co%^62s}QgTdT*-O#UrG7l2=C1d% zVHZ&^Q6(y9s!Y;I(xOo_BFHdeU&%xo=}BT*xWHw~c^6N$#;nW` zkS5TYLo_<~yQ6INsdE{N+#pbQm1C!$mj>V(ng~5$tyD-AXImgWnea3go@PijND@_I z7E0|}Mpaj`87Xk`BRw?FuXRlz%$H}}qk@(BnxZB!TNuyk`GOLc^XvU__I^4KD}uP2 zBT_#RtAff@y($RIMU`oqE5%U@jS@>qO7T0;0U)w`)9bT{I%Q&TWn(KjY1Rel6EPmFIc{Cp zCB(tr-d>zYf*AgMgj0k8YqC+$7+3l2%M|pfV8A~^%+0ARUp%1{&2c`O(ta){E7CGg zQ$X#9@;FL=@V-?J$;`=Q_vy3ePhBVPe$X2+di-53V8&0OeLPb~64y6Wnm+tw+apR8 zwHw(ADHOc|t70R0Iq}S*%!r_pC32hL%XI|HzI518ekwZN<`naal7(0*bF2<%ZjMId zyi?Em9f?jmcx2vP)d>iYLpt_0`HqviBRL>!@Qlmu@pFVJW2u5D%OI7sfU1H;X)q~9 zm4rC7$CEQ8-n(SXMaWl4g+v=tr;NyXSfg`ss+__Zl;Swav1W#HWtpB~x!mM+r9pwp z87nUWH=S@zcNtf+gewb{cXc{<;%6dU;*#+Ns$q1Fa|wttO=ZQ(wDmPQf7(39Fi40L z<8g~Efu>8QB!{;5yiS z4baps^}YL{W8NAuAsI$5;|I7+WHH`*XkHxGvr7``u0g7cT5uk0JjznK;*GEa70ShV z**7UO6C6Su3_e;@0jz^4^e5R%+)C?hT@qR9IY3?Ch%+%Z94`&nq@I)819s)CO9;ay zcg+v3WoCi?LwDgBC%hR0!Um5_<0-Lmt&&6*q1DN{_lD#Q#|k05d?bV*l;&j_@1P(| z4;lt$;~WPZ5)rKgM2GBlc$zf?eU)L;AxJ7VFE)7`6<+9I|HgoKaVsniDWH-R8m2vU z{y?HeEEu;5584R38(v<l?0`9H^NblQbd;(<`wPc^Dqo#jtfED)9rl zWS+(g=uf7l?8Q#9c(`w1ifFNtLTDh;EySFURZ==| zAYup(A9GlJI*oApdTVGFwEQMt`5Ldr?+6)R;P}zGc_Z*i5HebVpnW!>4nL@WOzurRBL{E z0VhPn-A{(GU2d_!RtU3}BLwvrtj%PHZs&MFmwr9xJ(Stuj-?h4)gLRUs(_X=)&n`}8m3z6XxB-sh zJzXfTapvJBbJVS$Ogm-=tSqg_qmMdPl~r(X#YcZ%&Z>uK`m6ztRZgbkOy-3cq1hke zm~jYo^)1|KZ_Y%(5%Nh7_cH91M(==kS65ZIY^`J2P+b89?zpaI9*HT@`KVBAP|uWB zpIZxY)a$1qEaESHM%K+U(byJ(n#?ES$tJ*?q*zjz;ejTfvUY(z!tWHO8IW$wU zR#n!iYEUVfG=(q}uBlvcfnyg7EeSjf>%gYOJyIvgu31PT_Xj;c-G3PM;UNMR6GP=- zSWJ#aRnr?5$Xy$r8RjFaXCx+#Ba>L*ox8)t1jAf!*AodQLvD}oCf+ztMfi+%5({&j zmvyj0NhBE!uDy!iL+gQo^)V?ShNEX8y z)**AX4hms7UnV_Y1>{zzB_>)!=nVk5TLmE#;-Aq)!veZDgg*u@9=VRiff4qg9XWby zL8=1yC%Wyhr@&{gC%9f1+Y%<#k$Dy$s2p59cmEDz5uyY_V{t%y8L;8SM1{ zC|;f|leF$42ZHpb$xl7O>KGCH?Sg` z8m!VN3ln?tx{4`BiPRkVv9+9{K9tuVrQ%`+{;CySC#2@|XL8ny=cs6|lZ1mLTxw%X zyfh<{;VxQOHR=-z<3#rqT(e|wT}Jd2YX;(##ka>(>nz!5LT7?4L$%|m z3p9@bsOhVf_MhoLWNttc&({mU4%t(9!u7m&;EdLX<}y*T8Bo6sj&tOl%5ssa{lGL?@bSx`W@ zj0*U72RIV4K;4xy!IZaPUp~dH2`q~eOa&XwYFnh?VFXCW!`AZ<8?(qu!>Q+euJRNTB=`~qsWHzwJ-Q9Z;4gsLOG z8r5^3t}17swsTpmIy+&Wka6dpD9VUkGw-n1G- z>nxnvNv3DF#j~*_H_gcy4vS|+1#;Hv=4T_h8nrdf3*4~M@6Yapy`njpT-VQbw-`%$ zraou(2~BYzgflVmV0t!&q8Y(|2MeOW?X1)=5`wV|Ar#g!WDGo=)%7aGlzZA1p*zII zt4kKJM7n4ZON5ISvP8IWF;lImRhESG^93WmR>lT~JH?Kw_wH51RnD*5Aj=w#0Cdrt z5Mm+0?#Kr#b^&60OL;HLC@MI{!5`d@iG`yB2LucPFXQ{r61wALq+8!mvE+tPK%%Bj zljKN3ct9d|jHI%O5(1*Oe$uX-Q=H^bTR2(LkmrCIFB=2ed8e-BP2w1w} z!Lj?>)(rpfvJ}K1I)<68Z(ueEuTUlUrO8!xB?zHF9=C&IYv$Q%VX=ZT5kMLXw7rZR zZN{$i5$xm);dqm%*SeOySY`MTnWq(*gX&$%wUvg$wUtVcu4g?+t>O|aodhPpJwh<9 z4*qryFGXz9#z>qOkmM@OHCuq7*H_+5UW__-?`@7m zM&@&nV(A@t#$$yzfjL=$!~6IS ztFmNbRhrk4ob2y{fX}v7Wae91RX84BYKr{@@GyH)gat5_#akhrm$R~g=i`m&f_$2* zH$|X8-SLddIwjWVxq66(QY-U+!L0DwaTm{HU0{Io6_Z7&Zio-ob9$jDbD8Gkkre6d zcpRlt9$8}D+ge0thp4j^W{5jaZ%6CAS%W=9T|fx8uAHf~<7Iedg}DXv?93hBywU@6 zu?FxF=VtC$&M&vCqghpt>@DKl>@DU3rGL0c??dheZ*JxWae=&LUS2SNA9t<{KJr{S zMn-~pZDkQ>Hk84dBjkvSl7(~jk!R=bVa}33w3J=3RS&q)VYZM>iMUUTI4fV=#4Xiq zNkFSKU zlA81uHrb>P1}ucB@Zy2dHZ3qJGM!kmRgu zmB^+Jg8@Fj5Bcbe)S-_*yAG8*c9GWf{JgV8@DS(aZF}-_Xz1DfSYgcU#mxBbgGI|? zG3S@YqRuN1C2(`+tac4B=S$$2&e09z>!#0n5?IXn5?Itl>cGyS^8_%6^Yb^Dv$OX- z(G_F;rc1bZJ*|Dy72G{t%FeCUetP}1Fr`dxv$4fbRUrekmL6EuYRI4OW>=}hG|t?K zxn;W|e{?~ofSj+a0=tkN?X>=a1YQmvWA&#O+`*&Cyc1wQ&nLqi_XFIn?_%D-)t-0( zn0NR4RkR3oxw0y#_*#ey&3MiyDj#DVeX&4>Xuunw9^)2*6ZOhXU+5mQfoR*RX^rY;6()0rS#;z37M%J+{$@=GrISuy>Z6K5LVGb zq!S=3FZ}I#vkiwmT7|FQ%rE5-@32|o1@PB5bge*R-blo#%aHaa*&z;0oSiqyb7D)T z&XV+m#msC`W3cctoUNW$_ryd10C3R{F$iX|HGSWRFU{1Lo)7Z&6zBD4wNts*Z@0gS ztwWsDI_Ml`yb7i{Cp0&iJ9c$m%*@zOxdvxfo?9=5%&&YoY`(9X@P?VH7{-OOjr!RF z5s*e;myxs%=I42e#ZcNj)yT!dZC>Xwlz3fc`EhG#Z&IN~E6t0&Gy>|P+2OZb*=Wct zF!)TSUaj1;=XlE6STeH)m&vg}2sP{kY?RK6mo*d<-js?H9Mf}kuJ%T`?5ejdpf(1J zO+{F_4sIZvLO15nLj6OL^m(D`Q3pGxEnJ0g1HvUsv}lN>srAzfMAcp3khR^5U!>lB zs&KKQs1v57M-nevDrqK0I2z_=g<4w5-Hd!eaZ_0@EH^g;8GOaF%hluz*}2ndQJj{a6oZm`@F*3~oZz;pXZ@6E1MR!SrXHDK7!tL44AS6FjuC zNRQTZ=H~I6=coi;EIYpuzSKAhw#O=Zvri%i&G>-N{DQ$6rA}N7bMa=v>u`O40fmJN z4r1b3VqWbwU#b#0!Ypufa#?CM;V-u2QT?POfMP*oQpFH0Q3l202Idiqi@U0jr#`Vc zKU2mak!Zo1GUz*tH;o}#SS=WWn@&6j!=o`yTeBo)8P4_ZO}Y_}pCp*z)_v0#aqIAl za0g!1abkW-vbs^ftPlr^LHF%drMY=OuMp|xy?rL58}#{PEo*VYpoPkY3RZl)XcXb7 z^VSvNl8;x!-Q3ZEi}n_FbObUk=&vXiR)DyWuk7(zFqb4P#ht0P%k{VPk~tyz0{tfx zfSxK(0Nf8#^ssoCSp;JsB=TQu=~m^LEPI?Qy6#K{TMGz3lfk`J8Qfo$!J7*(Sl^hS zuc-m=yO0*HL@+R`^aQ>2vA_3L#etFcw(eA<6!N0#8$b1ixx5(5*Eax!2l|cA^U2H~ z_=(TA^|i-H`iakf{s-TXHOU)l_sAk$HnHC($+&8360^V^TN6oClYUmj2%|AC|IG?P zvPO-{Nr&RttbnRcWlOS9$O|5J!TCl^5w1stLY?O0QX&>5my^&;`NMcE9d_hsa_y1K zs3=A0Ap{KG`033vLP|T})fo3i_(DC>!@t>jEi!^}?$u893uPQzp|pSK zyk9^c8f{j^!uFe$1X)Zm@`cxMIbaIHd1X<1I?cseayRKP<+Zz`#?!g;dyp&!8SDrXP64i;yFH@N={t2Dhk@MlAvlQ1^ zO@cH?1A8rT&|E`jcJf*D`rNuHRVY_bpdiVWg#}X7{Of?v%W(Isv_~2qX|MqtQSgSU zhSK5$o)_yqvz{=&%oW`A0RtD6+F5`|;$3l1x!UioDx03KI|J;E%HuoIvgJAuyxF$R ztoBid`-5|6l9AUMHT?TK{2%`PzxekUzyD?Y5XNuw?|;Vk!D|ZsZ{j!MkJf6n|5g9} zXYu#{gr6VzP_6c-@$+}_^X7*Y{?Fm}FW#!vzVMM+EyvGa#LwE-)oTCTM{Bizgr5(+ z9_B^fe;csx`CUg-$vSRg6_M%6*A)I0zdyge!lc=wc6hT z9_hb=JpKm0zl`sHfO_~W*K8TJ2BZ=k!O=p7{9(_%XEie-!O^yH+dk zL)c&ZBemN1{GnRyuYX>Bf6I5*YX3dHx4ySl+xVVZ?cc-C2spp$Tdq z0RI#}pM0ZM`)@&W3H$+Y|Hk*#YX2qj?)*@#_V6#l_4y8d`2CCc{lDPnhmjAzncshf zAHod2X@@@pS=okczpvnjyjTXd4S5ou^+|XWzgafYkSEjFW=u={W4jVgIaBHX2KbQ& z`wf5p_OZe<{f9LFA^L~V;`cA0kFcNcoBf7;jdCy__JuDY&F~@)`w#mO`yKlX^C0{m z;&1*o{h8(GH|v1E4exIOoaOy>^m)?$KluGN`X=jxJ{zzHBH5=%;^L_j$so$4wiuoe85HzXKe~ z#qscK`1!~9d5H00#>sz#zi*-c6PG;5llhQ8^JSkP{ULA+PkwXE@H_tZUjS}+Gfz_& zpW3R`-op=N{Nx+1P7VDpBaMH5^qxxl=kfbckL};U-%K;(o#UG0pRk+$Gxg}pNd3U_ zQdXAP)GKA8Jf;rfyf~)+6Z{xB^#t_;bpv7VV*FFDP^VC5Z9{hv{xRs54?!n9#t*-# zZ}^*f;t*-nJ^cRb`ZxdPzkdt-sQ-QwKh!<1LI<)Pjczl2ly$)RF#3V@!uDYQ=UmQq zWS?eVH*Lc@`y^=CHz+H0-}n5G()+)R-)4-EC&#isHp!o3o;rZ^e-HTN@%?&!;NR4p zq-9&M4{_|14{2#f8Jo(?FSMt~i}RV8XGl*v(vX&XNz30=^#9}?mCiYcdW_{_yKz1v zKeq4h*PKMT{Q2lVhb%w;W&Av=)&5njQ;G9wzz*@lzyDMH`y(gnn=o8SAZh=C{{0*J z_wVBO-A1kUK7Ota70$2V@4t_q?>{{y~1_Z+q-etr=@e-l4U`vPRT z-cxnUd7JaK=}+_K&#(QcnnV9Q$~VN%H{*xx_Q#&UPQ~A}T{v&DJvra{W0!s5*E~H# zUbnVY+n9D{`?F7xejjQ73VtZ_<_^Xye*PAIeg`nlXKYipF?BrW9nyU7F2)0Xegi+G zBMyJFFMje3(CFNQQraojjrQT47)UBK|SXNVqv}ZU6QCG8^tP9o)%SxM+l-ZgU-%gb@VzRZ43o09sB^-UXz^+P!p8IN4stTHA!_GpK5t~GWt z=h+(Oldt_K^a*~mu1&ej*kidUGs{M~4G+rCasB^??5sN@GwYM}N?CskZD91nmY&C0 zpZvFVSAKzd0UKe0)8}d4V__D_q+deAWs3 zA8orTJ8@n=GWyZ*H0xyc3181M{nyYBsF&Cd{H6}4ZOFb&ThZ9cMo$rk|ERlYQ}S=x zom_9zC&qSVpJabzzcl@j?M^*H{XtvL^a0uov=wM0(T1Qc@iWj<)cK?}WvQwQzfR}X z3uWa$Qy=`>uaBGBJ+v*2y+d8bGE)Dszq3AR|8Tq+z2dLCsT*1M9Gg}DHu3zzsMp2L zU$!~Hl`e(n;w+I}EEm02an{21Y58zTu}jSHr0}5E+H4ksv*w_U zsE%S8nQi;s2w8D2g*Y$kw~eUKLNd5ntEjiha~n zCE9z0vjVTQc~sF~WrM30dX*ggs(dw_QaG|&SE)-gg3!yC>@ip&OA=eTitMJBCozB-39+*LVx1#F657mqX|Qf75tyn=W|F1QAE zSv6{Uul~KYq9mHl-4)ps*8_wptjGi%hIPvasaE8q0;N`DLUAs#m1V)LY}&ObFu2H8A50g`RmTvj(Q3k1iiZVO8;=8sGg;XQ z0Yhb=h8tX*75h3j`|jSFl z2mV&c!-BlMN55Od9J#VR*!R&>pq zRfxQ^wW3IHv|%r(R@knxH4L}F>Yml{)!-F) zPl~LMn=n?b7S-Hp<6*VgL-!n6>AjLc28KAXHC=UXEaW}&)yg)VbRMo))0gcceilKfVwIPrZJ zo9fq+m9Kg59g!tDNb@bfDWS+$n8$N$gpgM=SLD&d^M@<4XlJb+Hey%glJ#ISpW#q7 zF7REFm2KS3SJ1-Pzgoq6Z`!D{eEphX15e}VV(HK@!=;~1upzf(%^D_hUBc4d9%V#q z4zTIU=cAXDMH>#AD;N!i#VU4!;jyBTZQso}hogObjh@S2OIA(H?6SFnhuJY}7TJUQ zo9FUtNy+$Z-{vZdJ;i_z%Puzu3H=A`c6^q0`B)`uZ{k9PRb{fg@r(gxT(ULs2bIqq7-biZVs2?zdf75bvT{AQ#GfJ#|qpz1;_9h4&UALPTVH|#9C zv5R;WlpJ>p-k1e*~&-PXSkv#JCi-mm2|unHppR^56>Cu)WZYx%c(QVmpfIzKN1V) z&a!1r&8j%!Yo|kwMzJ74!0lP8(*%Qk$8o$ zNs`0jS|M}VYb(^G7GS0LQScCDu!0!2L5&t*t)Nw;c4*q_$CQ_>D8uyw<)RIYk)_+6 zWnNMqQ)4T3TU7nZZ{g7Vb%3wg<@rGcPAt7GZt&a@p#}Fu<}|{=Z~_6o(ZQ3{R5deJdEC zeLP-@u^_*flqSuL#~)q|!%6-kTUL`svRyy}4VuFLT%MJQCmS(5 zdo$}VyN4h0Sw2W6y_;aj(u?6F?(hOfg?9*@EM&i%_6V zgfvZ>^!^S;%ey{8UbqIPSaxoRIE|Nfa)*r6*DI;1qKEeadYxtW^+UN3e2M#l7)&;| z$t$j$()@V5g@+cG-Kx-RR`6SD4%mbmHH#HXqj=40F03hdCD%N(ii(q^4Q%E4hM>*| zc9|M$7dfuI8oYSHTfasxx|?{tnsQtq$Q#3Gv(@iyG9rw1`Jv!sRHv4)0Vi9f2 ztPqXDeVFAVe9Xjyi#ayUMIlQ!h`!~Ey!`N(GXT!I`9j{tUeTOPt~b@MvuwyGgXb>d z1{o?~Q~tkX1M{8=E+LlPY_k0ZFOqiacqC}^$Ha%q`CyNbl>(AH9gJ#(RiOVF#e@G^vhW}%FwWr&T! zyE(0LRWI4XiuepyTr`#axorL`RXSfzT(STp#f7Q#1m9eA5-;7s)pL(4g|7ZC0VuenebWk@peyx)_NNE{2*+5ij{A+7#pL}g|Z4FnKuYKp*r#|#`wYBg1 zt82ga`fsnj_E*<_=0m@|_ImBZzw*i2udHpZebb+M?c-~o{@K?)@%l$T^{pRX`xjqZ z`>Bt9WbN|PYp?(OYoGYc*MIc!a`d`0HP}^?iTxwYwj`e+yhcw|48Zw?6gJ z?`VDd>wn-IZ{7O(`iDRCsSkbp<6n2{C*E3n{k7L$|NQG~ufP7;&wTUiYx%c)>NB@K zR($MJp9IBgw_f}B$G-KokA3#Lzv->-}c(?eq!xbt@gVg{_tOZZEb7q z?uQ<%{ql!yJ$Zd=?aQw{SbJ;j{Z9aMXYCKZ_Wf&Xuf6`^|BtixfVZot+K2a=wrAI~ zPrIkxc5cnR={=-gAS4h%3PcDs7&<7RC^*DNtn#cibL;uPLWdPjyi1%wCmx1vIJR5Z2`NWk zqn-KHwoy%07TA9=`;UJru67Sd3y+JiDDogctz_?hcXyJS><-r>RG02{8?=bg48iMI zkhoFQTdTj17@-G>@#RY%$Rj=+G}Yb4dx8YoV)1Oy^Gp=O*2`tb zm}2wTU_zl&9RC#OUTS1zv<%&9{yB7t!^+O?hC?JHydQf94;>(#Z%c=T&T3pS--@fT zbE_@J%}HS`{g$0Ww3be``@`+N`y5I+;u)qq*{O`Xd(zBbM&bv4=qY&-@r#N1+{-c-1E>KVH}pyJo&x*D_LC}@Hmh>4Ej6uC1E=CN1Q!M ztj+Xw2m2b0WrB)~(+|OJoubGEMq8&~+%^lxM_F=gu94$NONfK)exN1CqrzFr(CiET zd$Z36``Bjxn8aD+h2BqyZ=~3^xB}V_V=3F#swaK4jd>icLkpSC7TVA%-(D45qD5J> zD79mYF19WDGh;UqYwv5(IJ78(7JUMC9O38@&bYkcJpu=E?SuD5IIP8qTbwdDS40lA zIP4zb^l+xYr8PcP!tjNQE7BhIakJ{@Y%sjx9o+5R%L{%LHaO%1hkbRL+CGp1|j zrljaCWy+emOj%Qo3%=u-=&b`!^gpF)*UaA3Yu;7+r_4CCTrKeJ|NHT_^3pfQeb30= z_TksI%-q9&_-@&^IjqrXGv#~#IqdJunP~|KYY?`|+j$re4&9 zcbXb(SJ&QbpEjh#$nS6lxM**!X_hPwyPr983^mP$o2bAX*J##91zWkjy8V&i7Sk+4 z!@eiBzi(=)@dzpNVYTC036R1*Yu;c#&TxeQw-^$G7);@M?=zNf3{My$I;_p9t3B1* z5O4&pwmQT5uG(*}UHyl2rW$JCQ%uFCS(Ym1iur^Z`(`W)8^{Gm+R|y!w1{G(U8D!+qS#gYBA*uH}sdc z0e<`bp(VvyOH2vrw3t@Z4x!H{&xYZ+zcZwP zji!E^alEk^cM>I7jALpyCf9zLn6vY2DE?{A?lDM;KVlRU{@UAMQ8Ko{ZZIFjLg&~9 zF_C+Hmch~*f+=HeaBf1`r8Sbf^h$*gRXt;vfl{W9yw$+Y~K2Vd|qrOJLN zTTywttWL<9&*2!06ZixOd3;Wlvq&g5QS`VyC!f41>hno%4w=T^qa$`CTg=!zSuY0h z19c~ba*)c)Z;QVRjCOGf#2@Xv#!_`>)mD#Q%j&VNV4Q#h<<9~)>@~?>qEdCMhgv?{Z z;889X+l~!q_86w@HoMsDzGFCZ)O)1fr5DIqBdW{?zssL-^$5(cdNHt&(%%XCIrA+$ z?v581TFx8=KL$^kYIk1*FK1h|b|8&=k9=G0#@=dC@hjYa9i~Ks7?@A_CmElw#`1r+ z6`vw5uoaJkduc1~IdKa0jGO|u;R$lq$*S_uEMuIvz{08h^9$7Iik2oniu)?N+E%td z8%ph9PFy~NSQix?CWb8>O2ZOIwJj%i870f9c^TC^gJMzl4{|@GNWFXmvs2_}7qgD7uPGVZH!zu+2p|&3GtBh~cp1nb<-zHWO_zLMi-|Io)wxjtx$< zNnq56`D8_8tf`(xcWLZq_;DwWf<_BSxbff9uTF`6HHDs@qW1Ebm_>h@%+H?;|L@63?q(VQs-WLlqT7>1RK#HB z@7cw|I+?eh{4PHEauQ?N01yO!$agS{h@gzH7n}m&x_FI|pJ&&k?BtMWPucaZ^ zfHhwgP0W8BjTAp;=yTW+KWFYEjNQZBoM}14?bW!O0u-UIf-L|zqQ>nZt+CvGK8e^U zp)T8YAHtbYqZq<1*PlaR*ce-`_Upuhwo>*PT20Od57gHQ-ovDF?`2_`m+-=3s*n^_ zfw7d%227@0c)Kxy3!P>b8f6P?BTFIN^F*Y0qLiEpzCU!~0@q1e9;WVxXqZ!MU~;+J z&g2TWYnz-p*o=e@Fjuot&@HSRCBb7G43AC6=IyvSneUHp+37TARLn}M34Blqy;y&l zGmZp@BuIai^VMYSSNy<_d=ML-c?RB4ULh3Ole;}h)BO6td5L1tpyIv79xI

|{nx(?3W*MAd10w`Jt~7BVEn03!T@rSS~uQ`1jFs(3h~-w}Tek^zQMR^~(s z+yE~L?QtPZIB-YEQ@}K3t3dt&7P*YX2;Qiar*4XzIqdQKv z`}MU;o;|7Un_dB+m$|#fo4Yp)J+-S6t~`;{^AacD z@B#3Xi1D9u{TSx}c>IE_(`leetSIDNT;9i}uk%nJ^`2;lc;%3P(pSp$2(B7`gNwJ! za{(aS3QVPf&twkIa|vt=Mw+kx%H{K1hMp_O+RpU+mZtVzX%^EH;0*jJJ`%0`4nk+9 z+yOc;?!?`uhjvBJdQWr6R3aSKjOP zd{;Fyb{mP?DT+fDF)vI-K`Q8!L&|IvNSx0%3wCQDZV8%7^IHtR!b~dW z4FW6Wp67M$5L_84DdPgbX9<^M(deI({vQ%o@(Qqd1@VJ% z_!ryO)jU((lVw(V{vcU`(8vTV3PcR{l%~0`nn|AN$w+2Bhzog&`i9)uhwG4e3nIQG z>KjU@V;CB$y~OJ0*0b_9+xRIP;8;hZ09;zNv&+dnhx{M18SHTubtj{|KNCMfj0e`e zpHWj&VK9sm#5|eNa}g6Lxvf62ICy~Ke3XkvM7KlNM?B`(N|A~?dygwP_Ii(99LwnB z1Ymi(Cx@r=C+H*HW|*1Fsfg3kLEyhRr$F7E4mUq{K69QB)s_T^(r<8bsZX&pt0yoxSmy$8GDdU|y8I@0G7 zUq`uf>Gj$$*wuL)p{rPXe-j8#T`N;{F4#@p3wY(<*!*0VuX9U(ROm_VLB4TFVxj5m z`5~hpA0RK*oaAMoTjpBjUjsxk!|FCE|3(DEJmGDE_p@VtZFeZc)*AI>Og(SzSF7hj zE&nA`X&Gh~EB`CNO;M5lD8L!%)v(?ImVJ6Z{oH;SWFPMbGP3xK{layskLUCbJQtFC zfs$vbR6kE{yYJU{GVt$GvWfo54eMPf>w^Yk?A3gyk6^kPoBeg-S#=?kB|Xp$`~luM z%%5ze*f^-AkhiJXlB<#&ufeBW%Vy=vZfu3{uwY_ruF0Sy^n)ZrES+tx(|KOZ6~geK zK&q3ZDubOWyF%2>83r&ZH`;km#gGwJ)OEt3Gor3(ExVDQ!)Pr##_pf1ojh6l*-ZB0 z0=wVY?q~Py!4cQiq~6sv89vp@x#kB+K0ssa@h#f^e8!x!-JwZ2<+p^n;0XBR-_zyf z8}cykA{Vl6t6RJo(A-;Wk|bHH{YniBLxgS zc@6pZ8!`E=y|q?1_lilsS4?(5zgq;9N=8gx%=33}nL${U$;%Ps>lKqffq&Dj8m*Xw zPysg@LE9$bV1h9kVGJQ~BkR_2aU18ib2HwpfLzb{Ixamh9pWzD4V-T@fiQzeF?}ZI zt0A()PdLAt2TM3#$|a6f!uVf^zfMt^FX#LU6wxed=2gklz%b+<(^>P`BKY6g?8ic- zWklE520!j5s+l+Btt3oGIL=+n03mK9HHuAStzMudV*1_$Fe%=uu`$u zD-{bqq+2jG2LGj+Lm7+#f5z}#>hk$qU3dOARwtkZny?M%{q^u0V3YZ-I-cK1`Up3) z(h#_SNA30Limdl45Ml7BFEwt*`?LTIcm=bHcE07g!Onw_hl!3y)uX%mq-9;dw9Lz7 zXf+mpaSbOu?fJU7my@DbJh{~?U|_K>w5K*gS6K_zwoahA`BANY81oX7Z7js>0T-3EGLqi<&Izj1M&m<2wPS z1mQe&0iIvr{K0Qv6SlcrJ*My!3k?H8+6m}!Zl1F`XkaZYHWk#W9BoRChLr}0Vy@FT z*J%z+Xc|4tiMhrJMMQWmh_;2!CW|Y)T>F`~85m1*wS(H-Zm(ZH`isPrUD5fKl zE6LvrPK33u^DHy6ALRKdXTYlmv!60Z$iocEQ)NU@3VeSBdbr2IU3X#X?;R)P2Mg_Y zzg_#_md!A;nwOCM#@K%21q1`L3dteiH%0JsJdybcNjP>lk+_-m1@Pw=TDIX;XIO}~ zl}%@h*hHhwmtZWzL=c3UnCQ8e09@_lG=EIaKPdK1y%k**75Ke%2pIZNA#xLhX_e<% zFXk;+{t0^x7a&HjWVf;_7+uL0^D98~<~P_%YFmgH5zPzw5MAC(}q5qyyq)`ZV%k zHu$=vQV?;uR{SCF+F-a0++;fLEFxU%>$J#r+IK;_6ZeCaa3r?I6Uga!jhr#DXi|ya z1VOO#A&sXr8SDCa(CZQs(^39PoLoV4C3#NAok%(G&oPMyu)WI8Q|J*1^Dov1%}<6v zDPSZkMjOe$jtGd~yJ#1nk`x&Kba4d!Vm9&#fEl^GYzE`BCe%1;ErsVG!VQpG#L7d; z&6$*p_jdzsTpKpKFmCV+m^>WUMgbiG>Qy*#HJ!jtj86!hj(f>@j1R$3g1Zb#R6=+} zY;Xg}Z0J!(--A%F-S7i33dCoHD`}B!&jh>w!4+WEA-`izu?pt`CXXw1BdaIR&&Y{9 z*WK8KtOjoClmspAmJK)7D1Dn{(oac@VNK@h8-)Ctc?jNLDSpkb5Ok$@R@k2+@)Cf$jr34>>PJvkMtJhV938L;6trT5OTJb(-!?JZm6-@?t3w#b7w<3+F00vLuZ7cm_X{e4sM$Wb+v^=i?xA}~k zcs>QwPl?*4Ed|%U(Y7 zE+x;?wC6}a566E>i+xvGbKQpI79>n@pOYTuj|IB*f4`^wKi^Xxs-H8p@6ucQ#9Hln zU{KB5YL_FBZxru51(@j{$#)}-Z6zWYIvs%OyL!8<2IG>53Bz1ubK+BA2d0owZ{8w-eGLMEm5jofMp=_3F zWd%2x*|?`SzKfM7cr621u{Aw;0vj@=aR`owmdZm|u@a8yX02nBT}HExT?f<+V3k5L zqKg$rhB2N>CEX}Fu%!|ErqZ;rtaW;r!QE`wF@Tjj6CcNc1nVKOtxs~EZ)tU<@%FmJ z29Fhi&vK+#;X~i9edwDB3~*=I7a1ge4Hb1F+&wqF0&536HF?p5Mf_yA8s8JAWqsuC zog%&uGw%oD)Yf#zc4s5?7|j-mrGP$!o}$^0sOJcN%yjfZO?>|{W5&`1b_g48UjZHgoM{Y=>Ywy7&Af{F-}b5TXdf9s7DFX*q3 z-ZN~4=lns85Cg*kVsf4`xR$0l=o^p)=P}ME`jAx(>~3cswK&pjHX0CGAWo-s$SSm;>q1lw ziL0QTc5~Q=!WrK_nvZE6Eyk33x7@`fE~29^HV8Q%GZJ@WY-27qky2BVkIC3$HinO8 zV}|4SBHGm%QDo5;$=?Uo5HA#8kKYsGuQ(P5i38&|h4_;>-dB7reoctqo8viRwt(R# zz9r`SjUJpz-}iOstGZg2BHJ(fgyd(!Gmn2LPKRN^#A)JGu~PD75JKW)@m;Z0@~=!9 z!naY!2p`G;%5511cx=6SY&8kk+UH4ru6bZNiDjgB3htH+m7XQp89;sGvq}7jibI1I zq+v+J$bxc#o5nDv+)xBDUAXR*zSqL90v)4RIWXN+{C@Cg)qbJW4nJ)o2VQT4gyu3EWt*Y|&*6BisYsg*cX}E-?J?Wadalha21HP`@hmSZI9Y<0Z!K zh#4K294dR{eo&b3;-U~Kxx-Fgz+Pgh7ugAiv>n`dNc!O9ko>`=bQx%KuLl1!uvN!7 z4RPKGdU9tPBMyKgKg;!jS>8cxoQIMR8rV7E_-I(YD=AC@V9ef?6sID5GW)vIGx9vr zKSrqe2?}7moQ*6>RYax<@jTr@`hH`5z`j+0Z0PHb0}zdhki{J^Mb^?GmOfhvP?poP zl{x>Qs$T{|R~Q6yW~dAYBV^eL)IKjluhd%E28V65#>Y`&1Y&YsvK`?b2$ionJ>%`i zWSz$#-h&lPtp)?B4*NN+u%T~Z`gSH`iTFB(N17b^nhEA8WNl~;Hfeg5ovmMC^eUTa z_d{NRknK70Jc6Y<$X0#$7K%1g;})vlOry3?yqQv4$lXlWqZ@G}*+R{m>2Em6Y^Ghe zklajvB4;sl34l!-e?=nBXN-T&fB|In+f09KY%93@GFM5`DcBDn7y@-XQjN3f_ex-g z8!qu)=J9WMYO1@d6a!e?naxO{hwygY;IT5E(1{$Or^toT0&vGZb#6r7xZLQvqM!Hb zI>JU+CSfp<`#~m*kz62U$1J&5!vNXIIuh1BypZ#=a!kl7!-F*7a31ITmB3fp@W@PY z8S!Q{jP2@9NB%d2Wf?Z+~t~w($cdv;BDpt%DoA&H!tasGaa- z_<&&-(NMe^RV)%r%!1hI0W9#PXo%ZYgK8{6eT{@-ZABIc9OogxQHLS- zqUTiSZfVkugCr#fz-;Vyp${-N>VYtF;X-E(P*yAdedpIGkIZsEB|Dh!^_M@$ls~wy zd>6{k0#4hro}Ab5fX`e!(8|gX7;!BeVI~KhWSX!qQoqbc&*{WNdz**gcYZ1{NO~V? z#Y2GN4YAEb-!%`-V>{Jadcpz-yC0FWR-vV=RW%xJsueuW6dcLAS%;x%_QaFn!t|U+ z&L-8s;<$~0EVcY6Q|q@);fZ1(YXvb;_*4{rqPJjkt>8p4q;|J3XAC}d6t?tiREcc$ zH_ZeCj2&MASQjP4+wm2LiqW<+=S)D!vDoTN=}qKZ>-Lt;G^XnDT)``BO<;r$Pd4H^Lv^7KggsO4Kt+ zbh7WVF5|?H0GJr?VfN*y2}58kyz{SP6ztLgp>vw^1JJA*#ZeA;9NUGJ%|o+UitPO7!q`_qWZ_5K5V7`7R0{kWqa53NqlQMLm*_~{5p4pWl7^Ypp zog)!(6B(sJ4c+YeStO*xQy?zjM8PS5xgvBSe?Z}p!2AOg+4L~}x;kf2%lXj*}L;x7vi7)S`dxQCMfYJucDh%5n zX%Dl82F^6_!|NtAh;(QK2aHhx#g|Ffg^lU52`8T}b}^ye8XZrZ5;*50&IX51=MeZ7 zVsB6or6$25x5W;<$H0eWbm+8y8dS#A9Fg>cFprFq#FcP-0#*ltms~Vw8^1ndc?ovr zU=!*!gGU^Co2l!6%&rB&#A%NkMB@rNulBQt^AZ{uBU&7U@xRrb(p5Vc@|4h- z20?fy^2h*N=z+2<;rPr%U>Y7ycFz77G-b$~Y3Gvjlr4h*J{pfH20?EljdVD{NQa^D z5qeBtiDCPp7aDsvFDD55Ve}x!Y>0 ztfJk^9i{7#N&{qjDGf+>jvtWiyh#l3JKG0jI-9Xwjk#Byjkz(|3@)zW&O6>vAVH*p ze~HS+qKy@2A$V|xmxs!7AMyAym^#MzQ3y-wVye+=(9H#*car1fE_ydv5z4z?*LhC%$lp2pYa-#F{unLqALv8_CXCj ztf6g{E8ybK>_8ewHa8NR%GR$Yu*_}1hr?^XsU}S}^8|B0@we2LQ5yTsxnIx;z*WBy{89tQ3_hz~tD$II>ty?PV8O|93ij z2U#7ccroDCuS}BBGGTvSL>2;D%%1k`*;<=;F!Pt}=;$aqIy`E4T#Z_fmPgH9O?nj# zJ$m?2uMrkQx{>O0l@ayzm0G#fQKh3t9(5r)#mA(r)#R?Cf+g120sK(0fOlSkTNo8{ z2Z+v|IE(=0o)=ev*J=7YNavekZve1CL|LpIagl5_|xQ_PjXKr0fbR8#ppV}H}URj zKY}#uhF}RH?Epz5!^C@xaz7{G7u~vtDafRML+o!TFJAEJH?Re~7yKflU*Ss5e8uxV z(rNIjZdm2AGJJxoI$0KZjrdmLVWyeS>pDgkX?_M5YdF7D=kMZ}7RvNH zg8vm{(yX+ROC3JS!l#+Om3W31Qa6#jmq3BT(ud1wQt5*1meXtRd<)jH+6>&j@m8{T z8fw@7%;a4pZ{jYJsgl|^y(Huv6y8bvUBOoA;Lf12x!rhpk9y*955wegLdBWh#)OYi z@F>ZvqVTN{89_tz%S@huI5bCckept+6B<1NHtJtRrBq3lPPM^_8h<~MGuj0h$2FYa zz|?0Xr|7S-Z?XyUC!|+W^b4kDA%`H^HU2i63b)q`xnDAy92wGZQRS_GjOGH48>)x9 zb&v|o@A1AD4he3gI2VnG>mvqmo03$jlo^?ZFdX6K;e#RVAYUkE3uDU=(Zoyn#w*T`7VG`B@mdql{=?$DLv5N(^ek8^9LfeqaTW{)!F$;etnt}y58(5J?^ zXoOCkxs{x)8O&`}8Yn4eb*d{EsvEcStF7s9h&b9P)dGw?>Y0QD>6z8IDcT2_AzjV~ znd2#!;!7c$<@pEp`irax!AOv&{{=rK4mKAELqXt{qbnOmHAoT^ttWUn30b-$wLe zgkk+sRAHX){W!^v+h@(}p#|oFH_$8^d&=;oUdV+G) zDT&kx&=2%omQU8@5qx+%%kIqj9lTw-bW;vc(wjNCK9Tn_`9c(?2NjI(Pe02VZ0WUJ zX?RIi+;Y$l6D_we(Gn(h ztgAA8RXTfhIu8>oxG^1XLS9VjuC%`;-N?etIk6?DH|P9YbC@oK1j+0+L-===o3AD@ z*9_1ugb7-~c^KPpr@8?=YDAPqIcy0zv*MMs%L>Y^B)$Tny{CEn3XBjl^T^0n^)ls< zY56J%GzD_s0o#DJ*e=Lm<0x*T)|=R70_?MdoAB?fy;lN$qWj>~L@Ve?L|DZN>Y@s! zZ2-{_1NQP(@nAJq`>L1@%pFomOoCXBQIe=QJK>w+93HLZ?A!FM@H?rK+~W`braV5b z8UtV!3}7x<7^-Z zga=9OO;;12jL0DF?*WbvfJ(XuT20oC?gRvn;ix0mGW1fu>m3fLFV=%x#H?r>hK+QQ z@`P?Js!)rlE2*SRUcj&u;QY)QY?~@q(uft9#_$9th9tjd5j5zta1;6`a6JVcMwY7M z3}6SEFEGjU5^0B+_<+H9pLGHMPH_5W?YWYsuOQ6sd=MTLw$nzN zLGiu`WqzC4>1BJe=}2Nmavx^q{l!S5Zo{w7A@X?Wo5sbSb?BJ#96fvFXydn{rvZ(k zhmTlE$?T5N7*0TqF)JRF7}GV{cW#w%UmjrkaWkrkKg0A^&>?djjMnI5q5mmHUM~X{ zzR37*nS7DS_n3@gIAVaOF?&6Syma?3G5|+B57>#`kYX(lUuL=gVcz4QKswu4kEIg| za(MDL(Xm0wOJsPd)axZZE#lo}H&6NPGLhHF9M7-aHaPCGHry(PxDTu6-$m2}^yol~ z^T0y$s*IzNvH<=D`_Mr?a)V&`O4y~L`J!NACJ8za+YB*^D2}uBkPJp=oVb)Bx_%j9 zHy_*B6F{uXK_rl;V)sX`Bwg=bMF)Uk%x@9r7#tfYyo&aB&R5l3F-%k&^E&xeCWZN7 zo@L@XC9YR;tMC2Fhw8dTi7$SS)tukWA)eu+A`;P#0J^H<4Ssps0NP|JbtDjS zq-(VB+etMVTAeC<5>$X3fwvEdC|HP8i6Gho8Ix{$4C25|brEw5xtxF{z_T6oVP$_q zp;d-L8w`aGvJ^@=vo=9Q>_C+UOO*kZDu+31-0i5c9zKV-Qxur@vgiE{`BTAlu+ZJ> zg}MhR?jXkf_~|1?#Sr7?t|7(?!0LLbag&gb;F z0f1I4J^Hb#dtp!-uy<#=)zIT-h90j3PFizOd?ZF8BiiyN-QN( z?ZvQgm>uz-*%7~q%mlC5iy%g>>?6d2UiN6UgqYT$CY~dkp1p=H6-t?Ax(Go*| zuh1BOu~g?`iZcjsK7I@Vkp0wFZwPRSHUzlY%!U=6h8f}Y@pOt)Qp80TnxM+y}!8)q_3jsR>V$ONx2m?(C~|Q z6&+>E7wnxLD~cvsf;B?foK4Qhpjx^Zsi8U}iY*xkQubF@yoC%-dAlqBrP5oK|ES{E zxZyid@(gA*#w>qCptTF2beRH~w$SrSLAOeY8WD3YB{M@bk#C1P)tMLZNTC06RX zW!hb?A6*M;%4?7we_8Ro#CLmgXQbQT;pJ}j z5OA8u_drhgS#bPitDNBd+(V~(FJLw_7u^l=L08}7BI~*&i*g<&dgkOY@=2chH4wx6 z@4V<{U(c1Y4YH5@N=d7p`AbTY9x3O;ZksJd_68;2W%^R&M`NPN*ZaQ2P-jJNLa&YFEb{=bhE5j8Ut--1o%+Pb`ayxgV5SApumn(R$z*V z<;2}=1=2pUl$@7+E6R|Zk`iJhf5Qcnt<(HtDgP;zioWo{WOfk$jmf2fSQ7B%$c`|Q z9X$(6g83I9m(N=tMCja&W(I(0$@^!MJjatSYk45h#9L%|H*QpP{+1xY@V*}>b(kFD z|6F5$!|vjb>GY$0$FCy^vXtk@K7gY8Q^4N?rkYaf4u1!q<7%IWuq8}Ze;wz*69Ht) zCNMcm-=gKcI>oc_KT^mS1yT{HFp)D)GX?{BAZp0iQ6BN0)7#u>zK;OZ8*gEU<4V=(q*Km?$9IHG7-Ou<0vt&2`} z_X>eLMB^cOQkf9?Ct+@WAlCaqj~CMQ_P4S-$`zWYG|el@!V!tc=rm7_gOz8dLCLnT z6&(ab+jwI?=GeVpqGPk3K}W)j#eSz1fXHaZ3i>5;9s^A*E-{S0g0KEN?Wb2H#^$5}zZYllO+kk|<` zwP(n{N2tI(fek_pV*tG7F`3p#<7G8zyaLh~LV1vt$;MU*R}i<-xY;(m5w`PHSRl(@ z8f*7Y(FPz3NLsQieg=ME-(>9&*vIbYI@beU3laB}2|PRe!?ZLZdm>C~LWcGYq1cG* z+vJld{2=CEY4Ph z_TzaBV2wOkE0o)7F;YE^LktG)~@q6NbK$aS-hRx zs{a=)w`!E1BS#@9GYPWNZB%k!`86Dk(`DS5mNdwNfV6y9e&$26Vo+#E@`p(tCw~w= zL&^Qzy@ls}fyrN9DpWVb;k_~c6)-CAVNPeHt*xh@fL$h@iGn{w&n8Bn; z=LeSEQmIigBms#~@=Dl<0~WQb0YPWb9d&g#B4$4*7-({x*V4l#=DZg6#5u+uxI#E9 zld7MZ8XAfFaw;Lbw4^7eF9 zA?l079KgtR@uRVSZ!E(6aDQCL8ml6Qc;~^uN2{3sh{Fz;oh~7o3^ZO)9%SoAQVas2 z$f`KsxA_!LkV&YRwWT&*;4DJ5_$$dpDD{HuVjZy;zH3_I*MqO8Bds2o^8 zP4L>A%(Pa}WP5y=EeU;tnliR-c=f3jG}o3#8H`k5czAPU?@n|6oHlVJ zBn-oRfW!j-wZX#O8Y>@d|9x8gAuWHOmanEEXa1P>UQ6p^g5%YJVsq?Yor=Clt1r_& z3+_q8eF?@e{`W5m{S6@mT;BhN++W_2;+MxBzG^&>QBer>CB!eK=%1nYF$xtw486}o z25kie#iDwC7(WtOn?ExvaRtNpP$rsAmAl9zWfQz4c{S-9nO@H1XBq$FjJ%0BCOwRI zcaoy{1Y2rzq}PPK#gJS1VMe}}F|$FtnfLpQconnG!#`&9YZ-l*Eq+a3m7kMD+1CMM z`>y=DY;IurYr@pEhy~EEQdS>7p3(}RL3+Bb@KL7pTN#O@d5nQ<+#%bM1Pxc%;0kio0GR;_ zxrw58)8f6fem5;Y0NN-2miGRhj*in?DcYmFGnlp(zj?tLS+5K6BC!WZUQS3Wm5o^V zuFBeIu5L2yJr9x>AcqK9><&Vf88k5_5qgov(i-R^cyE~u0^`{{^13nz4>T&C^GfqE ziK7wGvCF8eORyCItIxv7jc|t4==3C{p`}}Nwawhc`OLOdtJe{Ec_G9nyVmk~zvPS~z9 z2jwZTGv^?iuh+Jm^fJ8KvjYRnZ8W@EM!O@gyQx`3<6SUsT&u3DA9WEMYs08uN^E;{6|6ZaXYcz383 z>FQSu<^yv7WmBChr~Bt#e1`b}4%UKzpLGZ#@wk2vB(ky05fA~*0BAyysbKd6R!~$x zqM*#VSq~WiL17=$Vt~l3XEL^1YAyD6Y;pcST0E!LVo+np79YD^i+@DoY~*#K&F7K^ z^L|9VtwwO*EZb_V2k<1mt523o6ZfkWn!Tvj>@NU|2e#Q2G`n9o zpKFElmjvW#p-n*OZ+3o%X3yzuHl{uA(Cia`%Yi1mZC0_Ia|`AfAd6oj*{%UjWNcBK zcsT{jkTzApaDati&x)1@#-U`LJ@2r4g70On`LF?&0RgLswS@H>5e$zb)rBb+`4%}1 z3Vkn*Cb|ux5!z`N*GF>N;*@+QPOguE$$7x!u8R?>XQ}-#BhVFH{9Y{UiR4#)bxK|Z z6I(w^!D}QZiu+?9207%doMuJMl;{=~+{w%YV-DL=Jjyhf47Pu&THZx=A>kt>Z(_lx z=q`A7dANS&Yevi6)fBmm1*;h{NBHS-0G};qU{;%tg?n~}|8^zGOUQqg-gt2-C!haLmR52&yXwrH;m+fiP{|ocpjC;^s;d$U3J3-2;0UMyZeGDqt!& zFJLJe`5@*;S-tyv zeIq@BQA_84af@73L7Vug9>$5ZqtZ!;Alp{@l~Q@%cgW3+2D6 zj9s|4WKbWpq}cU-Y9=d1o+3O)qUS)7hLW zv04E`3XTi-w~cmHO$H^~ULAE=btD3bq-VGZz3K=nRX`nK(cOGU(JNd>;2{mYEwiJM z2aQ#vDrXVwOBkOGVGBIS);S#*G@X;XMVA~T25O{18_k0B=Belh1iWqV*W}4R^N${g(*e6l!7JX z*;Pma5!th%?cQ;?TW8PF-6#XwT$pSAQi9VM%L>wAK(iBHH;UseGjsmm-(XfZLBMt? zc}pk$e}BqPK#3=W{txu8Dk|oEt%LeA6n9??iv$!Fwj%8xE3H z9iQ;vQ*Km8I_pNoZ^<<<9}pt_BM)xIgq#1+9(VEJK29U~7&!otpH&`+ni}Pil|_FA zSC|SNcvq+Df0Eixb(CtVqhFOjwVmqdL5j1Pj5fjG$p1xk1ieUK3gh3;l>1djYcVKH zfvU)Cr#ePk)uEs|>YG5=y*t1HF}6J7Ufp1g$a%@A4rqs(>iBsOzim~=uY&ybfq#`z z9d`%f(O%WD!nLa77f>DO`gweq=&B8U%OA2=40y%{6MCr;4=KE)11lL!0w=+X!MvfR z?bn>J56d9+Hz~;GtM#ifn>s%*t$QYCn71 zlVg#ax|MF>_GHp_`=UK=d7UzYSC$nNiM1`reqN?Yanaps#r7~WM4GS zT*XncXcn?j5I)w6q;yq;0#I5CGfq^>6kcemfYYFIwQ7K68|wx_!@g$9V$`~wcY~C! zPpv)Qg0a+sJV|8rm9i;JwMilwmxm*H8pjf|#gkE)Kbw-lE^=qF3s!Ap;UE>33Q*_Y z)!*x2nNyR~vLn-BL5KS%3qyrGR!k1`R#D9@`knC)&Lj<&^_`Ua*AxPq>#61{5K!m5(;tGGhfWz03^z{OR=TdnC+F3E_Otx(ExW(3#x67L$HfL@ul!P$JMc@eXjj883!UF$s#47z2E*KEiTx_cS4h1I ziD!7Gnhn7xdBZdB+m5Pn&EF{bJC(0B4+M*u{EDzd8$cJ!I#t6uw=sPuYiF6eSaLTj zgMG?6ynrQFB8_4j16^u7sS5b#mrOswx@o@uEKNK=*kcs4jb<4-(JouQSAoQaqiLqzpk z_P3tx2Q6fxV8;T?8!Y!mdi*v%ig5 z*2B)Zfa-04vN8fNTAz;$^3TJ370iB#v23ody3xClvs%H>IlIr$Ss%m~apNOj5#&Gh z{ST3I*0?4R7xWrB?<;HQJZcS{dGq8j)nya|R0$NrVsfD!U?QS^y_iyqQh32YTzCSL zkj)i;(Tv{GYEc_50TiiOHbRAFq1%0oaGBg+A)atihgQR#%T=#${5jmuZOHN(=pOjS z7btO|l31JRV*I%YVYWdRio%NW@cMs=2-o_r+?z}z2!BozuJ}Qd%Ku@)O%Eml@V- zQ59pgEbp^gjK}P^?z5f8Y^)Y{FyJ|3wTRx7L~`~;g6+LuT0yAzh?~r?5-8otQo$+q0&! z&rsPn#Yi@tx0sLU!AA^n_C3jY0s5z)%yL4_ecxb;AK^G-LB(Y( z$69s#F?s*O92%CE-TGT>FruX8!GL0_>;x*XbFg|iW(GoJjYrM}9tRhkfCkONb^x|h zv5j%&$A%{L%@q$29+q_$m1n8GvyyUNlkvq^mq*BzJbfXhE^KrUZLPW7Jo$p>o{4NRDgzELe)o>eC{zk#Gz&&Dm5L2nnC;SDS zGm*iJDc(?PX#!ji0%Ec~7Cj{_4UE}>V%R){>dU=b;LN|6oDWot@Bz$Wte`CYG>piU zTXC^asj2uZ@D1iv>tA1c*lJjerCPp zmR-kMvRKY}wtN*#o4JaxNcKwD*5VW8ey;c@NIuq}j0-^UMTBFaQO}XetT9`7o@JN0 z@*@=?0T;QYDpKNqm_$#lR%b6jKRquwx3C5ZV)Z5b?JU>71SwjWCH)Qp zX?ccaJ3cWEgmORbI|sL^K;BF>ZmatjLq21Q`)_kBoo<(jy#~RTHC%j+jRROB4iR(R zqY=zL0NddVt0V0J$zO+Pv4=cAEYst5z)wI5l^(-nfLu33WK_n*(wA*%feaKyr7Y&E zr*|s?(nB>{uke7e_y#!hkE$6A3 zeG3N9*0;;tho&=rYdYge*L~XM*w?z^F_$6b288VE;^MVD`x{q2g*lggY`Qp9;wIkP z4Oc^;VSPM_-`Zlr(*IES?}*=n!^#I#ri~U0R(G9qPg;$k!UX6v1sWQx|MAzftts6nY5y(+50A+Xyp5t?Kl4#?mQnkx3$JTj($x&SG zdaAmsbN8g)$s1;qc2~Pv&9P$r$^` zWPu4LN0CgrZ}lkf-+P~ZdSeLC}`A(?wxy&L#LZDlwxWzMW^i+meI>72I zyfXyp33X-cVy=+Ql~k2H$vl%ACejWZf= z$H=PdB6) zXG-NONPE|b!+#sb?PfOP&GJqY_N7+#GHr|8VmXOE=X_wL=f__8Lc{u}0jDQ(iC{H? zM_igV{+d>6eCHI;A>39{#|F+PzH;oikS7Bpr$V4grv^lKz5_GnUTGRvnc3tOpzy_- z^tylcO=UoypfgOdB#y6-oz}Jvuies_^{+-4*g{>WjO*j>ugR$`+@&18 zQI%^Vq(_5<{MjgXdYtT4>-VZ-BG5wLhs6t+_|9v2eRK!a>f7oT)wD{1-0X7xoVLG- z)Ejgv292L-5;Groz8=^nI9*F?r+kx@oLD|qi)#s_5A6HwBrMQ7&BQ*vZGPg9#f z%J7n9yrPc*mVh$&(a5Xwx-s3jEo~eZseRmblm*jiADxetW#fWYKDK?F~c3ZVgNyk?#YoaY1JX8v))_=6Fs$3y3;K;0D>E7Qhy zbn#u0^Np{10&Xw*b0&Dv&R`oY&LN-_y>Qp87(V?S6q$P`XeBL}`G}$KQklohT5$n_Mom)Z1pY^wIbt26rKr`V(;f5Y@?f}Cl-=Xi+>$rK?GN6yjNjOc zobmQBC|B%GXQ(w!P1V1g#n7yXsnRg|6Q4&zU-*sAeL<_qvCV{RXd=RDWMKHZU?+w9 z;90@gfMx~!=Tx^H-8?j1E00TnUJz%GfDAq|VCxyL?UnElif1-e{P$msEnq>=#U_cB5#WnH*)+F|Y>-J?R zVWL5H>-XeIm(+VaTzSeG7PVoy1m70?#l={r=h?n$9VO#Gfj8JIMDq_ZPT5>uhq9!Y zza(?IqIgOT&&dkJRVwwmVRjkAtSzats*WKQ!{}ZBfPiJiPA`i zbplnI*Hn!w@b*U8#$HZjm=-6wuWHup8jDM;Yy{g7M(eMAe92e_u>XHu z`<#+_E@}oW7ktmSv}Al#Btv&=;&rr*Hj?8*>fjwE^X`(}W~ZSlNcI%|r(`@^f<&y4 zBY8)>TQdL3B~9Zd8j7;RZ_Lk1#s?+U!#Mm{7@uf%%cwd%=>ut=P%)0G07{ldzcGN` z)MxZk!bbDrnYpa~u{6)F==-@;IFx@wkdoSnF#J#&BaJ5v;|0TbN~%%(dLC*-s{uhe z_LE@+?jTUzuLNw4a5PcG>qM^L3^h*BLJN+RUmLzEi?7$W_L8KvzP{j*W#hY&w~B}D zG1ScGD&F%r@ai0*k&jo*XDE#csGCNxhm-++vZi9aSuxTYYg|r_7+*=_Z`8Ijj1Gm& zM-!^L$5a)L<>V}1SInhV63^G2g$fG#EGJa0)2c?FF+pXZO-PP84@je`NO?-70&zUL z$H@VPV`>W1aTrrb)3@!0pqb5VEFxTnz$iZq`nDRdz$v6~jzgmKl+0p@gu7i)Hhv0) z+uH*0T&>-xcXfIl1KnoVU=R1z`{RCh=m_M)jN$w@;>S#c1CA2=GnoetDgJS<)L)wG zKpt$;>`TRCN~~EY)Z7zmZ88pN)V9?4Eo-y@`Gm-tW^9w`oM4Y-+DnnaGqKabVTP>h zC<;=SB@`|F2CFv-q5iYk%-=y6#_wgL_bI`zVYcW`IX^#f<|nh~!65bEb>B!jOPBJIyc@Z$+Cv z7o~MIfl#HxeAy<8ozfE6a_eQyWmsGZ8XoNJGXp2J4&N96^(9i z=!8M{KV%J?_-@0!!yxwS-Y(5Mbj6lfS8Tx>!M)h014F9`83Iy1E86tWkyr{>S2S6bwAqmgm^bGDqRc zaIkfkUN84+d0_PG>LN{zrrA#;cq=lyL5Bivu0VDbS2aDSV&{)4sXy#)U7Bc2o#)}mFy!`~@?&jWub8G^m&vzwc(l+S~b1-J4Mu-}nb zoF=Xr*oTtBe6(JO+sT9q6#TnIdR0u{Z5loCEi7cnL5hsAB;(=A%XZkTu92l1W$7GQ z`m4;OiP3`7TPaoj2XqdggP90eO^O2GQ}na@C6sU_*vPwR3oHao)mxKcQ`2Lo#Mq(N zO`eC*m<8GDNOH(S>hC?m_;;u?{+S8=ugSCxM#=1n8^?I|DuXVslr%@jdd z7ZWiVT9lQr8PDDj#&nQR#|l;7E0)8^-3X{9r8@<$u{l@dISm=xGjR9~8RU$eRinG? z&PpvtklAVDf>zvFr?;B;4t3S=iU!~QRzn9IE?A*)3qlK^dggCx-gUP-DFr zYF6b?p6*-PVK&O_)fiGsOXpcUx)x;E>lj|fc+KOnNy5)zr}h}TD0|T8)G?B>ip*W- z1E{r(Pf@yBG!5W>s6f1pMWh%8yand)S%Y-Mc5s6csE|Z}^bOC@&#EM0vn(EP2*HI> z;JWtsyGT94%qf|Zq(y4?|EfR)4;-^&wE5%2y`X*S+dpd1puM*9Qok6a@=jA_sZoYy zzvY0`3LbD6iyg#>rlZJB#kY#>feKw}Vs#jR96+xFHca$j0YLA93jp^_e1QlGd0ko= zyGdx)ee?_dSm;@DZOl~KQ>VygfX_Dy`#-{c2Wkdw^V*i$RP$QAE(#FyCRYJhCic@8>4iKr z$=GbhxvshWhoQV?>~?*TFlt?QogoAl4< zq=({`(^S%yQu2Ce>VERA%q>ZTI-Sx*$zyP>0hL1Qyl zkP}ZMzZJUouA;JB=uo3$GqqQFXt^8?YZvRGV49RYSE%Ydp5`R=?_m zY%{h`QvrP&mJ%Y6Lp5^QI8(3dcN^*C^<5)*yQ{IUHTmab>n=vXFRnF~iTv>*UM331 zi5r{G{k=>s>x{~8%M$Y&=vV*HWV-u>@RkwVI8qr$ zsgbAgLx_kXh=>HHF=B1jeImSHO!S(N`HRv4h1ZQpFM<%v0ZX^)swt-^14X94pS#}#K;K~F=l;>rFk}Vv5k??phfO3LFjLX zQ9qApqb`y%3`qn`!%=h>a$|Gk#*f)ni2c3PUN6Yh5zPCnhb73Eu&i{57N^w-2NVk3 z%0Bk9*QDB$MgERIz{Dd7wi$j=jR9 zHS)(9?Mv{~85klaa{CJ~3n9rZLx z!(t!w!A_%t!+2~|DhVdDKmiG9EJ~2NU5ku^)a^m>JxoXQuNQw(hi3j{9{Plny4htJ zct(wv!NsceB4u1mhIQpWSKaSs?sLrt-8__JgJBR)a0+I=)sEY80Zu_8o@k{fO1tiy zLZy(_?k-{-{Q5$rE>fF3s(!%l{8<7ox?afJr93}bG>6HVsFDV@BZ(L2himlwg?3bQ z=?8a(WGuM<&&Go}PAm-fwH8j;*H{?rOJwv3uU^OyMx#6ojcGc;4VSyt5{L@cr6qso z7+({Mc0Qt$BuXCH2)P*QBKQ)~H3907=R&k%+=eIgTr#Rx@Lgj}BX5VWS!h_~9uxEy zj^LswvA0RI*oQPaeF$5bt&MFAYVG{-l+&`hyzbtv4C_m=dt1nv_xqE3=%q4su1`mQ z5PRoWdoHM2XSaG6v|3j6Q^h(D`^?jIm8pbI-zX1M zHdQD4?puI=#|7x71PLp6kRY5%V_Sx*UMnlRNf#y5%WY$poSuxjYoxi8JXpeS%>lj8 z_W*74jJnW?+BDS81igL}?!f)PF4I_9Y#ZGw+IDYcw6rr=YzE6xk-9yoTjI<>tqAP1 z19JsAk7UQ9_T{Y!8|^Ek8PmI69+#L1?Tka>H-cYlCHR%bR69{6Q|)k63VR#2>s9Kb zpdLlEi^9^JkD^y?%&C$?#j$CoeYtC2}|x<{wbo49oy2$Yo;Ym zy$(N{Y;#x6CggwWPWIYJJQw!g9*SdgVnlpr4lX4WgOI=>?sdI3-=3ok=K2e-O1g0Y z-4~MW9^#1LP(KQ!O(o5KCby8W+nFrIl%1vO=kqp8$SdL!y^_2ljy96FtHc^D)9PD? zv&GiI?BQFxvyH8X&K{WCJZBp=!FHu!fc{q`-$-+$WscZ-)NGG;e`;=ux3!$@unk=* z$Un4}idjG=IQE*{x@-2mB6U_={}7pIei?`_7!TH$!Js2ZgnchC-VS`T?YPj|r!+qb z#Hsn_mATr%P5_h;t~R-6PjH3&X9$~I;@PD z;kX5tP2?3i#hPryVxN5_E7pRk@;tJDE^%J2<$|2|M=GOu*}d$aW551P?QF}+PA-*aEHgJZn+`X{0B%xysJ*oT z8UI+#;afYZ*%UpRCAYF?sjXOM&Fsu{t9U<1N;SU|c=H{oH)Z9I8wSAjksf*f5%OL` z%#jP_9#pAJGw`<%lUeAd;m)eSGb^UcbCZdNbP+@(QK*5fkW5M;Im*~J%bGhPX!b?a z99}7y+>1qSN>;>izNZj2i9)(*pwv8Fba)bzE*#XN^%*K=%v)X6XYn?3} z9)ivGvbg%|Ktd~S3%(*{b+cvJ!1^&W734vg?yfFIg?51a$2?EFqfTOE^H$Ifkoi4x zOLOv!p4P5>cQ<3Nm(Lc%?|s3C2}{LhOGJHc>zuySRmHkxf7(>VU%bzgBpQ|t1kz=$_ay<-!v#{~G^cL1|fp|^#6Ow#Rr{L`)H zAq8OYU9}jkPF}!b<26$$xJ5@lDS@16Nl(aamaWIF`M#8Ff5p1Cu*QNX=wxG!MHd{w z;yZ%b_$PNnJo_8@r`(~N^;Y_p%0y-q6Z!E-I60goCYMW0Mfyc-y?I*fszu5`@2~n) z@1(wXspwcDX7+}C-Kks4BTaP@<%-&6b~)uN#Mxzagl0uukrU^Y-K98wq7^yHn=q~N z8Wa|dFJ$`ivdxUVp@fZe@I7ydiz~TRmB=h>t;Py3r?z+Yin2EC%IKOAWeJVTEsM_p zP88AJO6OQ&s+PZRR+ZoLLdDbGsJ6jRO6u#<0N!vDG9UR=DgKYw@rtK*&z|0doOrVp zMe@A%@aa-bdj=ZCWNv{eF@=UrLMF=}?Cbx9G|RcckiVeR4>h$u*DrrF?Xt78-Rw|U ztOau7NqRtylanbxtt2!_^lhxZkxtIujET0C8(|qMVr|9QOGJD)K3xLuFu>*C@scTA zmU;rWlwqi=W(s;;$g~c4zhbIRa^v=ndO;R*MK^T2F@~q_1!edA9qN92Z|ad+GXUoj zk6b)n@t>(!=~9C!QfsI`Yp`rirEC_Sb3gH{eI)+oeyH`wm10{{=mo`M!!5bZ#ANYk z{O4{nfYPJaltC1SiM;!ydGWTfcq@;V+1@;sHneG#KkS{suq0jGJ9o< zy18ZIO)c&+sIC+KW0{Q^y)iUcU$>xe!NM{WY{(s@bws^4m&EB+Yeh8(qd^@Ig9Jww zj+J?%bOz(pq}Z%kU6N#P>?*6-vb%+>oJt3*Qw{Ds(=+ZRjto zBm{#E4~~V6GwEuowt$rcogCh?0U#;@VKIotH4&lwtJo7w*|;#QNkD2(AL-hDH&N7& z+I}nS^Y8}EUnae7_hQtjO_zw*tke~47{ZM0v^9is_EFqgv-;f4h6Z4{Jp0UA_llZr z$KxZf1zD&) zsb#lBv{2g#?#>(u14*PJuF_B~Ud*XtDF78llWt~^`EN<&(W!^3q5=?2N13la~<)P&^JtK@`N+>=|}V!RImc3Va_ZZLT*C$Hy-)O+pq&A9*Cds5eS)M3^ZZ_tX|iVj^{JI`fZ+>PQ> z-Ja}<4sm5iZlpY_L&uXF2eWBSOY58Bnhx#y`=p*P1Cv}oAMQ-3d8g{|4tf=R+pnj> zNW6YIV_W(*OWkaWvby_lT`#0qn>qY@?J_uA@-mric542KDz&mRlC5U8%f&o2NQwkv z&%)73BXpNoZjj5!5);RWViuzep$uAYSQN$c^aSR+?R*!*M1n(L4J!4hAx2M}&dH%w zpS+uNKcyVY_gT|4C5(jzmd3meL@*kczaagDJiPfmeEGi%Lgq&vM)BhR;$g&Nsy;A0M78#b%hWqM;p-bd(jAMdQP@S;se)u*F}ByX8Lxu-7fa# zrYf_tGf}yQ=vsytq57vZ2cg!nKqEaMtV5|4q_bLzc&}m6eF7JlqMc0ZUS{)Nqah5&fX(~9h-L{f`I=fhtw%^*B9VSmIo~$N`*4Xg&s7;Dfmznj44e^9we{Z-);7UTW z{X^>K_2RD98}lr$#!^-=k$e-JVL_}*dymLmX2y5_l=AWNU-QJ7X3Sjt=Pn5NZ|AWX zte=i&Cf$8Q_C!%ApkkGtTrka%Xbw(Smnau1&YC2eN~sL~GR6-l00Nm6dy@NWE#+W6K)B1T=ZnK!~l864xS+FYzN1 zTmkT-bp8Vu1tVK?nyTbRWL3NSA*I^gi&RB|0)0f74+|IgL&hsuQ_?E!wJB5FprQ|` z(!{ws&8$~d*BI&*qj`ik7caTFg)FzJfvHr72btykw=J*!^PkcqU&(c(fFJsGF2hHl{}8~aC-2E*MXsXpHlZLm)A#B*08(Hes>&D zy_##bdpW{sZtU$QceTK0Prw>%22v`qlJVZZDl@OkbSWLhZ#o^XIdTS^`oyI;FG3Ei zz-qVaYL|e+PI6z8s}1p#+wmwWt&QYT(-QyI`mu05J(o(oC|O84Fll;#_AL;-+MAq8 zX@8B-!uD876;OMu!yfdy+>W5bA4~@Iw#4X`i!+Sm?QZ-xbjHF%+&{J*qW<{27?Os- z&g5h65c7}68>vt1y47t`{7!mJs!e=oyKAYs5`AW?BQQn-wq~=LbeMjJy@CADPA3-K zO-1t-M?Hc!NZ-BpTOxu1BnRjJm{nrG&iQ_F4;*jLe%TDQ^&Z?mpI}w z$9}~LWq}B7r6C%9C5#6f9AN~IR)IWG~vH< zz+{|1&$wuw?TE|g+1Ikv;2yX^$(y0$p_jG1I0f1faj7}%3N!tH3RcZiC(IR(Cr3VV z(poMI$Zf?Iu)OsU#cbjI2dcy{tIEPh54oBN6YE+B;B&*W={O))QAgY|#WJ_H$0J(% z>E4~&nw&IvTUH%sa_6Mlikhw4BtHTI-_g=O`|8rHj;h-bKB}`lE_q zRII9F=6FZXAu#pq97dqN9qB(eCk7-fKHrfD*v8v+uO}`OV8Mb$J=N2i$Mw=%HBa6) z2Rz0`frskKAm38X5jPVcBnd1vnaQ3(_rM|rqF$rKhQ3Gi?i_N$q-$MV&h3kx&)n~A zvDhK+RKI;>evhKKU?NMH$2N4Y$}itFskto8PGclY6rQ zZXsXCBVB2kw2qe^uZN?cfCswFs+>;^5t}T+BFgoq&di|KnyCxDWga44g?f{vuE4Pb_VIq6Yl|;jYnf-7nLZVI z+enIujlr%L7i22mXVi~J|A^u5IAZ|_YG&MRks#C5UO|EIST$^$a*k-5ZOZW(XTWSx zy@2;ab*@#s24@DcglMF5m8_g2%WpzKCrDx{ef&F^+*sGY>vpw%x#ed6~UUWbZ&A|jG#@y(V8MgS|AiCvZM^{9=d zKeyU-D64f&bwfpYIg!is>Ywo2&7(f=kL=C8DfSpWHK#LJLpIv3-D%Ir#E*80r5$Mt zR_dhWEjS;AIhFl4;dI%pe88O<+MTH@(s%=@xqz;Wdp;CI6jliJ>$p`NBh=m!4kp7l zAWp2SpNB)ue(mC+T!Ae9fpI8<%Y}Ot_=X(885|$K&tym}-ody!P+tZ{JM02#%Ww;G z%lraug@V?T1hJKZuOHo`kzkmB4|TFcyAc zOf+vZ8wJo;vb-WGTPb_WhrbCb2~+4#ED@-xom#-3po3H=%I$a(D+Hot8LSC*g$Iyk zl6R(-XX*cp=EO#In`_Kzo~yQt{uSx~Yw`8ajmZ&Dd=2Rm8K6CdYD9{s2JAZ`m;Y>oPHcam5J7NAsHrl>Iz)*!* z-h{7`V#nxXy2Y!-OQhl;wZE6CmAQHZ0T9>Y5A_6-Q`%+fOQD+)Q_@&mXNcKH*+i}Z znjC`OOrA6Vu$;6|mUCL<{#D2agg{AT>fNgnE8w@u>#m6@FqrkoQkh&Ux!ov>X*Ptg zJI<-tlZb9gC$_i9Mnqlg+&d!Mm0PIUbs4(lte>M)Xm0T9aDDnpBhic0j%!uvZZ2`dl`Ol>IsD9F>({pq035 zGgb~@OEAQAj;B(Kyh<3)`o_O}`z=4Rh`&0yYHs+DF|dI<@HKQhTX@qaFxgRRp9~vm zAj&E%4RaNpBF1s@DvYh#v4lI**M zb%B7a;dsigXj6m=Zvg%$16J&2@lE=PSpK-6;!o1W)`HmIg6a{P7}rj}0}T^1vKlS~ zAxX_Czl>u}gAJFHw3=vV6&+Pu@Ejtv+EUX=dFiT=+do@mVHuV?B(*xOPi@7<=e)50 zv6htWmauMg$_~{Zkoct9QMyi!%$GnJ`&rKtYs>b9HS=0&d{T~l@kZHLnv**tvV_`A z(Yg_P>(B0dpeU~VG;5m~cs}3G4tpo-%uBwtBYBRSCZ9G}WvWV0v$66c2G4^6TLhBd zI|L?f5)*z7HyIvvjX2Umhs6sWc7Mz?2TVQ)1UsS5n~HRXWd!{as660OPV7>90x)# zTZBFyyA**S(XMK@FjR+TGr38P$xT((M`Y@VLLICxsWt9{<#u13UNgS|yqtb1=WS`P zBCbbp$$ZvwAM@o2X^4Ep;WAz-Gf(*PQ9pXjk018qM_|S?J@ebp{4SJdL!H5Zy(&g3 zTtcO6_oCQpLba)S?=t;@XUO0h^{>2oHV@&~3wiH)$6M{6M>?_WC$3d)u5Rps%MxuE z*Qss%2_-LWKAF^z8;zRKjxJ=P0|DKlFg2oxs(cODZ3f3@l#VlTI)tfCma4@T5=VxT z0x}71@pK7`D$Px6W|zO%Pii8dyG8Og_DMb5SkcJu=%Vni>)szXH7D8G#BVT(|$B^4MbWT23+GFg5h?f?M%g^1ilYEKW4){bx>+S z)r+bDUS?6tGqdz)8I_EdJUG`GsDmmy6m*JCZhfW*j_&eI^b+>8e_AX*&Wi`jxn!Ii zVHgYySc31!GzLZs1LM0uejP;L1o^Lm+<)mEGg%JsK3o{vX8xF1Es2LNjn$`t_g;{s zGQNxb@jUWAm8zOJF*%LM7&9kCu#xDS9Gmiu0y_hmwOh;RVdVt?jU&I!+=t8-gSnB8-@U2QG^23$MJvsOplE9&Qs`G@Lc2=w8enT`cU`FO7S>`l)teZ z;t%Tg_8(kP{+)Ah$M2kpBc{8*uWRJ++fuwI?Q;zG3Ih%-@-pn}4EG`fZ(`{~6APl_ zZ5C7Uh!}CCg8ICuy|@iL!Ncp?bMv~OZNrnRX?1MeB8*YyQitmVBPak+r%9^`L|;w2 z7f$QKK5YN-#L*MJMIGUzGjZI6eNz85>ZJ9F^R-v#8HgTxvEC{Yq{`?X>r9>6?M&;A zqD*H|j>rWB0jyk(g0DGUsw`-o*G;)VaWd|g%!9hUO3+o=Zqx78pfg{ACCcAq7S0#=d6x<6LF8^G_MSAG&Ib#k_xugr9LS3goi#*n zafk!N0n1TviVW2C{d#|5{E_NTlE;9UhPlQen0^a*$}QF5HQ`pV{NK~C?H|_4+f*#` zg`*k6Uy1SII5EC$UdE8!V^h!5IFjt8{gKIN_D)keNR?Hi@F#Q;S>M*M>BIEjRrpUO z{*F&KEybP;M0p&vSeCoNEwME5qShtUw*`t~v41pU-V+~cZZ46q-|!4cJJ95w+dr%Q z1-;t^sf7m;nXk-`_WoV!D7(&L7+Q5FUvuwJ@trEl1P{pQK^%m@30NYdQJ&w*Y6&CQ z`d)yL7@x!r=2W=aNN-6Uh?QT#hyFXRvY6nJUj2TgU%bPj)WSJ&JwI-~zxUkKd-`Hl z-9zC#$BNfKishs|c9iG=t5M`EZ4T(Fl<5s{^w*QYJd;T5wsMAsmd`Qcq`$`z?3v3o zr*FP498`y_dSOpIB>&sg6%NC}S~kWJ=(3PKd|lcg1!jQi$$JK>}7IMx6UI_LV`} z6yPvu&(HD3LMejGvH6nUrMd$?hrIuRK+tH9g~2Pjy{R`HRJ9MSzV&^x)XsQeH%jy{ zZ&S*j2>U6abuj51?i7x2j2YG@<}#IeEr7gfxl4+y_b=PN)rc=KtW}165v3hW>ZN=_ z0NAB~{lxQ~!YfV*zAm?TxG22tI2Q@^hLc@)G4C;wPsBfjv7>d2Xl1#zQSr94P9cGo zs&lV7;jKpX62s=iSEz9eRAu&A6Ec&>(V+CK zo#DcWh++dxyu(kvGyRj5vvdE&wsnC`3ViWgQ_ZR9M5=YL)nqySH$h{achqg{X3iwU zAP$rFCB-@>n0?8^-_{$Kc z@6Pn;;b9I(q-Ww<{_-S}mpT#Loqf7ny4A=hePsSy4YAyNT=!l#bG}9%^CcX|5@TQ!*?=YA@h>U#FB6 zhaV*fW^Kjxg}_m{@Es%dZ@=E>dX`NEDJjxDQ%8&;?I+s+y_ z3089tC4eBE=_H=9)drbzeK>)YAbaJFPHqBONd9v?QxQx@#Qd2xA)#9E{tc@&YZ>6K_K!d+9NjL%=&P z^2Yo4=V$i@0=zoZmn1>6 zZ2UpZam~v1Si$BP1ho@cnUT`^)GvJL+oJZFZ+_{M{%GaD@F5Wp-}?4N)Z8VjhLF#u%9AbVWjfA368OLDuJXk#<)I#NE!*{M4^51Mtbp+;7=hFGY}};giw| ze&3;x8Y!?k;_9W{0DnH~3(AY>plr)hIQYXF&V>8);rnD#){EEnC{ z-uu;ak}Tx9+yvzhRt757Xub?SswLn;5G1(%P$u>Z)OLpg zDJd;qoPMir|LFov>{p-4)L$vrNJKN5Wm$MB9W1o8R_KnE3g9o?TcnVI}QvhPP5fRx%@eNF^BvI~wzlr@N84=vZF8OTi=9}Xt#(R)2@E*oq z>KjofR08gSP>L<%%SHAo;r>}PpCPD zfy2ICFlk(~87G)TM=p>P8L}H8@{IOx9WbpIMWwra?65KJ*vyzTTT`+pJ9fkvEBVw$ zE@z^IzA8{8QPIh35pT+2Yrx3Uqwp1djgcTe5#+JQ7Vvbwb(CrU56c%i=iPDySIY=;ukC8UzZS_PJc=;mW?MAk}B z8*SXi-Qs+CmnIar$w=O=!t(J`2cQ}n>>!`*G=>6!a3WFAFMBI?;V|%aWhDUt3`A@Y3R1SR1T-h>Y0O|m5Agpc zq}bNj+KLVkQoCdnhm=Hddg*r@tMmW7UpPOX!e^6UE@kcyY5L<_5;2`xvd2!B&Jkp7 zjz_0nl&{6zY%@9e?nwL@yo+>yhFqaqJU%&tohgF;6Xvgs6HSr`UlOS!)FAc}%Zm)= zsyS7UA}|_0&}k#2sG&947y~RL_yIM@a2)LD6wo&vE=$sEv6!{p-cBKwur?e{dBOEN9{irxf}ZLiL9_ zF~*L`*4ioKUJS!4`oLw1$Ia($r;nlyV;BZ7syd;We?^6zhVd!yklWs2rF|tuai9o$rtq z0g6$;+kPU?No$crrlGF>h?>WUVj*Ng+kPHLNmnLF_vFm%4E(GE{J#kado^5XZSYmL zXb1rGf}%9SOjpOYl$v|_29dVrQk&g6uidFn(f@a<4x^jy5_7xEZrH~49w-#g5q+iJ z@gM~k_1A`W533E#gz05>s90u@Hz_*%JC=!&wGrc!GuR!)(cUOATDPlgY(MHmb98YO zGez@Qy<&Zc0(Za*f;pUL&K8TRv=VGhX;d*RjVo4|xI;@%iK1H?NFC?aSz~X24ktKG zg<0%KY+38NRLPc2IQY>JO+QEBn{t&54iFQm)FGr7qi~GWp^bdoRDg6o&YJ`G#%JA(^1;m@ zb^yIK)_)C^-BP0gn&tFl(VTu57yl#b$AOS~y{z;6J?N~YZ)S3YV*)Z1>pE*x|2eEw z^bwiHSRXZifQw(CeF8frsl|A_-;=n!$Fh~t0}g!INIk|16+yaCAtV4h2%u{Cf6$Ug za%&xVxLzWK*R|xKQijyV($+MF8Q1LKYIGYey&f{Shj69F;&5}Ky6h%r>v--Y%0-h3 zM3#0wF#@*#1?$c%wmNIifuD%fX(*XYNz_Xijtebn)Lr2dyEs5fBUk3T!$sP)H1@C7W;#KOd3LwQ&| z)ghT4cc|(Y$$z=z^?3MZiGD_J;8I(k*j0Ghbiw;+;8V~7)kRY)oN!Ps;6=mMm*;C) zr=K4V1rF2zYlL!} zWUWq&0C9jFE!5b`gbnkG&?ffHTf%G=b6A6>vXTBMXPG07WPS}Ie7QZb0Av)}g*q&8 z=2fFih>hY4wA2h#&%8Eqdthj$fT20?r>RvCr61$E85?m=CT?MRQK##lHr84GoJn$~z3P`7IfeY|c)eW>WS zhqyg$a&IAq;B_9>LcsJpt4>nDO3VJc<^B`S0Q}1LXT2RQbOvYVXfGU>Nmhh+OHTaV z(thX{i!C=166Asda!av2NjiL7?`m!%v!RS~H&%&AJDpop5=5TK+&Ta^#6N?(V=g<1Q0olrx27K>kM&)^d}IJW42jMU2{ zcM{U;Z^!!by0Yl8BVcl{U{cZ?09gQ9X+~`mivdMK5n@H85mqMkTr167uF>&u7_y>1 zgsv;FztWg)^#9Q!wTSH-S4^NH#Tmk%LRP&=Wfelu;x)r~)4;qmtxeX^=t6Az7t#>~ zKOta)OGHp7mtm?6@S+@IQqv#>HafM4jdSj(UK9GHKZR}ESPR4!E_CxMtS;zIHrsg0 z3k*)lFMe=JL&ZdXI3@n71kHYji8Q}QLIty^H#~^m+>LE_wx6=?80FD&M~C--_Dy}` zX$Pt}-Sb&wAor$^e4w}Xah^DneJ~*+4D>$I5tn)5?Ekfo;eVnh&iP;a7|hE(ao+#h zhjDWO%Lz*1L!SMh7dYg!-r(hYtvC@b4X79DDE`Bt#D68MO#Ppxm{39d|M`z%uplZt z!qAO}^qrKt!WS}N(@&Kq^EJ~OO zbv7kp^yE655}PHV=~u)t<{BYi5u2~U&{?$A^pGA+Py4TanbPa_l?T+YCTbe0>1vuW z0JLU-nig`boVweuM?DuZt1N|YGySxwD&7Q*Yg9AyQVxNZ;eFrz(l0;YtJOZgXagT^i4*kd%Yv3aLaC#b zI!5y`Jx9k27ogQq%GebQ#Fb_m{@*OvpY=V3GR?4lSej&fOr&Ol1bW{{d;smX20ki;udDMuO)f?O8?{b zwe)8D)PNi|JN0ZZNQD7Uwl%>f+G3P}*5E1Z#nf@ZjhI869Z_(oiRFy3rmHEMLS)E9 zHGz4F>440*$LE%^uLp#R9uCBa>`^4oh9iTHLe(M8iuE+hm|#KzNTSLVMYVC`M+k<* z^^(Qo<&jUvs-1@7qDp_D1voy29JmBI%gr>0;%$9;_rwr1`g1aj8pU28YO<`9bP7)M24hpSIs3F{AC&qC-;8 zMigD%Q~pd^V~k|^-vmNf7O-~K^`GjP?;U!5Xi6>mmq@)6;j9#5iB&(!qHZ{POB8s% zp2~Er@K3OuSk99u`{U$xJHM%4FCTdwHZ@be2d?I+R6c(Ni*Y77(rc zWa?|fz?IgC%exvsGxkIs72-N8cOwkc=mQc;-I2y%z7KGhtA^9j@nH7~oR{fKA#cV^@$l2jUZ^hjMoz ztaGY`=7FL|pK}fqfS+os;RN-eX21QjoxEKmKjiqL?HSVdS@|eFBbl##y}fZ?npu1> z12*4x@Fr@8mkiyp4Bc?RAGT-eku0lo0daU`R^6Bd5EkQTStE*8+sndTCcutgS~zxLs{Nq!k*hK?{1bTWftFc-Dg~RdgvyIj2waYXI=R}ZuE@n|HIAwlj>M) zW8lW(0z@FIZ5S)+{cQA6HvUTaM`*6xmjZQ67|c+629JBjQ+Pic&D4#ypxJZ~_*F0e zZWyeHm`Ar+4w}rAPN~@gU2Y2YNj;}nwbY>Pssq)f1X$6@Z^#0F|2*qGD7>>tN%zJQ zal1Sh-9%extgo!hs3yo}D(kGUc7pGtC!=SwON9U*{sooAqQpC({- zz`JZtVG^Dytb^62`WM?XY(}HH8Wf5tS)1X!+mr~|5IhMnfRARj%{}SXF~fQYvbB)b zhLf2E1RNo|I&Oc=8Eyf-Nn(`l|DZs(_x4%tC-=#^vDS)RHESgpT$q$G-{j7rO-!suG z1P}S1>^#=f@P_4acv5Vvh~tQoi^zR)61K?#s>uw&;fJXS#%Z*gAgha+|6yh$2_aBz zR*XaCTSESv^vNMcqKc+^@EXG%NIg}mqD=OHMUXIR*t8Uhwc~b9YSDh6jhf}Of>+$2 zVQ;H7?4PjC05;E0-xUJGMFYv4Ywx93hS{m>`2`_`e>E{8mK9J#zix_9QvVrqijidK z@iu_}!iAa*v<#}dmb14TNlf7sQwJ3m{nH5hqmPW#z5E7;3~yOV@@W{76F3 zaEg={3V|iHHO!6|Csu<_0RX|<7=ejp;?uO#LHyVtW0|vIs4KvmQ6Is|exRMliYW9$ zk_|}ZuR{O&ESY+qU)O=mQ3l$>#S2W>${)23I(-E5t??VGFc?|~-%-De(0ceL>lCJu z$@9HK@CI&r`lxA{4WDME&aKciJ$yf-GJ&}?FP7v{mzL%=ISuQ`3uT7EX%$UT!|H1_ zd2U3EQ5yTZ2a1ElquPm(e7Zw?Skk*ssfaVz z?>;S`{t1q>z8@ryos#H9eR2W{!xVLraJD4yyN&GEF1Ah9DMusmpt))e+L6G60@>in-5wLicTiio;a$wG z%;JcpV}@K0H=-^&EW$%78-Y=`;ucP&^bL2*9dHjnAh=m{=k+(+mE7z$+-L-beUwk_ z+vJuv4YN@()FJHEL|2pG*A0zG*rcoV^s5huVK(}))&}Fgiv`2LLM?Wu%V|64@-Xbq z^oek2)cEw1)O*$X@l|nR)xN9h-djZvJGsL1im!(n7RV<{1$C4>x0GuttkLxXUWWfx ztYLDxuf*<}SiTvXisDt)SSemhI-+2PZ^h!FDvpM4s^aZR6Ml93&5C$bpEmPBl}AO~ zNKs&Y!%TcQdH4fzQ0_;v>K0@VZcb*|RJo(po7daITG5N`i%9?l5uAogLb^Ky)5(TL zUNQg({v=L@pU^W@D@LDjv5*(d+<3pe+D4C4H`d_5V@1LPvPL)Zv>FNiNh80jh$Xee zCa)wOy~av+T;c&3H1{*m(`O?5GT1eM@}V^IY@O@2{StjO9cTH!I)A6si?#aKRq|~@ z`u|(?W9?0S&dqV|fFc7@Twde$Ua5)48@KmJRa~tvU%Ru$!#YnN{AW$v(>Rzsocn7k z^8*tc@?=(?ZOxw;m`CH@hlv|C~) z%FM96J~f7e{pk)Ii^3)80D@rOY4>{7!tzhXc*Km4 z2d^dY(wqT}fhGg1Qc}eSr^5XMI_)DnxYu=qHor3&m2ptR_$m87j<6DoTP7cSEnpC; zY-w1D*i($1I)0}rTiPZtXlW+TJZ1a{zl(A}=ZX+78U*KgEC4sPXp7Vltm0NaI?hA7Bc8hmayS46mi}0G<7iH>hg{s1cW`*A>o~7or&ZQQJ zlqZ|*%gM5Y*Y3||?JUeH+Z*QvN19ET9g_I@u66?#bU;To4~Lp+j!ri-XPKI1uXv`Z z&VquiMLPR>ml*0a6M`GE4Ql* zamt)MhjzAThBsmQTW2!q-i%5Q1r?&g`S=4C8=tA~rC4nI%}m}-CJ~&w{K`+=PuiGA z;Q{%*IpZkh9;u+M4ce{Agk|vH#4l-b&X>A^v)~iqd@R=8)LPL`{%Bd2j;0WW zLo;h=_+_)UA67A?pn&|~aPCs=s&2eXE{O4t8NF-fz673F>0cdT=6l}$`|91$mb;ntyW!4uO=q~ zTYAa*6I}-6z_Yr}(YLVzM@i;D-zW_6KNa4;h5xGX{wDIaPceXNg>#JvSAm|ScN^}6 z2e86ZsavSPgo9j={duiWBdiBO%83Hm7+NFS5yPp5lf*H$BE6OL9061u$0jDby^uZc zVGBcEoKqcEvuY-FBn-m{oCbmKTSP&}ocLyb65s5@JLnWEaQ23}mW%#Mc_#a3a8hib zd`lFDU>D07hU#LuMt!d-_Z}AC>#_QXomy+x5q51nGkLYuTd1ytw+bCtck63Lx}csg zf}~^Jf6LLY%J6mK(4B8c_5tj3aSpvL!}m~}h`bshk_g#%zQyCteS|%1xwjgn#y3Ba z<3E<+TG#_1pAsWwwL_d_Iky_+#>t;0glCA_zhwBlY{SqZ-aX=8t-~}X-9?EueS|be zi=Q*4M~Z{YF=D3Krgmgc(d^d)dpn%IF_tVbFcLB$ki;7c)SLcr0ZfMO42?-4hkGCs zrpMuT%%w%ig`*i-zNYa|)*RA;TU&p-I=mKE`wAYhst_7~ZO?7LJ&SM?+a_#2i}7y( zrMkZmML8yQr&B-QQWt5}J6U&uuz7`a&{k~C!eixc^!BfAM1IVr2|~G!-1-Hefia|d zK4m_id(sq7nN&2^Z);@ocCz`T$)(=Q!*F%BojS@Tb^XV>R7AQkx}W@>pE=jL-qQ|* z^wQbQ`4Pwq4J~`s@n3Y}7o7Zy&cM@fQ-%+b1`|JM;Ci^raC7dt228K-8rg{@{P=*4 zmKy0d3_cZ#mhr0Np5dw+4gX^!7*7~;Sj@L6Djl2WxX#@$mu&n#gv?vx{h^{}OxW}? zp>86-Ck-$)O*@}5olxm5_8jk48UdHjPgN=WZYF28dBQt(})T@7h~{$X=zeo zA0@DJP)+5h)Nx9rQgxH|V!f@?>^M(!7rWf) z|Fv+kwbE{K^s#>WIDd+)-eL1It9hd?!i*sV*c^z%ZgPKlj?no0LH-Nr^AWgF z&J<3`Zbwxj6HwzAwRm;=@FKNSr}&Gyw4-zgByZ(jXQ|cNK4m)&2o&Ap5z15F$DPh^3(c;VPm#m@bfPwH&1$| zlxGJ~p>$l}f=;C)ZZTA^r-k&o0sEjPEOS>oF0^IWI^~C)b^9N2j7uGNl~X)CKsaY_ zF_6sbfX7cb#!XImv*X<4cy~Iz(mN^O%s|2s@aEmg?;szz)QPB~nic=?`F-X!!GV2A z^_XbO{HDvG)Q8<44K;?_00)TaD|5gYYZ2lwO@d2h0F4wq2C?Yp0XX1UKUO=zf13L3 zn=-XL4V`0ir7aw5k26>^0MSzw3caKVQd*hKHXs?;T06>}vRPA;`xUi!{;wjfxiu)7 zf~(v(SE!wnLouT%63^lndxi8V9V@PgeE|&0|3lY%z{ypW|Nr-#+wb(cJG(o(JKK}( zDWoTx-bjel1Of?71*FMW1wlvxp~M)PKtxJ_5D@82PJfQSnJ_j6{G z;P?CczxFj{XYSl`?m18WJfFvDB|Vs=thZ6sw?uAb>*O%MhU({!aNfQU*}7jB*)MK$AL* z0=)g)eeFxCYLk_M2#s6Z^a1RQ7PK`4ah86mNr9GP1bLHpR*ao0D?9d}2 z61Ee`A-$0j(7BtW#hJEqZAk*0gzA$e=&KXWbdkJDP84`ngnua}!11X59v<}+#C)F$ zwZ#>kMHo92(12_re1f^)<(%G3gESTZL^i}Lzk5s^__^lCDeLykqK|2YYf-S<|*t)UUxtrBzn{$zWQgFr}V zk0e{%sFDn@Yi9xZ1L{CAk!z*vLgao8N*jvvFj?p%qWy!S!=RGYs=29{?R9sxGqLHc zi6Lyh!WDLi@c4)ApX8{!o$^p}VhqLmFWde1Ryp=pyEWuL>2pB-Fd9h)f4)23&e~t2 zHm(m=MTCQd)uQfbof8?UlRA?l58I3Hn*9E~w6fDJG*E1mNzlce1jwkfE{(zH5?@PW zHf9C5c^`ke44n;i5@dYTi_=Zf*Hx>I} zq187&s!}JriM4L@vMOC=r*EPbV%r#h$eppQ6BTv_))|^_DOngO-j~Q=iwfPuD$7AO%RxpDAEd!L?hH+Hm#-cLh@LqL zzLPmh^R}a8sz+Ia%>Oq*QVX~pN9nL`LsrWHK+yeE5Ok+2o@Vf9IXtqCyU_v32NDI$ z5x{8=!HcmW?-@5V1ci?{vj#fn(bU4}C(BaE0g@F>iJt?y$lW6xolJlvZ+(w)%)^|{=01*H)^AD&Qn?GCaoZq3eLkLbaObItvsr)1#1n1N~{D~BQnmR z4l(fPS<(yDNEkE&aEojhVnPxrlpa#dVP|5E6y$2(p6X7);`eEl@JK9oO3d33+oncOk9nuYa{r8ZtB6hvtJc*>*|ep& z3Q|T6pyZSyro{PUM|fyeNqu=}RcUTxqDf1LC`}`xbli`$^@t6DeglOGTvXu2TI;3q zK~HgpwzKuTZJe}=lyjgAV-JYS>yZAx)YfsoWTcAcse`Q_JKbCa9X-jnq?m6YvT4G& zRdBzg?B}>sE+GELQMA!h%DYJyH)uOe5XUY&pyJH|z1mPPY^NVq5TrM!EV=_p?*VCv zCRBk%c+iUsTpnDv=^wO(6F9=$uk=O*Xt-(X`#28RMrEI;I<40osypz7xHTRHn19u& zk6CZ2PpCkaa0(5;ytQ`fRGZJ>lwObYhWTNPn~1Hp?N6a4cYB03J!UBmW=YKmz#fW4 zQV68D-GF=EDS5qp$?F|=oOPd9cKn~J%0)ODLN5iW(MYU2-n0QOpv`Wsd2AC~F0r1G zE$NEAnVV&{tm5$oC0p3VdLRB#s9NQg9nJ0PS&_7kr$@p=Qu;u4%8R;)CrVU1mBQ79 zz6=D#G7^@i)sV=7I)azS_wF9-Hp=>pX-n(YH+Aq161C0-Ubqw#B`>|q6A%x%feGdp zzIFT#{9?dbXP03db^f7)&&@Bm25_R1jog7>3~*N0tAACqAh%U>B8Oe4C<{7?e`410 z=j+{_-ELDneWa}mm|;oUGf3G3MN|z$VliytK;qFMpJ3M3>e>|~UY0`_=iF@XKxmIT zDCOqzx@L50GEFIt;@kg;KWaOVfn<@(77T&udjol~6xj+_Mo6zcu(hbC;sn6#D%qc3 z9(C3Uo7^K>KdQk}PSK;q6gioQ1R+1iz7WrmfC4&ixp z7Pkb*m}}mTn|FMf3S@tDIHqqj*^TkOb-h!5%2v4h+tAOXn-C=QV#`*@Ll*UVHCn7Shxo6q0y6QDI_A2V^_*2w4G{%@KsxRNSu5w2) zH%CLlCXm;Y+&#=OTR2xbOTw=}Vql%So0l#dKz5ac>TF|^d{1Agbwy6$6f`>No+}7Y z-LgcHx6wzf`!lBI>9== zVfTr<1-mD9%Ujpuq)~mOqWhf$%mjp#9Or5R*zOHZ;zlG6)~KaUu&f3>QNao%sAfj- zP6CelHTN546o-fJRK+ zu^Mu*m{=awk^HF{Nlf#{lv-4+YrCR4n5QbPHskCet=uutuC5wr4`G^d6St1*XW9&G z>4@IL*8v|-RBno^TjT!Q@$g*~YK#ywHBT^hd$W@uM6~)cF2np>4EW9Ob?+Z zl4)dK(G}z?^XlyC!D7~1iOSl9IyK?no(S(S2WzG3w;ikm2fN)I?BqC8Ne)0ATg?+7WnK-;8le(V_i{rGqEckS=!sCcyf1O09LNKK%H;^x(?)$DQ655P3ZWmYFVHB#81 zA4shtpLM`e={fYJL06ey(e6(g0}H<%O&Mb;Ua_rQaCbFJ7UPk1^N{{NtJJj$j0ETO zt@0uITd@N*v%4oG%eD1Drfn4D0fuYm7>cmvwTwx?0kIY}nLGFJb$ zc+~L7@hFh_TBWE6z6+fNkC^UpI__7c>Or4o0D-4DwPD_aPYPTu^I!~oa7&$n$eZ)< zv&|vC&91Lkx7kJ`KIdP@eORTgj|ow2t$U^}54-=~MNl~D=pvN!#I@QvRrj7E&(uc) z+@jDFZ2W$@bc5a+5U{_%L_?uWr(5-%I=VyCb~Fz-;&z>&LuZXmHwe2qd9O~~rwJDJ zWE&&BkJJ9XPJ96Lv<62+&rR)s(xudSy8Z!Gm@o{5db(X3)a#O?P zvRmw}AsG8UfrH{La&pkz5 z0W?Y07sW*qjUg!k<^d|G*fc=wIf+r{Yvg(hb#M_tE>Id*hx}v+7s{&Jn^pJCoe~Tt zk(l3dt@&gvN1Z?lBw!*FA#!LUCQ8;Bge1=+tSj^M^r{(m8J1gwM@LsxCjslRJGq{B z;pAD1!$oQH?jFE!iwYtWoDv~0j4mNW6K40sH{E00!<=|AsdfXqvjMk|sWqz33*VHc zfTn43C)A!&XUitx;|R z6!>|7tv&q>eV|(4w98c61A~DMd_*Sdu^B>tmQYF%7zh&}44sr|Wol~u4`q30S>7kB z?{FES?7Jdd^Kp{VWkz;NxZ^qo|GIz&3u^V)fx?`RBMi|+yG zFUYzLzzQe9b$BkasqiD~0O}UB_?K_Bk@SV!4`JYTL#9%qXZoDIAEE z;!O$cO%aXF(@+lhLn6*;@0P90#3RZVV|irsc)7dlC1iGsBG7iSTEG>Yr>&@^IrvIv( zz;K07{I@LLlrxzWC^PQ_`mpfQ#e9@Hr4{UIsE_*s6M#&;XO(p|(>6=Je~RA1jSIsa zr)X32S=DUU7=^RYIbPPtLBxpmr6j~URngkWhpvh<%R%W-Z3^sht51bm2U3wT-1FFJ z;EyO+!`%|DM8x%Ce6oo9jm&U{77qXHd;AEhtk)^Vh_L@#V58n!8zQg!5jT4}!p<}F zT{f1&!Bc61G9|S2jBi~vr2z2Tjvbr*qq$$P@tq2~!(_3T&eZ{ZC{Z`* z6o00YR|`_(9F^QCMnqB^ertwvtYw|Vxszh3LV7o;J4w%~O=JZu7FY zK)lCwU#3WbyoTWePiLo|CIkK~fDqI(nh81VLDEOD9t=;ii0cUFLf6QW&BqcDW}dI( z*_esBOvZu#pA|7{y-aan&7k4(#Y~!|FU>Fn?Fs!T5uiq~kGm)_WE}Ae%YcmL;1_OC zqvit6o)yi6HFI7AwjK4Y@GHa4kbQ)}6ZbH~?5HIs7Te~ytPsa#Do$`5%ZyK}%^f0` z{RxZ9-e=;?ZcuIPIh<9T8QRf2-})Q2h!1(&AWRCP0~Lu}%xfC_h$t5D$h4{}+q5-A zfuyyIL5Nk2bL0#>BtgPi?Du?Cn@-!E2u#$LTQkji!KEG=3K|3>4tgE)%u7C{+)J@S zg|gqNlm6e%qexSA$5N=e&fe30QU1AgDPw*1o{6*ebnje>fK&yWdZsH?k~D_Q%+*|G zy`GIT-%p^6>MEFuDEyB_xV1gZQ`gc1oX>!DKBQH+9FA+5_=Ny|)yji-jN{I1P*9oN z;SmbMizCPl_MiUTaN7F=TDJoUB8IkF#lGzylKGbIwx^}yiIv_V?vOoAFQGJ}quf+i zk4!mNkpVcKD7YL^-QUFO)c8_l~`Yjc1I zebDC?eD3GdopL%lxGb=@&>|8@9x;CP7f*EQ28>vuG%_iB>CG?}*=lBw+>u>~BLdx^ ze~ko?Hen2zW%@87>6mqfy2`O;R4Bp>)6%6fj4;dzMs{gOSe10tTLaSpT>zZP*w&6S zQ3>KI9i2Pk;KLK_7P+&AscFo7Jw?>Zfkf|wXKCfZTye-_ zZ?5_bHD~wM-C79_?Qd;X$W2LW9@=^YVwpvo|AB+cufKwde8LFL<&0vjUMAvb4g=iE z;@KZ}dQ<5tdS|IkrAM@R`5*KA3ZKb={_a`N0jx;`#YP93OUMVv7WWYm42g_4pbv_y z?SM!u({Zl7gv-WRiB*CLspVj7gFFFQA3_Ij)YsY547t}3Z+LJm)NR`I+{x2u^fxlL-mxwkv=%np94 ztRs?|FtComdx6=MU;T*f$028@IK%+PKfQ{ro>~PuZS2(5fuqkzTkzMhDJ@pxV^F~GCbAtb5oyq`NL zpUXY1tc?sU{5Y`8*dyV?c-je{a_pxa|0yE(#JD;?w6jl6&;5G(v8=&%r*6cy$+p>8 zfBVwbXc|zD2L)g#kyTc_w9oVH0gsBoAm?)o=0oO7eQ`!@%B0Nm!RC3=S3U_Y#{ND_ z&25P){tRdO#SXDf;w>z3eW8vnFqdkdVms^Xk#VALm$GZ$G%otn*A zU;(@;=*t>RfV0#_ZLK2dldMaY#)?|h;NDO)6fXiP%VittlM0D#S>yGC0^*d2#u+FV zGnJC&IlJ{4)JbqU%jPU~leVtLK+7<-pooef02eWbSSOc8bzTm0ITy>@CNW-J=RY#G z>hAhknXG5QpAaYx$0Jl3>t(vDfaKL-14W;~jkFqaGB-QwCMUejiAJC?%G{(Kgyx@L z!Px>gp_}1ESE=QKP=3fDma`|wj-O}RVfp2-p~y|aa-AZ9(aYdCjA#P#T!J<@pL`GuhGq2nae2@fmE=oaB77@nUNOT$c&9A!M6WL$VEZtIoX0nMw!M3C+q<{6z58I>yU(}1Tf@<-2Uxf5-9_8p-MH-?1GSV$@dfJJ)(1?} zF5R(xpmvdgnxqG0?&Kg8j9LF?lMU46G@+dH}DQ`8AEv{%8$ zhi6xU=bmvJs}B+t>I|$B)2fc|FIF@nlAbHsqy$AI8G?sj%Y#2SxxHwL@mS7e&VARB zB7rm1=RnQSG9NRpGOVjqO>s%I)7aX^@rj)%ZG~3Gtx-!F#{Ev!jH`{TYh^Ja(gKz6 z?CvbR>tRLt(qXcH=0u-3V>bg)MzA@Fv5CJrlP_}hd2ZcC*FDo!PdW{=+$K<{cGMko zffc~9B~V!UIccZzdhytC=3fwTf&&J`o!!JR*@`UHv2J6OuyGaXD1qzhHN+%ABOD92 zC~q7;Wn||t21zq<4!1sK2}|Cxmft3g`FW4}6mBl8odrp*16FpO`^_O2-mwwfh#aps@o^DN%5#iCUvv0HJ8Pq`Hyp>TTND z8S9T*+Dt}ZGc~$mGboU5&PVEO{h^fLeyYq%(LA?t8V7S0FWJ_6oJK9BypiYrRmDGs z+&cf1cAwGR}u(uBUCE;pCfN*}7=J%S7n#z-Ki`Yfk) zhl8c5ore`OrcF9g#KAMU_9imZbh^5L4(o6EWn2^A`e^u7V{_b6)f6{ZUkYY!gyvZ$ z*ehzhGp?S;m3Y>egfhcIamlF| z8k0KW`2!u^9RQlk2I7G+A4X8)PpSpwW5*M?<5@FXf6Dm6n$@J|x%I(LZX@6i#{Ct5 z5;n|q3>R5FLW!J`#?)9}4X!37+jxPx)3&zI%Oyic4+nM`g9?EC2;HjZ1vb-&doKUs z_q)L?hfgSqZ{13LQK$Z4vVmfqohDfhV&{zp&N6VOthqiOi!kFZP}CYe4tqp49(i3T zCV?GCZaXY)2~-z^=a3yTuczo;^i)`E<}=AbHXI6`A%}f@fds?X#|Sz_OIE4q6ec6Z z$RY8Ns!lsjpqJluT1;4OmHt`cO97>y<9rD^=>j#L+c9ChJ#PQ;?zq*8H;3{#g2x$h zvv%Myna6MBn*(_q!($Pfex`veuXU{F;uVLU&lofSlW9B~cg`1HA0#ig(hs|^!2n8| zZ|sX8^dwk}&S7o()UJ)lFgdw*@;mpUxaUbb7T|w6=O=o6K!r|sY9Qzbe=A$?d)Y$Z z4TSdm^msKc$M3g)3vcW2x9okQn(*J>ZvSoC4=4Nd^+`?2(#C81d2^Vp=RHHuC$X{Z zdW4r-&MKUx7yds#pDJk(e1N&`_>@P{^sX^oxXh28Oqq8ynX+*r{%$UyO44274Y+gM zW4Dfo$Aoo+i)FdmE6vpadK|vil-I#GT**Fa?}CieVeU~|zw^8haHae*=7+nxpTylw z@xn@2MO7}$P@(|8-UN;UPz8)hjhh7p%P@QUy8F3l-_X~EEU%JRqPVOk!?t)xa7GYZ z&17=6zT1b_I{YY3wK(QZgUgSjig~WS|LlMq!auP|>?tq9WO3DeGM|7*iTbB#FeB1nN9uNSs0~}~ zlu_C0ySW9w7!^{*Y=KVi?5B^exQIYC220w!R^muZA!}>yh_%ycCU6TKT{KVal1TlW zPSur0``Kz&=zt0i^*sZyTc~;c#9~#U|Clbf^9|Jj#n|Z5K!@FJceovPhdsg`$#VzK z@H`s26Zm}8k|T{RgVXagp|*%jB;@5Rgf3w+KzBn=0^K7@xVl3BKuFYrIJ?_!(#u6D zQwa1*WGaB(ais$20`;?yRd~No=uQTykRk3pJRs7^=V2L@HWcu@A2Kfn^&UKG+KNpIz9}qiH$yBD^af%%-vk(wr&JF5r z2opDlv9&jME!fTA`tFd1z6+6aHd{S;`p zRD!3k(AhO;MR2hOzD&!D?+8YN%w0D~|5kFQSzTY#&TC4yvPNlSTO*(Hnv>U@ZV)5C z3fH~Ebg0@yqj;saX#I)O``E|2yEr@3k8Y5X_hVy|)@+mRbqkXc+FXSq#eZaPGUF^CNk5A-h@u&#EDB(gqP##`Ps+BGhA(UO zll0pmXQv)@<4*%L-~=~e@f|@N3_WQWN63S4wnN9^RtnkOPCTaLUZTis>-t=U>q;gg zsg+^w1$k3<6#WE=+;$nnsLvM)1N6l zXdKad)Z>n^!i4BS^xl|`MEe=Kc5F?OmdU4)B689@51Qxd`yUZ2teMbJXwO>b5*^L` zK9_hUM@Z3`6x^qzLR^4f;3Wkd_Z)IB)cW^1@8w*+7zj5OGpXB&Me46~QCI16^Ti@e zgJ0%AP28MUtMk16GOwX~^>r==bvLtd;Lo}A134!e`-fcNxg0z{Td(D1Q~$6l`LV~9 zI+|!x!W#<$byxc)Q=B=5d36T3P=LQ4E5m?P21(PThl`?r#Fg0-fO%$R*vBy3V|gUa zLoEBA8uV{IGVwI=wrgw9udv>UMq zc**UF?EW=%q5rBe0ixnE%lz%?iA~{xJRWcW8M|9a&zT#Wp4=WABD6LYYn@d zZ@E7X{k5@ZNs104bJ>si%yS>M-A8Of;1aHI+$ZetX*>3m9X?=(%ep|3zyO5#4TL`# zq5^ahbhhUn>Gp(e_VuBArzF}gvy)qh)2W}?HUxiPDwy#S`aIjc!_A(p-S&t)H`Ow2 zZfg=|@v|ZIsQ%ua5X8#UyoH%H%IR&rHu~yU$GTuKlMNjQ#fZy9LDOUZ_3e3tqSN(m zt~sM#2$CChbPi=z=jzni`b_ovpfvcE?9(kK>3xlM9w!Bl&Z}jZuT+@*b~`mc#39a9 zBD*ABG#!jV1Cc43tGRTG3jG*a$zLh-y+?i^MyS7>NW%Jd`a5ZwUT5-A(2{|85Kcku};#5O9#^^jnI1I#pEXr}j0=J~*Erse!>jKXy}bu`arO-QF^MMUKM58B$f!b+>a_|gm>AWuZt z25IK%7MxgCp|t5Ext^10S<&mYSTy29OQx`l6TMmOxh%b>ySLuQC;M7P+0jgatQnbN z%CTsc@^u$dT~x_|oUn<`5V#_VAu$e+tg1QJ6k{g~q#w&ZG3$J@i|u_@W~2Ca!`9_x zfdh^~v~SH3=P73L5-8J0@#-BeJ2+7-RfWoQw3ozsl9<{dp;z^Ds&p#r@cc$#84yt_ zilYy0Q=?bercy7$m6X`hB&d15FAc_!j(o}3N?edVa=ASKVK=LJWCA4YLbO5di{!FK zNYG}G8Rz3?ZvAdE!Lqk#LZx-9(F#WX__y0W>+JgQ!~}vCgR594>=_7_Go| zQt=rm7)+P6u+P|aBp>LK%$yL6IK;fW5VQ14f_bpz-L^^gu?aMvV-q^1(r|C_J#z!! zCJ?omxQ}%*fuv@Ygld<}ElA!$VIthmhFA2o;7(VjTOZ7y1!p+*+=v1JZBE2Oc zcY^FJQ7=ht7+jw~DrqYJm}~#q^{|sl^QBcOPsQyE> zfY=FwC~%hR-x-6Fp%zv~Po5o8i_ON#mYgo# z54NZoTx;D5Ot9s@B-?~$Z1PA@h8vu^-$~1@k12hlS>Z`);Dm(kD$tvJdp=>EvCL-> zo{mGO&HQ3AgtTMAv~!z+0sj!xVRLJf;wW9PZYEjWY?D+(u1XS#uNin=B1Lmp0b5iB zasic$C%%#FOB`;kaw}IcY|dqxfFT&2%NSSnH{biv&ybMDqvH=^kn`C_$Ss2l@e`wz zG)#2ux)evD@5i1p%|KByHgPC3JbM|v6b|Q5hgvri1f52041#J8rZH3Bd0M^WJSE&4 zKan9znzKnIBtejc#RA#I2tA4#;pKmlqZ3zZ>pnO6j)bG0SLy}sPWZeMrv2Zk?8OSB zu*zY4m7DSUAt(&=BHWy#ZF~Y@^f}FN8edD)1bvFct05|;=(4~B=VESGsaP1kq&&Oq zc9qC1;Y%mgXNc^j4wW9?a}&YQ{vL!`)xi*LTAU)6$O1;m$V#YM*pG_XPsfJORj%)b z>h--Y*LMgZKe&1me%fXByimQo9&>fGlT#9Gvw_-OVcDCCbGGXd-FHUDLdiKcMtOp*8(Lvgop=MMfQ)=mQm*)zsFqYY;MYX za%oeobtGi!kY{HNzanWnVRL4#19_r9yO7dUby!cti5UuI1qOSCbagg-&#fnwa#V;dc_f<~2wR_QbnSS3Rv1 zzlPn7)-ypR9>!7ID*kuh-^*X_eC$W4*!X|Uf5EC?@CiHqjO}0#(l{FtoS+sD-}e){ z6_DDqcK8^9u-FKYQULj;BTO-)JdTV3V2Z3&uf#Oy;XD|{iIvm(kFGjlBWHTOI@`TY zk*k__of)Nx<6Fnk19{wG4XQs4NkKMW&iVNmW0$``h0{iI&JaG(&Drb5ig2>a$@bnD zR{D}r6oEb?;I86eUw*IL--?LT>Qvpb7RE|>F9iq0vp0C^!!Z52?flWsz9F@zTD|S~ z?;2UGZl{BL-VHwvrGUJ&+G$B7A0VkSZzmN~8%17= z6Z0m7g>DJq)P09LQ&o7+b4<(H5p&>bW#5G>te1F4`8#sg*kmG7lkbt%EyM|B8iO40 z%fta=#2?ZL2V#Jc+13mRfQ&Ezw}8XW7Pw?wC<(Z!{Gg5`+!l2dvGlT6fLI>PNLVKVu(}d<6{`+bJ7ch!4zi@X zE|+xT7B$|?-`-19?WL-j`m0M7(B1T<>NxZH11y>t&ViQ*)bAo@^Lk)_@hJBPul5zH znhURb;cK4#s+WF^{|No#&*BzE^~^GLnh+7Eua6b|19~d@BvRthUZ(WX(zU4{=MYX*n{Y3|Y=_u~YcKXjLp>}Gt5fzG(izeR1c$2= zXd_yNpee=dsB8lwy*k?n~yH83&bR$<(A$ z1W#$PCpp3YB-}3&^n*Ah8Lmru*qiQY$?)?8tb0w(ZAOj!m1#X&f2!0}VNG}!8x)@> zv>`Ba7l{cjsZr^cutgnfy#s49z1npvSyvXuVca?~ip@1uw>jEcl>(~ebyZoF52%x7k{-VvnR8QmVe zTu-n^h<_$FL58ay&A&RgWF9g5Evk)^>$TPcukfEp7M}*`PNxqEC4e0f53r3>>1Dh2 zVsjy5ZDhOP)kO2_2?K5@ zM7lucLkeRXfjlC5-K2UdrJhVh@2Arrq?3VHhwrGJx_o^QC+ZKo1O;F}ge*9HPe$FH zDLjxt(4L)1uF23y)^FD8npEtbl-rg%QGFGhXQcHa=Vqnn+e!GCzOO35ShqvfalH)9 zbR&pPL3)F3PWyP+2qy5@1(seiF#-yl2@J~h>Yv&uwR22iz*e(1)eiTI8J_v(xr9ks z#?crc%$db-Da>h|eXO-ATlt+3x4sy`(2hZQxf`rXdx5%6uH~%^MbUKBhN(bg*`vag zOgnO@_{m5*UnbmDge~wdi3F&%N&nPj)+Rv#=g8Zme0Yx)(TJ1 z^oTw&!02fqSRB)UP8k*i>x}cX%vpr_)kQYHjSR*&>?WjSNlk#(lntwvH9!M^2n>Zk z-wa3zscWt*o1~q_=v<-LS~wOXY3L+1O{}ZaXl{~2R}=b&nGxw0B5;upxaw|iFogdr zwl0wAgS0d^8(PcHh7K~y4##&Lf$osX4Hr@Z?ib3j5QKn%BY=d(kRCXwdh=Xg7J0Rk zGmYD~8)T>A*EjbOd`W@~-lF!fp39f{wYb|{{&xKDcu|9+4fYqqZf~&OThxBm$22Y% z#+-V_Zx|f7t2DfAWBGE9=W5Qena6qBoaiD@PqkQk$(1v>+lA#~!=#rd%=15GRb!S)P*v4vsdBtcv%o%yH2Cdm{M zwOA&lZX*#MaSciJl}H4Ug;k%(qWS}!%<_NRdRY_2js(%*1wCD z-$*R>nUwlX%KL2!!1nJ_;V0UCUYyYviV3`ulGn#t?v04(A2Q?=0Buq(~MyeS^6(eHEi}J|P7Z&+}6Bel(YGj?&6t%jgD8u?f zjd~T3Sq;C){WhI0xgtFNRET|4aE~k=hsScvSBn%3PW1ri7RJP_af;4SKpc;WCE(0V z1e5*xpxvL894{$~>ca6bab*6>(zy>|LYts;Y!fCMG_f^?gi{rFC`_-7)f~ytHq#eZ zH`mhxV2j$PI&w^~*vb*sm2e~H>GPP@>i6&(sayCS-$f7pnsnB&MDkKD1u~1efr7<|@=^ig5?Hqu8s$UBaar$p{1>!}3VDKfnfXdc+ z&QCzM8Xx}Ldvjr@0^>{EM33+yqv_r!G|cJndKK@BaRu5r;tGwrp2MXM;A?c|-&VMMWouId zSfdVB;SF)zgwD;yL_7zk7hcUZcJwc56r@&}5C*@y)C{_4U-g(VMlMCr8nhNs%_rHBubRI|}>2B@jSQ zlI)A3PPlT6t9=mW+IS8IGW5nK`kK;m%z@^E2r}J6b&;eTAp}Z13l7xm8m+)$3_uvk z-PuS0VHdp%=e%;Gh#}SyRSY7h_GAEI_i%E{MRi5I%Pe1L-P~Leo-xSf>-{h4le&fo zPIeS3qh5W|qy}?WHABZkQFpz+rh#&j)0&vznX8*cqhw=-zl z+S0F}6=RdgN2T&*2@$-$PW`YBXvzAz5+NMY>}HXEQHoBlbAMddqWN~%_7LA|%*H9NAT^I6#Daoh9dqrCY}-j9{$8<@3z*p!G&Y^lajk3UwTJ zR0^zturB6=4Vj0fUNXG85=>3C8?zojo7G1Ksa6lr9LXBNIt%T2*dd`m$VCo(q56#i z;uibRki|JbdU>2tZ8Gl?yo+O_x*!q)6i-#g70h=j>yehq+ZFY0#s6tbcu@;-U8@h} z1k&fWxN-lKMt5B!1urhD_=hbBzN=b@aeY~K*YK&juqC~z#r?8bpHU%V`N!ti8_nwM ziv0N279`_&)gJ&&+&W_aG$YolXJCPIuklWL=u$?yP?kXj3?I!2?6|S8=tCSfndpEy zf6&x!R%e1@3_5uvT&X~ZiF8>4t3x-4*|gI%5fMwxRprbxOW>qdF`)>f!>{SqsypR` z{??M!>Rxk}Z?q7iW+_D(6N%eSxcqOEyEwo(Moq%iww4+#Lcasl7kk~J3f7ISc?t_f zBK**}bI%$mIFMvqyMs^osyzVC=uo*KJDQW4kZdMRl97(;!*SMwScU226m)j=mb76a zA8$R`TDc5Ha_4~tb$^5RkUWP^c%1%2t;t5UX_Od5NEh4w&7ix;t3!}J)glA`MeBG^ z{gB>!d2N5*p#RwbyXDE{=r2v~M@{O_W|Q@8Suc5_3f3v_af&|)I1}E%@BZBwFYqpD z_O~>rJavQF1)+h}c6ffX-dE5@>L=#+8(Mu*K6Qcm4JT-9?8h6T#f=D~()_xy+wS%6 z&>NPu5Q3q8Z;75v9o*<}$6$hAAoP=<#re+h-K$wgao#*08~_ED3R?X-V_pB(P#Ghk zuh?Ip6IM;SZgdGk%$n*PXlowbBrfF;b;(12mAP=cJk94Jm81LesO8aY%+;eucZFVi z)KQsQ4fIsQz(1Ipo02m3r+I2L#hyx`wfV2nJWrn*OgYB-v<>pwEn}*~1(o?VV}>I< z7dCfYTJQa|DY~@D^Xflxf_Ojmc5O1%+N2YrF;RZqDtG6Dwg@7&vB^ZT>A{jj)!b)F zf*n$;+vMvl?Nl1RREnM{*}p022TJNg^Q*Jk@q;qzkLI6~%s-Msb+0Q0x51K{_vuYc zK9+vocH?%Uv9pbhwgO_m3l*sIghNl52B(6YtYPiZKG-~$)oeYl8enZFeAz{rN@Q2; z@#YTn7z6DG*<2=t^_wmcHkuVEZBmax)f07A17moECcpzg>f?4v@{v$e zC8{z>r;F3QFEJD;cszp;kTJwg#2%C7a*N#ib8Txwhb-AP0T#DYZi!#oB0Wu_RLM1!m^(w~ zvsl#593*}b6~4dh@LHLFv&|llVg_ZFSIj)x$9m7~H99g&`8b$(1jh`H&f$QC1|Y{e`;Up|rpDfW6F^b(!a{ndkGXi!y8eSuwRZB|p4aXYU{HC{GQ* z4gFY3yIa_xu)Mn2DJmVL&X(r5hmP)M<>%Nix4(NpijN;rHL=?1W^XO~Q%bSz;Kc)~ zNy6{2(Mz(&VZUG;|DWRbE$&?l$R+jD>gjZv9lSz!+D`E0arbI%KR<%RQMJ7Nu@Uye zBWkZ75iY2wMHd7FKOBi*STizh+u7KFKV8pKr;m`k{!nM|9uc8TkQnFAs3C5wt}vg! zGcpbW0P~LGK_}buDDhb(Q-_? zFE{0R_hOU%`zHNz6NUFMB;ywX;ed89JTm#y?zjl9nvY|_+L6I)BgbR(*THBNNM_{s zJ>kne1f&vr^PqRmAdrz8demUyEjfW(y3K6u$$0TE27-SLc>h$X^(Yfe;Ol68iVZ}Y zM*VDS@Iq@U=y2+yT+|jNZs-V}>F92YQ%+a9R=JNT_fINuS$nq;p*eFVFUH)5X{Ht4 zKEl1eGq~DCQ*IhmH|-hRx+j6rO9qnwAwt5E4XNaSd%qhzz4=va>D4^G^;f2a4Of1(IRb8B!DM?1^p*z)i<%b)kEm#^)`_MP;ROjX9PAz_&%uHC zA2by>i&6}mzS|$z_M1AoxHAz?LS`xOWjwXV_wk*a3SSyyzdXi%e!Ts{cycJB+MjCIcm(>L`6 zw~nJ&^Y^ey4HxBJLmlD*9gPVx2uU zHrlQC4siF+pQF@DrziDu<<8el#Xa1oRpv~cK0caIT2KeMd_$@&yGmse>GARXV+SP8 zGJ0wuE)D{a!KhVx8Oh#dH1XGrCjM5oVYqE?)@a~a4W)YBSS;roqq5zo%d=bJs@xQ` z1+70;9btO`NW4FiNLF{Y5B1$&2I98gm|*nTYKLI#p%c5&^*Osd4uz(YQ?YneX38(r zjM(()v)Foe%RD{To@Y*n*W%o|9r<+8ca{V@y`<>)^7UPNcS-K5cWK(4kM|h2XRz$I zYI#cM_O7h-R}`1G?^U~BOpJ;PKPyrwog2AKGA6|y+(Rg>L26f#bXB^ z^MUMyXdY6gDKS?I%d6_~2Yfz;|Fg^6j53?MJID-%kRbr`R|>Qi6zBJM9)W^Y~=UbZZ_a+yAHSz=8$U2`J!QXlH#jDB@T zXY`C0K1EhExU*Be+H00(zZ!H~Y<$NW6^wC5r^f`p?e(7Mg|G0=Zu@~{f_j0?_fMYt znkR?3lYM3X)~8;SeYs{|toD1&zTW6l)IMZYu^65Ae}4O)KI+J}`k-_R;NI=z%+kjq zmZ^L8M@E%!M08}hdlhCd9W!nM(RJxfPcGjd%L=3t7es)aZYE$;K%|F)UW+FRDb``3 zq#96>DpwEFkxo|>;A6Y3qt$Iow+0gYUg#H7IzzwUWU}Ti05|R}R1A?)2(rmhK{hLe$?J2Y$T7Nw}knLB7NB zvXE9qIjWD6?yr=4mC{Y>iUH*6)4OH=-sVJVQ%@R2EH|7MJwIROujxf5|Ds=R>Wc%> z+TMsc@bez^)Ij>Z0Te=B_HtpLyJ^?@Pukp1+j3vF**#l7r-0I>FlTtHUN*& zcIoL#r3Jwvmp*AAbw`!jONFmk({C^qWL=!gArVIhB@4D1b-%MD8>i?eR zbW;lA`x{k@TQL!-Rq6x@5!_+|1vi=J;t3+mZkKx)TTY)rC%OC*F*19JH6h&NDc@OiL;bu-~%uY@2i#wpyhV5=ip#>Mg=APOB5)U-4Kb* zo%FNXqRIrCTmnt?)+?jR{~1uL2HlHCg_n*>$s+57MUEHYFctQNdM5M|)82hu6@qt| znZT6P_YVdp zHWvs#;ths%L*-I!;__9K`k-66v%9joJJk}ql@jF!drlS3xs2$t@Mw_=;j*;vtJ@4- z`f)~n<;Qx3T-w)%&n_@)tnt5AoOCMv2VAwI5vvz>c$ao0g4*Zh%%4*V>GZ$OoDY9J zikZ7=w7Rray+Pdhs|)6?oxMw1)l-AAVm=J_S;aUS$K^=1L+qrN)uaOE>4*S7TvX%8hc6f6NPq|Kaly-am#rf47t=Vr5b z!^5D4CJ-9A=8+^0Lz6gMY~3-MGzU|VH6$Q`ekVnGQD6e#n$^mo6%yE=I%n$ar1i$u zE&tLY6k4sXgEnIt^gHtuJ(`4OXsS>+)~qy~I{(t27$&lpu=b82U> zHpyVgX)&Gp{?A~|q6{S33iwELaJENWAff7+hsy$;icswxKH(j>=A3o&7&+(ki39G* z1GVqV`M#&sZ~o8uzK6TQ`QG1Z2Ij_AngVP+!v&t4 zc>4x8wau{Ksjb(!gd})bs7gq8Ll;hzMVyiXd6X7j>GMSTN;>EgAbb?w{n+ESx`AlY ze=pM)?Cd0WR$*o^hu+LYN1A3ztR7}18`geF&c@PHJv~-SL&o8obCU@V&UH=%jt*o+ zR`5Te(fVI2^j22r4C{ljk~lXU1{efz7+9bi!3YVEapfy4hLsSqZBds4p27pQp4)-Q zdH}s0QI=W^KdF$->Q3+y$*2h)AGu7@ME@LRe@+~gq`tJ&rU7i4>U)yvrJQ+%FkP23 znV`7_V-0!^s_5rA?*XB_ob^Rx9$72XSSw|-RzxOB@I7XLk8RfL8(G9;k-wkRy95<3@9~#7vP(L#9+)I*ylM(YE6hLfqOZNqGm>SB1yGc`iVxR zY|f0-C5+LL&RsGGLPipa(CY$fjE(y>7}FAbkvb*b@ddggHyB>rtC0f4*epT5=iJ5NZMsS zS(h>V4piWpNiqo_vntlYI?|aW{swKllVD{G9M142d6dl%SB7t+1b*|&ms(pURUVwE z9+~L>b7J^!j-CqCvl9^7`S&Jr73?%cLlkc5_D~u8$|#^-($5K}MooYrk#XLd+NkzR zT`F?$HPJdxNCVL=l+jcdWL4|*8QpWW;Pb`YqbMyk)_Q!BS*WWcmf)&Ly}85xUV?o1 z$wXtKB`&E8!30JpP8993X%cb9KzbdsFzFFg02o7iH8L5JD^wrU{l9e6n|1E<<3u6- z%CEh=j%>x&Rr@oeUgtW8lcj0Vux#Ry?z|;~W2@DMe7kkqWU3RXpGcq6qt-?}n|5G^W)S_yQk=|-q;z`hc9D&b zsKZ5%Ef|>`p+}}itX9_3Qz}Tntk#$Hlc`q0Mg981{`97P*PB8TlrB_GdV3b|L36`< z;2vAyOq4-bAh-r(Fgw!l?;LdkC}?_Zgx(%`zD=rw#qyNI)jevnYd~c$v*g737;nG` zL1Lt_-zUc=sgYr}dD1nSoaJ7VlasC&B8OL$b9-myxvVa z`PelR-RotYM6pi>qb~;W!hqYR)A0`KDYbw1`1F0_k?@yH152gtjnmXEeIT>{OtHCC zC1-v-Ev3gG6AQYY%JZ~Sc8URgT#+(4L@yjr504*Cjy^CxOD+fe!icO}f6lbz8&m6( z9YTgn!UNUO;+K_f{dvE0b$`6U?Q|yV?py^x5(NCHkRM8cM{Jd*KP4D(bs$Eu@5@#OWw>dGkT zmg`evuS==xQ|~$E<%jCJlq|Pj>Uk^Y-eX&542?pvHK;5(W*<8=hM3gk@FA{+wqOoe zfAy!)E8iMjN4c(~4Vt)u8YcVrcuBVsph+bL?En>-uxWpkhRkwn#ON}UdbvqC`{}ot zL`u{7LULWyrmj>R7_oDnM&=9|nX^BOycv-mtX#mmED!PbnwBrHo*BZ_{M~5pxzS+& z5Ir5gwM?G%>^=QgCL_#1L=L4#1y>GvNFbc|hxn4ye7KA+wxvvRfek;NjIO$L`#+BQ z`81?L)8-)nw>pvg3hMq@6XVAeoNH4p0>oet)?`jv49kAVxqU-5OdE-K9gYwEqf_*P z)bxsBNf&B%<)W6X*2vtQO}c$Lm$BFgvJRuIMlq$AS{tWR(@dUSeFXeO&TsP+uK=w7 zf-+cKoxHG2XkjDm!Fd0ZGE3+sIob3VLvF=iRkpuu(5uS9wr3L6Tz~ZXkXpr5<0q@> zyh049A@%zy?tN1_y?jdAlnvV(Pn*lT6fCalLE$bVn#XsenCd=NKR(sERC$9_u%U^= z76a}W2YM@Ueh_;ZyNH6!soH!^8RiKQ;LV$q0Vs9tg=xHU=GHrBE;eC(#D)6zPY*}= zo2Ppz|H=mYiUzLjaZ+ZS=o1Z`rdC%C55h-NxJg^K|Kq5Kr;D+0#t@UfhoHtG_@=z= zg2~kvx+P9DPY9AzkJ;5bk>~U>=radmDK#*aNlsDQlUQLAdWz=ryntt-FEOf?Tqh$T zTaiV_3*#=k?vqjvy!gn)`>PyP})A|%k9SjhFi&=0jChJD!PE~_my)z-%18iJ+=eQnp zlfieKK-tOs-&O2nsFaDI=xGR^bbIZi)6$Q_u1Z1l^V8BVPNTZ)?P=*(ro~g4C#I#J zndWBps|{-0kwmCdZpN*P={?@323H41x_$2Z%Kjz5KI*J*H=oT6M!RDYqupPqbRvD1 zjxCD91YoTV*(jL1CpqcckgqlLpd~_8(>?JBG==hKqx2 ze8XG-9iFS|ymp3~Uh^I%eG+pSs5f<94=Qm`g?D6;pz%rT~e-D5t)S<(~>kt#;^L1-sjg zgxr}4I`pREw~f;T* z?KZph4#8{)ryTX@T#Sn^<^rsIVva1zzs(JPH8XM7Om*i>?}3>p*LsQ*L(s@0u*42@ zZl#Bpz`iB9AHl@Uf+8Hja~Q-EbPV%iSerEi_lX!ht_q>Itq0~ot%;F2nhTo?;3qwh zd?A@47~ZN2&n8o^C)0mSMx!Glv7wXwH0gYjbnAlm$jFEy2-4pw4dnL^0n*FW0Gsw5*7F3*_fV|h+4m-tL_ zd55)ee#P-0Pk0X|s9qE6`*1v!xL*M-W`pUa05p$Al zsh|Y&Gg&xdavfeXU8UQc&U_Z@nnJNIG?I>X$xvNV0C(@U=U2~m*UwJ=X&z{yjq@{a z%Io>_$LV&&IKfAnw#?Stqv+a%y$j8-BqP9&>dkAs3L?c*2= zCf`#n*hAbzDX7FHNFo5Y{^x}+(P=7^1OX5hGQ>N>(y@rKWLct}$qH_A(>?mL;BKw% z(HHR|^KI{;V46SVOuI`wvQ0MnSakB;cxnJ)zOh$+xlfofHfQAQ1E96__%yTpsNvw{ zdV9{a*~eSYEa)eBSfiXEar=Vcp#}bf3!H}*;K|{TmOYqY_LC;=$)(O7{x`*b%(vhJ^vl}u*4h2;dvh@fO?N|Da5z-{u-(`=Q{7qRj18!HqL{vD;a*8^G~F= zOVCJeFsa_jNu4~6)cF-djoIevUOV;Yg5F%z6C7~IG(Y%rE_gSW`wQ$PwS(&Zg{-g7 z7ItuSfVY2HnE!a8|Lg*H^Ma^=VejkKPbW6DIZZ*cpAW{l_2l~gFwuTtqPtLCwg3#l z3k%@ShT|!xYl`ac3)25y5c`(%@B;U~`7xr0^ifNMy1OgrtnWh4Q^2Sm zoiy#4N$z7R7Nb~G0l%sD2jjp6c%O4e)Wujx)q3vrhU;l>{TE1F)J(O%cZR0RWQ%{M zijEEw9$<egNkV5s?Bsd%R_1?%Mj7tRtoozp>y%A`yW~$mzX22P18GA@y zn0aDpPeP>SfADwWKSlX18g*-8QWi>`$(F zGM>0^Jn?<3cXlj0$#_;Q)&lah14|wx8Vz;kBGEKAFNW*5uLYeD^;15>=+WH-XGC2D>{^y% z!nQ92qO1P6z<*-_D4_$R0vJ1d1^-ul(H(t+yOdjrQqhgXl+{aSpI`BY2DJ7H*3p{((DYS)i!q>72blFT_$BRJ$^m^#qy6>&dv{ zr`QtY+?$o(fvT(d|44i90IRBV|NE@A`>AuLoasXw1{h`-dPfvN5E!HxAqsj;)SC!) zb8qeyENE;Hdo)qR-iaD}K~0P?7GjJVV@(+_ zz4zK{ul1~_e4p>*dNC$?QZ1577d|O^1Ia%2^YZ{ujZdLe6Vd=~g($*FsD$cG8A03B zQ(=EDLBAWK56W3dJ9;)D0a)Vca>*Kt_^UwtbIDX6v|4`JH`8y1FzO2FyWG?UN(2s> z=1+Cg&XxoEo{&IL3oCa^U;6-w35d|6GA}G_`}+d*$pZg|h2hN$SttN`rhRkm!eXK~ zfM`&c_sYY#W1;ixXDT{LLoo(ffg7OL_l76;`op~uOOoSMI2ihG|F?P2g9gNZlPo;+g_ z=h(JL);9n41hDD3`?($S0Vto}-;VHP?S3$g61eYAb$^}e>y}Ta`u~{fUYMGjM~e2Q ztT_wcEaO0z+Q@zJ-SfR}L$7*Lns#Du?dUI>xgW^qLCbc_MG!O~gMW*+Ts` z{eE4qUx@PvC(k0@>5Px%G&lFstS1-5+ZOmZfZQ56aJ_P)YE0d5c>4&PqI0%=x&Hnl z)hj#oPQ!qC(8)p;%Djj`es6} zErkK-Qv-7pA9r;_YW+G_J7I_!yqF-b8p<~v9V2+{+^w6}QG1W!b!;*r9)DCSt4?+& z$U@!LKhXXu!=rlT;&fm<-8WX+GMo2ldvK9@Y?1%*qVU9h;t#Q|WH|(Ac(*rocXPBm zs*wehz!GU{Aa_}HYcv6xf)Ig)+dOxTr!HAU|5iV`Pr{_7VhXD*^P41Wb?-j(;D`Ib zI(M{Lnx7_!B!poN1%U?p_jv9XWQdDH!c8)>be6JWD%;|YcDvE94%1|R^^lyn@Y+6A zCyC#@Q-7+!rcG6g^vyy=7t}tyAb-<>@@MlI1ly>kE4Jua2o9CUgT|R# zwwt%AC>prkw4|@6>8JS#IUJHh$3rTwyg>i}H7noMg%Y&u<^0D)rj~ROE?u1aXfgg; zPyKu`Io_Wx-t&q=^_7KR>1?s!CBvypKY(scbQNT<9$t0dQViYY5StQI(*p;)Aa8XIB}>Cgm)29{l;MbOjy8X($^ka`n{Tf~ zTZ~u^f3&o;S$XT0P`gw${c6$w#won(t813B=;~dI)n6CO7~Qn=D;zvGq;7~#4Rg`n z#Avb@aNN=tBXuHnghMlgs3Jk@3da*dNr3^rDlt^^l7vQ>S&T!0!sMols`1UtM@xku zdx*`)EJ9;!I}T3f$fVSK?_$|$$(*ySLDDzwUgY1mh-6CueXMAGCViR(I0f%1pLEfr z7RL3eGf~x7vF?yCAj9s*f+%2aoVJ{RG>pg=pCD*sxN`B7@qYm;2!xC2E3d-p5&!XP z?#jiu)8Lu(A^O5Sbvr+h)tX|DKk@P`;VuiivbdI?Qg*El#MgAH7>krtLZ*!NM!3l| zr4QX7a<^3}vUMhpEL?f;3N*S^?U^h0#Z#M0e!U!X=rn4A6y{U#RvdM`>L1Hs!vq`-W?EZ8>Ao~v9Apnb?TZW{`E^pS@8{Mdxf<53Ibtg z+KjJha(^VT5+$`m4YEyS1UKVa_gxcS#gt*~1Bw4M^9-Ov_+(#Dbm)_X>u{@Ef;i>t zRRN`pcQu!CMU>eqAhQ=kn>>-6IvrK@pYUOce`hWh*c>wqmMsaxuDwj*ifCpF*XXtR zHS&=6F68p7@pp~SyzsT5QOQH4(dL&+b5Fo2NB}G62Nb>KzLN-CcWB>U8oalZ^|Ch3 zL9*B8Bm{D~0y{Hb;s80d8Y~qBZ3n!A?0LJO-YLvYU)$d<$i*I)-V{GKl)C+i5MAkH ztYdP1Cv)k3J%}ePC|w^=)fYz7JZ7A`f0=*ZGOO!4>`2y}N0zxqm${!Ub5AT&pMQSB%RHK8}jXLRTG6ApNukQI}U!A8KJkjN*u09&vB;&8o?Q?e;+PF~LazYpSEsPsOID@%Kc5JBfpW}&>)dC zYfXM;=KcM|y@AlR_AkqVUEGL1PkWc(YgYu0nHb{ujDDs4+5ig44^%>WmwIGBZtSD| z)D1T22R(V$TlL0%B4TdV|NE}))@ESJFx@xU&rPMx-O7%^EFPYL9iNebKcU8J!P2un zd7vpXCE5f?M1}c-k=A!hc?c?P>m2TACR=TbSWE*81*VwIugToCg2Ym00O+vGmlv*I zuJ2rK?;*Y+^THxM%iw0}WC$WOG6QjFk@joW&`I5A%Xl8oc1V{<<|7f=BN+k!(Xb*i z@2!B`Go4$g3gp3?oQ9m%dvkf|9Lf=+%he|9_jNb#8{V|9dv3WKp_|J%Kzzi8Rv;{p zHIyCtI?oOTu8&jWNc^WGX(!5;_(YLyn~?ge@b9c*Azjs&%C~n^X2;4l6r1570PArh zKs_Z}7MN|RQDQy&Nb;q~C_P}4J3rp&)FwAMea)w@3pVoI)#~SJWL0M}(ss^8+HF!S-}~8hUl-<%5Ds*Pg|Xwvbtu&YIn+NvtjirT{wTWq-Or> zHv@v|(^n^_uC6(4wL5jSIgQ`sy_WIn?$z#r)w%mu+n=sRkFWKm&dCj{vUpM0?pl>H zV)jj{s~B0ru|bYC>>zuqd3FrxD2%>K6qu_Q<>gQEvX4>_^wmXsiWK=dIfM8HEJ2;?voT4%st+Y}zDa%fB|A`* zxmNwwWVV<#U4+HJD^%d%6E;RjY#3;>_3lD7jO?U>OKnPm**Af1ONGKYO84kfG|(EJ zzb%|j+9n80RR}pNsIFJ&QWm(sDUwd8;*u-JkCNeRpH}g9I$9Wlv#b&%Y1ZZvZ0{tU z6hC4aL-dHN3H6Y*1c!bc5?Qc?N9Fu=Y#!%-3-1K{0i6FDZEx20EY0~pQRT>$C&S_H2I6+L04N2z4R@%5hPn&1-?92}E5T+!PZlDE;vK4{3&NFoGS{h#%^ss zUk6kXUhOEPaGxG@lMb#l!H;2!1<_eJQ=!Zn0@p-U2#rGwfhn^n9ld=nuRfUIlg@VP zla-mE+U;C*Fs1F*$m*~Hu~R^8GIlbg5QcVIzZOcP6Ak3YNv=xA`QIza)#VltPNf0G z#!_3cnP5^DQ8b9vk(d|G6gv5vX<=!qNikR=KP|pK)^<>XowO?9Y$?Ina;-Wlb1N!3 zHS2zE-Qy6a**s`44-!4%aOiFarw%R@328~*NM>m7vxb1&28qgbvfVC!tz_G#7Rs}I z&#o>U_zy4h2M=sPU~}pWmz?cFo~eD;#%1@44PUnU6&t;5;~hM3dI>!THscGO_n|Fq z6fTa*W}P$7WBEZvet|XT+nUh4VD)-uHZZ#q76MtsSvPf&c=G%oICGH;-?Z)>8waGl zA8h_=vxCg7tb3HQI*z{zuRHyaGe0FUkyPB5U15hK>1?*T#@Xwg`oQKsvhI)8d)<1^ zbA7t-A~&*OWOtcl11e<8qJbt`12_X7gj2k@oO>TgX9L9s$IEv!{dVR_2qRy?Ug))4 zX=H z?OI!+Q&^)-Q8gS~6X45n?a~cdVOQ_&0ylBC- z-r()heb;KoRYu){}h}snx~&D8XJ(p`t0d z9zrrHtb4qEMHl}G&nT1mqt?452SYr$=Q(lZK44Ce(|>3iTN++9ne%j85)cl~d%@Ag z=SXIOmKA9Wul<{*BB(Uo;>GMM>1!LW0ADa%3w+Z9T)dV*8m@j`17vfcYvHNUAHh^^ zRQ=xpw^custY}`bIbR8BE?Z+rNmjURDDAlSQ-(($HRqd(%_Ew^{`Wu8nQe~p zBQ-^DcMG^NB6qtm2Xe1z9Nc+nb(YxhfUL8Di8W8)>>SvdDtXIr0SZy zr$wl2cZ$j;l*V_c1G`;UUAOJ}cIFS+HX#hhX=IetI<_R8*?j4tta~hrpZ&?KeJTrG z4l7R`>DGbCixcNSeGtH`vdqu}xm+FH^X-hD#)+q8ZiWA(#0PP` zI5=Fqc6nxxrq?m|?8}~d1@%zB?6ueqL7p9r>}3Z(GI~q^;|?SA1P16z#^+t?5Yxp~ zvWMr70O5Uj>D%t`A({Ucgi&<>ar6%f36N*~V~@DUffB+}b1+)s{mH&q?3U;}rA8zg zfNzLIF4aoTH-8^OvPz7J$jXQ2K;0alI9zS-X=-^V`CDB70O9)wLiq<=jUAqblO60FlA7a{%T#?(c}D(9e~?RGi&v}oD%F&}hfIP4YpzzDgaaF|qS}OfvM_yZAvWKC zru+5(?IaCfISHrjJIRkYe)sf?#;a9umFoD)kNOViYfUNre8v~QZyrTna3WJ0T6g~L#nTK_It!f4P`BSFMH@$GV%_jbO0EpV2R+AUA7)o zi(ol~RRaT(2+T^#0(BHaZxEReE>~!bmj&+`)_lS@-a6$K9=HB4@R;V3=5})=fD7C= zFh^Mj&6B&wy1!fZtw}>hMP@4uM3gmwjxh|-dv#Eg`%`3Ij|M+aSd3~Q6@ylvlV{4Z zNotY~ZVcRQL2$E~WShHv0@F^o=*UmkorAuH%zoLz8*A^OFh(gg8UuvDqT{1u+>>5# zpI0k9Q`1gXmpT6}Nf5ovBrgT7Vt*N!C#ZU9ei4|*gMdi9dpa;Xv>{9L53Kz_sg(O! zU>*%j`bs$d=Ye_4n3t@(7bLW6j5h`PrhwbQk;d(CQ~%?3T7JUqR6h%|hm+>LhTlyr zT4~%qOZ-LBq~A!B{1`^j;{SV-PB&&%+9EpQf3yfK@vAKw5CtLqYxb1Y^r|E4AetgpVKu?QOk*tV)#hu+8v!;4IlnZb1M(n{({`>cp&-=3503Ol zn+Q}1%}aam@eElwG;Ci=)S2E#0Yvc|VahHdr_}vQWdTPKz7l4v)5x^N9&igtlBo(_ zSB~myICnW)o`-1gM`+vV~^2K$3 zYr@x+|0^f}ajQJ1>~(6=mCAY9Ym~cInJ1NARBkC(vh(IzcM9A!s5J<(AE=w%8dX+9g~L`n`%{+%^qz2jRkCJY+`}$^dqov*r3z| z7EIz%dMu>Jhf}=x2g*F6{QDGt{MdRYdK!q<{b7j6n@bjfuw}gm^qZdILE~@zgz@Tb z76zwlbD&3Da~q*FN=Q6#6h`ds}YiZA3PpHaUokvb~u`W zE#9vQ%^B2j1A$ANYhW*Ovq%!QV+53UXRtO_1?3L*hOL23>f4sUNY0?Bc_Z6UHilwN zg)L+&Rk!oobG*9UYa8l%2;>c>Qt(K&-Pj7Xg}M&*CVfxBX054Tr_fz7P3i};&15T9 zs_Hw~8@8$ng%K++ICVK)*P6ZgBhQ@KPl*REu zlkVPAx1d4Zr{2}ojWjV|(|JUAl~r&RQ|GViFyhg1XAn8-pO=1x=1Hz;!lnrh$~m_*7yfmC(K*{1Of6P{`E z-!mPIBa$sLnP!0hEacz);zp z61)`Gkm4=kL2eb7UCKhYSzQE{0+7YQU%)HKOsc;Ow9I`}_@ukPp7!?bs=B&nLi%=E zW}9x)gi86cF`FKUzuMxoK+jN!&$;nn`5lAE+MwO{6v3-H_e}HreU0W zX0`kiU32Bd@ zU)Oe@XBeQjTV9Us%5md2d3CdE-&L9Cuq_MXT5#~kTPh1^cdR*vu=26qaaiyR7-QBu z*snnwM(_usM)MEUIT}M54;TgtuQC#Y8iM)FegoD`gKc)Q)RO{UnP|qb7#rm6XfsC2 z)3JVanvwJoNvH(RhQ{)3yBQSl*xf)gApH%9Y}1;)YcchK#D}{fkzhSQa))*=vxH0> zyaRTj=_L@(9IKjV_6``K`ZfS()H^g13dSGs0?L3`jsjMWh?PT>?%Pw8*&wqA5?*%_ zGpmR%I-rCBxvm$erVAyS-S;@|Wg#MD>_g)7AL#6Sev_wXLrX`OuKl@K-51(5GLBC1 zGbcMtIG(M9%*`M(SZFV3x%Ehxb&aslfWgrtqmcw*V0!{)YfFAoKuX{vr3YDqsGSH`os0*YrwkTf-bO5^_*gBK1BT z=SI1`-E2H?;g*L`00^{Y3T?`Fkqw<#!X)z5J#oJ$5pmO(JTJ6I4xM`&y>8D@qti zi9aq#K*=R;f|uZ3N{B!ul%-BMO_EdD`2~fD8!s{8Vq#~Sq^zoP-Z+=ksA_zwep07u zbJ4^Q*LNjJrp8I5Y6#)qOqx|wQka-eT2)I}novvzsJ5^?zA71{28IxBCL`4Fq;7I; z(hVzj{iI4l!fL*8VnZ@Ujm|euX-dYavH8~Nx*(*feJ;^o@))FE_bZ8BD28a4O)ze7Af_{Q|}hMBFh&$Wyjlzu*N;?VT(_K73X?}tzA zPCxIOFed$b^u!72-{U7tN%xb-&q(*v$L*1Rzx(7l>3;U4y=9-DH?cR}FPyR@-7o$c zLu}QR;zk%qp3wuWV#2STRV}q)eF1zT@i!1Otn$)&wi1xMu;RmVmdza4HV`i^HNEwI zcyg^7O|PwL`N)OOdtuo>5QXD7eW3o(`F}*F1joUWG*L~DzpJLIsl^vO`PB>5OYziH z{}4^ki^3NBnF$i~m*T}fqZ__rOz{>;ufY|~CrA~slJK}9MXCNyiVOQ{IM0x-1cJ2R zAYlLA^TneZvW>_*tnPt+Q;ljUG_o?rnH}&^codh^)HD;#xQt@ta*aLNQFcsKm-X^Y zCbb11Fdn&|>2Q$qgNC?~3O+k*;bog09*=N?Y9~90Kgx6B6%kYpaxNEUpXKBP_8un7 z?;t92P1KhvMm5oe@6w%c%;KVKCo>s{Jd+jY3|452_7>CL8H=VX8oDfVBG4)T@`OH$ z2Ci!vNI5X?q;yj6nJ2YQ|3IbAs_XRUVA>y6N1m^O3)J|oQIKsG8bQlljC+dI{ah7b zpYUfocpPLw$18MPi+1noXooJmEX969_d8WOUEA{HB919)vKk`$`XpWRnaclD5vSo^ z`UL9(tS}VJAq=ZV>D|<9{U7q(k%;&4mZF7nKM>cQfO43}lgr&yrNEz|u$?`u1~P7D zP{|CLK8oVZ_(rSneMf@IpF}1gyS`r_qn9C~AC*Mhht-faqBSlWFr1`naT|#*wWFbb zJVLdNc>@3>iFrk-*hVPu{OA$S_1);Tl%tG>)}YdoTBR!}X1Qpj&Q)W@ZjXyk#)?;2 zvvkcL;{+8E$Gz`%ONZGNB=UCY$*gzdsaDwtnF9~KXcqd#s3OtFCzVH88M#^adxc#9 zCz3ygJJ<|W?Pa30y^o&6ZdUp_oc^NipXe^vy@eVb6ib1C8!Nn+qEx9-wvL3$2w*UcoB)KYxWbE$iL8Q63dq@Bu{}nt4~%iKQABWYV0A zG+u1S6L!PTIWOgsrCq(O`pTm;56Q2(Wvjk0yhW?6`a_%UCa16S($~Y&*NdoI&G&sD z%}?Jq-9r42+L{VmxKjm{s6JnT!;zlh1_tXP1BtieAyPePx(BDRcVJi=)&sN{euSFB zoj#_rZP-RpuF#NcJOrO$5yR|@p}wNQYaGgFdyeQHel3MoDdzhy*^^4=@Ay=Zzt$~!$9c~K_itL~}(Tf)~8#GA|hKBY^MF z!EX9;5P*c1FAdD;S^d3ic7j(`cqk}56@-7Xt=hasz2aO!syNvDop}JYBD=;M@4<8) zJ{SfQg44p}{E#yYPbP$?g(pMDJR=xi_(d4J#;5+h=~w>iVfd%ey&hJhjtu0PyV-u?-K^dJuoqM@5HDXu2oWH2Qu<==SKFWu(&=7 z{x!Yd2?y!%PigN-LU!;Z{WY|^h+-06^9i*L?QZvB^`THOMIl^6-VN5(Q-bM^bPVTD zjolFuTBb^hx%khr4)m)T4EIdt0-B<)Hei>Iw}+eWxQ?i#hr-P{M=$XY zCil3*)q6eeuxO>3>BuG{jlD-^@be-vJIPwYzr`b@v?l8-t633IOWwfma3{JOf{8;y>z8|wysnd zdzs8<%5GP{&14Z6#`-PuOzU{{2Vw0EF^<6S7viHTv`NV zja;1-sEX)=^e>eTFQ)X#e5ho|M*Q;K17E&Ft(t^J^$mWzc2Ld0mdvxzf&g0P$#GAv zLPmP-@?6c8Fr-(>1ug_$K~-+5?!jR|ab>y?!+=aKY<4V^Z#~__=fR1~jo7woc9HqCbseUjZii5lx z9>RT~*a%h8n%7Xv{tI4yb(n_EY7_nv!GCa1bGfG;YJNSe>bg3+qpptbDDwQ)jlO>dZct+(Ad3 zM!;EI#G=;K%WV6lm;w#3&^)ZZ+1WX=xhuV?k@cBJxh5ld&wA}WQtVt;)N@Oox5!=* zx8E2?rxddf7jt`ovVB%*iVR3y(N^7w6z9}lJGDhAG{?tu*uI>YyhUi-rJ=g+CuA~;0bR?MV;jU+|EapwWX_>3Kz&f~hQR1Wv?9WVSXZRPqt%sR zB=R@4Muqu)FJ7}cXQSoGzHU075+Y(iO{feP(bV6a)K5VoZ`5e!qTT^1c!qmpI^D-E z$~>XoM#B2{tIXUs3;sx4sg!xMgIvCxb1|sA5lyx{3ZjVpO2eWK9aJ!Y0bkWe6##B^ zrrPCIQ&Z{7%blKHjt4zPkEC?%bZ=N#N75+Y!-Q)godqi^&FDR3q3%6+p)>#x-?i9v zReEs!P=KmJUt})@wrlvg9jw;rXFW`c9!LmK9;&*N5J=)!- zliPK0lU7gJ;$;Zo$SXd{8N-ik^no4w1Vo6~xn6O9+{&|Xju+pxV;|M-LBtG4}x#6uiKi`*W(9^{sp6)qn6L)G|w z9O*UCkv6i`v$gC}P5(;8xD7CQCiAq$W!tW2xmjM>zaqfvEIPnuGPp3QMyo?X2*{&z zo$2BQjxH#MtqEQ(H8!49D4Mb02kHGHJla)lHQmADpgZfotoP>p*0yXsuzZ?Del z@YmIGMy}ecL{09W#kZ%^ zYK{JVy1G9gQwivV*%RLth--31||$ERQ!G4 zi$9h^lYL_P@2Qx6ot$m#ZXiJ77ZGz<01rbk1c*e_xQ8&xfCI>#d?CDJ)TQle_fu5X z=+jk+22T7QGdj0H?Ugy(wv`6FYoHJOsVQwV<{Sg90L9M@nWbclCzOm6XZJf){S~6a zRLsp54m{|XX~FJ@amtHw-HF%>xlqvEo76x0;&NlKb3171mMV19&JXqbrx21PEq0R4?rY4QT=9Ni#}vj_Ox<>%s|Ka)A!#`V>0VW=Dw8mVRZ*^u>TP8PX?z13a}C_Tc(&f?^K4yV zJ{L6BBm5=f_@OU)wLyBWZiDKfSLYlP9IMk=IAP^bdeM{b$SoOl3gl4kbk(}1eQkyB z7p#a@em(O7FiwIHXiT{FbJ?2gaEB|3ZZRSC>vPh<_fkP3e1`&Ziu}XNR2_(MSR@90 z-!m5hn*$KA$n7aAJh&+nUFZepdHNg^o@CUChIwAvt_H6+aS+ycACS9%FgM8|!|9Io4`qI_KA@o(zPpTjO&8~7CdE7XkMyF9Pi%jcRJ(Y_$A(a|oIE0G^f z_>A^}IPtO(#V?{p*s&=0iZVZp5Xx{f0=arOg@lAVBEDURn@f#Pmq5s!qyxls2eV-i zz`-`cU&9C$b&~BHT(8}z4$v384?j|jEh-W1Ju}+P#qR+bC~Ds@ zLNsMmM@d0Y)I?BG3)tiqaQ`E-BWcCj4>3yD?n5rnEV)p$Qj!pCAa!(sEP)kv|2(6RI#B)RI%bQ~c^C7E*qq^+&ccnkb1h zy$`x^B{@Nv%yEJ?-cKK@cGG`Q1d8^z6XYiwG|BSIS!cSCV_l%-$*YJzCgVc)02Ta)8Oh+{A#-O>Q=@ipEplL?txm*uX z$>7PzJQd|wOX^CcVcjf#>A$E7+9i8NJo?PoD->~u;6aJP+5Qq{sYhA3Ts8`Wa*~CW z#%=V1v&qv45^AHc9#%&K>Of2dtwcHt!{J752yuc*0xMC}32v&JDx3y5M|HFLg{cXa z26M8$Yd~}F=KV;1`X5=n{I@D?3$e`TSJrH|TC!K3RSSMaH`W3t;6384G9OLtdnWo+ zUq?w@-OyB73Wq8dbhEq8M(|PIX*=$*mC4y)z1Guo>-X${Gc7=1A&uzk_Zu38G~!NU z@g)qVEG^T+fISQ&39&L!5V*T@ z+a!yPHg`$l!rvu&eVb$?-54Yt@hK)ZAUi{5DwQAAjM{!rj(BrqTd$_eQ0(sThFyW< zB72t3JcTKp|CRM#z^gj0seWjX3?=KP@U$O2;|EEJ_;*;UXex?|dnX^o(bU>;Af5e6 zJ}vp(zdEEEE9Ukh5-;**FS|@eQa9eHDHsIvF?>#hjlvvF!*-}MP*r5=o}R9zsDdM8 z#Y9IMbc!mAng~A!OJ_tu)6B!AHpT-HeF(rrm0;PlZDL+wxv2F;(LYWrRq4u`6eJBV zm4-H|drRdWeKx)zaCQW@aiWn7P|{5Wb$>~SHvT|vBc}Ou6v=UVD2CAK;y%xdPIF2O-kbx)+I?w2oLFX4H-8}`7j&$d_BE_#!x#ScT9Dip2eoK@& zt!hsOco@~%9DdcK%-ZCDq+nX&%_>=#XZZ#Vt<6k3%kCN00*K%y)sM<{bGfdt`@}jN zJT5B3X0Lu^lfUJHOREZX&4cl#PIu*ccpX3{=E_ucj&s$pOPsHDCH@nmcr5;=O8!+L&)|;x7K9zCk@mT=>y@7BR>KQ)Y`~Jx zp*JXff*xna=<}56AiqX`7e~q%*i$(4T=837Loz82+%pxP{~+Y1b<1Y`q`pk6&BPqj z-3jUIL6^~2&!~@Grl%{Iz=Be!3v-=BIP+dKHXaF(!Y3Gn??>|906+kUs5LHV1?4K$ zi5xDR$Wn2KOpS4B$a#E#?RFu*#b#CThc?KYn+x3Iu3 zA-UP2I&`ktt0|=PpRnwNjpF^SRH42QZyJ~v^v+>~Qs;rEX7yXl;x~1TbmpxJKd@lb z31$YQB7t}!d$cB0=t}_9=)n|Z7V4Q__C?kvU4|5TMqO_*ujw}OCX8x?9e~2Hq}@tIM~~8H zj12TnszGtv5w%cpClU~9%!ibQjHoyeWMj!7If%3Zy^zG{0y0vP+#WC+CCRNUX>HG_ zPf6!6U3JZ{&SExUV%F!HZ86v1#W(_AehfcP;UP41!Sh$o>Otq_dAs~a7Gq*ooL-Z zO!BD-J}}}9TJF~K%xX`jJX8Nue?K+YZ-gfjwvN@rw)m!pu#7lc7NE=yz}GT}IV8Fb z@IGKe!}*DfkGE3~_!Hvpct)+7pSso-EN5n-sC=c(S=!vOU{K}(BI$Kr%{3T#{q4T8 zzugSv*xh8qTWL2Vd+!|W-fZ0uY;v&;&b72VJJDSRmrQvxYs8l=hxd%}`h>Deae*BK zAvxcy>UR?@$4%6PbKqYs&(d;o@@eYT#G_p<%Gt^YZ=mThqeS<|sYa3+FlSg7s4CKo zLk*Bu8TbZ)7EKLoDiBEEd$YQdr36=EiC0c`pUT`QF8*<(P_pvnKu@>XW?efy4JM!p zXIRfB;a_en)!=>okDSd-ubC0?!5*1ist-vr>tPgoo*S+dkDYarig4=f@19DJFI;@v1$q9WA@#yzgc3ebba75D~XMeU%pin#-fo!dfis^uMXo_*V> zcg&;eZBw8>PWLj`8vve?XhUjxuF~uchDvUDSdb7VmO>#utX!ftZ_bYI9KleYM>-bi zq}jY}{}%(=bE$;?h8>_6u?n#U>4W)F0JPWJ6goTT7KYR->K&W8(r?3k2kaH+>{z7e zY(1MGs{yV;wz~OND`YsV--95=im0>(f^`(PGD1%Ire+>7Us|@B6T@4K+G=jLw=jlZ zQ7>jQTZ1m#ALHRL&)K1PxT~oeoChUW?QNDw(NWN7k74S~%?Ctx>y4{#hPu{^Mqy}; zgan_AIQXd^VWo}{=f$?DlC5JI%c>xc-uacp*Q-;M*Nxg9M(lOAn&$0=cR5(6d5FEa ziF%^`6mX5qX}u=(VmzhO-MI8MmISj`)KxZf4wiJWlsi)y(!C2&*fgkipo@056G){l zzhH;`#+IM6(eHo|CJdSe)Of_bDpYDpaV;{uZ9}*+7_i$D}91p$4g*lq=GnILaCPYDSuk+UleZbU_k2t-JoVt=^Cmm#$ z%1$y2Tj?OJgm9$$2a;M?Wb0;I-X&ds9K@E-BL$*1oeZzir4eByCH#VWBmb@__Nq{3 zEd|ar1-b$Tn3o%DN>weBp@-NP=muOl6|hJ6`9=ErwR-9Mbt<>v15@jEa)ZL&EL7s|Kc{q%Z4sMI| z9c0-wQvjwaH#C<$Lq%tbMXiIl5dbs)jCR&aZ-sEKiBGCgxnwoSX=YXcSy533uh-TS!j>#&bKk8@46%ONY` z%@7N_COHe8T#bvYlTKYPI>_N`?HwvuC3GX)MKJrwj>FLa`PE$n?uvU*Kc1oy! z6+A?Ge_0{re2+5{tJbOICj=aRWaczN;;EiF9j;_a6xg8-eN{Zc;un^F_(*3q<=SAy z^SvS<#U0|)!n+I)o;^a3(rZ$!XggE%X@&dEdm6{vE9w-T*}_2%^OkkR@XV5g5Cm=# zGY4f8ZU!ljflZ8wCz?*xCe?v6VUt?8F}&Y`_27u?J$ItDL27d{rn zp50W|XZ+Y|ZyLQxjYtn)wo%DSFo(nU%e+DhU{6jZvUC6o>NO{PBmkHoLsM{ z$zdF2St_eS2a%tPS~BbM_?0~K*IfLLFi&~v?>YNvuIe8-_kM12;L<%XS~=$$+pb4T zH&14)f{`{b(y19}sscOcenO;|4rVewSwfP0#<9(Vys_nN|;Zh7>Dp-f;c$K z*ongWGaQ8@VH$UVW=AFi4M$GPBV4tSqVcb(|ID0Ynk+8<>9+wo$GBN3{7^FbrUTR< z>2@+*)G*!Wr$=O7BRVq_1ES$ymeM|ADa~Nm%Wzz~QQ+>2h>N_Y=67YmGiO(w0c9KA>4 zR-IOlqyeHoQ!Q7WnIiYm9DYK|G|4yrVy%BEW$L_)-~b|Vw%;60mG9<*gQaLe+J8bT zsz5HbM_37Qp3=^T(DKdjJ*HFjdUg@bpN3@KsWW%jHZP0b1sN+oG087!#Jx0xWJ;n$ zG0=LwkMt<|LXeNjeq5jba@cK5b=%vOet}|LGD@Z~I5;K4E-i`NLC3bUeJlu^Ww>fy zQ*-Du@b-`g^ne=}+1=cQels!xbkO_dH?zBk@J(YE{^XHKm+hXNc^zxf>H3wyYq$aI z-CEs)D$2g9UR{q;19gFo9>L#0wQL;A3?^8T@5Wn_zf!vow3~y^%H??-hVCH z&-vv=;lG71$@$LJ3Q8o|bH0-~zCzrLvWik9hBKc1#Tn1VS(68-#2F8VZtiS3g8ZFB zBwIZixLyL zm+7hSe3g^g@eq8&jS*z{`2>EM*>q{|l@cZWjj(9ErY^CWw_KZ^;Q3@C=JW^)%pX2K z0Nq->Pu^tsF4a?`_rt>aXowzf-G`z381yD!G{B%ZG~-IjE0g)F)(2}S&cSfPdIfb) zK^@4`mhsa2w&Hqc_FeBsCbNY|PiJ~P>Umho>d5sx^;5apBXYGz!@`r{$j3tWb3Dii zWh;S<zda6g6is~ zz_ac)Y_*J#dYNZ3y#VA?`lneVe%gN>v;Z86j4wIC^zI$7(bMRhS5>Yq2P1gW?P@6g zgf@J@1Eele-j>0n)aaH~;2gf4x4{7G+4?;0?|c=Ag9>hx4N^D8tKBFmEcmYT|K2y+ zf_+F?kH{{OOt2QSR4@b^oMyVT@9kO0{ApoH-jG52ym^oc5U z^p`Oolw0POqNZ2bwPsC`jVR5L=7=JjB*@r_3La)Vk-Ae;WMJ0X>e+6LFxd#|hi|gn z3|Y7(zR5OKEDe}Jz0?&kI1o1z)naxy!*8|GFT&Xkv;{= zSxhBpdz|}=(s-a+?_mAc014LlDtk&Ol|B<$bn(QRH+ubRw@fh>+r*A~Q& zhzEgJ#u>?Y4PL3u<+CFbaDCwHYb_dLB+8R6*@k)9y_se6qXl}t+moz=-EryG*S9gw z`WD7MezlFt?xFWq-=Kb554?b)5cRIJXzQn5?E zmF>yn8})WKxkhq7h0w6UtFfq$qf8HQI=>i3HLQ^X>e|cz!a9xc;@}IW@1lIx8)as= z=De;yAQ+?7KBcJSmU6y9K+h-Incz8euqfz(*g8jm>g(`glCK^0R7|+rm%Vs;8ejPh z>39?Y-(N#F+Z61kN4Pa+6ugXdXI1a<3uXFJmiw)^Ne`Dk6rKl}`hD)kl)-eFZ6$gN zlVt6x&7zMAAKGQ|<|dtvgG*iJYC>HRRxIVag5pZM9B(tB2x`Ia>wxE!4-0pb2a%2n zdZEfsre(hwE(vKfpHH?k2z&L9je*)Njbv^u(2YEvs(h3?m<&phL49N6Bi0we>>w59 z+r{P^c7Y_2D|J`ax-Fiu_97*+gNLNtvXwr7|tpBvAv@@ShN6lS9=H^_RS4algNN+OfJgYUH;^kggiI14(W>l(l_Mw8)I15}U14W_&P{aKvN? zYvfn;a=!SOn9MN>1I)x-f_8wT8kkZwellT53m5Q|n)=Qf9f`RX=EL%YhzWtX9B+Dg znv2XnK8ud_h-{}QU20Cx1P^Qrzfk@_$4of6g>D1)Yr;*#(U zL)kzyrQi>hYhNdd%}UrxUPBMboJi=Y3g!jKsu{xp?*~E>(cC~Z8+R_fO07`I3c-EV zEHNMAQW8shQt1i04xa!g{3$x=j9VnC^_n{0W^U$;3@pw`Dl>)(c^>p(CoT(7at1>U z=)B2j+5@t{-15$v*ugbx8d!b{a5C1WSC&kakt9KKWjri3u}HdPLU5((7K8sS@)EQUfo%803e1 zTzJO=<nSD%#!&<{G{ZcoB(e;Y;B;l>DLiVgY54;#+_!p9Za0w5B?3&8+?_cU&&< zx2sia<}O+wSzt_xNc}N|kLX}0gm405!(CFXP8B3c^odI*+Cf(WEba1?LYL z)%@yiqFq!BOM+U^OXDi{fc*kC^yOBP_vPG$@{IfX1z#?5V1MN6MrA%Q9uMM@v~1&e zTnD4Tngo=FZ-vEh1&E5pFyJi(>IVL#aA5xM(t_gjQiFn-5obs}%92R-b?RCr==ifF zAh1)tpfj79_Cmo#+BYd1P#fZ>inOt0pccmgfN*XMtg)`IpY3ZnI8=sw^#wQa-jCT{h82de$$HTVEDCw8jQtlf-g%s>h7X5DgtK`z|BDK56YF2PTAZy3fA2%|`#(kV*q@<|@CM~%AfBa_;ee!@GGa@zs<0s6 zEX1?L@x=5LoEPX%)vi#l8c7QpME7h4&y!lqgVWb+`dUn1bD|UMWQh^!5^lknC~tCG zR73xMZsuaNn4CAvP7Qq00!M`>CNsg&ROlX|w^5_Bzx?f!2DrZ|>GByCoimlEilO`fE%fZ0bJa&f#2`US6aFzWurDPt$zRe6Tu8kxmP zv{N0J`7CJyMFR=IG-@u&@aermtixp(qdV1*+H4(#GG7u8+sk2g2gYF56SFp`7?Q#b z3OgC2AocSNWs+$$ETF)5r17f}Hi!1XbjbWvv*dyCuzr}vtq&sfypv*KoAXV&7ji*{ z@FDzOyfEtkgc9=Isru$xaYA-%GH&en2@_zL%(wj$UB{jXo&sNPd?EoL^|vVbFdB%T zKz+`4=_L8HT>m&bOC);VY%8L5C1xxpd6_dGpLr|a!~l&Y5eWYaSO0g+U9MiWb`CSA zJDoTy$GUN2GaK-D^GgiHn%~Cmxp)vxEXWtrGG{WISMso_Q-)h_)<*Fv9=$OgL0{+K z?_@46V1CeHxQKN0x7h897s%nLUL4u?+=)gpzHcCNpwDXmI_LXN+6~W3H*Dh!1xhE* z(+lv}aMW^*L$H|2rETh`>On=8!QJfSVa>(`_Zywro?ex>(2o+cIVlJ*BGj{BR9G6u zq7+zXI z5lTboy@B{y(|qgM@a>AU+@#j^MXhmg%CA4cBaW&gX-A=6Kr0prAOkzfnH3z%Ayum; zr`KMV*~)40(8+L^%;c5fu!)sdJf%A&{CyWEs;(2(i;_N21M(3?n|v*t$HlhWgoo#@ zNZlDRH0}bgtgg!@H)hkJ@e{sFhsLGMI0WP>p7JzkEp|#s=Tpv_h4*QixNHxlZ+1hd z5{HAW;VA*O?aWZ(+jr z$2n5DfPEI4Htz&A92Sv%$QI9#IAg%!CGf_0uFSUBvTFO^C5F2-c_q9hQCpMyE9vfM zNxHk--I7E!|134JW>S8lH))sRKK@RkMBxQR-JU1q0#c6t}< z;9M8HWjtar_wqOb0gv=4$7@251jhLjK3f+^W2}Znri_G~A^s`y)v68)oKytAqFOe52`5 zQZBf_$YCEka}ZrOz8Th$tUq=@eal|ndy1Xb-gM!;^Cj^Ahc~8 z;m8YccgZ2Sm;CJWXb4h8(LSi;PJf}@#m0RdLaq~Ns@(1S2BVSXQ4YCRxo7>-@BDap z-~k=zKM_W8GyMTxj;L}#WyRo5aN8sU51xYFG3paP{s6cYTsbW`jnEe9NEN>4M<1iU z1ox=qRfWmbcdqb{${l3(rmD^~(`B-55lJ z+zl^W4EL0tY~p)N;VS1YR>5``e2fG|F*wr&XE?n(pM+{wweFcPJVi(a@(M{3;yB&8xO#3@iD5@7NvIp6}Uo2yJee5D8FA- zeyJ*lRt7f9LfVJY_;`#ghZh=qqceX|9vTo1f)gPC1@UmMQYS0_8mk|tl&J#o(aFdA zxjS_{*?(4-W)@G^!5>Ze1=Y~l+(k(EG-EGN`bDMxT^HJ~P{VGehKd%@)mbnLD56p@ zcA}M>YT!8gub`GXc-p@alP`Qhkq_{syxd!$xa6L^nF;&W8!8uPzXcTaPx94vd5JK< ztG)3&2+z%DN=^dNyNdn2IAkdHBaGCczX_X4Av#63nJkdDotl+>mwMb}E z+G0Ns)w*cH=fsS5sncENy|4#wTMvm3y{#q*hF8dKA^R2dFS#y*TvgGdkb<9-!_EN0 zS0+PgoC*p7DKIWT8oH7RK8fK z%I7IV6ctcE1t+n_20t~$hfIPUXCE;6drkR16WwbL)UfPOMgpv!-UARxzg~4ix^BXz zM3%%Mgx%+P2a48)^Sh{kQ$ZpVDb9@YF^8nxUFw^emncIrmKM{u^8p5@G5QrKJ(CZR zhjq8gyiY5t!OunD$OL7Z`8PXH^p^qKyypx~k8NH)ef^<+kdXZ@b^L5^&RK4DfV)1J zlh163d+eU?EAQ75V?|L&f_*WbfPL9kZv~OgVWtocb*l~NredrIvmzum_mT>JryQ?; zgA0sH_RW%yQlsdvO1~_={8o)E#dpUuqR+zROIR-u{e}8(&+Ak{T$d_{yVTR7xm=?% zJK{FI9NahXNdTQ49>9GY{X&_?K+d&;`H6X0o&V~~U#ERJQlF{tJOg1PkFFIAlwy`A?rVZICXxhrW;p`jQfo0D=&qK23SGdCu6Uk>8POYcSv^)A9s{sLcxnsj#-+O+n>g(P34 zKUsUZM3?twYh}x&o3vvX+L$-d8x|BURgjw42HQBLVN~OOnVkt)D_11_iq@sbRC8J4 zy%YwJbp-L0+~}&B$R9Dv@9~0;fBL!4eEUz|o*4|x7AO#?|LKqV4A*{sP%@d!e=vl3 z8L{h?T?JNgt#^>jKOtklT>)x>yi|8WT8GK%fnfojBOQ$L$xL-qxx01hB`tF6Dt&@X zl_8AlY2%{_`Pp{P8HPC7?&Hf7MrU>iIOHJjFb~X2O;WjCN4M$x3HBV^+%S{-hj#=c z0MmGRuN|{tuv_GY{v{i}mK_FG1K*~~-K@)0n_=h@o+}o!L`T1PBL5^aD)j;Et9pRz ze+LtYic|#oJv9wfKpy|t83w%N?jTD?_dPQ75e%cF`X1RZl-=ya!lWAZx!Lt|q~ZS$ zdv6|RM^WzocUA9w`t0Y-IkRt>napIFne2Op5VAl>!V-2!K#%|m5fB0{j3FS4kgzEN zLO=-0jv(L_0TB^J7TH0NTrMIP5pvawh=||!Q+*~0=>6kaEnB0wu?7GlhbPUV*h5n*5)O44`PB$RzhQCgGucgzkqz#w*T-s+cwO>hlze#7# z;AdtNlvG{fIhWz*>R#jpm*G}}sXD6ur}ExXC}1ye#=Va@hjZ@5Ueo}kE%(;;2+#3H zJ+FLGc|`SOcO{9WJ>h+u{vWviNW0I-mrDBLpA5x)Mghn(&FevBlvDd5bDtojOmfQM zXh__Lr^Gog%aAGIRJEI!!J=_t5w-L&EaL%?oSvDG23?O1Eb7MxZKHmy7wzLa>hHEV ziv%I4-RP7vK6q4a$3rA#?MyjYQY!|XDNGx2Tm}6Q@KfeGJ{WMT6yZeuyw;0_CM&-goPC~N0FP5L^*o|{^%vvTcDxg+|UYrpIgtidQjZ=T0`if?_@$()hO zo|$6Z{U+vDWU)c#7bfeo_~m^XlAOVFUG%_P)D?IPF(PLB>c(fm&n{eMu%yXU6+&QIshO-El#@8gfIlJr4*#F8&} zB_1)BwYLensoMBa?BrD4V|kZ#0xp%0hBr$g@UMlaXQ>}+eppPJfNBLHf zgBLktjC0Dc`mzkc(XtBAZ@!~`1syL@Yl4m<3^2ldx{^t&v6WzqKve5MM2tZMNVJ$k zCu4pnvSiTvY*jy0)~8W9|3asKj${m8Hu|D|#*b*0YE`(z5W+!yDvnbe1oNF>7fauy zxSiG7f>)e?m2wV{kDcfy+TAFc6|Ho4Wjhn)A)cAhD6(r?axwOg!+3X|rH^GU;38Ya zb?ZVnlq&NNRNfgA73?uteT6DquEvVfRv#SRD)d={vhxEh0w8_}K|aC^?yGIHDVX(7 zq0t#0xn7}&baI>3M7B35zyrZawMPk*H|WiLs8D|xEWrpoI4aIEGg#c zqO&tfT@-dI4C7*o*PBt7SP(L1>|K-$!3MMQIA`RWY&C^1C54wtT<=)-*f1SYOlK@d zQNsibLa>+V>=?J8zF>-9y1}OS$0TsAxhwECI@OfCCBnAu7bn3g==0zdi!I~$i03Qk zSRCw%j3DP$Wk00kbHAIExr7DXls(0JMNRquic9p0*CyK1X0!7+$E2+9nzEL+m-Pmw zczC_EDQhVT$Ac}xK#|y&RG|`x3Mk%-QZwwN)yp4AvH5m1yBLE$QSQ1!Tn+PHKeItf zowWI5W~%?2auz4$|ADf9gl{E&4oUgT+saQ_^kNFx0Txij+UUD@1p=OThM&9G$3whT zw`DA%`XPt~Ck5gh0DK;*_z?HNow#i*b8z0e3qSS9Q_bl%tOkSXzdh#`7!;gv@}8x3 zvMd5Zjn3V1$rMl=n28>C9Kf?%)uH6XY`32ByD*izcrvJ&xh%H_51ZR@CLnzt-h4B~ zM>R)Z3EXy?+ho+aNG(hAgmu7e!U4R6MXR6-yJH03E8f!>9-ZJQ9u>ZZL`+tT^0q1R zM{sOnJljVP%G9_Ej^dbOO$>hM9$@J~o;qlq6+}m-j%CVsqL4}qS{5#?0xSv|H2fk~@MLz@$45>-!z`fI~!_Z0<<*P#Cc@*Q}2<>u=#x0T<9bhX zWSugbOOwrNv$NE!o6P#FweybI+wuN?{@rD+X*X+BxwRL5;^p!t`6N#|^yxl&m}-oh z?neXPw3y}LiuIjvg0mvC2PrfVhX~7^i-U4As`@(JPy*MmF7zgNBxK5Jmz+p{bkb+K z?9q_x-3SD*KRW8aocM!q>ffB)hxm;UGoxFe%<2rcjDZYqurnkBQ~Z&m{_fQKnH`P| z4Z9PzUEh3xTgqq8a_d_{lv-6qT!hz)+NJ}g4Pr@+KaRJDVG;=K$W_f}|jInh$;x3VqmC*IVoD;+^7+ z#{0+oRe8uoL`PN2DCs$fhu4i>S>j_NUAfgO-@>m!U2UxQtNALx{3=>TFKb49R(#L# z&vv8lc++*mc?d5xN$Xy09TI;0Glh+0igPX+EESCMH|pr?${(v|5Z4w>p`}Lae%0oT z#h^AwV8Q764Z4YLxK5bR#sMz7OtlRn;{op2qyC`Ur+3e9A5fofx>Sj!i?mw+;oygf zp~t37Xpb=vf_04+HMKM@m)Ex%O9YV#vOlvS#z8^+1ug{t@)96rPhHusnhih33Maejj+xTFCf*LF37z4 zRpop^!^Vj<##Xx^AmAlupM<3Ufc}HJU#ka5=4Liov+lef`v@Pyx301KbtRZNI%=3g z$3}8xA&kYI1y_tE19vo<4a}rM?AHfz=uOT8bw+1*3nfyjARsZRiWVa(xxJl;cM;AZ z0suHg^@8SMqrpK9WS*K*7^>pj+}z%TS(bBCVX$k46T>asVLRxTA5hFJZ341O#P5ws zs4q^yISNZ)>7`CT{UIN8f$^|QIww}3re*C)L~b6TG*3@jc4ETb=7$`%EOlB6>WupT`S?YG56zLM6JIqQ=tLNW$=) zL4syEW=jy$-gKph!91v%a$8)T=$UQO`>koPZ?$2~I zC;XyiE#@QhPT~50m#AS{?+4SU`%!v)1nM1m95#qH*xrCc*vo1@Qw%(sGbzY3iHTJp zjiDIdk99gir%rT_zg79aQ_-8sCgLt=XoXq&l5;tfSCEn(73b}Gu}Y#BHeO)g5HGN1 zB&P0h8EMeK zyhF|f9D7Ivdr%7+zj#h7ZdgUWgc=$>H?+DBvz{TEgAfzlfXfTuQ?0lzEIAVCdE3w$ zVhA#{ibJarHV^0_PAQk`%i=6n%3#Ip)@m8D-+DBjSc*R{j$wm{Zxfvv3Y<*F2~%*+ zMk|NwpF3F)ALDQsz-HPVart{z685Rb_+0BX7ttvh%xOM;Mzv|Cyx!WlHgWW=^nt@c8-2(d zL=9_VGWHM_pD`x$z|hqSXT{Z%+No#D0nOC2Beou~Cu$~73U;MY5qPi`9ZcZ>c}d~k zlwu7z`_p0gfeSHJKEPBtwpLHJeo+>5&Cuu{hEAaAuMzLX)yMSKfw*{JpYGkIFR~u4 z>%(spM+zNXT_&%>rgF5QOulp7&^GGLlK!vKcq}TgD9m-KEhRcYGK*bc{H!K9yW5+Q z$fyA>7}4_ykm#JwH$v^Y^?W5F*U;zYrmWTAVZK~x z*7XGR=Q>b-4DzVO&N#lJw91+*)p0p%_347k(`mg_?bBVT#9H}c{-27ie@1>Oh^Fae zXR-}`Cc=BGGEBw_*o&(rdBp17x7Bt&wcT1p<3hiSeojbJ{*g*_ccoU>jTQaP$~fwZ zR!8c3j%Z-I2nxThR=?f1)lV?t`1Ea3znRu+^{5+jQJ$J5pB{u6xifKx89Ih`|Eg*C zi?#JW*TNjNsNa_b!8H9AsDRP$%b^OMqwQUk9Ds+gM3Q3qM7F$f8>f!EvMR3xTqT)Bx>~9CJnNT@=1~l+TEW^itX?0(7%!n>Tc;F%j`a(! z%6Z0DWOVHT14lDdR*zjWezyT@YcpT3O}$c=IA8?7sVjTgiS)Lkp#f~h5=uTGAL?GA zbBE!RvHEgF@71d$p}RM`evTw?r+u>EG@HJCtFpGVOw3h@Ac)|+3$c2!B{xBDIjBaR zemYg$bk)66AzgSU8qyVhdw=MY{`MSoce4<#EiDzio?tNH_nPd6aSf6yD(RS)!JIKx zq0JTKRo|_k;hhsybhAGR+;0!Via<@|;s`U< z@MnY@M%K}bXL&P!rmZXOb^?L|;nSZ9JrKK5v7%+rUNtP`^B#$2(nR6mML5o%5bKUI zX5~hp>j8d40o&ameLN{G?h7!3C!&TLOXzGdRR8~-xBwhyVQvSbvG%K9RCMS z_;19w`9E|(53G08cO9WbZ%LykReHmy9f#mH)AT3h?5xMzGME$kc5Hac&{M1MG)yUd4!M@lvj20d3obv9+eTSM~W_VRycZ_Uj9+ zbx!luHhMPyS&Yv%I-#E#@_dcx7<(DIY?^B>>Ul$+L+fp~n@?_d$hqK;G0|bBxm~{3 z@lPx32EQGQln8Gtmt2BvDO4z^fuTx>MOk4uRyiy2j+0J`n-=`cxDD`~C*DAA@Jtts zGcXuLc1Gz8VgFe~X;fBwlaokdFIOGBGO$h@9EV3zUrR3$6XShreO)&u?(o}X{2|{c zQ`Be689wT@CHmJC{KD9v>|-Wr2_))4__2-Ah&N0g4=@Zt%1|wZ4A5(0c+>>fJj5mDz|WmK1nwK zk80gch=DR$H%6lbLhb;iT)s&bQ3FF1zQhjGQsnX;MAth+FwR(O^FcN|;E?b@S2Z5u z9VooOOA6rHp=@8d018{t2a>(9ko}$xZ?xT`8}HHH)pm9@90QT7fNh|N<7-K}CDJCt zar&TAAn<~#(1^t&>%dDm11IvTinX@up!x%w4{{DvEMu*=00;%nRx6@O!`ueD8Kcv zUtVba!i5abVc6+i({)_lx+UHFgzkC@j+f7~*pO~ITNhL7bLrl{=&ldU8M^EMg#H}0 zn}pgjxfp>XnW)Cftbw{uW{t}7b!u4*JTwvT>#+A9ob=6!6kv#faUn4WPx`f(0}MFd zv|kkiPDTtkSExyQ;L*6xBYF>p!#?%awI1Z;FK&K9^oTnT%%4E-j8W=Si1QK_&eTl+ zk@}M>bmI{dO>fP0URU}AbRx|%2q!s+9O@BmhDyD3Hk0p{IQfW|4OOau+f1%5m=-M? zRn?XJ@_1^dGEkN5PQ5p(>`f}T5lcaA@RBFru4zwpRrNHv!rU)MR@BV8x>te3(tcVLgVa|)h5)`2J<0XDVuC=hYq@Qr7FAD3e8YNw6ukg_u(ZTe zDDxnRc@iJWpM|VS6l$y&ON+d1^!oOA(<0!%7KbE$w*iyW73vV{JD82ycpd#fTy-T+ zwtUfz*zZxSZdBK6LnGFhb;hheC9~NT>LoSJp88jU!c*gQ6M+`EL4$J?R;l4aQF#z8 zfDSzu;r%vI(p!8Zw%<@w|*tGnR||5WQNCP~J(!6_PKsoGI|l>xjX_hnf4+ zOu;F;w0pSJ$48==&rJqritNnpwWr!?-I;^S!$5pI{k~$mzd-6bpQpQmI4esO|VWsiW;Ip zMp&UkMcv--43hFt*!W?!TIS2tY0@az^sX&TLkjH$(jR-OD6XeD9ZI|CXB3j56l1FOLUt;z z8vvM%-QBHCje@Sf!|Om@u`CktB#rWG8SC(8P?SS6&oZ&O(a@2g6VPNO@ ze4Eu>+Inc(kbdf87jHCt)*kxTa`98s#%t(}JPW#arr2yYV{EjZoG}Y^J3J@o8udY? zNN<_t5O0riR=^0_X7VLBldWpw%yy^bz`2X(`2Zq^wBYjDsC720{j3*e_rlhiDvgB+ zl8?LQR9G4RxY+vooJn|Zq9kT!FFJgVH1Al7ewhd-I^t$hz&*KB_sDk~SG#@aZqZ_- z=BBt{aBla|xRubFgIW)S=&q`>-e2592qsD$VJhn`_ z^5U^A;N~fQg~v90E_Zy++M5p26ZSElHM1K-qu5=b4b^+L^Cw%K$boQt!!;_0>b#Lz zcEADsM3E;&QWcKH%vI*4gi|sJLi163H)L|@9PPPg`EdaWyN`jE9y2m(mq_PWVLHbz zI4WwdGZIx-_yphefp{{b!qtl*q-e>E{-T8tMn3ZtjEqyP`#@h!5l0TI?vMw?#)dY9 zr#zr`$B_8|8UV9dYu0%&NWZVHS6zMG=<#l{yCAEmU8Qc{)!r>^3%6_MHewSIk2Cq# zxWN4n;_eHoHRuZvZ2Uq!w1Cin6?&~ew9MlH&BS!g0sMt05>NdBQf}_3Y}T6AA6%lA zR;oEL=X0gpnB4CBBi5GsA4f6QX8tN?I+Z`D++&{qxR-m>%l%uBJHyGSvdXKH%0DLA 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

o9W%mcp)AD%8%eWGq{?+hL@9|6 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

RPm$S#|wRF0-Kc1l5KD9iY2FAR% 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

M0n7k&z<~fQ#!($vmBQr49 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 z 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

37JAd*V6k?{9=lZB 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

@7=Ot&*NQ8PL`1m56OWz$x>Qy0^;FzoV?GVW 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

>J}|&!g!)@OtTzbk0Tp~34NqY?e)W^# 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%0DxprofFYWs1=e_S@^2I*D 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 _sed.script + +tail -n +2 $(dirname $0)/../common/rewrites.csv > rewrites.txt + +while IFS=, read -r from to +do + echo "s#\<$from\>#$to#g" >> _sed.script +#done <<< $(tail -n +2 $(dirname $0)/rewrites.csv) + +done < rewrites.txt + +sed -f _sed.script -i $output +\rm _sed.script rewrites.txt + +# remove properties_to_delete +for p in ${properties_to_delete[@]}; do + sed -i -E "s# $p=[^[:space:]]+##g" $output +done + +# remove empty subckts +# sed -i '/\.SUBCKT.*/{$!N;/\n\.ENDS/!P;D;D}' $output + +# remove $T=number number number number properties +sed -i -E "s# \\\$T=[^[:space:]]+ [^[:space:]]+ [^[:space:]]+ [^[:space:]]+##g" $output + +# M-instances -> X-instances +# D-instances -> X-instances +# C-instances -> X-instances +sed -i -E "s#^(M|D|C)#X\1#g" $output + +# fix up $[device_name] devices +# for R-devices (resistors) apply the following transformation: +# RXX x y value m=1 a=1 b=2 $[sky130_fd_pr__res_generic_po] -> RXX x y sky130_fd_pr__res_generic_po m=1 a=1 b=2 +sed -i -E "s#^(R[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) ([\.0-9]+) (.*) \\\$\[sky130_fd_pr__res_generic_po\]#\1 sky130_fd_pr__res_generic_po \3#g" $output +sed -i -E "s#^(R[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) ([\.0-9]+) (.*) \\\$\[short\]#\1 \2 short \3#g" $output + +# RXX x y m=1 a=1 b=2 $[device_name] -> RXX x y device_name m=1 a=1 b=2 +sed -i -E "s#^(R[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) (.*)? \\\$\[([^[:space:]]+)\]#\1 \3 \2#g" $output + +# RXX x y m=1 a=1 b=2 $[device_name] -> RXX x y device_name m=1 a=1 b=2 +sed -i -E "s#^(R[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) (.*) \\\$\[([^[:space:]]+)\]#\1 \3 \2#g" $output + +# RXX x y $[device_name] m=1 a=1 b=2 -> RXX x y device_name m=1 a=1 b=2 +sed -i -E "s#^(R[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) \\\$\[([^[:space:]]+)\] (.*)#\1 \2 \3#g" $output + +# add w=480000u l=45000u to sky130_fd_pr__res_generic_po instances +# sed -i -E "s#(^R.* sky130_fd_pr__res_generic_po .*)#\1 w=480000u l=45000u#g" $output + +# for "Dpar"s +# XXXX x y Dpar m=1 a=1 $[device_name] -> +# XXXX x y device_name m=1 a=1 +sed -i -E "s#^(X[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) Dpar (.*) \\\$\[([^[:space:]]+)\]#\1 \3 \2#g" $output +# for now comment them out +# sed -i -E "s#^(X.*Dpar.*)#* \1#g" $output + +# XC x y m=1 L=2 $[cap_device_name] -> XC x y cap_device_name m=1 L=2 +sed -i -E "s#^(X[^[:space:]]+ [^[:space:]]+ [^[:space:]]+) (.*) \\\$\[([^[:space:]]+)\]#\1 \3 \2#g" $output + +# handle Probes -> subckt pins +top_level_subckt=$(tac $output | grep -i -E -o -m 1 ".SUBCKT.*" | awk '{print $2}') + +echo "Top-level subckt name: $top_level_subckt" +# replace subckt declaration +pins=$(sed -E -n "s#^X.* ([^[:space:]]+) Probe.*#\1#p" $output) +readarray -t ARRAY <<< $pins; +IFS=' '; pins="${ARRAY[*]}" +subckt=".SUBCKT $top_level_subckt $pins" +echo "New subckt definition:" +echo "$subckt" +sed -i "s#^.subckt $top_level_subckt\>#$subckt#i" $output +# delete all Probes +sed -i "s#^X.* Probe .*##g" $output + + +###### +## Remove .subckts without any pins + +awk 'BEGIN { IGNORECASE=1 } $1==".subckt" && NF==2 { hide=1 } hide==0 { print } $1==".ends" { hide=0 }' $output > ${output}.tmp + +mv ${output}.tmp $output + diff --git a/images/foss-asic-tools/addons/sak/common/install-pdk.sh b/images/foss-asic-tools/addons/sak/common/install-pdk.sh new file mode 100755 index 00000000..61b31b49 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/install-pdk.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +#---------------- Setting up the PDK: skywater-pdk + +export PDK_ROOT=~/foss/pdks +cd $PDK_ROOT +git clone https://github.com/google/skywater-pdk.git +cd skywater-pdk + +git checkout master + +git submodule update --init libraries/sky130_fd_sc_hd/latest +git submodule update --init libraries/sky130_fd_sc_hvl/latest +git submodule update --init libraries/sky130_fd_sc_hs/latest +git submodule update --init libraries/sky130_fd_sc_ms/latest +git submodule update --init libraries/sky130_fd_sc_ls/latest +git submodule update --init libraries/sky130_fd_sc_hdll/latest +git submodule update --init libraries/sky130_fd_io/latest +git submodule update --init libraries/sky130_fd_pr/latest +git submodule update +make -j 8 timing + +#---------------- OpenPDKs + +cd $PDK_ROOT +git clone https://github.com/RTimothyEdwards/open_pdks.git +## git clone git://opencircuitdesign.com/open_pdks +cd open_pdks +./configure --enable-sky130-pdk=$PDK_ROOT/skywater-pdk --with-sky130-local-path=$PDK_ROOT --enable-alpha-sky130 --enable-xschem-sky130 +make +make install + +#---------------- diff --git a/images/foss-asic-tools/addons/sak/common/parse_klayout_xor_log.py b/images/foss-asic-tools/addons/sak/common/parse_klayout_xor_log.py new file mode 100755 index 00000000..842b484d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/parse_klayout_xor_log.py @@ -0,0 +1,42 @@ +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +import argparse +import re + +parser = argparse.ArgumentParser( + description='extracts the total xor differnces from an xor log') + +parser.add_argument('--log_file', '-l',required=True, + help='log file') + +parser.add_argument('--output', '-o', required=True, + help='output file to store results') + +args = parser.parse_args() +log_file_name = args.log_file +out_file_name = args.output + +string = "XOR differences:" +pattern = re.compile(r'\s*%s\s*([\d+]+)' % string) +tot_cnt = 0 +with open(log_file_name, "r") as f: + for line in f: + m = pattern.match(line) + if m: + tot_cnt += int(m.group(1)) + +outFileOpener = open(out_file_name, "w") +outFileOpener.write("Total XOR differences = "+ str(tot_cnt)) +outFileOpener.close() diff --git a/images/foss-asic-tools/addons/sak/common/parse_summary.py b/images/foss-asic-tools/addons/sak/common/parse_summary.py new file mode 100755 index 00000000..458688a2 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/parse_summary.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +# Prerequisite: pip install pyyaml + +import argparse +import subprocess +import os +import yaml + +parser = argparse.ArgumentParser( + description="Parses a summary report into info.yaml") + + +parser.add_argument('--summary_report', '-s', action='store', default="final_summary_report.csv", + help="The csv file to be parsed, defaults to final_summary_report.csv") + +parser.add_argument('--info_yaml', '-i', action='store', default="info.yaml", + help="The info.yaml file, defaults to info.yaml") + +parser.add_argument('--target_path', '-t', action='store', default=None, + help="The run path, will be used to search for any missing files.") + +args = parser.parse_args() +summary_report = args.summary_report +info_yaml = args.info_yaml +target_path = args.target_path +if target_path is None: + target_path = str(os.getcwd()) + +stats= ["DIEAREA_mm^2", "CellPer_mm^2", "cell_count","STD_CELL_LIBRARY"] +def findIdx(header, label): + for idx in range(len(header)): + if label == header[idx]: + return idx + else: + return -1 +def parseCSV(csv_file): + map_out = dict() + csvOpener = open(csv_file, 'r') + csvData = csvOpener.read().split("\n") + headerInfo = csvData[0].split(",") + designNameIdx = findIdx(headerInfo, "design") + if designNameIdx == -1: + print("invalid report. No design names.") + exit(-1) + for i in range(1, len(csvData)): + if len(csvData[i]): + entry = csvData[i].split(",") + designName=entry[designNameIdx] + for idx in range(len(headerInfo)): + if idx != designNameIdx: + if designName not in map_out.keys(): + map_out[designName] = dict() + map_out[designName][headerInfo[idx]] = str(entry[idx]) + return map_out + +def read_yaml(yaml_file): + with open(yaml_file,'r+',encoding='utf-8') as f: + list_doc = yaml.load(f, Loader=yaml.FullLoader) + return list_doc + +def write_yaml(yaml_file,list_doc): + with open(yaml_file,'w+',encoding='utf-8') as f: + yaml.dump(list_doc, f) + +designs_map=parseCSV(str(target_path)+"/"+str(summary_report)) + +yaml_map = read_yaml(str(target_path)+"/"+str(info_yaml)) + + +def form_map(designs_map,stats): + write_map =dict() + for design in designs_map: + design_map = designs_map[design] + design_name = design_map["design_name"] + write_map[design_name] = dict() + for stat in stats: + write_map[design_name][stat]=design_map[stat] + return write_map + +write_map = form_map(designs_map, stats) + +if "stats" not in yaml_map["project"]: + yaml_map["project"]["stats"] = write_map + write_yaml(str(target_path)+"/"+str(info_yaml),yaml_map) + print("Done.") +else: + print("stats already exists") \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/common/rewrites.csv b/images/foss-asic-tools/addons/sak/common/rewrites.csv new file mode 100755 index 00000000..de11d156 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/rewrites.csv @@ -0,0 +1,2061 @@ +from,to +rf2_xcmvppx4_2xnhvnative10x4_noextrafingers_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_nhv2raphael +rf_xcmvppx4_2xnhvnative10x4_noextrafingers_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_nhv2raphael +xcmvppx4_2xnhvnative10x4_noextrafingers_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_nhv2raphael +rf2_xcmvpp11p5x11p7_m3m4_m2m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5_raphael +rf2_xcmvpp11p5x11p7_polym5modshield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +rf2_xcmvppx4_2xnhvnative10x4_noextrafingers,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_2nhv +rf_xcmvpp11p5x11p7_m3m4_m2m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5_raphael +rf_xcmvpp11p5x11p7_polym5modshield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +rf_xcmvppx4_2xnhvnative10x4_noextrafingers,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_2nhv +rf2_xcmvpp11p5x11p7_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp11p5x11p7_m1m4m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_raphael +rf2_xcmvpp11p5x11p7_polym4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_raphael +rf2_xcmvpp11p5x11p7_polym50p4shield_rcx6,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +rf2_xcmvpp11p5x11p7_polym50p4shield_rcx7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +rf2_xcmvpp11p5x11p7_polym50p4shield_rcx8,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +rf2_xcmvpp11p5x11p7_polym50p4shield_rcx9,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +rf2_xcmvpp11p5x11p7_polym5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_raphael +rf_xcmvpp11p5x11p7_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp11p5x11p7_m3_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_raphael +rf2_xcmvpp11p5x11p7_polym50p4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +rf2_xcmvpp4p4x4p6_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp8p6x7p9_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_raphael +rf_xcmvpp11p5x11p7_m1m4m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_raphael +rf_xcmvpp11p5x11p7_polym4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_raphael +rf_xcmvpp11p5x11p7_polym50p4shield_rcx6,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +rf_xcmvpp11p5x11p7_polym50p4shield_rcx7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +rf_xcmvpp11p5x11p7_polym50p4shield_rcx8,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +rf_xcmvpp11p5x11p7_polym50p4shield_rcx9,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +rf_xcmvpp11p5x11p7_polym5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_raphael +xcmvpp11p5x11p7_m3m4_m2m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5_raphael +xcmvpp11p5x11p7_polym5modshield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +xcmvppx4_2xnhvnative10x4_noextrafingers,sky130_fd_pr__cap_vpp_11p3x11p8_m1m2_noshield_2nhv +rf2_xcmvpp11p5x11p7_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_raphael +rf2_xcmvpp6p8x6p1_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +rf_xcmvpp11p5x11p7_m3_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_raphael +rf_xcmvpp11p5x11p7_polym50p4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +rf_xcmvpp4p4x4p6_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_raphael +rf_xcmvpp8p6x7p9_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp11p5x11p7_m3_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +rf2_xcmvpp4p4x4p6_m3_lishield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_raphael +rf2_xcmvpp6p8x6p_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +rf2_xcmvpp8p6x7p9_m3_lishield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_raphael +rf_xcmvpp11p5x11p7_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_raphael +rf_xcmvpp6p8x6p1_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +s8rf2_xcmvpp11p5x11p7_polym50p4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +xcmvpp11p5x11p7_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp11p5x11p7_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_raphael +rf2_xcmvpp11p5x11p7_m1m4m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_top +rf2_xcmvpp11p5x11p7_m3shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_raphael +rf2_xcmvpp11p5x11p7_m4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_raphael +rf2_xcmvpp11p5x11p7_m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_raphael +rf2_xcmvpp11p5x11p7_polym4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +rf2_xcmvpp11p5x11p7_polym5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +rf2_xcmvpp6p8x6p1_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +rf2_xcmvppx4_2xnhvnative10x4_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvraphael +rf_xcmvpp11p5x11p7_m3_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +rf_xcmvpp4p4x4p6_m3_lishield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_raphael +rf_xcmvpp6p8x6p_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +rf_xcmvpp8p6x7p9_m3_lishield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_raphael +s8rf2_xcmvpp_hd5_atlas_fingercap2_l5,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +s8rf2_xcmvpp_hd5_atlas_fingercap_l10,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +s8rf2_xcmvpp_hd5_atlas_fingercap_l20,sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +s8rf2_xcmvpp_hd5_atlas_fingercap_l40,sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +xcmvpp11p5x11p7_m1m4m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_raphael +xcmvpp11p5x11p7_polym4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_raphael +xcmvpp11p5x11p7_polym50p4shield_rcx6,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x6 +xcmvpp11p5x11p7_polym50p4shield_rcx7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x7 +xcmvpp11p5x11p7_polym50p4shield_rcx8,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x8 +xcmvpp11p5x11p7_polym50p4shield_rcx9,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x9 +xcmvpp11p5x11p7_polym5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_raphael +rf2_xcmvpp11p5x11p7_m3m4_m2m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5 +rf2_xcmvpp11p5x11p7_polym50p4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +rf2_xcmvpp11p5x11p7_polym5modshield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +rf2_xcmvpp4p4x4p6_m3_lim5shield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +rf2_xcmvpp6p8x6p_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +rf2_xcmvpp8p6x7p9_m3_lim5shield_top,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +rf_xcmvpp11p5x11p7_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_raphael +rf_xcmvpp11p5x11p7_m1m4m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_top +rf_xcmvpp11p5x11p7_m3shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_raphael +rf_xcmvpp11p5x11p7_m4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_raphael +rf_xcmvpp11p5x11p7_m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_raphael +rf_xcmvpp11p5x11p7_polym4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +rf_xcmvpp11p5x11p7_polym5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +rf_xcmvpp6p8x6p1_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +rf_xcmvppx4_2xnhvnative10x4_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvraphael +s8rf2_xcmvpp11p5x11p7_m3_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +s8rf2_xcmvpp4p4x4p6_fltpolym3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldm3_floatpo +s8rf2_xcmvpp_hd5_atlas_fingercap_l5,sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +xcmvpp11p5x11p7_m3_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1_raphael +xcmvpp11p5x11p7_polym50p4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_xtop +xcmvpp4p4x4p6_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_raphael +xcmvpp8p6x7p9_m3_lim5shield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_raphael +rf2_xcmvpp11p5x11p7_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +rf2_xcmvpp6p8x6p1_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf2_xcmvpp6p8x6p1_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +rf2_xcmvpp_hd5_atlas_fingercap2_l5,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +rf2_xcmvpp_hd5_atlas_fingercap_l10,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +rf2_xcmvpp_hd5_atlas_fingercap_l20,sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +rf2_xcmvpp_hd5_atlas_fingercap_l40,sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +rf_xcmvpp11p5x11p7_m3m4_m2m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5 +rf_xcmvpp11p5x11p7_polym50p4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +rf_xcmvpp11p5x11p7_polym5modshield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +rf_xcmvpp4p4x4p6_m3_lim5shield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +rf_xcmvpp6p8x6p_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +rf_xcmvpp8p6x7p9_m3_lim5shield_top,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +s8rf2_xcmvpp11p5x11p7_m1m4m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +s8rf2_xcmvpp11p5x11p7_polym4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +s8rf2_xcmvpp11p5x11p7_polym5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +xcmvpp11p5x11p7_lim5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_raphael +xcmvpp6p8x6p1_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +rf2_xcmvpp11p5x11p7_m3_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +rf2_xcmvpp4p4x4p6_fltpolym3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldm3_floatpo +rf2_xcmvpp4p4x4p6_m3_lishield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_top +rf2_xcmvpp6p8x6p_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf2_xcmvpp6p8x6p_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +rf2_xcmvpp_hd5_atlas_fingercap_l5,sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +rf_xcmvpp11p5x11p7_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +rf_xcmvpp6p8x6p1_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf_xcmvpp6p8x6p1_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +rf_xcmvpp_hd5_atlas_fingercap2_l5,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +rf_xcmvpp_hd5_atlas_fingercap_l10,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +rf_xcmvpp_hd5_atlas_fingercap_l20,sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +rf_xcmvpp_hd5_atlas_fingercap_l40,sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +s8rf2_xcmvpp4p4x4p6_m3_lim5shield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +s8rf2_xcmvpp8p6x7p9_m3_lim5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +s8rf2_xcmvpp_hd5_atlas_fingercap2,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_basefingercap2 +s8rf2_xcmvpp_hd5_atlas_wafflecap1,sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +s8rf2_xcmvpp_hd5_atlas_wafflecap2,sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +xcmvpp11p5x11p7_m3_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4_top +xcmvpp4p4x4p6_m3_lishield_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_raphael +xcmvpp6p8x6p_polym4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_raphael +xcmvpp8p6x7p9_m3_lishield_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1_raphael +rf2_xcmvpp11p5x11p7_lishield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_top +rf2_xcmvpp11p5x11p7_m1m2_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_raphael +rf2_xcmvpp11p5x11p7_m1m4_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_raphael +rf2_xcmvpp11p5x11p7_m1m4m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +rf2_xcmvpp11p5x11p7_m3shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_top +rf2_xcmvpp11p5x11p7_m4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +rf2_xcmvpp11p5x11p7_m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +rf2_xcmvpp11p5x11p7_polym4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +rf2_xcmvpp11p5x11p7_polym5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +rf2_xcmvpp6p8x6p1_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +rf2_xcmvppx4_2xnhvnative10x4_top,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +rf_xcmvpp11p5x11p7_m3_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +rf_xcmvpp4p4x4p6_fltpolym3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldm3_floatpo +rf_xcmvpp4p4x4p6_m3_lishield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_top +rf_xcmvpp6p8x6p_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf_xcmvpp6p8x6p_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +rf_xcmvpp_hd5_atlas_fingercap_l5,sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +s8rf2_xcmvpp11p5x11p7_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +s8rf2_xcmvpp4p4x4p6_polym5shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2m3m4_shieldpom5 +s8rf2_xcmvpp6p8x6p1_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +s8rf2_xcmvpp6p8x6p1_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +s8rf2_xcmvpp8p6x7p9_polym5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3m4_shieldpom5 +s8rf2_xcmvpp_hd5_atlas_fingercap,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_basefingercap +s8rf_xcmvpp11p5x11p7_m3_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +xcmvpp11p5x11p7_lishield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_raphael +xcmvpp11p5x11p7_m1m4m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5_top +xcmvpp11p5x11p7_m3shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_raphael +xcmvpp11p5x11p7_m4shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_raphael +xcmvpp11p5x11p7_m5shield_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_raphael +xcmvpp11p5x11p7_polym4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4_top +xcmvpp11p5x11p7_polym5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_top +xcmvpp6p8x6p1_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +xcmvppx4_2xnhvnative10x4_raphael,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvraphael +rf2_xcmvpp11p5x11p7_m3_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +rf2_xcmvpp4p4x4p6_m3_lim5shield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +rf2_xcmvpp6p8x6p_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +rf2_xcmvpp8p6x7p9_m3_lim5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +rf2_xcmvpp_hd5_atlas_fingercap2,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_basefingercap2 +rf2_xcmvpp_hd5_atlas_wafflecap1,sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +rf2_xcmvpp_hd5_atlas_wafflecap2,sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +rf_xcmvpp11p5x11p7_lishield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_top +rf_xcmvpp11p5x11p7_m1m2_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_raphael +rf_xcmvpp11p5x11p7_m1m4_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_raphael +rf_xcmvpp11p5x11p7_m1m4m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +rf_xcmvpp11p5x11p7_m3shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_top +rf_xcmvpp11p5x11p7_m4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +rf_xcmvpp11p5x11p7_m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +rf_xcmvpp11p5x11p7_polym4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +rf_xcmvpp11p5x11p7_polym5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +rf_xcmvpp6p8x6p1_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +rf_xcmvppx4_2xnhvnative10x4_top,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +s8rf2_xcmvpp_hd5_5x1_met5pullin,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +s8rf2_xcmvpp_hd5_5x2_met5pullin,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +xcmvpp11p5x11p7_m3m4_m2m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_shieldm2m5 +xcmvpp11p5x11p7_polym50p4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_x +xcmvpp11p5x11p7_polym5modshield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5_m5pullin +xcmvpp4p4x4p6_m3_lim5shield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4_top +xcmvpp6p8x6p_lim4shield_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_raphael +xcmvpp8p6x7p9_m3_lim5shield_top,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4_top +hrpoly_0p35_l1m1con$$175323180,sky130_fd_pr__res_high_pol1m1_0p35__example_175323180 +hrpoly_0p35_rpl1con$$175321132,sky130_fd_pr__res_high_pol1_0p35__example_175321132 +hrpoly_0p69_l1m1con$$174839852,sky130_fd_pr__res_high_pol1m1_0p69__example_174839852 +hrpoly_0p69_rpl1con$$174837804,sky130_fd_pr__res_high_pol1_0p69__example_174837804 +hrpoly_1p41_l1m1con$$174845996,sky130_fd_pr__res_high_pol1m1_1p41__example_174845996 +hrpoly_1p41_rpl1con$$174843948,sky130_fd_pr__res_high_pol1_1p41__example_174843948 +hrpoly_2p85_l1m1con$$173901868,sky130_fd_pr__res_high_pol1m1_2p85__example_173901868 +hrpoly_2p85_rpl1con$$174850092,sky130_fd_pr__res_high_pol1_2p85__example_174850092 +hrpoly_5p73_l1m1con$$173908012,sky130_fd_pr__res_high_pol1m1_5p73__example_173908012 +hrpoly_5p73_rpl1con$$173905964,sky130_fd_pr__res_high_pol1_5p73__example_173905964 +rf2_xcmvpp11p5x11p7_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +rf2_xcmvpp11p5x11p7_m3_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_raphael +rf2_xcmvpp4p4x4p6_m1m2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_raphael +rf2_xcmvpp4p4x4p6_m1m4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield_raphael +rf2_xcmvpp4p4x4p6_polym5shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2m3m4_shieldpom5 +rf2_xcmvpp6p8x6p1_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +rf2_xcmvpp6p8x6p1_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +rf2_xcmvpp6p8x6p1_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +rf2_xcmvpp8p6x7p9_polym5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3m4_shieldpom5 +rf2_xcmvpp_hd5_atlas_fingercap,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_basefingercap +rf2_xcmvpp_hd5_atlas_wafflecap,sky130_fd_pr__cap_vpp_m1m2m3m4_shieldl1_wafflecap +rf_xcmvpp11p5x11p7_m3_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +rf_xcmvpp4p4x4p6_m3_lim5shield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +rf_xcmvpp6p8x6p_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +rf_xcmvpp8p6x7p9_m3_lim5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +rf_xcmvpp_hd5_atlas_fingercap2,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_basefingercap2 +rf_xcmvpp_hd5_atlas_wafflecap1,sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +rf_xcmvpp_hd5_atlas_wafflecap2,sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +s8rf2_xcmvpp11p5x11p7_m4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +s8rf2_xcmvpp11p5x11p7_m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +s8rf2_xcmvpp6p8x6p1_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +s8rf2_xcmvppx4_2xnhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +s8rf_n20nativevhviso1_withptap,sky130_fd_pr__rf_nfet_20v0_nvt_withptap_iso +s8rf_xcmvpp4p4x4p6_m3_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +s8rf_xcmvpp8p6x7p9_m3_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +xcmvpp11p5x11p7_lim5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5_top +xcmvpp6p8x6p1_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +xcmvpp6p8x6p1_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +xcmvpp_hd5_atlas_fingercap2_l5,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 +xcmvpp_hd5_atlas_fingercap_l10,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap +xcmvpp_hd5_atlas_fingercap_l20,sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap +xcmvpp_hd5_atlas_fingercap_l40,sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap +hrpoly_0p35_l1m1con_175323180,sky130_fd_pr__res_high_pol1m1_0p35__example_175323180 +hrpoly_0p35_rpl1con_175321132,sky130_fd_pr__res_high_pol1_0p35__example_175321132 +hrpoly_0p69_l1m1con_174839852,sky130_fd_pr__res_high_pol1m1_0p69__example_174839852 +hrpoly_0p69_rpl1con_174837804,sky130_fd_pr__res_high_pol1_0p69__example_174837804 +hrpoly_1p41_l1m1con_174845996,sky130_fd_pr__res_high_pol1m1_1p41__example_174845996 +hrpoly_1p41_rpl1con_174843948,sky130_fd_pr__res_high_pol1_1p41__example_174843948 +hrpoly_2p85_l1m1con_173901868,sky130_fd_pr__res_high_pol1m1_2p85__example_173901868 +hrpoly_2p85_rpl1con_174850092,sky130_fd_pr__res_high_pol1_2p85__example_174850092 +hrpoly_5p73_l1m1con_173908012,sky130_fd_pr__res_high_pol1m1_5p73__example_173908012 +hrpoly_5p73_rpl1con_173905964,sky130_fd_pr__res_high_pol1_5p73__example_173905964 +n20vhvisoreverse1_fs_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__fs_discrete +n20vhvisoreverse1_sf_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__sf_discrete +n20vhvisoreverse1_tt_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__tt_discrete +rf2_xcmvpp4p4x4p6_m3_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +rf2_xcmvpp6p8x6p_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +rf2_xcmvpp6p8x6p_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +rf2_xcmvpp6p8x6p_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +rf2_xcmvpp8p6x7p9_m3_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +rf2_xcmvpp_hd5_5x1_met5pullin,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +rf2_xcmvpp_hd5_5x2_met5pullin,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +rf_xcmvpp11p5x11p7_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +rf_xcmvpp11p5x11p7_m3_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_raphael +rf_xcmvpp4p4x4p6_m1m2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_raphael +rf_xcmvpp4p4x4p6_m1m4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield_raphael +rf_xcmvpp4p4x4p6_polym5shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2m3m4_shieldpom5 +rf_xcmvpp6p8x6p1_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +rf_xcmvpp6p8x6p1_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +rf_xcmvpp6p8x6p1_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +rf_xcmvpp8p6x7p9_polym5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3m4_shieldpom5 +rf_xcmvpp_hd5_atlas_fingercap,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_basefingercap +rf_xcmvpp_hd5_atlas_wafflecap,sky130_fd_pr__cap_vpp_m1m2m3m4_shieldl1_wafflecap +s8rf2_xcmvpp_hd5_5x2_testcase,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +s8rf2_xcmvpp_hd5_6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +s8rf_xcmvpp11p5x11p7_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +s8rf_xcmvpp11p5x11p7_m3shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +xcmvpp11p5x11p7_m3_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 +xcmvpp4p4x4p6_fltpolym3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldm3_floatpo +xcmvpp4p4x4p6_m3_lishield_top,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1_top +xcmvpp6p8x6p_m1m4_fom_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +xcmvpp6p8x6p_polym4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4_top +xcmvpp_hd5_atlas_fingercap_l5,sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap +dnwdiode_psub_n20zvtvh1defet,sky130_fd_pr__nfet_20v0_zvt__parasitic__diode_ps2dn__extended_drain +n20nativevhviso1_fs_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__fs_discrete +n20nativevhviso1_sf_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__sf_discrete +n20nativevhviso1_tt_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__tt_discrete +n20vhviso1reverse_subcircuit,sky130_fd_pr__nfet_20v0_reverse_iso__subcircuit +n20vhvisoreverse1_subcircuit,sky130_fd_pr__nfet_20v0_reverse_iso__subcircuit +n20vhvisoreverse_fs_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__fs_discrete +n20vhvisoreverse_sf_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__sf_discrete +n20vhvisoreverse_tt_discrete,sky130_fd_pr__nfet_20v0_reverse_iso__tt_discrete +rf2_xcmvpp11p5x11p7_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +rf2_xcmvpp11p5x11p7_m3shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +rf2_xcmvpp11p5x11p7_m4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +rf2_xcmvpp11p5x11p7_m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +rf2_xcmvpp6p8x6p1_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +rf2_xcmvppx4_2xnhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +rf_xcmvpp4p4x4p6_m3_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +rf_xcmvpp6p8x6p_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +rf_xcmvpp6p8x6p_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +rf_xcmvpp6p8x6p_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +rf_xcmvpp8p6x7p9_m3_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +rf_xcmvpp_hd5_5x1_met5pullin,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +rf_xcmvpp_hd5_5x2_met5pullin,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +s8rf_n20nativevhviso1_noptap,sky130_fd_pr__rf_nfet_20v0_nvt_noptap_iso +s8rf_n20vhv1_esd_hbm_21v_w60,sky130_fd_pr__esd_rf_nfet_20v0_hbm_21vW60p00 +s8rf_n20vhv1_esd_hbm_32v_w60,sky130_fd_pr__esd_rf_nfet_20v0_hbm_32vW60p00 +s8rf_n20vhv1_esd_iec_21v_w60,sky130_fd_pr__esd_rf_nfet_20v0_iec_21vW60p00 +s8rf_n20vhv1_esd_iec_32v_w60,sky130_fd_pr__esd_rf_nfet_20v0_iec_32vW60p00 +s8rf_nlowvt_w1p65_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p15 +s8rf_nlowvt_w1p65_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 +s8rf_nlowvt_w1p65_l0p18_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p18 +s8rf_nlowvt_w1p65_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 +s8rf_nlowvt_w1p65_l0p18_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p18 +s8rf_nlowvt_w1p65_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 +s8rf_nlowvt_w1p65_l0p25_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W1p65L0p25 +s8rf_nlowvt_w1p65_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 +s8rf_nlowvt_w1p65_l0p25_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W1p65L0p25 +s8rf_nshort_w1p65_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 +s8rf_nshort_w1p65_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 +s8rf_nshort_w1p65_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 +s8rf_nshort_w1p65_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 +s8rf_nshort_w1p65_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 +s8rf_nshort_w1p65_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 +s8rf_nshort_w3p0_l0p15_m4_hc,sky130_fd_pr__rf_nfet_01v8_hcM04W3p00L0p15 +s8rf_nshort_w3p0_l0p15_m4_mc,sky130_fd_pr__rf_nfet_01v8_mcM04W3p00L0p15 +s8rf_nshort_w5p0_l0p15_m4_hc,sky130_fd_pr__rf_nfet_01v8_hcM04W5p00L0p15 +s8rf_nshort_w5p0_l0p15_m4_mc,sky130_fd_pr__rf_nfet_01v8_mcM04W5p00L0p15 +s8rf_pshort_w1p65_l0p15_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 +s8rf_pshort_w1p65_l0p15_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 +s8rf_pshort_w1p65_l0p18_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 +s8rf_pshort_w1p65_l0p18_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 +s8rf_pshort_w1p65_l0p25_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 +s8rf_pshort_w1p65_l0p25_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 +s8rf_pshort_w3p0_l0p15_m4_hc,sky130_fd_pr__rf_pfet_01v8_hcM04W3p00L0p15 +s8rf_pshort_w3p0_l0p15_m4_mc,sky130_fd_pr__rf_pfet_01v8_mcM04W3p00L0p15 +s8rf_pshort_w5p0_l0p15_m4_hc,sky130_fd_pr__rf_pfet_01v8_hcM04W5p00L0p15 +s8rf_pshort_w5p0_l0p15_m4_mc,sky130_fd_pr__rf_pfet_01v8_mcM04W5p00L0p15 +xcmvpp11p5x11p7_lishield_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1_top +xcmvpp11p5x11p7_m1m2_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield_raphael +xcmvpp11p5x11p7_m1m4_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield_raphael +xcmvpp11p5x11p7_m1m4m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldm5 +xcmvpp11p5x11p7_m3shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3_top +xcmvpp11p5x11p7_m4shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4_top +xcmvpp11p5x11p7_m5shield_top,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5_top +xcmvpp11p5x11p7_polym4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldpom4 +xcmvpp11p5x11p7_polym5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5 +xcmvpp6p8x6p1_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +xcmvppx4_2xnhvnative10x4_top,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop +dnwdiode_psub_n20nativevhv1,sky130_fd_pr__nfet_20v0_nvt__parasitic__diode_ps2dn +n20nativevhviso1_subcircuit,sky130_fd_pr__nfet_20v0_nvt_iso__subcircuit +n20nativevhviso_fs_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__fs_discrete +n20nativevhviso_sf_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__sf_discrete +n20nativevhviso_tt_discrete,sky130_fd_pr__nfet_20v0_nvt_iso__tt_discrete +n20vhvisoreverse_subcircuit,sky130_fd_pr__nfet_20v0_reverse_iso__subcircuit +nlowvt_rf_base_m2_b_w5_lp18,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 +nlowvt_rf_base_m2_b_w5_lp25,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 +nlowvt_rf_base_m4_b_w5_lp18,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 +nlowvt_rf_base_m4_b_w5_lp25,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 +rf2_xcmvpp11p5x11p7_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_raphael +rf2_xcmvpp6p8x6p_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +rf2_xcmvpp_hd5_5x2_testcase,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +rf2_xcmvpp_hd5_6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +rf_xcmvpp11p5x11p7_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +rf_xcmvpp11p5x11p7_m3shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +rf_xcmvpp11p5x11p7_m4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +rf_xcmvpp11p5x11p7_m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +rf_xcmvpp6p8x6p1_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +rf_xcmvppx4_2xnhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +s8rf_n20nativevhv1_withptap,sky130_fd_pr__rf_nfet_20v0_nvt_withptap +s8rf_nlowvt_w3p0_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p15 +s8rf_nlowvt_w3p0_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 +s8rf_nlowvt_w3p0_l0p18_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p18 +s8rf_nlowvt_w3p0_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 +s8rf_nlowvt_w3p0_l0p18_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p18 +s8rf_nlowvt_w3p0_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 +s8rf_nlowvt_w3p0_l0p25_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W3p00L0p25 +s8rf_nlowvt_w3p0_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 +s8rf_nlowvt_w3p0_l0p25_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W3p00L0p25 +s8rf_nlowvt_w5p0_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 +s8rf_nlowvt_w5p0_l0p15_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p15 +s8rf_nlowvt_w5p0_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 +s8rf_nlowvt_w5p0_l0p15_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p15 +s8rf_nlowvt_w5p0_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 +s8rf_nlowvt_w5p0_l0p18_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p18 +s8rf_nlowvt_w5p0_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 +s8rf_nlowvt_w5p0_l0p18_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p18 +s8rf_nlowvt_w5p0_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 +s8rf_nlowvt_w5p0_l0p25_m2_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM02W5p00L0p25 +s8rf_nlowvt_w5p0_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 +s8rf_nlowvt_w5p0_l0p25_m4_c,sky130_fd_pr__rf_nfet_01v8_lvt_cM04W5p00L0p25 +s8rf_nshort_w3p0_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 +s8rf_nshort_w3p0_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 +s8rf_nshort_w3p0_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 +s8rf_nshort_w3p0_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 +s8rf_nshort_w3p0_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 +s8rf_nshort_w3p0_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 +s8rf_nshort_w5p0_l0p15_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 +s8rf_nshort_w5p0_l0p15_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 +s8rf_nshort_w5p0_l0p18_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 +s8rf_nshort_w5p0_l0p18_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 +s8rf_nshort_w5p0_l0p25_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 +s8rf_nshort_w5p0_l0p25_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 +s8rf_plowvt_w3p0_l0p35_m2_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM02W3p00L0p35 +s8rf_plowvt_w3p0_l0p35_m4_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM04W3p00L0p35 +s8rf_plowvt_w3p0_l0p50_m2_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM02W3p00L0p50 +s8rf_plowvt_w3p0_l0p50_m4_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM04W3p00L0p50 +s8rf_plowvt_w5p0_l0p35_m2_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM02W5p00L0p35 +s8rf_plowvt_w5p0_l0p35_m4_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM04W5p00L0p35 +s8rf_plowvt_w5p0_l0p50_m2_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM02W5p00L0p50 +s8rf_plowvt_w5p0_l0p50_m4_b,sky130_fd_pr__rf_pfet_01v8_lvt_bM04W5p00L0p50 +s8rf_pmedlvt_w0p84_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 +s8rf_pmedlvt_w1p68_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_mvt_aF02W1p68L0p15 +s8rf_pmedlvt_w1p68_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_mvt_aF04W1p68L0p15 +s8rf_pshort_w3p0_l0p15_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 +s8rf_pshort_w3p0_l0p15_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 +s8rf_pshort_w3p0_l0p18_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 +s8rf_pshort_w3p0_l0p18_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 +s8rf_pshort_w3p0_l0p25_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 +s8rf_pshort_w3p0_l0p25_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 +s8rf_pshort_w5p0_l0p15_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 +s8rf_pshort_w5p0_l0p15_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 +s8rf_pshort_w5p0_l0p18_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 +s8rf_pshort_w5p0_l0p18_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 +s8rf_pshort_w5p0_l0p25_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 +s8rf_pshort_w5p0_l0p25_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 +s8rf_xcmvpp1p8x1p8_lishield,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_shieldl1 +s8rf_xcmvpp1p8x1p8_m3shield,sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +s8rf_xcmvpp4p4x4p6_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +s8rf_xcmvpp4p4x4p6_m3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +s8rf_xcmvpp8p6x7p9_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +s8rf_xcmvpp8p6x7p9_m3shield,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +xcmvpp11p5x11p7_m3_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1 +xcmvpp4p4x4p6_m3_lim5shield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 +xcmvpp6p8x6p_lim4shield_top,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4_top +xcmvpp8p6x7p9_m3_lim5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 +xcmvpp_hd5_atlas_fingercap2,sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_basefingercap2 +xcmvpp_hd5_atlas_wafflecap1,sky130_fd_pr__cap_vpp_11p3x11p3_m1m2m3m4_shieldl1_wafflecap +xcmvpp_hd5_atlas_wafflecap2,sky130_fd_pr__cap_vpp_05p9x05p9_m1m2m3m4_shieldl1_wafflecap +dnwdiode_psub_n20nativevhv,sky130_fd_pr__nfet_20v0_nvt__parasitic__diode_ps2dn +n20nativevhviso_subcircuit,sky130_fd_pr__nfet_20v0_nvt_iso__subcircuit +n20vhvisoreverse1_withptap,sky130_fd_pr__nfet_20v0_withptap_reverse_iso +nlowvt_rf_base_b_ttcorreln,sky130_fd_pr__rf_nfet_01v8_lvt_b__tt_correln +nlowvt_rf_base_b_ttcorrelp,sky130_fd_pr__rf_nfet_01v8_lvt_b__tt_correlp +nshort_rf_base_b_ttcorreln,sky130_fd_pr__rf_nfet_01v8_b__tt_correln +nshort_rf_base_b_ttcorrelp,sky130_fd_pr__rf_nfet_01v8_b__tt_correlp +pmedlvt_rf_ttleak_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__tt_leak_discrete +pshort_rf_base_b_ttcorreln,sky130_fd_pr__rf_pfet_01v8_b__tt_correln +pshort_rf_base_b_ttcorrelp,sky130_fd_pr__rf_pfet_01v8_b__tt_correlp +rf2_xcmvpp11p5x11p7_m3_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_top +rf2_xcmvpp1p8x1p8_lishield,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_shieldl1 +rf2_xcmvpp1p8x1p8_m3shield,sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +rf2_xcmvpp4p4x4p6_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +rf2_xcmvpp4p4x4p6_m3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +rf2_xcmvpp6p8x6p1_m1m4_fom,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf2_xcmvpp8p6x7p9_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +rf2_xcmvpp8p6x7p9_m3shield,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +rf_xcmvpp11p5x11p7_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_raphael +rf_xcmvpp6p8x6p_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +rf_xcmvpp_hd5_5x2_testcase,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +rf_xcmvpp_hd5_6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +s8rf2_xcmvpp11p5x11p7_m1m2,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +s8rf2_xcmvpp11p5x11p7_m1m4,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +s8rf_nlowvt_w0p42_l0p15_2f,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 +s8rf_nlowvt_w0p42_l0p15_4f,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p42L0p15 +s8rf_nlowvt_w0p42_l0p15_6f,sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p42L0p15 +s8rf_nlowvt_w0p42_l0p15_8f,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p42L0p15 +s8rf_nlowvt_w0p84_l0p15_2f,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 +s8rf_nlowvt_w0p84_l0p15_4f,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 +s8rf_nlowvt_w0p84_l0p15_6f,sky130_fd_pr__rf_nfet_01v8_lvt_aF06W0p84L0p15 +s8rf_nlowvt_w0p84_l0p15_8f,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 +s8rf_nlowvt_w1p65_l0p15_2f,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_4f,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_6f,sky130_fd_pr__rf_nfet_01v8_lvt_aF06W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_8f,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 +s8rf_nlowvt_w1p65_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 +s8rf_nlowvt_w1p65_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 +s8rf_nlowvt_w1p65_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 +s8rf_nlowvt_w1p65_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 +s8rf_nlowvt_w1p65_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 +s8rf_nshort_w1p65_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 +s8rf_nshort_w1p65_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 +s8rf_nshort_w1p65_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 +s8rf_nshort_w1p65_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 +s8rf_nshort_w1p65_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 +s8rf_nshort_w1p65_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 +s8rf_pshort_w0p84_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 +s8rf_pshort_w0p84_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_aF04W0p84L0p15 +s8rf_pshort_w0p84_l0p15_6f,sky130_fd_pr__rf_pfet_01v8_aF06W0p84L0p15 +s8rf_pshort_w0p84_l0p15_8f,sky130_fd_pr__rf_pfet_01v8_aF08W0p84L0p15 +s8rf_pshort_w1p65_l0p15_m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 +s8rf_pshort_w1p65_l0p15_m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 +s8rf_pshort_w1p65_l0p18_m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 +s8rf_pshort_w1p65_l0p18_m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 +s8rf_pshort_w1p65_l0p25_m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 +s8rf_pshort_w1p65_l0p25_m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 +s8rf_pshort_w1p68_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 +s8rf_pshort_w1p68_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 +s8rf_pshort_w1p68_l0p15_6f,sky130_fd_pr__rf_pfet_01v8_aF06W1p68L0p15 +s8rf_pshort_w1p68_l0p15_8f,sky130_fd_pr__rf_pfet_01v8_aF08W1p68L0p15 +xcmvpp11p5x11p7_lim5shield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5 +xcmvpp11p5x11p7_m3_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_raphael +xcmvpp4p4x4p6_m1m2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_raphael +xcmvpp4p4x4p6_m1m4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield_raphael +xcmvpp4p4x4p6_polym5shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2m3m4_shieldpom5 +xcmvpp6p8x6p1_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +xcmvpp6p8x6p1_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +xcmvpp6p8x6p1_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +xcmvpp8p6x7p9_polym5shield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3m4_shieldpom5 +xcmvpp_hd5_atlas_fingercap,sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_basefingercap +xcmvpp_hd5_atlas_wafflecap,sky130_fd_pr__cap_vpp_m1m2m3m4_shieldl1_wafflecap +n20nativevhv1_fs_discrete,sky130_fd_pr__nfet_20v0_nvt__fs_discrete +n20nativevhv1_sf_discrete,sky130_fd_pr__nfet_20v0_nvt__sf_discrete +n20nativevhv1_tt_discrete,sky130_fd_pr__nfet_20v0_nvt__tt_discrete +n20nativevhviso1_withptap,sky130_fd_pr__nfet_20v0_nvt_withptap_iso +n20vhvisoreverse_withptap,sky130_fd_pr__nfet_20v0_withptap_reverse_iso +pmedlvt_rf_wafer_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__wafer_discrete +rf2_xcmvpp2_nhvnative10x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1nhv +rf_xcmvpp11p5x11p7_m3_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_top +rf_xcmvpp1p8x1p8_lishield,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_shieldl1 +rf_xcmvpp1p8x1p8_m3shield,sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +rf_xcmvpp4p4x4p6_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +rf_xcmvpp4p4x4p6_m3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +rf_xcmvpp6p8x6p1_m1m4_fom,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +rf_xcmvpp8p6x7p9_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +rf_xcmvpp8p6x7p9_m3shield,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +s8rf_nlowvt_w3p0_l0p15_2f,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_4f,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_6f,sky130_fd_pr__rf_nfet_01v8_lvt_aF06W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_8f,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 +s8rf_nlowvt_w3p0_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 +s8rf_nlowvt_w3p0_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 +s8rf_nlowvt_w3p0_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 +s8rf_nlowvt_w3p0_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 +s8rf_nlowvt_w3p0_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 +s8rf_nlowvt_w5p0_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 +s8rf_nlowvt_w5p0_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 +s8rf_nlowvt_w5p0_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 +s8rf_nlowvt_w5p0_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 +s8rf_nlowvt_w5p0_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 +s8rf_nlowvt_w5p0_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 +s8rf_nshort_w3p0_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 +s8rf_nshort_w3p0_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 +s8rf_nshort_w3p0_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 +s8rf_nshort_w3p0_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 +s8rf_nshort_w3p0_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 +s8rf_nshort_w3p0_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 +s8rf_nshort_w5p0_l0p15_m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 +s8rf_nshort_w5p0_l0p15_m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 +s8rf_nshort_w5p0_l0p18_m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 +s8rf_nshort_w5p0_l0p18_m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 +s8rf_nshort_w5p0_l0p25_m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 +s8rf_nshort_w5p0_l0p25_m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 +s8rf_plowvt_w3p0_l0p25_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p25 +s8rf_plowvt_w3p0_l0p25_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p25 +s8rf_plowvt_w3p0_l0p35_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p35 +s8rf_plowvt_w3p0_l0p35_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p35 +s8rf_plowvt_w3p0_l0p50_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W3p00L0p50 +s8rf_plowvt_w3p0_l0p50_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W3p00L0p50 +s8rf_plowvt_w5p0_l0p25_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p25 +s8rf_plowvt_w5p0_l0p25_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p25 +s8rf_plowvt_w5p0_l0p35_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p35 +s8rf_plowvt_w5p0_l0p35_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p35 +s8rf_plowvt_w5p0_l0p50_m2,sky130_fd_pr__rf_pfet_01v8_lvt_aM02W5p00L0p50 +s8rf_plowvt_w5p0_l0p50_m4,sky130_fd_pr__rf_pfet_01v8_lvt_aM04W5p00L0p50 +s8rf_pshort_w2p0_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_aF02W2p00L0p15 +s8rf_pshort_w2p0_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_aF04W2p00L0p15 +s8rf_pshort_w2p0_l0p15_6f,sky130_fd_pr__rf_pfet_01v8_aF06W2p00L0p15 +s8rf_pshort_w3p0_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 +s8rf_pshort_w3p0_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_aF04W3p00L0p15 +s8rf_pshort_w3p0_l0p15_6f,sky130_fd_pr__rf_pfet_01v8_aF06W3p00L0p15 +s8rf_pshort_w3p0_l0p15_m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 +s8rf_pshort_w3p0_l0p15_m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 +s8rf_pshort_w3p0_l0p18_m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 +s8rf_pshort_w3p0_l0p18_m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 +s8rf_pshort_w3p0_l0p25_m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 +s8rf_pshort_w3p0_l0p25_m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 +s8rf_pshort_w5p0_l0p15_2f,sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 +s8rf_pshort_w5p0_l0p15_4f,sky130_fd_pr__rf_pfet_01v8_aF04W5p00L0p15 +s8rf_pshort_w5p0_l0p15_m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 +s8rf_pshort_w5p0_l0p15_m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 +s8rf_pshort_w5p0_l0p18_m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 +s8rf_pshort_w5p0_l0p18_m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 +s8rf_pshort_w5p0_l0p25_m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 +s8rf_pshort_w5p0_l0p25_m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 +xcmvpp4p4x4p6_m3_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1 +xcmvpp6p8x6p_m1m4_raphael,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_raphael +xcmvpp6p8x6p_polym4shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4 +xcmvpp6p8x6p_polym5shield,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3m4_shieldpo_floatm5 +xcmvpp8p6x7p9_m3_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1 +xcmvpp_hd5_5x1_met5pullin,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield_m5pullin +xcmvpp_hd5_5x2_met5pullin,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_m5pullin +n20nativevhv1_subcircuit,sky130_fd_pr__nfet_20v0_nvt__subcircuit +n20nativevhv_fs_discrete,sky130_fd_pr__nfet_20v0_nvt__fs_discrete +n20nativevhv_sf_discrete,sky130_fd_pr__nfet_20v0_nvt__sf_discrete +n20nativevhv_tt_discrete,sky130_fd_pr__nfet_20v0_nvt__tt_discrete +n20nativevhviso_withptap,sky130_fd_pr__nfet_20v0_nvt_withptap_iso +n20vhvisoreverse1_noptap,sky130_fd_pr__nfet_20v0_reverse_noptap_iso +n20zvtvhv1_leak_discrete,sky130_fd_pr__nfet_20v0_zvt__leak_discrete +nlowvt_rf_base_b_tt_leak,sky130_fd_pr__rf_nfet_01v8_lvt_b__tt_leak +nshort_rf_base_b_tt_leak,sky130_fd_pr__rf_nfet_01v8_b__tt_leak +pmedlvt_rf_leak_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__leak_discrete +pshort_rf_base_b_tt_leak,sky130_fd_pr__rf_pfet_01v8_b__tt_leak +rf2_xcmvpp11p5x11p7_m1m2,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +rf2_xcmvpp11p5x11p7_m1m4,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +rf2_xcmvpp11p5x11p7_m3m4,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_noshield +rf_xcmvpp2_nhvnative10x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1nhv +s8rf2_xcmvpp11p5x11p7_m3,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield +s8rf2_xcmvpp4p4x4p6_m1m2,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +s8rf2_xcmvpp_hd5_6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_pol1m1m2m3m4m5_noshield +s8rf_n20vhv1_esd_hbm_21v,sky130_fd_pr__esd_rf_nfet_20v0_hbm_21v +s8rf_n20vhv1_esd_hbm_32v,sky130_fd_pr__esd_rf_nfet_20v0_hbm_32v +s8rf_n20vhv1_esd_iec_21v,sky130_fd_pr__esd_rf_nfet_20v0_iec_21v +s8rf_n20vhv1_esd_iec_32v,sky130_fd_pr__esd_rf_nfet_20v0_iec_32v +s8rf_n20vhviso1_withptap,sky130_fd_pr__rf_nfet_20v0_withptap_iso +s8rf_n20zvtvhv1_withptap,sky130_fd_pr__rf_nfet_20v0_zvt_withptap +s8rf_nhv_w3p0_l0p5_m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 +s8rf_nhv_w5p0_l0p5_m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 +s8rf_nhv_w7p0_l0p5_m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 +s8rf_pmedlvt_w0p84_l0p15,sky130_fd_pr__rf_pfet_01v8_mvt_aW0p84L0p15 +s8rf_pmedlvt_w1p68_l0p15,sky130_fd_pr__rf_pfet_01v8_mvt_aW1p68L0p15 +xcmvpp11p5x11p7_lishield,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_shieldl1 +xcmvpp11p5x11p7_m3shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_shieldpom3 +xcmvpp11p5x11p7_m4shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4 +xcmvpp11p5x11p7_m5shield,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5 +xcmvpp6p8x6p1_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +xcmvppx4_2xnhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +n20nativevhv_subcircuit,sky130_fd_pr__nfet_20v0_nvt__subcircuit +n20nativevhviso1_noptap,sky130_fd_pr__nfet_20v0_nvt_noptap_iso +n20vhv1_esd_hbm_21v_w60,sky130_fd_pr__esd_nfet_20v0_hbm_21vW60p00 +n20vhv1_esd_hbm_32v_w60,sky130_fd_pr__esd_nfet_20v0_hbm_32vW60p00 +n20vhv1_esd_iec_21v_w60,sky130_fd_pr__esd_nfet_20v0_iec_21vW60p00 +n20vhv1_esd_iec_32v_w60,sky130_fd_pr__esd_nfet_20v0_iec_32vW60p00 +n20vhvisoreverse_noptap,sky130_fd_pr__nfet_20v0_reverse_noptap_iso +n20zvtvhv_leak_discrete,sky130_fd_pr__nfet_20v0_zvt__leak_discrete +nhv_rf_base_b_ttcorreln,sky130_fd_pr__rf_nfet_g5v0d10v5_b__tt_correln +nhv_rf_base_b_ttcorrelp,sky130_fd_pr__rf_nfet_g5v0d10v5_b__tt_correlp +nlowvt_w1p65_l0p15_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W1p65L0p15 +nlowvt_w1p65_l0p15_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W1p65L0p15 +nlowvt_w1p65_l0p15_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W1p65L0p15 +nlowvt_w1p65_l0p15_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W1p65L0p15 +nlowvt_w1p65_l0p18_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W1p65L0p18 +nlowvt_w1p65_l0p18_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W1p65L0p18 +nlowvt_w1p65_l0p18_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W1p65L0p18 +nlowvt_w1p65_l0p18_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W1p65L0p18 +nlowvt_w1p65_l0p25_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W1p65L0p25 +nlowvt_w1p65_l0p25_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W1p65L0p25 +nlowvt_w1p65_l0p25_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W1p65L0p25 +nlowvt_w1p65_l0p25_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W1p65L0p25 +nshort_w1p65_l0p15_m2_b,sky130_fd_pr__nfet_01v8_bM02W1p65L0p15 +nshort_w1p65_l0p15_m4_b,sky130_fd_pr__nfet_01v8_bM04W1p65L0p15 +nshort_w1p65_l0p18_m2_b,sky130_fd_pr__nfet_01v8_bM02W1p65L0p18 +nshort_w1p65_l0p18_m4_b,sky130_fd_pr__nfet_01v8_bM04W1p65L0p18 +nshort_w1p65_l0p25_m2_b,sky130_fd_pr__nfet_01v8_bM02W1p65L0p25 +nshort_w1p65_l0p25_m4_b,sky130_fd_pr__nfet_01v8_bM04W1p65L0p25 +nshort_w3p0_l0p15_m4_hc,sky130_fd_pr__nfet_01v8_hcM04W3p00L0p15 +nshort_w3p0_l0p15_m4_mc,sky130_fd_pr__nfet_01v8_mcM04W3p00L0p15 +nshort_w5p0_l0p15_m4_hc,sky130_fd_pr__nfet_01v8_hcM04W5p00L0p15 +nshort_w5p0_l0p15_m4_mc,sky130_fd_pr__nfet_01v8_mcM04W5p00L0p15 +pshort_w1p65_l0p15_m2_b,sky130_fd_pr__pfet_01v8_bM02W1p65L0p15 +pshort_w1p65_l0p15_m4_b,sky130_fd_pr__pfet_01v8_bM04W1p65L0p15 +pshort_w1p65_l0p18_m2_b,sky130_fd_pr__pfet_01v8_bM02W1p65L0p18 +pshort_w1p65_l0p18_m4_b,sky130_fd_pr__pfet_01v8_bM04W1p65L0p18 +pshort_w1p65_l0p25_m2_b,sky130_fd_pr__pfet_01v8_bM02W1p65L0p25 +pshort_w1p65_l0p25_m4_b,sky130_fd_pr__pfet_01v8_bM04W1p65L0p25 +pshort_w3p0_l0p15_m4_hc,sky130_fd_pr__pfet_01v8_hcM04W3p00L0p15 +pshort_w3p0_l0p15_m4_mc,sky130_fd_pr__pfet_01v8_mcM04W3p00L0p15 +pshort_w5p0_l0p15_m4_hc,sky130_fd_pr__pfet_01v8_hcM04W5p00L0p15 +pshort_w5p0_l0p15_m4_mc,sky130_fd_pr__pfet_01v8_mcM04W5p00L0p15 +rf_xcmvpp11p5x11p7_m1m2,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +rf_xcmvpp11p5x11p7_m1m4,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +rf_xcmvpp11p5x11p7_m3m4,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_noshield +s8rf_nhv_w3p0_l0p5_m2_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 +s8rf_nhv_w3p0_l0p5_m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 +s8rf_nhv_w5p0_l0p5_m2_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 +s8rf_nhv_w5p0_l0p5_m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 +s8rf_nhv_w7p0_l0p5_m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 +s8rf_nlowvt_w0p42_l0p15,sky130_fd_pr__rf_nfet_01v8_lvt_aW0p42L0p15 +s8rf_nlowvt_w0p84_l0p15,sky130_fd_pr__rf_nfet_01v8_lvt_aW0p84L0p15 +s8rf_nlowvt_w1p65_l0p15,sky130_fd_pr__rf_nfet_01v8_lvt_aW1p65L0p15 +s8rf_nlowvt_w1p65_l0p18,sky130_fd_pr__rf_nfet_01v8_lvt_aW1p65L0p18 +s8rf_nlowvt_w1p65_l0p25,sky130_fd_pr__rf_nfet_01v8_lvt_aW1p65L0p25 +s8rf_nshort_w1p65_l0p15,sky130_fd_pr__rf_nfet_01v8_aW1p65L0p15 +s8rf_nshort_w1p65_l0p18,sky130_fd_pr__rf_nfet_01v8_aW1p65L0p18 +s8rf_nshort_w1p65_l0p25,sky130_fd_pr__rf_nfet_01v8_aW1p65L0p25 +s8rf_pshort_w0p84_l0p15,sky130_fd_pr__rf_pfet_01v8_aW0p84L0p15 +s8rf_pshort_w1p65_l0p15,sky130_fd_pr__rf_pfet_01v8_aW1p65L0p15 +s8rf_pshort_w1p65_l0p18,sky130_fd_pr__rf_pfet_01v8_aW1p65L0p18 +s8rf_pshort_w1p65_l0p25,sky130_fd_pr__rf_pfet_01v8_aW1p65L0p25 +s8rf_pshort_w1p68_l0p15,sky130_fd_pr__rf_pfet_01v8_aW1p68L0p15 +s8rf_xcmvpp11p5x11p7_m3,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield +xcmvpp11p5x11p7_raphael,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield_raphael +xcmvpp6p8x6p_lim4shield,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4 +xcmvpp_hd5_5x2_testcase,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield_test +xcmvpp_hd5_6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +n20nativevhv1_withptap,sky130_fd_pr__nfet_20v0_nvt_withptap +n20nativevhviso_noptap,sky130_fd_pr__nfet_20v0_nvt_noptap_iso +n20vhv_esd_hbm_21v_w60,sky130_fd_pr__esd_nfet_20v0_hbm_21vW60p00 +n20vhv_esd_hbm_32v_w60,sky130_fd_pr__esd_nfet_20v0_hbm_32vW60p00 +n20vhv_esd_iec_21v_w60,sky130_fd_pr__esd_nfet_20v0_iec_21vW60p00 +n20vhv_esd_iec_32v_w60,sky130_fd_pr__esd_nfet_20v0_iec_32vW60p00 +n20zvtvhv1_fs_discrete,sky130_fd_pr__nfet_20v0_zvt__fs_discrete +n20zvtvhv1_sf_discrete,sky130_fd_pr__nfet_20v0_zvt__sf_discrete +n20zvtvhv1_tt_discrete,sky130_fd_pr__nfet_20v0_zvt__tt_discrete +nlowvt_rf_base_b_wafer,sky130_fd_pr__rf_nfet_01v8_lvt_b__wafer +nlowvt_rf_base_m2_b_w3,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00 +nlowvt_rf_base_m2_b_w5,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00 +nlowvt_rf_base_m4_b_w3,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00 +nlowvt_rf_base_m4_b_w5,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00 +nlowvt_ttleak_discrete,sky130_fd_pr__nfet_01v8_lvt__tt_leak_discrete +nlowvt_w3p0_l0p15_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W3p00L0p15 +nlowvt_w3p0_l0p15_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W3p00L0p15 +nlowvt_w3p0_l0p15_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W3p00L0p15 +nlowvt_w3p0_l0p15_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W3p00L0p15 +nlowvt_w3p0_l0p18_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W3p00L0p18 +nlowvt_w3p0_l0p18_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W3p00L0p18 +nlowvt_w3p0_l0p18_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W3p00L0p18 +nlowvt_w3p0_l0p18_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W3p00L0p18 +nlowvt_w3p0_l0p25_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W3p00L0p25 +nlowvt_w3p0_l0p25_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W3p00L0p25 +nlowvt_w3p0_l0p25_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W3p00L0p25 +nlowvt_w3p0_l0p25_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W3p00L0p25 +nlowvt_w5p0_l0p15_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W5p00L0p15 +nlowvt_w5p0_l0p15_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W5p00L0p15 +nlowvt_w5p0_l0p15_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W5p00L0p15 +nlowvt_w5p0_l0p15_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W5p00L0p15 +nlowvt_w5p0_l0p18_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W5p00L0p18 +nlowvt_w5p0_l0p18_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W5p00L0p18 +nlowvt_w5p0_l0p18_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W5p00L0p18 +nlowvt_w5p0_l0p18_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W5p00L0p18 +nlowvt_w5p0_l0p25_m2_b,sky130_fd_pr__nfet_01v8_lvt_bM02W5p00L0p25 +nlowvt_w5p0_l0p25_m2_c,sky130_fd_pr__nfet_01v8_lvt_cM02W5p00L0p25 +nlowvt_w5p0_l0p25_m4_b,sky130_fd_pr__nfet_01v8_lvt_bM04W5p00L0p25 +nlowvt_w5p0_l0p25_m4_c,sky130_fd_pr__nfet_01v8_lvt_cM04W5p00L0p25 +nshort_rf_base_b_wafer,sky130_fd_pr__rf_nfet_01v8_b__wafer +nshort_rf_base_m2_b_w3,sky130_fd_pr__rf_nfet_01v8_bM02W3p00 +nshort_rf_base_m2_b_w5,sky130_fd_pr__rf_nfet_01v8_bM02W5p00 +nshort_rf_base_m4_b_w3,sky130_fd_pr__rf_nfet_01v8_bM04W3p00 +nshort_rf_base_m4_b_w5,sky130_fd_pr__rf_nfet_01v8_bM04W5p00 +nshort_w3p0_l0p15_m2_b,sky130_fd_pr__nfet_01v8_bM02W3p00L0p15 +nshort_w3p0_l0p15_m4_b,sky130_fd_pr__nfet_01v8_bM04W3p00L0p15 +nshort_w3p0_l0p18_m2_b,sky130_fd_pr__nfet_01v8_bM02W3p00L0p18 +nshort_w3p0_l0p18_m4_b,sky130_fd_pr__nfet_01v8_bM04W3p00L0p18 +nshort_w3p0_l0p25_m2_b,sky130_fd_pr__nfet_01v8_bM02W3p00L0p25 +nshort_w3p0_l0p25_m4_b,sky130_fd_pr__nfet_01v8_bM04W3p00L0p25 +nshort_w5p0_l0p15_m2_b,sky130_fd_pr__nfet_01v8_bM02W5p00L0p15 +nshort_w5p0_l0p15_m4_b,sky130_fd_pr__nfet_01v8_bM04W5p00L0p15 +nshort_w5p0_l0p18_m2_b,sky130_fd_pr__nfet_01v8_bM02W5p00L0p18 +nshort_w5p0_l0p18_m4_b,sky130_fd_pr__nfet_01v8_bM04W5p00L0p18 +nshort_w5p0_l0p25_m2_b,sky130_fd_pr__nfet_01v8_bM02W5p00L0p25 +nshort_w5p0_l0p25_m4_b,sky130_fd_pr__nfet_01v8_bM04W5p00L0p25 +plowvt_ttleak_discrete,sky130_fd_pr__pfet_01v8_lvt__tt_leak_discrete +plowvt_w3p0_l0p35_m2_b,sky130_fd_pr__pfet_01v8_lvt_bM02W3p00L0p35 +plowvt_w3p0_l0p35_m4_b,sky130_fd_pr__pfet_01v8_lvt_bM04W3p00L0p35 +plowvt_w3p0_l0p50_m2_b,sky130_fd_pr__pfet_01v8_lvt_bM02W3p00L0p50 +plowvt_w3p0_l0p50_m4_b,sky130_fd_pr__pfet_01v8_lvt_bM04W3p00L0p50 +plowvt_w5p0_l0p35_m2_b,sky130_fd_pr__pfet_01v8_lvt_bM02W5p00L0p35 +plowvt_w5p0_l0p35_m4_b,sky130_fd_pr__pfet_01v8_lvt_bM04W5p00L0p35 +plowvt_w5p0_l0p50_m2_b,sky130_fd_pr__pfet_01v8_lvt_bM02W5p00L0p50 +plowvt_w5p0_l0p50_m4_b,sky130_fd_pr__pfet_01v8_lvt_bM04W5p00L0p50 +pmedlvt_rf_ff_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__ff_discrete +pmedlvt_rf_fs_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__fs_discrete +pmedlvt_rf_sf_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__sf_discrete +pmedlvt_rf_ss_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__ss_discrete +pmedlvt_rf_tt_discrete,sky130_fd_pr__rf_pfet_01v8_mvt__tt_discrete +pmedlvt_w0p84_l0p15_2f,sky130_fd_pr__pfet_01v8_mvt_aF02W0p84L0p15 +pmedlvt_w1p68_l0p15_2f,sky130_fd_pr__pfet_01v8_mvt_aF02W1p68L0p15 +pmedlvt_w1p68_l0p15_4f,sky130_fd_pr__pfet_01v8_mvt_aF04W1p68L0p15 +pshort_rf_base_b_wafer,sky130_fd_pr__rf_pfet_01v8_b__wafer +pshort_rf_base_m2_b_w3,sky130_fd_pr__rf_pfet_01v8_bM02W3p00 +pshort_rf_base_m2_b_w5,sky130_fd_pr__rf_pfet_01v8_bM02W5p00 +pshort_rf_base_m4_b_w3,sky130_fd_pr__rf_pfet_01v8_bM04W3p00 +pshort_rf_base_m4_b_w5,sky130_fd_pr__rf_pfet_01v8_bM04W5p00 +pshort_ttleak_discrete,sky130_fd_pr__pfet_01v8__tt_leak_discrete +pshort_w3p0_l0p15_m2_b,sky130_fd_pr__pfet_01v8_bM02W3p00L0p15 +pshort_w3p0_l0p15_m4_b,sky130_fd_pr__pfet_01v8_bM04W3p00L0p15 +pshort_w3p0_l0p18_m2_b,sky130_fd_pr__pfet_01v8_bM02W3p00L0p18 +pshort_w3p0_l0p18_m4_b,sky130_fd_pr__pfet_01v8_bM04W3p00L0p18 +pshort_w3p0_l0p25_m2_b,sky130_fd_pr__pfet_01v8_bM02W3p00L0p25 +pshort_w3p0_l0p25_m4_b,sky130_fd_pr__pfet_01v8_bM04W3p00L0p25 +pshort_w5p0_l0p15_m2_b,sky130_fd_pr__pfet_01v8_bM02W5p00L0p15 +pshort_w5p0_l0p15_m4_b,sky130_fd_pr__pfet_01v8_bM04W5p00L0p15 +pshort_w5p0_l0p18_m2_b,sky130_fd_pr__pfet_01v8_bM02W5p00L0p18 +pshort_w5p0_l0p18_m4_b,sky130_fd_pr__pfet_01v8_bM04W5p00L0p18 +pshort_w5p0_l0p25_m2_b,sky130_fd_pr__pfet_01v8_bM02W5p00L0p25 +pshort_w5p0_l0p25_m4_b,sky130_fd_pr__pfet_01v8_bM04W5p00L0p25 +rf2_xcmvpp11p5x11p7_m3,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield +rf2_xcmvpp4p4x4p6_m1m2,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +rf2_xcmvpp4p4x4p6_m1m4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield +rf2_xcmvpp6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +rf2_xcmvpp_hd5_6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp4p4x4p6_m3,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_noshield +s8rf2_xcmvpp8p6x7p9_m3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_noshield +s8rf_n20nativevhv1_aup,sky130_fd_pr__rf_nfet_20v0_nvt_aup +s8rf_n20vhviso1_noptap,sky130_fd_pr__rf_nfet_20v0_noptap_iso +s8rf_nhv_w3p0_l0p5_m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 +s8rf_nhv_w5p0_l0p5_m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 +s8rf_nhv_w7p0_l0p5_m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 +s8rf_nlowvt_w3p0_l0p15,sky130_fd_pr__rf_nfet_01v8_lvt_aW3p00L0p15 +s8rf_nlowvt_w3p0_l0p18,sky130_fd_pr__rf_nfet_01v8_lvt_aW3p00L0p18 +s8rf_nlowvt_w3p0_l0p25,sky130_fd_pr__rf_nfet_01v8_lvt_aW3p00L0p25 +s8rf_nlowvt_w5p0_l0p15,sky130_fd_pr__rf_nfet_01v8_lvt_aW5p00L0p15 +s8rf_nlowvt_w5p0_l0p18,sky130_fd_pr__rf_nfet_01v8_lvt_aW5p00L0p18 +s8rf_nlowvt_w5p0_l0p25,sky130_fd_pr__rf_nfet_01v8_lvt_aW5p00L0p25 +s8rf_nshort_w3p0_l0p15,sky130_fd_pr__rf_nfet_01v8_aW3p00L0p15 +s8rf_nshort_w3p0_l0p18,sky130_fd_pr__rf_nfet_01v8_aW3p00L0p18 +s8rf_nshort_w3p0_l0p25,sky130_fd_pr__rf_nfet_01v8_aW3p00L0p25 +s8rf_nshort_w5p0_l0p15,sky130_fd_pr__rf_nfet_01v8_aW5p00L0p15 +s8rf_nshort_w5p0_l0p18,sky130_fd_pr__rf_nfet_01v8_aW5p00L0p18 +s8rf_nshort_w5p0_l0p25,sky130_fd_pr__rf_nfet_01v8_aW5p00L0p25 +s8rf_plowvt_w3p0_l0p25,sky130_fd_pr__rf_pfet_01v8_lvt_aW3p00L0p25 +s8rf_plowvt_w3p0_l0p35,sky130_fd_pr__rf_pfet_01v8_lvt_aW3p00L0p35 +s8rf_plowvt_w3p0_l0p50,sky130_fd_pr__rf_pfet_01v8_lvt_aW3p00L0p50 +s8rf_plowvt_w5p0_l0p25,sky130_fd_pr__rf_pfet_01v8_lvt_aW5p00L0p25 +s8rf_plowvt_w5p0_l0p35,sky130_fd_pr__rf_pfet_01v8_lvt_aW5p00L0p35 +s8rf_plowvt_w5p0_l0p50,sky130_fd_pr__rf_pfet_01v8_lvt_aW5p00L0p50 +s8rf_pshort_w2p0_l0p15,sky130_fd_pr__rf_pfet_01v8_aW2p00L0p15 +s8rf_pshort_w3p0_l0p15,sky130_fd_pr__rf_pfet_01v8_aW3p00L0p15 +s8rf_pshort_w3p0_l0p18,sky130_fd_pr__rf_pfet_01v8_aW3p00L0p18 +s8rf_pshort_w3p0_l0p25,sky130_fd_pr__rf_pfet_01v8_aW3p00L0p25 +s8rf_pshort_w5p0_l0p15,sky130_fd_pr__rf_pfet_01v8_aW5p00L0p15 +s8rf_pshort_w5p0_l0p18,sky130_fd_pr__rf_pfet_01v8_aW5p00L0p18 +s8rf_pshort_w5p0_l0p25,sky130_fd_pr__rf_pfet_01v8_aW5p00L0p25 +xcmvpp11p5x11p7_m3_top,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield_top +xcmvpp1p8x1p8_lishield,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_shieldl1 +xcmvpp1p8x1p8_m3shield,sky130_fd_pr__cap_vpp_03p9x03p9_m1m2_shieldl1_floatm3 +xcmvpp4p4x4p6_lishield,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_shieldl1 +xcmvpp4p4x4p6_m3shield,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldpo_floatm3 +xcmvpp6p8x6p1_m1m4_fom,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield_fom +xcmvpp8p6x7p9_lishield,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_shieldl1 +xcmvpp8p6x7p9_m3shield,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldpo_floatm3 +xesd_ndiode_h_dnwl_100,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_100__parasitic__diode_pw2dn +xesd_ndiode_h_dnwl_200,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_200__parasitic__diode_pw2dn +xesd_ndiode_h_dnwl_300,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_300__parasitic__diode_pw2dn +hrpoly_0p35_175320108,sky130_fd_pr__res_high_po_0p35__example_175320108 +hrpoly_0p69_174836780,sky130_fd_pr__res_high_po_0p69__example_174836780 +hrpoly_1p41_174842924,sky130_fd_pr__res_high_po_1p41__example_174842924 +hrpoly_2p85_174849068,sky130_fd_pr__res_high_po_2p85__example_174849068 +hrpoly_5p73_173904940,sky130_fd_pr__res_high_po_5p73__example_173904940 +n20nativevhv_withptap,sky130_fd_pr__nfet_20v0_nvt_withptap +n20vhv_wafer_discrete,sky130_fd_pr__nfet_20v0__wafer_discrete +n20vhviso1_subcircuit,sky130_fd_pr__nfet_20v0_iso__subcircuit +n20zvtvhv1_subcircuit,sky130_fd_pr__nfet_20v0_zvt__subcircuit +n20zvtvhv_fs_discrete,sky130_fd_pr__nfet_20v0_zvt__fs_discrete +n20zvtvhv_sf_discrete,sky130_fd_pr__nfet_20v0_zvt__sf_discrete +n20zvtvhv_tt_discrete,sky130_fd_pr__nfet_20v0_zvt__tt_discrete +nhv_rf_base_b_tt_leak,sky130_fd_pr__rf_nfet_g5v0d10v5_b__tt_leak +nlowvt_rf_base_b_leak,sky130_fd_pr__rf_nfet_01v8_lvt_b__leak +nlowvt_w0p42_l0p15_2f,sky130_fd_pr__nfet_01v8_lvt_aF02W0p42L0p15 +nlowvt_w0p42_l0p15_4f,sky130_fd_pr__nfet_01v8_lvt_aF04W0p42L0p15 +nlowvt_w0p42_l0p15_6f,sky130_fd_pr__nfet_01v8_lvt_aF06W0p42L0p15 +nlowvt_w0p42_l0p15_8f,sky130_fd_pr__nfet_01v8_lvt_aF08W0p42L0p15 +nlowvt_w0p84_l0p15_2f,sky130_fd_pr__nfet_01v8_lvt_aF02W0p84L0p15 +nlowvt_w0p84_l0p15_4f,sky130_fd_pr__nfet_01v8_lvt_aF04W0p84L0p15 +nlowvt_w0p84_l0p15_6f,sky130_fd_pr__nfet_01v8_lvt_aF06W0p84L0p15 +nlowvt_w0p84_l0p15_8f,sky130_fd_pr__nfet_01v8_lvt_aF08W0p84L0p15 +nlowvt_w1p65_l0p15_2f,sky130_fd_pr__nfet_01v8_lvt_aF02W1p65L0p15 +nlowvt_w1p65_l0p15_4f,sky130_fd_pr__nfet_01v8_lvt_aF04W1p65L0p15 +nlowvt_w1p65_l0p15_6f,sky130_fd_pr__nfet_01v8_lvt_aF06W1p65L0p15 +nlowvt_w1p65_l0p15_8f,sky130_fd_pr__nfet_01v8_lvt_aF08W1p65L0p15 +nlowvt_w1p65_l0p15_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W1p65L0p15 +nlowvt_w1p65_l0p15_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W1p65L0p15 +nlowvt_w1p65_l0p18_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W1p65L0p18 +nlowvt_w1p65_l0p18_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W1p65L0p18 +nlowvt_w1p65_l0p25_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W1p65L0p25 +nlowvt_w1p65_l0p25_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W1p65L0p25 +nshort_rf_base_b_leak,sky130_fd_pr__rf_nfet_01v8_b__leak +nshort_w1p65_l0p15_m2,sky130_fd_pr__nfet_01v8_aM02W1p65L0p15 +nshort_w1p65_l0p15_m4,sky130_fd_pr__nfet_01v8_aM04W1p65L0p15 +nshort_w1p65_l0p18_m2,sky130_fd_pr__nfet_01v8_aM02W1p65L0p18 +nshort_w1p65_l0p18_m4,sky130_fd_pr__nfet_01v8_aM04W1p65L0p18 +nshort_w1p65_l0p25_m2,sky130_fd_pr__nfet_01v8_aM02W1p65L0p25 +nshort_w1p65_l0p25_m4,sky130_fd_pr__nfet_01v8_aM04W1p65L0p25 +pshort_rf_base_b_leak,sky130_fd_pr__rf_pfet_01v8_b__leak +pshort_w0p84_l0p15_2f,sky130_fd_pr__pfet_01v8_aF02W0p84L0p15 +pshort_w0p84_l0p15_4f,sky130_fd_pr__pfet_01v8_aF04W0p84L0p15 +pshort_w0p84_l0p15_6f,sky130_fd_pr__pfet_01v8_aF06W0p84L0p15 +pshort_w0p84_l0p15_8f,sky130_fd_pr__pfet_01v8_aF08W0p84L0p15 +pshort_w1p65_l0p15_m2,sky130_fd_pr__pfet_01v8_aM02W1p65L0p15 +pshort_w1p65_l0p15_m4,sky130_fd_pr__pfet_01v8_aM04W1p65L0p15 +pshort_w1p65_l0p18_m2,sky130_fd_pr__pfet_01v8_aM02W1p65L0p18 +pshort_w1p65_l0p18_m4,sky130_fd_pr__pfet_01v8_aM04W1p65L0p18 +pshort_w1p65_l0p25_m2,sky130_fd_pr__pfet_01v8_aM02W1p65L0p25 +pshort_w1p65_l0p25_m4,sky130_fd_pr__pfet_01v8_aM04W1p65L0p25 +pshort_w1p68_l0p15_2f,sky130_fd_pr__pfet_01v8_aF02W1p68L0p15 +pshort_w1p68_l0p15_4f,sky130_fd_pr__pfet_01v8_aF04W1p68L0p15 +pshort_w1p68_l0p15_6f,sky130_fd_pr__pfet_01v8_aF06W1p68L0p15 +pshort_w1p68_l0p15_8f,sky130_fd_pr__pfet_01v8_aF08W1p68L0p15 +rf2_vpp_nhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv__base +rf_xcmvpp11p5x11p7_m3,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield +rf_xcmvpp4p4x4p6_m1m2,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +rf_xcmvpp4p4x4p6_m1m4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield +rf_xcmvpp6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +rf_xcmvpp_hd5_6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp11p5x11p7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +s8rf_n20nativevhviso1,sky130_fd_pr__rf_nfet_20v0_nvt_iso +s8rf_n20vhv1_withptap,sky130_fd_pr__rf_nfet_20v0_withptap +s8rf_nhv_w3p0_l0p5_m2,sky130_fd_pr__rf_nfet_g5v0d10v5_aM02W3p00L0p50 +s8rf_nhv_w3p0_l0p5_m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 +s8rf_nhv_w5p0_l0p5_m2,sky130_fd_pr__rf_nfet_g5v0d10v5_aM02W5p00L0p50 +s8rf_nhv_w5p0_l0p5_m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 +s8rf_nhv_w7p0_l0p5_m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 +s8rf_p20vhv1_withptap,sky130_fd_pr__rf_pfet_20v0_withptap +s8rf_xcmvpp4p4x4p6_m3,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_noshield +s8rf_xcmvpp8p6x7p9_m3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_noshield +xcmvpp2_nhvnative10x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1nhv +n20vhv_leak_discrete,sky130_fd_pr__nfet_20v0__leak_discrete +n20vhviso_subcircuit,sky130_fd_pr__nfet_20v0_iso__subcircuit +n20vhvisoreverse1_fs,sky130_fd_pr__nfet_20v0_reverse_iso__fs +n20vhvisoreverse1_sf,sky130_fd_pr__nfet_20v0_reverse_iso__sf +n20vhvisoreverse1_tt,sky130_fd_pr__nfet_20v0_reverse_iso__tt +n20zvtvhv_subcircuit,sky130_fd_pr__nfet_20v0_zvt__subcircuit +nhv_rf_base_m10_b_w5,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00 +nhv_rf_base_m10_b_w7,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00 +nlowvt_leak_discrete,sky130_fd_pr__nfet_01v8_lvt__leak_discrete +nlowvt_w3p0_l0p15_2f,sky130_fd_pr__nfet_01v8_lvt_aF02W3p00L0p15 +nlowvt_w3p0_l0p15_4f,sky130_fd_pr__nfet_01v8_lvt_aF04W3p00L0p15 +nlowvt_w3p0_l0p15_6f,sky130_fd_pr__nfet_01v8_lvt_aF06W3p00L0p15 +nlowvt_w3p0_l0p15_8f,sky130_fd_pr__nfet_01v8_lvt_aF08W3p00L0p15 +nlowvt_w3p0_l0p15_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W3p00L0p15 +nlowvt_w3p0_l0p15_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W3p00L0p15 +nlowvt_w3p0_l0p18_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W3p00L0p18 +nlowvt_w3p0_l0p18_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W3p00L0p18 +nlowvt_w3p0_l0p25_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W3p00L0p25 +nlowvt_w3p0_l0p25_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W3p00L0p25 +nlowvt_w5p0_l0p15_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W5p00L0p15 +nlowvt_w5p0_l0p15_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W5p00L0p15 +nlowvt_w5p0_l0p18_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W5p00L0p18 +nlowvt_w5p0_l0p18_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W5p00L0p18 +nlowvt_w5p0_l0p25_m2,sky130_fd_pr__nfet_01v8_lvt_aM02W5p00L0p25 +nlowvt_w5p0_l0p25_m4,sky130_fd_pr__nfet_01v8_lvt_aM04W5p00L0p25 +nshort_w3p0_l0p15_m2,sky130_fd_pr__nfet_01v8_aM02W3p00L0p15 +nshort_w3p0_l0p15_m4,sky130_fd_pr__nfet_01v8_aM04W3p00L0p15 +nshort_w3p0_l0p18_m2,sky130_fd_pr__nfet_01v8_aM02W3p00L0p18 +nshort_w3p0_l0p18_m4,sky130_fd_pr__nfet_01v8_aM04W3p00L0p18 +nshort_w3p0_l0p25_m2,sky130_fd_pr__nfet_01v8_aM02W3p00L0p25 +nshort_w3p0_l0p25_m4,sky130_fd_pr__nfet_01v8_aM04W3p00L0p25 +nshort_w5p0_l0p15_m2,sky130_fd_pr__nfet_01v8_aM02W5p00L0p15 +nshort_w5p0_l0p15_m4,sky130_fd_pr__nfet_01v8_aM04W5p00L0p15 +nshort_w5p0_l0p18_m2,sky130_fd_pr__nfet_01v8_aM02W5p00L0p18 +nshort_w5p0_l0p18_m4,sky130_fd_pr__nfet_01v8_aM04W5p00L0p18 +nshort_w5p0_l0p25_m2,sky130_fd_pr__nfet_01v8_aM02W5p00L0p25 +nshort_w5p0_l0p25_m4,sky130_fd_pr__nfet_01v8_aM04W5p00L0p25 +nvhv_ttleak_discrete,sky130_fd_pr__nfet_g5v0d16v0__tt_leak_discrete +p20vhv_leak_discrete,sky130_fd_pr__pfet_20v0__leak_discrete +plowvt_leak_discrete,sky130_fd_pr__pfet_01v8_lvt__leak_discrete +plowvt_w3p0_l0p25_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W3p00L0p25 +plowvt_w3p0_l0p25_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W3p00L0p25 +plowvt_w3p0_l0p35_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W3p00L0p35 +plowvt_w3p0_l0p35_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W3p00L0p35 +plowvt_w3p0_l0p50_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W3p00L0p50 +plowvt_w3p0_l0p50_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W3p00L0p50 +plowvt_w5p0_l0p25_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W5p00L0p25 +plowvt_w5p0_l0p25_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W5p00L0p25 +plowvt_w5p0_l0p35_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W5p00L0p35 +plowvt_w5p0_l0p35_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W5p00L0p35 +plowvt_w5p0_l0p50_m2,sky130_fd_pr__pfet_01v8_lvt_aM02W5p00L0p50 +plowvt_w5p0_l0p50_m4,sky130_fd_pr__pfet_01v8_lvt_aM04W5p00L0p50 +pmedlvtrf_1p68p15nf2,sky130_fd_pr__rf_pfet_01v8_mvt_aF02W1p68L0p15 +pmedlvtrf_1p68p15nf4,sky130_fd_pr__rf_pfet_01v8_mvt_aF04W1p68L0p15 +pshort_leak_discrete,sky130_fd_pr__pfet_01v8__leak_discrete +pshort_w2p0_l0p15_2f,sky130_fd_pr__pfet_01v8_aF02W2p00L0p15 +pshort_w2p0_l0p15_4f,sky130_fd_pr__pfet_01v8_aF04W2p00L0p15 +pshort_w2p0_l0p15_6f,sky130_fd_pr__pfet_01v8_aF06W2p00L0p15 +pshort_w3p0_l0p15_2f,sky130_fd_pr__pfet_01v8_aF02W3p00L0p15 +pshort_w3p0_l0p15_4f,sky130_fd_pr__pfet_01v8_aF04W3p00L0p15 +pshort_w3p0_l0p15_6f,sky130_fd_pr__pfet_01v8_aF06W3p00L0p15 +pshort_w3p0_l0p15_m2,sky130_fd_pr__pfet_01v8_aM02W3p00L0p15 +pshort_w3p0_l0p15_m4,sky130_fd_pr__pfet_01v8_aM04W3p00L0p15 +pshort_w3p0_l0p18_m2,sky130_fd_pr__pfet_01v8_aM02W3p00L0p18 +pshort_w3p0_l0p18_m4,sky130_fd_pr__pfet_01v8_aM04W3p00L0p18 +pshort_w3p0_l0p25_m2,sky130_fd_pr__pfet_01v8_aM02W3p00L0p25 +pshort_w3p0_l0p25_m4,sky130_fd_pr__pfet_01v8_aM04W3p00L0p25 +pshort_w5p0_l0p15_2f,sky130_fd_pr__pfet_01v8_aF02W5p00L0p15 +pshort_w5p0_l0p15_4f,sky130_fd_pr__pfet_01v8_aF04W5p00L0p15 +pshort_w5p0_l0p15_m2,sky130_fd_pr__pfet_01v8_aM02W5p00L0p15 +pshort_w5p0_l0p15_m4,sky130_fd_pr__pfet_01v8_aM04W5p00L0p15 +pshort_w5p0_l0p18_m2,sky130_fd_pr__pfet_01v8_aM02W5p00L0p18 +pshort_w5p0_l0p18_m4,sky130_fd_pr__pfet_01v8_aM04W5p00L0p18 +pshort_w5p0_l0p25_m2,sky130_fd_pr__pfet_01v8_aM02W5p00L0p25 +pshort_w5p0_l0p25_m4,sky130_fd_pr__pfet_01v8_aM04W5p00L0p25 +rf2_s8blref_xind4_01,sky130_fd_pr__ind_01_04 +rf2_xcmvpp4p4x4p6_m3,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_noshield +rf2_xcmvpp8p6x7p9_m3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_noshield +rf_vpp_nhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv__base +s8rf2_xcmvpp_hd5_1x1,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_1x2,sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_2x1,sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_2x2,sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_3x1,sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_3x2,sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_4x1,sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_4x2,sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_5x1,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +s8rf2_xcmvpp_hd5_5x2,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +s8rf_n20vhv1_esd_hbm,sky130_fd_pr__esd_rf_nfet_20v0_hbm +s8rf_n20vhv1_esd_iec,sky130_fd_pr__esd_rf_nfet_20v0_iec +s8rf_xcmvpp11p5x11p7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +xcmvpp11p5x11p7_m1m2,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield +xcmvpp11p5x11p7_m1m4,sky130_fd_pr__cap_vpp_11p5x11p7_m1m4_noshield +xcmvpp11p5x11p7_m3m4,sky130_fd_pr__cap_vpp_11p5x11p7_m3m4_noshield +dnwdiode_psub_defet,sky130_fd_pr__model__parasitic__diode_ps2dn__extended_drain +hrpoly_0p35_l1m1con,sky130_fd_pr__res_high_pol1m1_0p35 +hrpoly_0p35_rpl1con,sky130_fd_pr__res_high_pol1_0p35 +hrpoly_0p69_l1m1con,sky130_fd_pr__res_high_pol1m1_0p69 +hrpoly_0p69_rpl1con,sky130_fd_pr__res_high_pol1_0p69 +hrpoly_1p41_l1m1con,sky130_fd_pr__res_high_pol1m1_1p41 +hrpoly_1p41_rpl1con,sky130_fd_pr__res_high_pol1_1p41 +hrpoly_2p85_l1m1con,sky130_fd_pr__res_high_pol1m1_2p85 +hrpoly_2p85_rpl1con,sky130_fd_pr__res_high_pol1_2p85 +hrpoly_5p73_l1m1con,sky130_fd_pr__res_high_pol1m1_5p73 +hrpoly_5p73_rpl1con,sky130_fd_pr__res_high_pol1_5p73 +n20nativevhviso1_fs,sky130_fd_pr__nfet_20v0_nvt_iso__fs +n20nativevhviso1_sf,sky130_fd_pr__nfet_20v0_nvt_iso__sf +n20nativevhviso1_tt,sky130_fd_pr__nfet_20v0_nvt_iso__tt +n20vhv1_esd_hbm_21v,sky130_fd_pr__esd_nfet_20v0_hbm_21v +n20vhv1_esd_hbm_32v,sky130_fd_pr__esd_nfet_20v0_hbm_32v +n20vhv1_esd_iec_21v,sky130_fd_pr__esd_nfet_20v0_iec_21v +n20vhv1_esd_iec_32v,sky130_fd_pr__esd_nfet_20v0_iec_32v +n20vhviso1_withptap,sky130_fd_pr__nfet_20v0_withptap_iso +n20vhvisoreverse_fs,sky130_fd_pr__nfet_20v0_reverse_iso__fs +n20vhvisoreverse_sf,sky130_fd_pr__nfet_20v0_reverse_iso__sf +n20vhvisoreverse_tt,sky130_fd_pr__nfet_20v0_reverse_iso__tt +n20zvtvhv1_withptap,sky130_fd_pr__nfet_20v0_zvt_withptap +nhv_rf_base_b_wafer,sky130_fd_pr__rf_nfet_g5v0d10v5_b__wafer +nhv_rf_base_m2_b_w5,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00 +nhv_rf_base_m4_b_w5,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00 +nhv_rf_base_m4_b_w7,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00 +nhv_ttleak_discrete,sky130_fd_pr__nfet_g5v0d10v5__tt_leak_discrete +nhv_w3p0_l0p5_m10_b,sky130_fd_pr__nfet_g5v0d10v5_bM10W3p00L0p50 +nhv_w5p0_l0p5_m10_b,sky130_fd_pr__nfet_g5v0d10v5_bM10W5p00L0p50 +nhv_w7p0_l0p5_m10_b,sky130_fd_pr__nfet_g5v0d10v5_bM10W7p00L0p50 +nhvnative_ttcorreln,sky130_fd_pr__nfet_05v0_nvt__tt_correln +nhvnative_ttcorrelp,sky130_fd_pr__nfet_05v0_nvt__tt_correlp +nlowvt_rf_base_b_ff,sky130_fd_pr__rf_nfet_01v8_lvt_b__ff +nlowvt_rf_base_b_fs,sky130_fd_pr__rf_nfet_01v8_lvt_b__fs +nlowvt_rf_base_b_sf,sky130_fd_pr__rf_nfet_01v8_lvt_b__sf +nlowvt_rf_base_b_ss,sky130_fd_pr__rf_nfet_01v8_lvt_b__ss +nlowvt_rf_base_b_tt,sky130_fd_pr__rf_nfet_01v8_lvt_b__tt +nlowvt_rf_base_m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02 +nlowvt_rf_base_m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04 +nshort_rf_base_b_ff,sky130_fd_pr__rf_nfet_01v8_b__ff +nshort_rf_base_b_fs,sky130_fd_pr__rf_nfet_01v8_b__fs +nshort_rf_base_b_sf,sky130_fd_pr__rf_nfet_01v8_b__sf +nshort_rf_base_b_ss,sky130_fd_pr__rf_nfet_01v8_b__ss +nshort_rf_base_b_tt,sky130_fd_pr__rf_nfet_01v8_b__tt +nshort_rf_base_m2_b,sky130_fd_pr__rf_nfet_01v8_bM02 +nshort_rf_base_m4_b,sky130_fd_pr__rf_nfet_01v8_bM04 +ntvnative_ttcorreln,sky130_fd_pr__nfet_03v3_nvt__tt_correln +ntvnative_ttcorrelp,sky130_fd_pr__nfet_03v3_nvt__tt_correlp +phv_ttleak_discrete,sky130_fd_pr__pfet_g5v0d10v5__tt_leak_discrete +pmedlvt_w0p84_l0p15,sky130_fd_pr__pfet_01v8_mvt_aW0p84L0p15 +pmedlvt_w1p68_l0p15,sky130_fd_pr__pfet_01v8_mvt_aW1p68L0p15 +pmedlvtrf_p84p15nf2,sky130_fd_pr__rf_pfet_01v8_mvt_aF02W0p84L0p15 +pshort_rf_base_b_ff,sky130_fd_pr__rf_pfet_01v8_b__ff +pshort_rf_base_b_fs,sky130_fd_pr__rf_pfet_01v8_b__fs +pshort_rf_base_b_sf,sky130_fd_pr__rf_pfet_01v8_b__sf +pshort_rf_base_b_ss,sky130_fd_pr__rf_pfet_01v8_b__ss +pshort_rf_base_b_tt,sky130_fd_pr__rf_pfet_01v8_b__tt +pshort_rf_base_m2_b,sky130_fd_pr__rf_pfet_01v8_bM02 +pshort_rf_base_m4_b,sky130_fd_pr__rf_pfet_01v8_bM04 +rf2_xcmvpp11p5x11p7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +rf2_xcmvpp1_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1raphael +rf2_xcmvpp1_subcell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1subcell +rf2_xcmvpp2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1raphael +rf2_xcmvpp2_subcell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1subcell +rf2_xcmvpp3_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_raphael +rf2_xcmvpp4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2raphael +rf2_xcmvpp5_raphael,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_raphael +rf_s8blref_xind4_01,sky130_fd_pr__ind_01_04 +rf_xcmvpp4p4x4p6_m3,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_noshield +rf_xcmvpp8p6x7p9_m3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_noshield +s8rf2_xcmvpp4p4x4p6,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +s8rf2_xcmvpp6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +s8rf2_xcmvpp8p6x7p9,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +s8rf_npn_1x1_2p0_hv,sky130_fd_pr__rf_npn_11v0_W1p00L1p00 +n20nativevhviso_fs,sky130_fd_pr__nfet_20v0_nvt_iso__fs +n20nativevhviso_sf,sky130_fd_pr__nfet_20v0_nvt_iso__sf +n20nativevhviso_tt,sky130_fd_pr__nfet_20v0_nvt_iso__tt +n20vhv1_subcircuit,sky130_fd_pr__nfet_20v0__subcircuit +n20vhv_esd_hbm_21v,sky130_fd_pr__esd_nfet_20v0_hbm_21v +n20vhv_esd_hbm_32v,sky130_fd_pr__esd_nfet_20v0_hbm_32v +n20vhv_esd_iec_21v,sky130_fd_pr__esd_nfet_20v0_iec_21v +n20vhv_esd_iec_32v,sky130_fd_pr__esd_nfet_20v0_iec_32v +n20vhv_fs_discrete,sky130_fd_pr__nfet_20v0__fs_discrete +n20vhv_sf_discrete,sky130_fd_pr__nfet_20v0__sf_discrete +n20vhv_tt_discrete,sky130_fd_pr__nfet_20v0__tt_discrete +n20vhviso_withptap,sky130_fd_pr__nfet_20v0_withptap_iso +n20zvtvhv_withptap,sky130_fd_pr__nfet_20v0_zvt_withptap +nhv_rf_base_b_leak,sky130_fd_pr__rf_nfet_g5v0d10v5_b__leak +nhv_w3p0_l0p5_m2_b,sky130_fd_pr__nfet_g5v0d10v5_bM02W3p00L0p50 +nhv_w3p0_l0p5_m4_b,sky130_fd_pr__nfet_g5v0d10v5_bM04W3p00L0p50 +nhv_w5p0_l0p5_m2_b,sky130_fd_pr__nfet_g5v0d10v5_bM02W5p00L0p50 +nhv_w5p0_l0p5_m4_b,sky130_fd_pr__nfet_g5v0d10v5_bM04W5p00L0p50 +nhv_w7p0_l0p5_m4_b,sky130_fd_pr__nfet_g5v0d10v5_bM04W7p00L0p50 +nlowvt_ff_discrete,sky130_fd_pr__nfet_01v8_lvt__ff_discrete +nlowvt_fs_discrete,sky130_fd_pr__nfet_01v8_lvt__fs_discrete +nlowvt_sf_discrete,sky130_fd_pr__nfet_01v8_lvt__sf_discrete +nlowvt_ss_discrete,sky130_fd_pr__nfet_01v8_lvt__ss_discrete +nlowvt_tt_discrete,sky130_fd_pr__nfet_01v8_lvt__tt_discrete +nlowvt_w0p42_l0p15,sky130_fd_pr__nfet_01v8_lvt_aW0p42L0p15 +nlowvt_w0p84_l0p15,sky130_fd_pr__nfet_01v8_lvt_aW0p84L0p15 +nlowvt_w1p65_l0p15,sky130_fd_pr__nfet_01v8_lvt_aW1p65L0p15 +nlowvt_w1p65_l0p18,sky130_fd_pr__nfet_01v8_lvt_aW1p65L0p18 +nlowvt_w1p65_l0p25,sky130_fd_pr__nfet_01v8_lvt_aW1p65L0p25 +nshort_w1p65_l0p15,sky130_fd_pr__nfet_01v8_aW1p65L0p15 +nshort_w1p65_l0p18,sky130_fd_pr__nfet_01v8_aW1p65L0p18 +nshort_w1p65_l0p25,sky130_fd_pr__nfet_01v8_aW1p65L0p25 +nvhv_leak_discrete,sky130_fd_pr__nfet_g5v0d16v0__leak_discrete +p20vhv_fs_discrete,sky130_fd_pr__pfet_20v0__fs_discrete +p20vhv_sf_discrete,sky130_fd_pr__pfet_20v0__sf_discrete +p20vhv_tt_discrete,sky130_fd_pr__pfet_20v0__tt_discrete +plowvt_ff_discrete,sky130_fd_pr__pfet_01v8_lvt__ff_discrete +plowvt_fs_discrete,sky130_fd_pr__pfet_01v8_lvt__fs_discrete +plowvt_sf_discrete,sky130_fd_pr__pfet_01v8_lvt__sf_discrete +plowvt_ss_discrete,sky130_fd_pr__pfet_01v8_lvt__ss_discrete +plowvt_tt_discrete,sky130_fd_pr__pfet_01v8_lvt__tt_discrete +pshort_ff_discrete,sky130_fd_pr__pfet_01v8__ff_discrete +pshort_fs_discrete,sky130_fd_pr__pfet_01v8__fs_discrete +pshort_sf_discrete,sky130_fd_pr__pfet_01v8__sf_discrete +pshort_ss_discrete,sky130_fd_pr__pfet_01v8__ss_discrete +pshort_tt_discrete,sky130_fd_pr__pfet_01v8__tt_discrete +pshort_w0p84_l0p15,sky130_fd_pr__pfet_01v8_aW0p84L0p15 +pshort_w1p65_l0p15,sky130_fd_pr__pfet_01v8_aW1p65L0p15 +pshort_w1p65_l0p18,sky130_fd_pr__pfet_01v8_aW1p65L0p18 +pshort_w1p65_l0p25,sky130_fd_pr__pfet_01v8_aW1p65L0p25 +pshort_w1p68_l0p15,sky130_fd_pr__pfet_01v8_aW1p68L0p15 +rf2_xcmvpp2_phv5x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1phv +rf2_xcmvpp_hd5_1x1,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_1x2,sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_2x1,sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_2x2,sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_3x1,sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_3x2,sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_4x1,sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_4x2,sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_5x1,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +rf2_xcmvpp_hd5_5x2,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +rf_xcmvpp11p5x11p7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +rf_xcmvpp1_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2raphael +rf_xcmvpp1_subcell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2subcell +rf_xcmvpp2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2raphael +rf_xcmvpp2_subcell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2subcell +rf_xcmvpp3_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_raphael +rf_xcmvpp4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2raphael +rf_xcmvpp5_raphael,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_raphael +s8rf_n20nativevhv1,sky130_fd_pr__rf_nfet_20v0_nvt +s8rf_nhv_w3p0_l0p5,sky130_fd_pr__rf_nfet_g5v0d10v5_aW3p00L0p50 +s8rf_nhv_w5p0_l0p5,sky130_fd_pr__rf_nfet_g5v0d10v5_aW5p00L0p50 +s8rf_nhv_w7p0_l0p5,sky130_fd_pr__rf_nfet_g5v0d10v5_aW7p00L0p50 +s8rf_pmedlvt_w0p84,sky130_fd_pr__rf_pfet_01v8_mvt_aW0p84 +s8rf_pmedlvt_w1p68,sky130_fd_pr__rf_pfet_01v8_mvt_aW1p68 +s8rf_xcmvpp1_nwell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldnw_nwell +s8rf_xcmvpp1p8x1p8,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_noshield +s8rf_xcmvpp2_nwell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldnw_o1well +s8rf_xcmvpp4p4x4p6,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +s8rf_xcmvpp8p6x7p9,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +xcmvpp11p5x11p7_m3,sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_noshield +xcmvpp4p4x4p6_m1m2,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield +xcmvpp4p4x4p6_m1m4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3m4_noshield +xcmvpp6p8x6p1_m1m4,sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3m4_noshield +xcmvpp_hd5_6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_pol1m1m2m3m4m5_noshield +xdnwdiode_pwell_rf,sky130_fd_pr__model__parasitic__rf_diode_pw2dn +xesd_ndiode_h_dnwl,sky130_fd_pr__esd_rf_diode_pw2nd_11v0__parasitic__diode_pw2dn +dnwdiode_pw_defet,sky130_fd_pr__model__parasitic__diode_pw2dn__extended_drain +dnwdiode_pw_no_rs,sky130_fd_pr__model__parasitic__diode_pw2dn_nors +n20nativevhv1_aup,sky130_fd_pr__nfet_20v0_nvt_aup +n20vhv_subcircuit,sky130_fd_pr__nfet_20v0__subcircuit +n20vhviso1_noptap,sky130_fd_pr__nfet_20v0_noptap_iso +n20vhviso1reverse,sky130_fd_pr__nfet_20v0_reverse_iso +n20vhvisoreverse1,sky130_fd_pr__nfet_20v0_reverse_iso +nhv_leak_discrete,sky130_fd_pr__nfet_g5v0d10v5__leak_discrete +nhv_rf_base_m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10 +nhv_w3p0_l0p5_m10,sky130_fd_pr__nfet_g5v0d10v5_aM10W3p00L0p50 +nhv_w5p0_l0p5_m10,sky130_fd_pr__nfet_g5v0d10v5_aM10W5p00L0p50 +nhv_w7p0_l0p5_m10,sky130_fd_pr__nfet_g5v0d10v5_aM10W7p00L0p50 +nlowvt_rf_base_m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02 +nlowvt_rf_base_m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04 +nlowvt_w3p0_l0p15,sky130_fd_pr__nfet_01v8_lvt_aW3p00L0p15 +nlowvt_w3p0_l0p18,sky130_fd_pr__nfet_01v8_lvt_aW3p00L0p18 +nlowvt_w3p0_l0p25,sky130_fd_pr__nfet_01v8_lvt_aW3p00L0p25 +nlowvt_w5p0_l0p15,sky130_fd_pr__nfet_01v8_lvt_aW5p00L0p15 +nlowvt_w5p0_l0p18,sky130_fd_pr__nfet_01v8_lvt_aW5p00L0p18 +nlowvt_w5p0_l0p25,sky130_fd_pr__nfet_01v8_lvt_aW5p00L0p25 +nshort_rf_base_m2,sky130_fd_pr__rf_nfet_01v8_aM02 +nshort_rf_base_m4,sky130_fd_pr__rf_nfet_01v8_aM04 +nshort_w3p0_l0p15,sky130_fd_pr__nfet_01v8_aW3p00L0p15 +nshort_w3p0_l0p18,sky130_fd_pr__nfet_01v8_aW3p00L0p18 +nshort_w3p0_l0p25,sky130_fd_pr__nfet_01v8_aW3p00L0p25 +nshort_w5p0_l0p15,sky130_fd_pr__nfet_01v8_aW5p00L0p15 +nshort_w5p0_l0p18,sky130_fd_pr__nfet_01v8_aW5p00L0p18 +nshort_w5p0_l0p25,sky130_fd_pr__nfet_01v8_aW5p00L0p25 +p20vhv_subcircuit,sky130_fd_pr__pfet_20v0__subcircuit +phighvt_ttcorreln,sky130_fd_pr__pfet_01v8_hvt__tt_correln +phighvt_ttcorrelp,sky130_fd_pr__pfet_01v8_hvt__tt_correlp +phv_leak_discrete,sky130_fd_pr__pfet_g5v0d10v5__leak_discrete +plowvt_w3p0_l0p25,sky130_fd_pr__pfet_01v8_lvt_aW3p00L0p25 +plowvt_w3p0_l0p35,sky130_fd_pr__pfet_01v8_lvt_aW3p00L0p35 +plowvt_w3p0_l0p50,sky130_fd_pr__pfet_01v8_lvt_aW3p00L0p50 +plowvt_w5p0_l0p25,sky130_fd_pr__pfet_01v8_lvt_aW5p00L0p25 +plowvt_w5p0_l0p35,sky130_fd_pr__pfet_01v8_lvt_aW5p00L0p35 +plowvt_w5p0_l0p50,sky130_fd_pr__pfet_01v8_lvt_aW5p00L0p50 +pmedlvt_rf_ttleak,sky130_fd_pr__rf_pfet_01v8_mvt__tt_leak +pshort_rf_base_m2,sky130_fd_pr__rf_pfet_01v8_aM02 +pshort_rf_base_m4,sky130_fd_pr__rf_pfet_01v8_aM04 +pshort_w2p0_l0p15,sky130_fd_pr__pfet_01v8_aW2p00L0p15 +pshort_w3p0_l0p15,sky130_fd_pr__pfet_01v8_aW3p00L0p15 +pshort_w3p0_l0p18,sky130_fd_pr__pfet_01v8_aW3p00L0p18 +pshort_w3p0_l0p25,sky130_fd_pr__pfet_01v8_aW3p00L0p25 +pshort_w5p0_l0p15,sky130_fd_pr__pfet_01v8_aW5p00L0p15 +pshort_w5p0_l0p18,sky130_fd_pr__pfet_01v8_aW5p00L0p18 +pshort_w5p0_l0p25,sky130_fd_pr__pfet_01v8_aW5p00L0p25 +rf2_xcmvpp1_nwell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldnw_nwell +rf2_xcmvpp1p8x1p8,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_noshield +rf2_xcmvpp2_nwell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldnw_o1well +rf2_xcmvpp4p4x4p6,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +rf2_xcmvpp6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +rf2_xcmvpp8p6x7p9,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +rf_npn_1x1_2p0_hv,sky130_fd_pr__rf_npn_11v0_W1p00L1p00 +rf_xcmvpp2_phv5x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1phv +rf_xcmvpp_hd5_1x1,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_1x2,sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_2x1,sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_2x2,sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_3x1,sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_3x2,sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_4x1,sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_4x2,sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_5x1,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +rf_xcmvpp_hd5_5x2,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +s8rf_nlowvt_w0p42,sky130_fd_pr__rf_nfet_01v8_lvt_aW0p42 +s8rf_nlowvt_w0p84,sky130_fd_pr__rf_nfet_01v8_lvt_aW0p84 +s8rf_nlowvt_w1p65,sky130_fd_pr__rf_nfet_01v8_lvt_aW1p65 +s8rf_nshort_w1p65,sky130_fd_pr__rf_nfet_01v8_aW1p65 +s8rf_pshort_w0p84,sky130_fd_pr__rf_pfet_01v8_aW0p84 +s8rf_pshort_w1p65,sky130_fd_pr__rf_pfet_01v8_aW1p65 +s8rf_pshort_w1p68,sky130_fd_pr__rf_pfet_01v8_aW1p68 +vpp_nhvnative10x4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv__base +xcmvpp_moscap_top,sky130_fd_pr__model__cap_vpp_only_mos +xcmvpp_pqonly_top,sky130_fd_pr__model__cap_vpp_only_pq +xesd_ndiode_h_100,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_100 +xesd_ndiode_h_200,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_200 +xesd_ndiode_h_300,sky130_fd_pr__esd_rf_diode_pw2nd_11v0_300 +xesd_pdiode_h_100,sky130_fd_pr__esd_rf_diode_pd2nw_11v0_100 +xesd_pdiode_h_200,sky130_fd_pr__esd_rf_diode_pd2nw_11v0_200 +xesd_pdiode_h_300,sky130_fd_pr__esd_rf_diode_pd2nw_11v0_300 +dnwdiode_p20vhv1,sky130_fd_pr__pfet_20v0__parasitic__diode_pw2dn +n20nativevhv1_fs,sky130_fd_pr__nfet_20v0_nvt__fs +n20nativevhv1_sf,sky130_fd_pr__nfet_20v0_nvt__sf +n20nativevhv1_tt,sky130_fd_pr__nfet_20v0_nvt__tt +n20nativevhv_aup,sky130_fd_pr__nfet_20v0_nvt_aup +n20nativevhviso1,sky130_fd_pr__nfet_20v0_nvt_iso +n20vhv1_withptap,sky130_fd_pr__nfet_20v0_withptap +n20vhviso_noptap,sky130_fd_pr__nfet_20v0_noptap_iso +n20vhvisoreverse,sky130_fd_pr__nfet_20v0_reverse_iso +nhv_rf_base_b_ff,sky130_fd_pr__rf_nfet_g5v0d10v5_b__ff +nhv_rf_base_b_fs,sky130_fd_pr__rf_nfet_g5v0d10v5_b__fs +nhv_rf_base_b_sf,sky130_fd_pr__rf_nfet_g5v0d10v5_b__sf +nhv_rf_base_b_ss,sky130_fd_pr__rf_nfet_g5v0d10v5_b__ss +nhv_rf_base_b_tt,sky130_fd_pr__rf_nfet_g5v0d10v5_b__tt +nhv_rf_base_m2_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02 +nhv_rf_base_m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04 +nhv_w3p0_l0p5_m2,sky130_fd_pr__nfet_g5v0d10v5_aM02W3p00L0p50 +nhv_w3p0_l0p5_m4,sky130_fd_pr__nfet_g5v0d10v5_aM04W3p00L0p50 +nhv_w5p0_l0p5_m2,sky130_fd_pr__nfet_g5v0d10v5_aM02W5p00L0p50 +nhv_w5p0_l0p5_m4,sky130_fd_pr__nfet_g5v0d10v5_aM04W5p00L0p50 +nhv_w7p0_l0p5_m4,sky130_fd_pr__nfet_g5v0d10v5_aM04W7p00L0p50 +nhvnative_ttleak,sky130_fd_pr__nfet_05v0_nvt__tt_leak +nlowvt_rf_base_b,sky130_fd_pr__rf_nfet_01v8_lvt_b +nlowvt_ttcorreln,sky130_fd_pr__nfet_01v8_lvt__tt_correln +nlowvt_ttcorrelp,sky130_fd_pr__nfet_01v8_lvt__tt_correlp +nlrf_1p65p15m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p15 +nlrf_1p65p15m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p15 +nlrf_1p65p18m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p18 +nlrf_1p65p18m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p18 +nlrf_1p65p25m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W1p65L0p25 +nlrf_1p65p25m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W1p65L0p25 +nshort_rf_base_b,sky130_fd_pr__rf_nfet_01v8_b +nshort_ttcorreln,sky130_fd_pr__nfet_01v8__tt_correln +nshort_ttcorrelp,sky130_fd_pr__nfet_01v8__tt_correlp +nshortesd_ttleak,sky130_fd_pr__esd_nfet_01v8__tt_leak +nsrf_1p65p15m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p15 +nsrf_1p65p15m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p15 +nsrf_1p65p18m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p18 +nsrf_1p65p18m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p18 +nsrf_1p65p25m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W1p65L0p25 +nsrf_1p65p25m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W1p65L0p25 +nvhv_ff_discrete,sky130_fd_pr__nfet_g5v0d16v0__ff_discrete +nvhv_fs_discrete,sky130_fd_pr__nfet_g5v0d16v0__fs_discrete +nvhv_sf_discrete,sky130_fd_pr__nfet_g5v0d16v0__sf_discrete +nvhv_ss_discrete,sky130_fd_pr__nfet_g5v0d16v0__ss_discrete +nvhv_tt_discrete,sky130_fd_pr__nfet_g5v0d16v0__tt_discrete +p20vhv1_withptap,sky130_fd_pr__pfet_20v0_withptap +plowvt_ttcorreln,sky130_fd_pr__pfet_01v8_lvt__tt_correln +plowvt_ttcorrelp,sky130_fd_pr__pfet_01v8_lvt__tt_correlp +pmedlvt_rf_wafer,sky130_fd_pr__rf_pfet_01v8_mvt__wafer +pshort_rf_base_b,sky130_fd_pr__rf_pfet_01v8_b +pshort_ttcorreln,sky130_fd_pr__pfet_01v8__tt_correln +pshort_ttcorrelp,sky130_fd_pr__pfet_01v8__tt_correlp +psrf_1p65p15m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p15 +psrf_1p65p15m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p15 +psrf_1p65p18m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p18 +psrf_1p65p18m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p18 +psrf_1p65p25m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W1p65L0p25 +psrf_1p65p25m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W1p65L0p25 +rf2_xcmvpp6p8x6p,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +rf_xcmvpp1_nwell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldnw_nwell +rf_xcmvpp1p8x1p8,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_noshield +rf_xcmvpp2_nwell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldnw_o1well +rf_xcmvpp4p4x4p6,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +rf_xcmvpp6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +rf_xcmvpp8p6x7p9,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +s8blref_xind4_01,sky130_fd_pr__ind_01_04 +s8rf2_xcmvpp_hd5,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_base +s8rf_n20vhv1_aup,sky130_fd_pr__rf_nfet_20v0_aup +s8rf_n20vhv1_esd,sky130_fd_pr__esd_rf_nfet_20v0 +s8rf_nlowvt_w3p0,sky130_fd_pr__rf_nfet_01v8_lvt_aW3p00 +s8rf_nlowvt_w5p0,sky130_fd_pr__rf_nfet_01v8_lvt_aW5p00 +s8rf_npn_1x1_2p0,sky130_fd_pr__rf_npn_05v5_W1p00L1p00 +s8rf_nshort_w3p0,sky130_fd_pr__rf_nfet_01v8_aW3p00 +s8rf_nshort_w5p0,sky130_fd_pr__rf_nfet_01v8_aW5p00 +s8rf_plowvt_w3p0,sky130_fd_pr__rf_pfet_01v8_lvt_aW3p00 +s8rf_plowvt_w5p0,sky130_fd_pr__rf_pfet_01v8_lvt_aW5p00 +s8rf_pshort_w2p0,sky130_fd_pr__rf_pfet_01v8_aW2p00 +s8rf_pshort_w3p0,sky130_fd_pr__rf_pfet_01v8_aW3p00 +s8rf_pshort_w5p0,sky130_fd_pr__rf_pfet_01v8_aW5p00 +xcmvpp4p4x4p6_m3,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_noshield +xcmvpp8p6x7p9_m3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_noshield +xcmvpp_atlas_top,sky130_fd_pr__model__cap_vpp_finger +xcmvpp_ponly_top,sky130_fd_pr__model__cap_vpp_only_p +dnwdiode_p20vhv,sky130_fd_pr__pfet_20v0__parasitic__diode_pw2dn +dnwdiode_pw_top,sky130_fd_pr__model__parasitic__diodes_pw2dn +dnwhvdiode_psub,sky130_fd_pr__model__parasitic__diode_ps2dn__hv +n20nativevhv_fs,sky130_fd_pr__nfet_20v0_nvt__fs +n20nativevhv_sf,sky130_fd_pr__nfet_20v0_nvt__sf +n20nativevhv_tt,sky130_fd_pr__nfet_20v0_nvt__tt +n20nativevhviso,sky130_fd_pr__nfet_20v0_nvt_iso +n20vhv1_esd_hbm,sky130_fd_pr__esd_nfet_20v0_hbm +n20vhv1_esd_iec,sky130_fd_pr__esd_nfet_20v0_iec +n20vhv_withptap,sky130_fd_pr__nfet_20v0_withptap +n20zvtvhv1_leak,sky130_fd_pr__nfet_20v0_zvt__leak +nhv_ff_discrete,sky130_fd_pr__nfet_g5v0d10v5__ff_discrete +nhv_fs_discrete,sky130_fd_pr__nfet_g5v0d10v5__fs_discrete +nhv_rf_base_m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10 +nhv_sf_discrete,sky130_fd_pr__nfet_g5v0d10v5__sf_discrete +nhv_ss_discrete,sky130_fd_pr__nfet_g5v0d10v5__ss_discrete +nhv_tt_discrete,sky130_fd_pr__nfet_g5v0d10v5__tt_discrete +nhvnative_wafer,sky130_fd_pr__nfet_05v0_nvt__wafer +nhvrf_3p50m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W3p00L0p50 +nhvrf_5p50m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W5p00L0p50 +nhvrf_7p50m10_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM10W7p00L0p50 +nshortesd_wafer,sky130_fd_pr__esd_nfet_01v8__wafer +ntvnative_wafer,sky130_fd_pr__nfet_03v3_nvt__wafer +nvhv_subcircuit,sky130_fd_pr__nfet_g5v0d16v0__subcircuit +par_polyres_sub,sky130_fd_pr__model__parasitic__res_po +phighvt_subvtmm,sky130_fd_pr__pfet_01v8_hvt__subvt_mismatch +phv_ff_discrete,sky130_fd_pr__pfet_g5v0d10v5__ff_discrete +phv_fs_discrete,sky130_fd_pr__pfet_g5v0d10v5__fs_discrete +phv_sf_discrete,sky130_fd_pr__pfet_g5v0d10v5__sf_discrete +phv_ss_discrete,sky130_fd_pr__pfet_g5v0d10v5__ss_discrete +phv_tt_discrete,sky130_fd_pr__pfet_g5v0d10v5__tt_discrete +pmedlvt_rf_leak,sky130_fd_pr__rf_pfet_01v8_mvt__leak +psrf_1p68p15nf2,sky130_fd_pr__rf_pfet_01v8_aF02W1p68L0p15 +psrf_1p68p15nf4,sky130_fd_pr__rf_pfet_01v8_aF04W1p68L0p15 +pvhv_subcircuit,sky130_fd_pr__pfet_g5v0d16v0__subcircuit +rf_xcmvpp6p8x6p,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +s8rf_n20vhviso1,sky130_fd_pr__rf_nfet_20v0_iso +s8rf_n20zvtvhv1,sky130_fd_pr__rf_nfet_20v0_zvt +xcmvpp11p5x11p7,sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2_noshield +xcmvpp1_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1raphael +xcmvpp1_subcell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1subcell +xcmvpp2_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1raphael +xcmvpp2_subcell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1subcell +xcmvpp3_raphael,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield_raphael +xcmvpp4_raphael,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2raphael +xcmvpp5_raphael,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield_raphael +xdnwdiode_pwell,sky130_fd_pr__model__parasitic__diode_pw2dn +condiodehvpsub,sky130_fd_pr__model__parasitic__diode_ps2dn_highvoltage +n20vhv_esd_hbm,sky130_fd_pr__esd_nfet_20v0_hbm +n20vhv_esd_iec,sky130_fd_pr__esd_nfet_20v0_iec +n20zvtvhv_leak,sky130_fd_pr__nfet_20v0_zvt__leak +nhv_rf_base_m2,sky130_fd_pr__rf_nfet_g5v0d10v5_aM02 +nhv_rf_base_m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04 +nhvnative_leak,sky130_fd_pr__nfet_05v0_nvt__leak +nhvrf_3p50m2_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W3p00L0p50 +nhvrf_3p50m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W3p00L0p50 +nhvrf_5p50m2_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM02W5p00L0p50 +nhvrf_5p50m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W5p00L0p50 +nhvrf_7p50m4_b,sky130_fd_pr__rf_nfet_g5v0d10v5_bM04W7p00L0p50 +nlowvt_rf_base,sky130_fd_pr__rf_nfet_01v8_lvt__base +nlowvt_subvtmm,sky130_fd_pr__nfet_01v8_lvt__subvt_mismatch +nlrf_1p65p15m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p15 +nlrf_1p65p15m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p15 +nlrf_1p65p18m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p18 +nlrf_1p65p18m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p18 +nlrf_1p65p25m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W1p65L0p25 +nlrf_1p65p25m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W1p65L0p25 +nlrf_p42p15nf2,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p42L0p15 +nlrf_p84p15nf2,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W0p84L0p15 +nlrf_p84p15nf4,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W0p84L0p15 +nlrf_p84p15nf8,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W0p84L0p15 +nlvtpass_wafer,sky130_fd_pr__special_nfet_pass_lvt__wafer +npn_1x1_2p0_hv,sky130_fd_pr__npn_11v0_W1p00L1p00 +nshort_rf_base,sky130_fd_pr__rf_nfet_01v8__base +nshort_subvtmm,sky130_fd_pr__nfet_01v8__subvt_mismatch +nshortesd_leak,sky130_fd_pr__esd_nfet_01v8__leak +nsrf_1p65p15m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p15 +nsrf_1p65p15m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p15 +nsrf_1p65p18m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p18 +nsrf_1p65p18m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p18 +nsrf_1p65p25m2,sky130_fd_pr__rf_nfet_01v8_aM02W1p65L0p25 +nsrf_1p65p25m4,sky130_fd_pr__rf_nfet_01v8_aM04W1p65L0p25 +phighvt_ttleak,sky130_fd_pr__pfet_01v8_hvt__tt_leak +plowvt_subvtmm,sky130_fd_pr__pfet_01v8_lvt__subvt_mismatch +pshort_rf_base,sky130_fd_pr__rf_pfet_01v8__base +pshort_subvtmm,sky130_fd_pr__pfet_01v8__subvt_mismatch +psrf_1p65p15m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p15 +psrf_1p65p15m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p15 +psrf_1p65p18m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p18 +psrf_1p65p18m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p18 +psrf_1p65p25m2,sky130_fd_pr__rf_pfet_01v8_aM02W1p65L0p25 +psrf_1p65p25m4,sky130_fd_pr__rf_pfet_01v8_aM04W1p65L0p25 +psrf_p84p15nf2,sky130_fd_pr__rf_pfet_01v8_aF02W0p84L0p15 +rf2_xcmvpp_hd5,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_base +s8rf2_xcmvppx4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +sonos_bol_e_mm,sky130_fd_bs_flash__special_sonosfet_star__bol_mismatch +sonos_bol_p_mm,sky130_fd_bs_flash__special_sonosfet_original__bol_mismatch +sonos_ffteol_e,sky130_fd_bs_flash__special_sonosfet_star__ff_teol +sonos_ffteol_p,sky130_fd_bs_flash__special_sonosfet_original__ff_teol +sonos_ssteol_e,sky130_fd_bs_flash__special_sonosfet_star__ss_teol +sonos_ssteol_p,sky130_fd_bs_flash__special_sonosfet_original__ss_teol +sonos_ttteol_e,sky130_fd_bs_flash__special_sonosfet_star__tt_teol +sonos_ttteol_p,sky130_fd_bs_flash__special_sonosfet_original__tt_teol +xcmvpp2_phv5x4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o1phv +xcmvpp_hd5_1x1,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_1x2,sky130_fd_pr__cap_vpp_11p5x23p1_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_2x1,sky130_fd_pr__cap_vpp_22p5x11p7_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_2x2,sky130_fd_pr__cap_vpp_22p5x23p1_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_3x1,sky130_fd_pr__cap_vpp_33p6x11p7_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_3x2,sky130_fd_pr__cap_vpp_33p6x23p1_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_4x1,sky130_fd_pr__cap_vpp_44p7x11p7_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_4x2,sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_5x1,sky130_fd_pr__cap_vpp_55p8x11p7_pol1m1m2m3m4m5_noshield +xcmvpp_hd5_5x2,sky130_fd_pr__cap_vpp_55p8x23p1_pol1m1m2m3m4m5_noshield +dnwdiode_psub,sky130_fd_pr__model__parasitic__diode_ps2dn +dnwdiode_pvhv,sky130_fd_pr__pfet_g5v0d16v0__parasitic__diode_pw2dn +n20nativevhv1,sky130_fd_pr__nfet_20v0_nvt +n20zvtvhv1_fs,sky130_fd_pr__nfet_20v0_zvt__fs +n20zvtvhv1_sf,sky130_fd_pr__nfet_20v0_zvt__sf +n20zvtvhv1_tt,sky130_fd_pr__nfet_20v0_zvt__tt +ndiode_native,sky130_fd_pr__diode_pw2nd_05v5_nvt +nfet_symbolic,sky130_fd_pr__nfet_01v8__symbolic +nhv_rf_base_b,sky130_fd_pr__rf_nfet_g5v0d10v5_b +nhv_ttcorreln,sky130_fd_pr__nfet_g5v0d10v5__tt_correln +nhv_ttcorrelp,sky130_fd_pr__nfet_g5v0d10v5__tt_correlp +nhv_w3p0_l0p5,sky130_fd_pr__nfet_g5v0d10v5_aW3p00L0p50 +nhv_w5p0_l0p5,sky130_fd_pr__nfet_g5v0d10v5_aW5p00L0p50 +nhv_w7p0_l0p5,sky130_fd_pr__nfet_g5v0d10v5_aW7p00L0p50 +nhvesd_ttleak,sky130_fd_pr__esd_nfet_g5v0d10v5__tt_leak +nhvrf_3p50m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W3p00L0p50 +nhvrf_5p50m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W5p00L0p50 +nhvrf_7p50m10,sky130_fd_pr__rf_nfet_g5v0d10v5_aM10W7p00L0p50 +nlowvt_ttleak,sky130_fd_pr__nfet_01v8_lvt__tt_leak +nlrf_3p15m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p15 +nlrf_3p15m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p15 +nlrf_3p18m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p18 +nlrf_3p18m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p18 +nlrf_3p25m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W3p00L0p25 +nlrf_3p25m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W3p00L0p25 +nlrf_5p15m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p15 +nlrf_5p15m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p15 +nlrf_5p18m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p18 +nlrf_5p18m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p18 +nlrf_5p25m2_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM02W5p00L0p25 +nlrf_5p25m4_b,sky130_fd_pr__rf_nfet_01v8_lvt_bM04W5p00L0p25 +nlvtpass_leak,sky130_fd_pr__special_nfet_pass_lvt__leak +npnpar_polyhv,sky130_fd_pr__npn_11v0_W1p00L1p00 +nshort_ttleak,sky130_fd_pr__nfet_01v8__tt_leak +nsrf_3p15m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p15 +nsrf_3p15m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p15 +nsrf_3p18m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p18 +nsrf_3p18m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p18 +nsrf_3p25m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W3p00L0p25 +nsrf_3p25m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W3p00L0p25 +nsrf_5p15m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p15 +nsrf_5p15m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p15 +nsrf_5p18m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p18 +nsrf_5p18m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p18 +nsrf_5p25m2_b,sky130_fd_pr__rf_nfet_01v8_bM02W5p00L0p25 +nsrf_5p25m4_b,sky130_fd_pr__rf_nfet_01v8_bM04W5p00L0p25 +nwdiode_no_rs,sky130_fd_pr__model__parasitic__diode_ps2nw_nors +pfet_symbolic,sky130_fd_pr__pfet_01v8__symbolic +phighvt_wafer,sky130_fd_pr__pfet_01v8_hvt__wafer +phvesd_ttleak,sky130_fd_pr__esd_pfet_g5v0d10v5__tt_leak +plowvt_ttleak,sky130_fd_pr__pfet_01v8_lvt__tt_leak +pmedlvt_rf_ff,sky130_fd_pr__rf_pfet_01v8_mvt__ff +pmedlvt_rf_fs,sky130_fd_pr__rf_pfet_01v8_mvt__fs +pmedlvt_rf_mm,sky130_fd_pr__rf_pfet_01v8_mvt__mismatch +pmedlvt_rf_sf,sky130_fd_pr__rf_pfet_01v8_mvt__sf +pmedlvt_rf_ss,sky130_fd_pr__rf_pfet_01v8_mvt__ss +pmedlvt_rf_tt,sky130_fd_pr__rf_pfet_01v8_mvt__tt +pmedlvt_w0p84,sky130_fd_pr__pfet_01v8_mvt_aW0p84 +pmedlvt_w1p68,sky130_fd_pr__pfet_01v8_mvt_aW1p68 +pshort_ttleak,sky130_fd_pr__pfet_01v8__tt_leak +psrf_3p15m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p15 +psrf_3p15m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p15 +psrf_3p18m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p18 +psrf_3p18m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p18 +psrf_3p25m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W3p00L0p25 +psrf_3p25m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W3p00L0p25 +psrf_5p15m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p15 +psrf_5p15m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p15 +psrf_5p18m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p18 +psrf_5p18m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p18 +psrf_5p25m2_b,sky130_fd_pr__rf_pfet_01v8_bM02W5p00L0p25 +psrf_5p25m4_b,sky130_fd_pr__rf_pfet_01v8_bM04W5p00L0p25 +rf2_xind4_011,sky130_fd_pr__ind_11_04 +rf_xcmvpp_hd5,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_base +s8rf2_xcmvpp3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +s8rf2_xcmvpp4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +s8rf2_xcmvpp5,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +s8rf2_xcmvpp6,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_shieldpom3 +s8rf_nhv_w3p0,sky130_fd_pr__rf_nfet_g5v0d10v5_aW3p00 +s8rf_nhv_w5p0,sky130_fd_pr__rf_nfet_g5v0d10v5_aW5p00 +s8rf_nhv_w7p0,sky130_fd_pr__rf_nfet_g5v0d10v5_aW7p00 +sonos_ffeol_e,sky130_fd_bs_flash__special_sonosfet_star__ff_eol +sonos_ffeol_p,sky130_fd_bs_flash__special_sonosfet_original__ff_eol +sonos_sseol_e,sky130_fd_bs_flash__special_sonosfet_star__ss_eol +sonos_sseol_p,sky130_fd_bs_flash__special_sonosfet_original__ss_eol +sonos_tteol_e,sky130_fd_bs_flash__special_sonosfet_star__tt_eol +sonos_tteol_p,sky130_fd_bs_flash__special_sonosfet_original__tt_eol +xcmvpp1_nwell,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_shieldnw_nwell +xcmvpp1p8x1p8,sky130_fd_pr__cap_vpp_01p8x01p8_m1m2_noshield +xcmvpp2_nwell,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_shieldnw_o1well +xcmvpp4p4x4p6,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield +xcmvpp6p8x6p1,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +xcmvpp8p6x7p9,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield +xcmvpp_moscap,sky130_fd_pr__model__cap_vpp_only_mos +xcmvpp_pqonly,sky130_fd_pr__model__cap_vpp_only_pq +xesd_ndiode_h,sky130_fd_pr__esd_rf_diode_pw2nd_11v0 +xesd_pdiode_h,sky130_fd_pr__esd_rf_diode_pd2nw_11v0 +xuhrpoly_0p35,sky130_fd_pr__res_xhigh_po_0p35 +xuhrpoly_0p69,sky130_fd_pr__res_xhigh_po_0p69 +xuhrpoly_1p41,sky130_fd_pr__res_xhigh_po_1p41 +xuhrpoly_2p85,sky130_fd_pr__res_xhigh_po_2p85 +xuhrpoly_5p73,sky130_fd_pr__res_xhigh_po_5p73 +n20nativevhv,sky130_fd_pr__nfet_20v0_nvt +n20vhv_wafer,sky130_fd_pr__nfet_20v0__wafer +n20zvtvhv_fs,sky130_fd_pr__nfet_20v0_zvt__fs +n20zvtvhv_sf,sky130_fd_pr__nfet_20v0_zvt__sf +n20zvtvhv_tt,sky130_fd_pr__nfet_20v0_zvt__tt +ndiode_defet,sky130_fd_pr__diode_pw2nd_05v5__extended_drain +nhvesd_wafer,sky130_fd_pr__esd_nfet_g5v0d10v5__wafer +nhvnative_ff,sky130_fd_pr__nfet_05v0_nvt__ff +nhvnative_fs,sky130_fd_pr__nfet_05v0_nvt__fs +nhvnative_mm,sky130_fd_pr__nfet_05v0_nvt__mismatch +nhvnative_sf,sky130_fd_pr__nfet_05v0_nvt__sf +nhvnative_ss,sky130_fd_pr__nfet_05v0_nvt__ss +nhvnative_tt,sky130_fd_pr__nfet_05v0_nvt__tt +nhvnativeesd,sky130_fd_pr__esd_nfet_05v0_nvt +nhvrf_3p50m2,sky130_fd_pr__rf_nfet_g5v0d10v5_aM02W3p00L0p50 +nhvrf_3p50m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W3p00L0p50 +nhvrf_5p50m2,sky130_fd_pr__rf_nfet_g5v0d10v5_aM02W5p00L0p50 +nhvrf_5p50m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W5p00L0p50 +nhvrf_7p50m4,sky130_fd_pr__rf_nfet_g5v0d10v5_aM04W7p00L0p50 +nlowvt_rf_mm,sky130_fd_pr__rf_nfet_01v8_lvt__mismatch +nlowvt_w0p42,sky130_fd_pr__nfet_01v8_lvt_aW0p42 +nlowvt_w0p84,sky130_fd_pr__nfet_01v8_lvt_aW0p84 +nlowvt_w1p65,sky130_fd_pr__nfet_01v8_lvt_aW1p65 +nlowvt_wafer,sky130_fd_pr__nfet_01v8_lvt__wafer +nlrf_3p15nf2,sky130_fd_pr__rf_nfet_01v8_lvt_aF02W3p00L0p15 +nlrf_3p15nf4,sky130_fd_pr__rf_nfet_01v8_lvt_aF04W3p00L0p15 +nlrf_3p15nf8,sky130_fd_pr__rf_nfet_01v8_lvt_aF08W3p00L0p15 +nshort_rf_mm,sky130_fd_pr__rf_nfet_01v8__mismatch +nshort_w1p65,sky130_fd_pr__nfet_01v8_aW1p65 +nshort_wafer,sky130_fd_pr__nfet_01v8__wafer +nshortesd_ff,sky130_fd_pr__esd_nfet_01v8__ff +nshortesd_fs,sky130_fd_pr__esd_nfet_01v8__fs +nshortesd_sf,sky130_fd_pr__esd_nfet_01v8__sf +nshortesd_ss,sky130_fd_pr__esd_nfet_01v8__ss +nshortesd_tt,sky130_fd_pr__esd_nfet_01v8__tt +ntvnative_ff,sky130_fd_pr__nfet_03v3_nvt__ff +ntvnative_fs,sky130_fd_pr__nfet_03v3_nvt__fs +ntvnative_mm,sky130_fd_pr__nfet_03v3_nvt__mismatch +ntvnative_sf,sky130_fd_pr__nfet_03v3_nvt__sf +ntvnative_ss,sky130_fd_pr__nfet_03v3_nvt__ss +ntvnative_tt,sky130_fd_pr__nfet_03v3_nvt__tt +phighvt_leak,sky130_fd_pr__pfet_01v8_hvt__leak +phvesd_wafer,sky130_fd_pr__esd_pfet_g5v0d10v5__wafer +plowvt_wafer,sky130_fd_pr__pfet_01v8_lvt__wafer +pshort_rf_mm,sky130_fd_pr__rf_pfet_01v8__mismatch +pshort_w0p84,sky130_fd_pr__pfet_01v8_aW0p84 +pshort_w1p65,sky130_fd_pr__pfet_01v8_aW1p65 +pshort_w1p68,sky130_fd_pr__pfet_01v8_aW1p68 +pshort_wafer,sky130_fd_pr__pfet_01v8__wafer +psrf_3p15nf2,sky130_fd_pr__rf_pfet_01v8_aF02W3p00L0p15 +psrf_5p15nf2,sky130_fd_pr__rf_pfet_01v8_aF02W5p00L0p15 +rf2_mimcap34,sky130_fd_pr__cap_mim_m3__base +rf2_mimcap45,sky130_fd_pr__cap_mim_m4__base +rf2_xcmim2c1,sky130_fd_pr__cap_mim_m4_1 +rf2_xcmim2c2,sky130_fd_pr__cap_mim_m4_2 +rf2_xcmvpp_2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1 +rf2_xcmvppx4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +rf2_xind4_02,sky130_fd_pr__ind_02_04 +rf_xind4_011,sky130_fd_pr__ind_11_04 +s8rf2_xcmvpp,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +s8rf_n20vhv1,sky130_fd_pr__rf_nfet_20v0 +s8rf_npn_1x1,sky130_fd_pr__rf_npn_05v5_W1p00L1p00 +s8rf_npn_1x2,sky130_fd_pr__rf_npn_05v5_W1p00L2p00 +s8rf_npn_1x4,sky130_fd_pr__rf_npn_05v5_W1p00L4p00 +s8rf_npn_1x8,sky130_fd_pr__rf_npn_05v5_W1p00L8p00 +s8rf_npn_2x2,sky130_fd_pr__rf_npn_05v5_W2p00L2p00 +s8rf_npn_2x4,sky130_fd_pr__rf_npn_05v5_W2p00L4p00 +s8rf_npn_2x8,sky130_fd_pr__rf_npn_05v5_W2p00L8p00 +s8rf_npn_5x5,sky130_fd_pr__rf_npn_05v5_W5p00L5p00 +s8rf_p20vhv1,sky130_fd_pr__rf_pfet_20v0 +s8rf_pmedlvt,sky130_fd_pr__rf_pfet_01v8_mvt +s8rf_xcmvpp1,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2 +s8rf_xcmvpp2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2 +sonos_tbol_e,sky130_fd_bs_flash__special_sonosfet_star__tbol +sonos_tbol_p,sky130_fd_bs_flash__special_sonosfet_original__tbol +sonos_wbol_e,sky130_fd_bs_flash__special_sonosfet_star__wbol +sonos_wbol_p,sky130_fd_bs_flash__special_sonosfet_original__wbol +uhrpoly_0p35,sky130_fd_pr__res_xhigh_po_0p35 +uhrpoly_0p69,sky130_fd_pr__res_xhigh_po_0p69 +uhrpoly_1p41,sky130_fd_pr__res_xhigh_po_1p41 +uhrpoly_2p85,sky130_fd_pr__res_xhigh_po_2p85 +uhrpoly_5p73,sky130_fd_pr__res_xhigh_po_5p73 +xcmvpp6p8x6p,sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2_noshield +xcmvpp_atlas,sky130_fd_pr__model__cap_vpp_finger +xcmvpp_ponly,sky130_fd_pr__model__cap_vpp_only_p +xhrpoly_0p35,sky130_fd_pr__res_high_po_0p35 +xhrpoly_0p69,sky130_fd_pr__res_high_po_0p69 +xhrpoly_1p41,sky130_fd_pr__res_high_po_1p41 +xhrpoly_2p85,sky130_fd_pr__res_high_po_2p85 +xhrpoly_5p73,sky130_fd_pr__res_high_po_5p73 +dnwdiode_pw,sky130_fd_pr__model__parasitic__diode_pw2dn +hrpoly_0p35,sky130_fd_pr__res_high_po_0p35 +hrpoly_0p69,sky130_fd_pr__res_high_po_0p69 +hrpoly_1p41,sky130_fd_pr__res_high_po_1p41 +hrpoly_2p85,sky130_fd_pr__res_high_po_2p85 +hrpoly_5p73,sky130_fd_pr__res_high_po_5p73 +isopwellres,sky130_fd_pr__res_iso_pw +n20vhv1_aup,sky130_fd_pr__nfet_20v0_aup +n20vhv1_esd,sky130_fd_pr__esd_nfet_20v0 +n20vhv_leak,sky130_fd_pr__nfet_20v0__leak +nhv_rf_base,sky130_fd_pr__rf_nfet_g5v0d10v5__base +nhvesd_leak,sky130_fd_pr__esd_nfet_g5v0d10v5__leak +nlowvt_leak,sky130_fd_pr__nfet_01v8_lvt__leak +nlowvt_w3p0,sky130_fd_pr__nfet_01v8_lvt_aW3p00 +nlowvt_w5p0,sky130_fd_pr__nfet_01v8_lvt_aW5p00 +nlrf_3p15m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p15 +nlrf_3p15m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p15 +nlrf_3p18m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p18 +nlrf_3p18m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p18 +nlrf_3p25m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W3p00L0p25 +nlrf_3p25m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W3p00L0p25 +nlrf_5p15m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p15 +nlrf_5p15m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p15 +nlrf_5p18m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p18 +nlrf_5p18m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p18 +nlrf_5p25m2,sky130_fd_pr__rf_nfet_01v8_lvt_aM02W5p00L0p25 +nlrf_5p25m4,sky130_fd_pr__rf_nfet_01v8_lvt_aM04W5p00L0p25 +nlvtpass_ff,sky130_fd_pr__special_nfet_pass_lvt__ff +nlvtpass_ss,sky130_fd_pr__special_nfet_pass_lvt__ss +nlvtpass_tt,sky130_fd_pr__special_nfet_pass_lvt__tt +npn_1x1_2p0,sky130_fd_pr__npn_05v5_W1p00L1p00 +nshort_leak,sky130_fd_pr__nfet_01v8__leak +nshort_w3p0,sky130_fd_pr__nfet_01v8_aW3p00 +nshort_w5p0,sky130_fd_pr__nfet_01v8_aW5p00 +nsrf_3p15m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p15 +nsrf_3p15m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p15 +nsrf_3p18m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p18 +nsrf_3p18m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p18 +nsrf_3p25m2,sky130_fd_pr__rf_nfet_01v8_aM02W3p00L0p25 +nsrf_3p25m4,sky130_fd_pr__rf_nfet_01v8_aM04W3p00L0p25 +nsrf_5p15m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p15 +nsrf_5p15m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p15 +nsrf_5p18m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p18 +nsrf_5p18m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p18 +nsrf_5p25m2,sky130_fd_pr__rf_nfet_01v8_aM02W5p00L0p25 +nsrf_5p25m4,sky130_fd_pr__rf_nfet_01v8_aM04W5p00L0p25 +nvhv_ttleak,sky130_fd_pr__nfet_g5v0d16v0__tt_leak +p20vhv_leak,sky130_fd_pr__pfet_20v0__leak +phv_subvtmm,sky130_fd_pr__pfet_g5v0d10v5__subvt_mismatch +phvesd_leak,sky130_fd_pr__esd_pfet_g5v0d10v5__leak +plowvt_leak,sky130_fd_pr__pfet_01v8_lvt__leak +plowvt_w3p0,sky130_fd_pr__pfet_01v8_lvt_aW3p00 +plowvt_w5p0,sky130_fd_pr__pfet_01v8_lvt_aW5p00 +polyres_sub,sky130_fd_pr__res_high_po__subcell +pshort_leak,sky130_fd_pr__pfet_01v8__leak +pshort_w2p0,sky130_fd_pr__pfet_01v8_aW2p00 +pshort_w3p0,sky130_fd_pr__pfet_01v8_aW3p00 +pshort_w5p0,sky130_fd_pr__pfet_01v8_aW5p00 +psrf_3p15m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p15 +psrf_3p15m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p15 +psrf_3p18m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p18 +psrf_3p18m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p18 +psrf_3p25m2,sky130_fd_pr__rf_pfet_01v8_aM02W3p00L0p25 +psrf_3p25m4,sky130_fd_pr__rf_pfet_01v8_aM04W3p00L0p25 +psrf_5p15m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p15 +psrf_5p15m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p15 +psrf_5p18m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p18 +psrf_5p18m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p18 +psrf_5p25m2,sky130_fd_pr__rf_pfet_01v8_aM02W5p00L0p25 +psrf_5p25m4,sky130_fd_pr__rf_pfet_01v8_aM04W5p00L0p25 +pvhv_ttleak,sky130_fd_pr__pfet_g5v0d16v0__tt_leak +rf2_xchvnwc,sky130_fd_pr__cap_var +rf2_xcmim2c,sky130_fd_pr__cap_mim_m4 +rf2_xcmimc1,sky130_fd_pr__cap_mim_m3_1 +rf2_xcmimc2,sky130_fd_pr__cap_mim_m3_2 +rf2_xcmvpp1,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +rf2_xcmvpp2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1 +rf2_xcmvpp3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +rf2_xcmvpp4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +rf2_xcmvpp5,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +rf2_xcmvpp6,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_shieldpom3 +rf2_xcnwvc2,sky130_fd_pr__cap_var_hvt +rf_mimcap34,sky130_fd_pr__cap_mim_m3__base +rf_mimcap45,sky130_fd_pr__cap_mim_m4__base +rf_xcmim2c1,sky130_fd_pr__cap_mim_m4_1 +rf_xcmim2c2,sky130_fd_pr__cap_mim_m4_2 +rf_xcmvpp_2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2 +rf_xcmvppx4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +rf_xind4_01,sky130_fd_pr__ind_01_04 +rf_xind4_02,sky130_fd_pr__ind_02_04 +s8rf_nlowvt,sky130_fd_pr__rf_nfet_01v8_lvt +s8rf_nshort,sky130_fd_pr__rf_nfet_01v8 +s8rf_plowvt,sky130_fd_pr__rf_pfet_01v8_lvt +s8rf_pshort,sky130_fd_pr__rf_pfet_01v8 +sonos_bol_e,sky130_fd_bs_flash__special_sonosfet_star__bol +sonos_bol_p,sky130_fd_bs_flash__special_sonosfet_original__bol +xesd_ndiode,sky130_fd_pr__esd_rf_diode_pw2nd_05v5 +xesd_pdiode,sky130_fd_pr__esd_rf_diode_pd2nw_05v5 +xhrpoly_1p4,sky130_fd_pr__res_high_po_1p40 +xnwdiode_rf,sky130_fd_pr__model__parasitic__rf_diode_ps2nw +n20vhv_aup,sky130_fd_pr__nfet_20v0_aup +n20vhv_esd,sky130_fd_pr__esd_nfet_20v0 +n20vhviso1,sky130_fd_pr__nfet_20v0_iso +n20zvtvhv1,sky130_fd_pr__nfet_20v0_zvt +ndfbentres,sky130_fd_pr__res_bent_nd +ndiode_lvt,sky130_fd_pr__diode_pw2nd_05v5_lvt +nfet_debug,sky130_fd_pr__nfet_01v8__debug +nfet_fixed,sky130_fd_pr__nfet_01v8__fixed +nhv_ttleak,sky130_fd_pr__nfet_g5v0d10v5__tt_leak +nvhv_wafer,sky130_fd_pr__nfet_g5v0d16v0__wafer +pdfbentres,sky130_fd_pr__res_bent_pd +pdiode_hvt,sky130_fd_pr__diode_pd2nw_05v5_hvt +pdiode_lvt,sky130_fd_pr__diode_pd2nw_05v5_lvt +pfet_fixed,sky130_fd_pr__pfet_01v8__fixed +phighvt_ff,sky130_fd_pr__pfet_01v8_hvt__ff +phighvt_fs,sky130_fd_pr__pfet_01v8_hvt__fs +phighvt_mm,sky130_fd_pr__pfet_01v8_hvt__mismatch +phighvt_sf,sky130_fd_pr__pfet_01v8_hvt__sf +phighvt_ss,sky130_fd_pr__pfet_01v8_hvt__ss +phighvt_tt,sky130_fd_pr__pfet_01v8_hvt__tt +phv_ttleak,sky130_fd_pr__pfet_g5v0d10v5__tt_leak +pmedlvt_rf,sky130_fd_pr__rf_pfet_01v8_mvt +pvhv_wafer,sky130_fd_pr__pfet_g5v0d16v0__wafer +rf2_ind_03,sky130_fd_pr__ind_03 +rf2_ind_05,sky130_fd_pr__ind_05 +rf2_xcmimc,sky130_fd_pr__cap_mim_m3 +rf2_xcmvpp,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +rf2_xcnwvc,sky130_fd_pr__cap_var_lvt +rf_npn_1x4,sky130_fd_pr__rf_npn_05v5_W1p00L4p00 +rf_npn_1x8,sky130_fd_pr__rf_npn_05v5_W1p00L8p00 +rf_npn_2x2,sky130_fd_pr__rf_npn_05v5_W2p00L2p00 +rf_npn_2x4,sky130_fd_pr__rf_npn_05v5_W2p00L4p00 +rf_npn_2x8,sky130_fd_pr__rf_npn_05v5_W2p00L8p00 +rf_npn_5x5,sky130_fd_pr__rf_npn_05v5_W5p00L5p00 +rf_xchvnwc,sky130_fd_pr__cap_var +rf_xcmim2c,sky130_fd_pr__cap_mim_m4 +rf_xcmimc1,sky130_fd_pr__cap_mim_m3_1 +rf_xcmimc2,sky130_fd_pr__cap_mim_m3_2 +rf_xcmvpp1,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o2 +rf_xcmvpp2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o2 +rf_xcmvpp3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +rf_xcmvpp4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +rf_xcmvpp5,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +rf_xcmvpp6,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_shieldpom3 +rf_xcnwvc2,sky130_fd_pr__cap_var_hvt +s8rf_pnp5x,sky130_fd_pr__pnp_05v5_W3p40L3p40 +xcmimc_top,sky130_fd_pr__model__cap_mim +xcmvpp_hd5,sky130_fd_pr__cap_vpp_11p5x11p7_pol1m1m2m3m4m5_noshield_base +xcmvpp_top,sky130_fd_pr__model__cap_vpp +xcnwvc_top,sky130_fd_pr__model__cap_var +xind_5_125,sky130_fd_pr__ind_05_125 +xind_5_220,sky130_fd_pr__ind_05_220 +extdntran,sky130_fd_pr__model__nfet_extendeddrain +extdptran,sky130_fd_pr__model__nfet_extendeddrain +fnpass_mm,sky130_fd_pr__special_nfet_pass_flash__mismatch +fuse_m3m4,sky130_fd_pr__fuse_m3m4 +n20vhv_fs,sky130_fd_pr__nfet_20v0__fs +n20vhv_sf,sky130_fd_pr__nfet_20v0__sf +n20vhv_tt,sky130_fd_pr__nfet_20v0__tt +n20vhviso,sky130_fd_pr__nfet_20v0_iso +n20zvtvhv,sky130_fd_pr__nfet_20v0_zvt +nhv_rf_mm,sky130_fd_pr__rf_nfet_g5v0d10v5__mismatch +nhv_wafer,sky130_fd_pr__nfet_g5v0d10v5__wafer +nhvesd_ff,sky130_fd_pr__esd_nfet_g5v0d10v5__ff +nhvesd_fs,sky130_fd_pr__esd_nfet_g5v0d10v5__fs +nhvesd_sf,sky130_fd_pr__esd_nfet_g5v0d10v5__sf +nhvesd_ss,sky130_fd_pr__esd_nfet_g5v0d10v5__ss +nhvesd_tt,sky130_fd_pr__esd_nfet_g5v0d10v5__tt +nhvnative,sky130_fd_pr__nfet_05v0_nvt +nlowvt_ff,sky130_fd_pr__nfet_01v8_lvt__ff +nlowvt_fs,sky130_fd_pr__nfet_01v8_lvt__fs +nlowvt_mm,sky130_fd_pr__nfet_01v8_lvt__mismatch +nlowvt_rf,sky130_fd_pr__rf_nfet_01v8_lvt +nlowvt_sf,sky130_fd_pr__nfet_01v8_lvt__sf +nlowvt_ss,sky130_fd_pr__nfet_01v8_lvt__ss +nlowvt_tt,sky130_fd_pr__nfet_01v8_lvt__tt +npn_wafer,sky130_fd_pr__npn_05v5__wafer +npnpar1x1,sky130_fd_pr__npn_05v5_W1p00L1p00 +npnpar1x2,sky130_fd_pr__npn_05v5_W1p00L2p00 +nshort_ff,sky130_fd_pr__nfet_01v8__ff +nshort_fs,sky130_fd_pr__nfet_01v8__fs +nshort_mm,sky130_fd_pr__nfet_01v8__mismatch +nshort_rf,sky130_fd_pr__rf_nfet_01v8 +nshort_sf,sky130_fd_pr__nfet_01v8__sf +nshort_ss,sky130_fd_pr__nfet_01v8__ss +nshort_tt,sky130_fd_pr__nfet_01v8__tt +nshortesd,sky130_fd_pr__esd_nfet_01v8 +ntvnative,sky130_fd_pr__nfet_03v3_nvt +nvhv_base,sky130_fd_pr__nfet_g5v0d16v0__base +nvhv_leak,sky130_fd_pr__nfet_g5v0d16v0__leak +p20vhv_fs,sky130_fd_pr__pfet_20v0__fs +p20vhv_sf,sky130_fd_pr__pfet_20v0__sf +p20vhv_tt,sky130_fd_pr__pfet_20v0__tt +phv_wafer,sky130_fd_pr__pfet_g5v0d10v5__wafer +phvesd_ff,sky130_fd_pr__esd_pfet_g5v0d10v5__ff +phvesd_fs,sky130_fd_pr__esd_pfet_g5v0d10v5__fs +phvesd_sf,sky130_fd_pr__esd_pfet_g5v0d10v5__sf +phvesd_ss,sky130_fd_pr__esd_pfet_g5v0d10v5__ss +phvesd_tt,sky130_fd_pr__esd_pfet_g5v0d10v5__tt +plowvt_ff,sky130_fd_pr__pfet_01v8_lvt__ff +plowvt_fs,sky130_fd_pr__pfet_01v8_lvt__fs +plowvt_mm,sky130_fd_pr__pfet_01v8_lvt__mismatch +plowvt_sf,sky130_fd_pr__pfet_01v8_lvt__sf +plowvt_ss,sky130_fd_pr__pfet_01v8_lvt__ss +plowvt_tt,sky130_fd_pr__pfet_01v8_lvt__tt +pmedlvtrf,sky130_fd_pr__rf_pfet_01v8_mvt +presistor,sky130_fd_pr__res_high_po__base +pshort_ff,sky130_fd_pr__pfet_01v8__ff +pshort_fs,sky130_fd_pr__pfet_01v8__fs +pshort_mm,sky130_fd_pr__pfet_01v8__mismatch +pshort_rf,sky130_fd_pr__rf_pfet_01v8 +pshort_sf,sky130_fd_pr__pfet_01v8__sf +pshort_ss,sky130_fd_pr__pfet_01v8__ss +pshort_tt,sky130_fd_pr__pfet_01v8__tt +pvhv_base,sky130_fd_pr__pfet_g5v0d16v0__base +pvhv_leak,sky130_fd_pr__pfet_g5v0d16v0__leak +pybentres,sky130_fd_pr__res_bent_po +rf_ind_03,sky130_fd_pr__ind_03 +rf_ind_05,sky130_fd_pr__ind_05 +rf_xcmimc,sky130_fd_pr__cap_mim_m3 +rf_xcmvpp,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +rf_xcnwvc,sky130_fd_pr__cap_var_lvt +xind4_011,sky130_fd_pr__ind_11_04 +xind_3_90,sky130_fd_pr__ind_03_90 +xinductor,sky130_fd_pr__ind +mimcap34,sky130_fd_pr__cap_mim_m3__base +mimcap45,sky130_fd_pr__cap_mim_m4__base +nand2s_p,sky130_fd_pr__model__typical__nand2s +ndiode_h,sky130_fd_pr__diode_pw2nd_11v0 +nfetextd,sky130_fd_pr__nfet_01v8_extenddrain +nhv_leak,sky130_fd_pr__nfet_g5v0d10v5__leak +nhv_w3p0,sky130_fd_pr__nfet_g5v0d10v5_aW3p00 +nhv_w5p0,sky130_fd_pr__nfet_g5v0d10v5_aW5p00 +nhv_w7p0,sky130_fd_pr__nfet_g5v0d10v5_aW7p00 +nlvtpass,sky130_fd_pr__special_nfet_pass_lvt +npass_mm,sky130_fd_pr__special_nfet_pass__mismatch +pdiode_h,sky130_fd_pr__diode_pd2nw_11v0 +pfetextd,sky130_fd_pr__pfet_01v8_extenddrain +phv_leak,sky130_fd_pr__pfet_g5v0d10v5__leak +plyshort,sky130_fd_pr__short_pl +pnppar5x,sky130_fd_pr__pnp_05v5_W3p40L3p40 +rf_pnp5x,sky130_fd_pr__pnp_05v5_W3p40L3p40 +s8rf_nhv,sky130_fd_pr__rf_nfet_g5v0d10v5 +s8rf_npn,sky130_fd_pr__rf_npn_05v5 +s8rf_pnp,sky130_fd_pr__pnp_05v5_W3p40L3p40 +xcmim2c1,sky130_fd_pr__cap_mim_m4_1 +xcmim2c2,sky130_fd_pr__cap_mim_m4_2 +xcmvpp_2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1 +xcmvppx4,sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhv +xind4_02,sky130_fd_pr__ind_02_04 +xnwdiode,sky130_fd_pr__model__parasitic__diode_ps2nw +xuhrpoly,sky130_fd_pr__res_xhigh_po +bkeep_p,sky130_fd_pr__model__typical__bkeep +hvntran,sky130_fd_pr__model__nfet_highvoltage +hvptran,sky130_fd_pr__model__pfet_highvoltage +n20vhv1,sky130_fd_pr__nfet_20v0 +nand2_p,sky130_fd_pr__model__typical__nand2 +nand3_p,sky130_fd_pr__model__typical__nand3 +nand4_p,sky130_fd_pr__model__typical__nand4 +nand5_p,sky130_fd_pr__model__typical__nand5 +nor2s_p,sky130_fd_pr__model__typical__nor2s +npassll,sky130_fd_pr__special_nfet_pass_lowleakage +npn_1x1,sky130_fd_pr__npn_05v5_W1p00L1p00 +npn_1x2,sky130_fd_pr__npn_05v5_W1p00L2p00 +npn_1x4,sky130_fd_pr__npn_05v5_W1p00L4p00 +npn_1x8,sky130_fd_pr__npn_05v5_W1p00L8p00 +npn_2x2,sky130_fd_pr__npn_05v5_W2p00L2p00 +npn_2x4,sky130_fd_pr__npn_05v5_W2p00L4p00 +npn_2x8,sky130_fd_pr__npn_05v5_W2p00L8p00 +npn_5x5,sky130_fd_pr__npn_05v5_W5p00L5p00 +nvhv_ff,sky130_fd_pr__nfet_g5v0d16v0__ff +nvhv_fs,sky130_fd_pr__nfet_g5v0d16v0__fs +nvhv_sf,sky130_fd_pr__nfet_g5v0d16v0__sf +nvhv_ss,sky130_fd_pr__nfet_g5v0d16v0__ss +nvhv_tt,sky130_fd_pr__nfet_g5v0d16v0__tt +nwdiode,sky130_fd_pr__model__parasitic__diode_ps2nw +p20vhv1,sky130_fd_pr__pfet_20v0 +pesdfet,sky130_fd_pr__esd_pfet_01v8 +phighvt,sky130_fd_pr__pfet_01v8_hvt +pmedlvt,sky130_fd_pr__pfet_01v8_mvt +pvhv_ff,sky130_fd_pr__pfet_g5v0d16v0__ff +pvhv_fs,sky130_fd_pr__pfet_g5v0d16v0__fs +pvhv_sf,sky130_fd_pr__pfet_g5v0d16v0__sf +pvhv_ss,sky130_fd_pr__pfet_g5v0d16v0__ss +pvhv_tt,sky130_fd_pr__pfet_g5v0d16v0__tt +sonos_e,sky130_fd_bs_flash__special_sonosfet_star +sonos_p,sky130_fd_bs_flash__special_sonosfet_original +uhrpoly,sky130_fd_pr__res_xhigh_po +xchvnwc,sky130_fd_pr__cap_var +xcmim2c,sky130_fd_pr__cap_mim_m4 +xcmimc1,sky130_fd_pr__cap_mim_m3_1 +xcmimc2,sky130_fd_pr__cap_mim_m3_2 +xcmvpp1,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +xcmvpp2,sky130_fd_pr__cap_vpp_04p4x04p6_l1m1m2_noshield_o1 +xcmvpp3,sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield +xcmvpp4,sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 +xcmvpp5,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield +xcmvpp6,sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_shieldpom3 +xcnwvc2,sky130_fd_pr__cap_var_hvt +xhrpoly,sky130_fd_pr__res_high_po +xndiode,sky130_fd_pr__esd_diode_pw2nd_05v5 +xnor2_p,sky130_fd_pr__model__typical__xnor2 +xpnppar,sky130_fd_pr__esd_pnp_05v5 +einv_p,sky130_fd_pr__model__typical__einv +fnpass,sky130_fd_pr__special_nfet_pass_flash +hrpoly,sky130_fd_pr__res_high_po +ind_03,sky130_fd_pr__ind_03 +ind_05,sky130_fd_pr__ind_05 +m4fuse,sky130_fd_pr__fuse_m4 +n20vhv,sky130_fd_pr__nfet_20v0 +nand2s,sky130_fd_pr__model__typical__nand2s +ndfres,sky130_fd_pr__res_generic_nd +ndiode,sky130_fd_pr__diode_pw2nd_05v5 +nhv_ff,sky130_fd_pr__nfet_g5v0d10v5__ff +nhv_fs,sky130_fd_pr__nfet_g5v0d10v5__fs +nhv_mm,sky130_fd_pr__nfet_g5v0d10v5__mismatch +nhv_rf,sky130_fd_pr__rf_nfet_g5v0d10v5 +nhv_sf,sky130_fd_pr__nfet_g5v0d10v5__sf +nhv_ss,sky130_fd_pr__nfet_g5v0d10v5__ss +nhv_tt,sky130_fd_pr__nfet_g5v0d10v5__tt +nhvesd,sky130_fd_pr__esd_nfet_g5v0d10v5 +nlowvt,sky130_fd_pr__nfet_01v8_lvt +nor2_p,sky130_fd_pr__model__typical__nor2 +nor3_p,sky130_fd_pr__model__typical__nor3 +nor4_p,sky130_fd_pr__model__typical__nor4 +npassd,sky130_fd_pr__special_nfet_pass_dual +npd_mm,sky130_fd_pr__special_nfet_latch__mismatch +npnpar,sky130_fd_pr__npn_05v5 +nshort,sky130_fd_pr__nfet_01v8 +p20vhv,sky130_fd_pr__pfet_20v0 +pdfres,sky130_fd_pr__res_generic_pd +pdiode,sky130_fd_pr__diode_pd2nw_05v5 +phv_ff,sky130_fd_pr__pfet_g5v0d10v5__ff +phv_fs,sky130_fd_pr__pfet_g5v0d10v5__fs +phv_mm,sky130_fd_pr__pfet_g5v0d10v5__mismatch +phv_sf,sky130_fd_pr__pfet_g5v0d10v5__sf +phv_ss,sky130_fd_pr__pfet_g5v0d10v5__ss +phv_tt,sky130_fd_pr__pfet_g5v0d10v5__tt +phvesd,sky130_fd_pr__esd_pfet_g5v0d10v5 +plowvt,sky130_fd_pr__pfet_01v8_lvt +pnppar,sky130_fd_pr__pnp_05v5_W0p68L0p68 +ppu_mm,sky130_fd_pr__special_pfet_pass__mismatch +pshort,sky130_fd_pr__pfet_01v8 +rf_pnp,sky130_fd_pr__pnp_05v5_W3p40L3p40 +xcmimc,sky130_fd_pr__cap_mim_m3 +xcmvpp,sky130_fd_pr__cap_vpp_08p6x07p8_l1m1m2_noshield_o1 +xcnwvc,sky130_fd_pr__cap_var_lvt +xind_3,sky130_fd_pr__ind_03 +xind_5,sky130_fd_pr__ind_05 +xpwres,sky130_fd_pr__res_iso_pw +bkeep,sky130_fd_pr__model__typical__bkeep +inv_p,sky130_fd_pr__model__typical__inv +jtran,sky130_fd_pr__model__jfet +lires,sky130_fd_pr__res_generic_l1 +m5rdl,sky130_fd_pr__via_m5r1 +nand2,sky130_fd_pr__model__typical__nand2 +nand3,sky130_fd_pr__model__typical__nand3 +nand4,sky130_fd_pr__model__typical__nand4 +nand5,sky130_fd_pr__model__typical__nand5 +nhvrf,sky130_fd_pr__rf_nfet_g5v0d10v5 +nor2s,sky130_fd_pr__model__typical__nor2s +npass,sky130_fd_pr__special_nfet_pass +npdll,sky130_fd_pr__special_nfet_latch_lowleakage +npn_f,sky130_fd_pr__npn_05v5__f +npn_s,sky130_fd_pr__npn_05v5__s +npn_t,sky130_fd_pr__npn_05v5__t +ntran,sky130_fd_pr__model__nfet +pnp5x,sky130_fd_pr__pnp_05v5_W3p40L3p40 +ppull,sky130_fd_pr__special_pfet_pass_lowleakage +ptran,sky130_fd_pr__model__pfet +pyres,sky130_fd_pr__res_generic_po +respw,sky130_fd_pr__res_generic_pw +xnor2,sky130_fd_pr__model__typical__xnor2 +einv,sky130_fd_pr__model__typical__einv +ind4,sky130_fd_pr__ind_04 +l1m1,sky130_fd_pr__via_l1m1 +l1m2,sky130_fd_pr__via_l1m2 +m1m2,sky130_fd_pr__via_m1m2 +m2m3,sky130_fd_pr__via_m2m3 +m3m4,sky130_fd_pr__via_m3m4 +m4m5,sky130_fd_pr__via_m4m5 +mrdn,sky130_fd_pr__res_generic_nd +mrdn_hv,sky130_fd_pr__res_generic_nd__hv +mrdp,sky130_fd_pr__res_generic_pd +mrdp_hv,sky130_fd_pr__res_generic_pd__hv +mrl1,sky130_fd_pr__res_generic_l1 +mrm1,sky130_fd_pr__res_generic_m1 +mrm2,sky130_fd_pr__res_generic_m2 +mrm3,sky130_fd_pr__res_generic_m3 +mrm4,sky130_fd_pr__res_generic_m4 +mrm5,sky130_fd_pr__res_generic_m5 +mrp1,sky130_fd_pr__res_generic_po +nfet,sky130_fd_pr__nfet_01v8 +nlrf,sky130_fd_pr__rf_nfet_01v8_lvt +nor2,sky130_fd_pr__model__typical__nor2 +nor3,sky130_fd_pr__model__typical__nor3 +nor4,sky130_fd_pr__model__typical__nor4 +npdd,sky130_fd_pr__special_nfet_latch_dual +npn4,sky130_fd_pr__npn_05v5_W1p00L1p00 +nsrf,sky130_fd_pr__rf_nfet_01v8 +nvhv,sky130_fd_pr__nfet_g5v0d16v0 +pfet,sky130_fd_pr__pfet_01v8 +plrf,sky130_fd_pr__rf_pfet_01v8_lvt +pnp4,sky130_fd_pr__pnp_05v5_W0p68L0p68 +psrf,sky130_fd_pr__rf_pfet_01v8 +pvhv,sky130_fd_pr__pfet_g5v0d16v0 +pyl1,sky130_fd_pr__via_pol1 +pym1,sky130_fd_pr__via_pom1 +pym2,sky130_fd_pr__via_pom2 +resn,sky130_fd_pr__res_generic_nd +resp,sky130_fd_pr__res_generic_pd +sc_p,sky130_fd_pr__model__typical__sc +short,short +xind,sky130_fd_pr__ind +xrdn,sky130_fd_pr__res_generic_nd +xrdp,sky130_fd_pr__res_generic_pd +inv,sky130_fd_pr__model__typical__inv +nhv,sky130_fd_pr__nfet_g5v0d10v5 +npd,sky130_fd_pr__special_nfet_latch +npn,sky130_fd_pr__npn_05v5_all +phv,sky130_fd_pr__pfet_g5v0d10v5 +pnp,sky130_fd_pr__pnp_05v5_W0p68L0p68 +ppu,sky130_fd_pr__special_pfet_pass +sc,sky130_fd_pr__model__typical__sc diff --git a/images/foss-asic-tools/addons/sak/common/sub-no-empty.sh b/images/foss-asic-tools/addons/sak/common/sub-no-empty.sh new file mode 100755 index 00000000..4476e9b9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/sub-no-empty.sh @@ -0,0 +1,61 @@ +#! /bin/gawk -f +# Process a spice file. For back-to-back .subckt,.ends (possibly with comments +# in between) delete (do not output) the whole subckt...ends block. +# Does not support .include or .lib. +# TODO: implicitly handle unfolding confinued lines. Currently requires input passed thru an unfold filter. +# +# subsnoemtpy.sh out.spi +# or: +# subsnoemtpy.sh in.spi >out.spi +# +# recommend input be unfold-ed as in: +# unfold out.spi +# + +BEGIN { IGNORECASE=1 } + +# print but otherwise ignore 1st line of file +# FNR==1 { print $0 ; next } + +# start subckt: remember .subckt line, start accumulating lines... +$1 == ".subckt" { + if (accum > 0) { + print "f: " FILENAME " line#" FNR ", ERROR: start a subckt before last subckt closed" >>"/dev/stderr" + print sublines + } + sublines = $0 + accum=1 + noncomm=0 + next +} +# end subckt: if accumulation has any non-comment lines: output subckt block. +# ERROR if .ends while not accumulating: output line and continue. +$1 == ".ends" { + if (accum == 0) { + print "f: " FILENAME " line#" FNR ", ERROR: extra .ends without opening .subckt" >>"/dev/stderr" + print $0 + next + } + sublines = sublines "\n" $0 + if (noncomm > 0) print sublines + accum=0 + next +} +# not-accumulating, just print line +accum==0 { print $0; next } + +# accumulate lines, but count the non-comments (empty line not a non-comment) +accum==1 { + sublines = sublines "\n" $0; + if ( NF != 0 && index($1, "*") != 1 ) { + noncomm++ + } +} + +# still accumulating?: print'em. Should be error: .subckt without .ends. +END { + if (accum > 0) { + print "f: " FILENAME " line#" FNR ", ERROR: file ends without last subckt closed" >>"/dev/stderr" + print sublines + } +} diff --git a/images/foss-asic-tools/addons/sak/common/verilog2spice.py b/images/foss-asic-tools/addons/sak/common/verilog2spice.py new file mode 100755 index 00000000..f3b7c3d0 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/verilog2spice.py @@ -0,0 +1,198 @@ +#! /usr/bin/python + +# +# Simple structured VERILOG netlist to SPICE netlist translator +# +# usage example : assuming a verilog netlist called final.v +# based on a stdcells library and a memory : +# +# python verilog2spice.py -spice stdcells.cdl -spice memory.cdl -verilog final.v -output final.sp -pos_pwr VDD -neg_pwr VSS -delimiter +# +# if pos_pwr and neg_pwr are not specified, they are by default VDD and VSS +# +# if -delimiter is used the busses delimiter will be changed +# from [:] in the verilog netlist to <:> in the spice netlist +# +# distributed under GNU GPLv3 +############################################################################## + +import sys +import re +from datetime import datetime + +spi_files = [] +ver_file = '' +out_file = '' +pos_pwr = 'VDD' +neg_pwr = 'VSS' +del_on = False + +for arg in range(1,len(sys.argv)) : # parse all arguments + if sys.argv[arg] == '-spice' : + spi_files.append(sys.argv[arg+1]) + elif sys.argv[arg] == '-verilog' : + if ver_file != "" : + print ('ERROR : only one structured Verilog netlist can be specified !') + else : + ver_file = sys.argv[arg+1] + elif sys.argv[arg] == '-output' : + if out_file != "" : + print ('ERROR : only one output Spice netlist can be specified !') + else : + out_file = sys.argv[arg+1] + if sys.argv[arg] == '-pos_pwr' : + pos_pwr = sys.argv[arg+1] + if sys.argv[arg] == '-neg_pwr' : + neg_pwr = sys.argv[arg+1] + elif sys.argv[arg] == '-delimiter' : + del_on = True + +if len(spi_files) == 0 : + sys.exit("Spice library netlist not specified") +if ver_file == "" : + sys.exit("Verilog netlist not specified") +if out_file == "" : + sys.exit("Output Spice netlist not specified") +if del_on : + print ('The positive power supply is : ' + pos_pwr + ' The negative one : ' + neg_pwr + ' Busses are delimited by <:>') +else : + print ('The positive power supply is : ' + pos_pwr + ' The negative one : ' + neg_pwr + ' Busses are delimited by [:]') + +nb_subckt = 0 # number of cells in the spice netlist +cells = [] # list of cell of the spice netlist +cell_num = 0 #same as nb_subckt + 1 +inst_on = False +subckt_on = False +spi_inc = "" + +# parse the SPICE cells library file : +###################################### +for spi_file in spi_files : + spifl = open(spi_file,'r') # open a SPICE library file + if spi_file.find('\\') != -1 : # remove any path from the reference SPICE netlist + spi_file = spi_file[spi_file.rfind('\\')+1:] + if spi_file.find('/') != -1 : # remove any path from the reference SPICE netlist + spi_file = spi_file[spi_file.rfind('/')+1:] + spi_inc = spi_inc + spi_file + ' ' + for line1 in spifl: + words = line1.upper().rstrip('\r\n').strip().split() + if len(words) > 0: + if words[0].find('SUBCKT') == 1 : + subckt_on = True + nb_subckt += 1 + words.pop(0) + cells.append(words) + elif subckt_on and words[0] == '+' : # case of .SUBCKT defined on several lines + cells[cell_num].extend(words) # store each cell_name and pins in a list + else : + subckt_on = False + if words[0].find('ENDS') == 1 : # end of SUBCKT + #print (cells[cell_num]) + cell_num += 1 + spifl.close() + +if nb_subckt == 0 : + sys.exit('\nERROR : NO subckt found in the Spice netlist !\n') +else : + print ('... end of SPICE netlist parsing : ' + str(nb_subckt) + ' cells found in the SPICE netist.\n') + +# parse the VERILOG netlist : +############################# +verfl = open(ver_file,'r') # open VERILOG file to translate +outfl = open(out_file,'w') # open the output SPICE netlist + +nb_subckt = 0 +nb_pins = 0 +outfl.write('*\n* ' +out_file + ' : SPICE netlist translated from the VERILOG netlist : ' + ver_file + '\n') +outfl.write('*'+ ' '* (len(out_file) + 5 ) + 'on the ' + str(datetime.now())+ '\n*\n') +outfl.write('*' * (len(out_file) + len(ver_file) + 60) + '\n\n') +outfl.write('.INCLUDE ' + spi_inc + '\n\n') + +for line1 in verfl: + words = line1.upper().rstrip('\r\n').strip().split() + if len(words) > 0: + if words[0].find('MODULE') == 0 : #first build the toplevel subckt + subckt_name = words[1] + subckt = '.SUBCKT ' + subckt_name + ' ' + if words[0].startswith('INPUT') or words[0].startswith('OUTPUT') or words[0].startswith('INOUT') : + subckt_on = True + if line1.find('[') == -1 : # pins that are not a bus + subckt += line1[line1.upper().find(words[0])+6:].strip() + ' ' + subckt = subckt.replace(',','') + subckt = subckt.replace(';','') + + else : # busses treatment + lsb = min(int(line1[line1.find('[')+1 : line1.find(':')]) , int(line1[line1.find(':')+1 : line1.find(']')])) + msb = max(int(line1[line1.find('[')+1 : line1.find(':')]) , int(line1[line1.find(':')+1 : line1.find(']')])) + words = re.split(', *', line1[line1.find(']')+1:].rstrip('\r\n').strip().replace(';','')) + for word in words: + for i in range(lsb,msb+1): # spread each bit of each bus + subckt += word + '[' + str(i) + '] ' + + if subckt_on and line1.find('(')>0 : # first cell detected : write the toplevel .SUBCKT + subckt_on = False + if del_on : # change the busses delimiter + subckt = subckt.replace('[','<').replace(']','>') + outfl.write('.GLOBAL ' + pos_pwr + ' ' + neg_pwr + '\n\n' + subckt.upper() + '\n\n') + + if (not subckt_on) and (not inst_on) and re.search('\(\s*\.',line1) : + words = line1.upper().rstrip('\r\n').strip().split() + if words[1][0] == 'X' : # avoid double XX at the beginning of the instance name + instance = words[1] + else : + instance = 'X' + words[1] + subckt = words[0] + inst_on = True + line2 = line1[line1.find('(')+1:] + elif (not subckt_on) and inst_on : # store all the instance description into line2 + line2 = line2 + line1.upper() + + if inst_on and line1.find(';')>0 : # end of the cell description + inst_on = False + if del_on : # change the busses delimiter + line2 = line2.replace('\[','\<').replace('\]','\>') + pins=[] # list of pins + nodes=[] # list of netlist nodes + words = line2.upper().rstrip('\r\n').strip().split('.') + all_pins = ' ' + for word in words : + pins.append(word[:word.find('(')]) + nodes.append(word[word.find('(')+1:word.find(')')]) + i = 0 + while subckt != cells[i][0] and i < len(cells) : # search for the cell on the list of cells stored with the SPICE + i += 1 + if i == len(cells) : + print ('ERROR : subckt ' + subckt + ' not found in the Spice netlist !') + nb_subckt += 1 + else : + inst_name = instance + for pin in range(1,len(cells[i])) : # search for the pins of the SPICE subckt + if cells[i][pin] == pos_pwr : + instance = instance + ' ' + pos_pwr + elif cells[i][pin] == neg_pwr : + instance = instance + ' ' + neg_pwr + else : + j = 0 + while cells[i][pin] != pins[j] and j < len(pins) : # if the verilog pin name = spice pin name + j += 1 + if j == len(nodes) : + print ( 'ERROR : pin ' + cells[i][pin] + ' of the Spice netlist not found for the cell ' + inst_name + ' of the Verilog netlist !') + nb_pins += 1 + else : + instance = instance + ' ' + nodes[j] + # print (instance + ' ' + subckt) + outfl.write(instance + ' ' + subckt + '\n') + +outfl.write('\n' + '.ENDS ' + subckt_name ) + +if nb_subckt > 0 : + print ('\nERROR : during the translation : ' + str(nb_subckt) + ' cells from the VERILOG netlist not found in the SPICE netlist !\n') +if nb_pins > 0 : + print ('\nERROR : during the translation : ' + str(nb_pins) + ' pins from the VERILOG netlist not found in the SPICE netlist !\n') +if nb_subckt + nb_pins == 0 : + print (ver_file + ' : VERILOG netlist successfully translated to the SPICE netlist : ' + out_file + '\n') + +verfl.close() +outfl.close() + +exit(0) # Successful exit diff --git a/images/foss-asic-tools/addons/sak/common/xor.sh b/images/foss-asic-tools/addons/sak/common/xor.sh new file mode 120000 index 00000000..829596f6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/xor.sh @@ -0,0 +1 @@ +../klayout/xor.sh \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/common/xor_xbox.drc b/images/foss-asic-tools/addons/sak/common/xor_xbox.drc new file mode 100755 index 00000000..5d2d4dcb --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/xor_xbox.drc @@ -0,0 +1,54 @@ +# A general XOR script +# (https://www.klayout.de/forum/discussion/100/xor-vs-diff-tool) +# This script uses KLayout's DRC language to implement a generic +# XOR between two layouts. The name of the layouts is given +# in $a and $b. + +# For layout-to-layout XOR with multiple cores, run this script with +# ./klayout -r xor.drc -rd thr=NUM_CORES -rd top_cell=TOP_CELL_NAME -rd a=a.gds -rd b=b.gds -rd ol=xor.gds -zz +# (replace NUM_CORES by the desired number of cores to utilize + +# enable timing output +verbose + +# set up input a +a = source($a, $top_cell) + +# set up input b +b = source($b, $top_cell) + +#xbox = box($x1.to_f, $y1.to_f, $x2.to_f, $y2.to_f) +#xbox = RBA::CellView::active +#xbox.cell.shapes(xbox.layout.layer(104, 0)).insert(RBA::Box::new($x1.to_f, $y1.to_f, $x2.to_f, $y2.to_f)) +xbox = source("./xbox.gds","user_project_wrapper") + +$o && $ext != "gds" && report("XOR #{$a} vs. #{$b}", $o) +$ol && $ext == "gds" && target($ol, $co || "XOR") + +$thr && threads($thr) || threads(2) + +# collect all common layers +layers = {} +[ a.layout, b.layout ].each do |ly| + ly.layer_indices.each do |li| + i = ly.get_info(li) + layers[i.to_s] = i + end +end + +xinner = xbox.input("68/20") +xouter = xbox.input("69/20") + +# perform the XOR's +layers.keys.sort.each do |l| + i = layers[l] + info("--- Running XOR for #{l} ---") + m = a.input(l) ^ xinner + info("chk 1") + n = b.input(l) ^ xinner + info("chk 2") + x = m ^ n + info("XOR differences: #{x.data.size}") + $o && $ext != "gds" && x.output(l, "XOR results for layer #{l} #{i.name}") + $ol && $ext == "gds" && x.output(i.layer, i.datatype, i.name) +end diff --git a/images/foss-asic-tools/addons/sak/common/xor_xbox.sh b/images/foss-asic-tools/addons/sak/common/xor_xbox.sh new file mode 100755 index 00000000..b82769d9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/common/xor_xbox.sh @@ -0,0 +1,44 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +: ${1?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${2?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${3?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${4?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${5?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${6?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${7?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} +: ${8?"Usage: $0 file1.gds file2.gds output.gds|markers.xml x1 y1 x2 y2"} + + +echo "First Layout: $1" +echo "Second Layout: $2" +echo "Design Name: $3" +echo "Output GDS will be: $4" +echo "Exclude box: $5, $6, $7, $8" + +klayout -b -r $(dirname $0)/xor_xbox.drc \ + -rd top_cell=$3 \ + -rd a=$1 \ + -rd b=$2 \ + -rd thr=$(nproc) \ + -rd ol=$4 \ + -rd o=$4 \ + -rd ext=${4##*.} \ + -rd x1=$5 \ + -rd y1=$6 \ + -rd x2=$7 \ + -rd y2=$8 \ + -zz diff --git a/images/foss-asic-tools/addons/sak/klayout/coordinates.rb b/images/foss-asic-tools/addons/sak/klayout/coordinates.rb new file mode 100755 index 00000000..5cafee8c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/coordinates.rb @@ -0,0 +1,59 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# +# SPDX-License-Identifier: Apache-2.0 + +# This script finds origin of the user_project_wrapper and returns if they are equivalent +# +# To Run the script: +# klayout -rd file1= -rd file2= -z -r coordinates.rb + +layout = RBA::Layout.new +lmap = layout.read($file1) + +origin = Struct.new(:instx, :insty, :instrot) +origins = Array.new + +lmap2 = layout.read($file2) + +ind = 0 + +layout.each_cell do |c| + # change and the instances + if c.name == "user_project_wrapper" + ind = Integer(c.cell_index) + end +end + +layout.each_cell do |c| + c.each_inst do |inst| + if inst.cell_index.equal? ind + iindex = inst.cell_index + name = layout.cell_name(iindex) + itrans = inst.trans.to_s.gsub(",", "\s").split("\s") + instrot = itrans[0] + instx = (itrans[1].to_i * layout.dbu).round(6) + insty = (itrans[2].to_i * layout.dbu).round(6) + origin.new(instx, insty, instrot) + origins.append(origin) + puts("#{name},#{instx},#{insty},#{instrot}") + end + end +end + +if origins.uniq.size > 1 + puts "They are not equivalent" +else + puts "They are equivalent" +end diff --git a/images/foss-asic-tools/addons/sak/klayout/cp_shapes.py b/images/foss-asic-tools/addons/sak/klayout/cp_shapes.py new file mode 100755 index 00000000..b9361b51 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/cp_shapes.py @@ -0,0 +1,68 @@ +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +import pya +from time import sleep +import os + +try: + if output_layout == "": + raise NameError + _output_layout = output_layout +except NameError: + _output_layout = input_layout + print("Warning: output_layout was not provided; will do the modifications in place!") + print("Hit CTRL-C to cancel...") + sleep(3) + +print("Starting...") +app = pya.Application.instance() +win = app.main_window() + +# Load technology file +tech = pya.Technology() +tech.load(tech_file) +layoutOptions = tech.load_layout_options + +# Load def/gds file in the main window +cell_view = win.load_layout(input_layout, layoutOptions, 0) +layout_view = cell_view.view() +layout_view.load_layer_props(os.path.splitext(tech_file)[0]+'.lyp') +layout_view.max_hier_levels = 1 +layout_view.min_hier_levels = 1 + +# gets the corresponding layout object +layout = cell_view.layout() + +# gets the cell to change is "INV2X" +# cell = layout.cell("Active_area") +cell = cell_view.cell + +# finds source layer +layer, purpose = source_layer.split('/') +assert layer and purpose +_source_layer = layout.layer(int(layer), int(purpose)) + +# finds (or creates) target layer +layer, purpose = target_layer.split('/') +assert layer and purpose +_target_layer = layout.layer(int(layer), int(purpose)) + +layout.copy_layer(_source_layer, _target_layer) + +layout.write(_output_layout) + +print("Successfully wrote", _output_layout) + +app.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/cp_shapes.sh b/images/foss-asic-tools/addons/sak/klayout/cp_shapes.sh new file mode 100755 index 00000000..fe8a65ce --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/cp_shapes.sh @@ -0,0 +1,22 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +: ${1?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${2?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${3?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${PDK_ROOT?"You need to export PDK_ROOT"} +TECH=${TECH:-sky130A} + +xvfb-run klayout -z -rd input_layout=$1 -rd tech_file=$PDK_ROOT/$TECH/libs.tech/klayout/$TECH.lyt -rd source_layer=$2 -rd target_layer=$3 -rd output_layout=$4 -rm $(dirname $0)/cp_shapes.py diff --git a/images/foss-asic-tools/addons/sak/klayout/def-lef/import_def.rb b/images/foss-asic-tools/addons/sak/klayout/def-lef/import_def.rb new file mode 100755 index 00000000..f8497ac7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/def-lef/import_def.rb @@ -0,0 +1,38 @@ +# Usage +# +# klayout -rd input=in.def -rd map=in.map -rd lefs=in.lef,in_tech.lef -rm path_to_script/import_def.rb +# +# Variables (-rd =\S+) # The layer name + (?: # Non-capturing group + \s+\+\ MASK\ (?P\d+) # Mask, None if absent + )? + (?P # OPC, None if absent + \s+\+\ OPC + )? + \s+RECT\ + \(\ (?P\d+)\ (?P\d+)\ \)\ # rect lower-left pt + \(\ (?P\d+)\ (?P\d+)\ \)\ ; # rect upper-right pt + ''', + re.VERBOSE) + +def read_fills(top): + if config_file == '': + print('WARNING: no fill config file specified') + return + # KLayout doesn't support FILL in DEF so we have to side load them :( + cfg = read_cfg() + in_fills = False + units = None + with open(in_def) as fp: + for line in fp: + if in_fills: + if re.match('END FILLS', line): + break # done with fills; don't care what follows + m = re.match(rect_pat, line) + if not m: + raise Exception('Unrecognized fill: ' + line) + opc_type = 'opc' if m.group('opc') else 'non-opc' + mask = m.group('mask') + if not mask: #uncolored just uses first entry + mask = 0 + else: + mask = int(mask) - 1 # DEF is 1-based indexing + layer = cfg[m.group('layer')][opc_type]['klayout'][mask] + xlo = int(m.group('xlo')) / units + ylo = int(m.group('ylo')) / units + xhi = int(m.group('xhi')) / units + yhi = int(m.group('yhi')) / units + top.shapes(layer).insert(pya.DBox(xlo, ylo, xhi, yhi)) + elif re.match('FILLS \d+ ;', line): + in_fills = True + elif not units: + m = re.match('UNITS DISTANCE MICRONS (\d+)', line) + if m: + units = float(m.group(1)) + +# Load technology file +tech = pya.Technology() +tech.load(tech_file) +layoutOptions = tech.load_layout_options + +# Load def file +main_layout = pya.Layout() +main_layout.read(in_def, layoutOptions) + +# Clear cells +top_cell_index = main_layout.cell(design_name).cell_index() + +print("[INFO] Clearing cells...") +for i in main_layout.each_cell(): + if i.cell_index() != top_cell_index: + if not i.name.startswith("VIA"): + #print("\t" + i.name) + i.clear() + +# Load in the gds to merge +print("[INFO] Merging GDS files...") +for gds in in_gds.split(): + print("\t{0}".format(gds)) + main_layout.read(gds) + +# Copy the top level only to a new layout +print("[INFO] Copying toplevel cell '{0}'".format(design_name)) +top_only_layout = pya.Layout() +top_only_layout.dbu = main_layout.dbu +top = top_only_layout.create_cell(design_name) +top.copy_tree(main_layout.cell(design_name)) + +read_fills(top) + +print("[INFO] Checking for missing GDS...") +missing_gds = False +for i in top_only_layout.each_cell(): + if i.is_empty(): + missing_gds = True + print("[ERROR] LEF Cell '{0}' has no matching GDS cell. Cell will be empty".format(i.name)) + +if not missing_gds: + print("[INFO] All LEF cells have matching GDS cells") + +if seal_gds: + + top_cell = top_only_layout.top_cell() + + print("[INFO] Reading seal GDS file...") + print("\t{0}".format(seal_gds)) + top_only_layout.read(seal_gds) + + for cell in top_only_layout.top_cells(): + if cell != top_cell: + print("[INFO] Merging '{0}' as child of '{1}'".format(cell.name, top_cell.name)) + top.insert(pya.CellInstArray(cell.cell_index(), pya.Trans())) + +# Write out the GDS +print("[INFO] Writing out GDS '{0}'".format(out_gds)) +top_only_layout.write(out_gds) +print("Done") +sys.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/def2gds.sh b/images/foss-asic-tools/addons/sak/klayout/def2gds.sh new file mode 100755 index 00000000..fc764a49 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/def2gds.sh @@ -0,0 +1,14 @@ +export KLAYOUT_SKY130_TECH=/home/xrex/.klayout/tech/SKY130/SKY130.lyt + +: ${1?"Usage: $0 input.def design_name prereq1.gds prereq2.gds ...."} +: ${2?"Usage: $0 input.def design_name prereq1.gds prereq2.gds ...."} +: ${3?"Usage: $0 input.def design_name prereq1.gds prereq2.gds ...."} + +xvfb-run klayout -z -rd design_name=$2 \ + -rd in_def=$1 \ + -rd in_gds="${@:3}" \ + -rd config_file="" \ + -rd seal_gds="" \ + -rd out_gds=$(dirname $1)/$2.gds \ + -rd tech_file=$KLAYOUT_SKY130_TECH \ + -rm $(dirname $0)/def2gds.py diff --git a/images/foss-asic-tools/addons/sak/klayout/delete_areaid.py b/images/foss-asic-tools/addons/sak/klayout/delete_areaid.py new file mode 100755 index 00000000..6ef40c86 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/delete_areaid.py @@ -0,0 +1,41 @@ + +# Enter your Python code here + +import pya +from time import sleep + +print("Starting...") +app = pya.Application.instance() +win = app.main_window() + +# Load technology file +#tech = pya.Technology() +#tech.load(tech_file) +#layoutOptions = tech.load_layout_options + +# Load def/gds file in the main window +#cell_view = win.load_layout(input_layout, layoutOptions, 0) +#layout_view = cell_view.view() +#layout_view.max_hier() + +# gets the corresponding layout object +#layout = cell_view.layout() +layout = pya.Layout() +layout.read(input_layout) +#layout.clear_layer(81) +#layout.delete_layer(81) + +# gets the cell to change is "INV2X" +# cell = layout.cell("Active_area") +#cell = cell_view.cell + +# finds source layer +#areaid_layer = layout.layer(81, 14) +#areaid_layer.delete() + +#layout.write(input_layout) +layout.write('junk.gds') + +print("Successfully wrote", input_layout) + +app.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/density_check.lydrc b/images/foss-asic-tools/addons/sak/klayout/density_check.lydrc new file mode 100755 index 00000000..38d5efd4 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/density_check.lydrc @@ -0,0 +1,73 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + verbose(true) + +li_wildcard = "67/0-4,6-43,45-*" +mcon_wildcard = "67/44" + +m1_wildcard = "68/0-4,6-43,45-*" +via_wildcard = "68/44" + +m2_wildcard = "69/0-4,6-43,45-*" +via2_wildcard = "69/44" + +m3_wildcard = "70/0-4,6-43,45-*" +via3_wildcard = "70/44" + +m4_wildcard = "71/0-4,6-43,45-*" +m4fill_wildcard = "51/28" +via4_wildcard = "71/44" + +m5_wildcard = "72/0-4,6-43,45-*" + +seal_wildcard = "61/20" + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +m4fill = polygons(m4fill_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +seal_layer = input(seal_wildcard) + +##### + +area = (m4+m4fill).area + +bbox = seal_layer.bbox.area + +area_within_seal = bbox - seal_layer.area + +density = area / area_within_seal + +print("Density: #{density}\n") + +print("CADensity: #{1 - density}\n") + + diff --git a/images/foss-asic-tools/addons/sak/klayout/diff.py b/images/foss-asic-tools/addons/sak/klayout/diff.py new file mode 100755 index 00000000..332b132b --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/diff.py @@ -0,0 +1,29 @@ +import klayout.rdb as rdb +import sys +from collections import Counter +import contextlib + +kl_rd = rdb.ReportDatabase("klayout database") +kl_rd.load(str(sys.argv[1])) +cal_rd = rdb.ReportDatabase("calibre database") +cal_rd.load(str(sys.argv[2])) +cat_cal=[] +cat_kl=[] + +for kl in kl_rd.each_item(): + cat_kl.append(kl_rd.category_by_id(kl.category_id()).name()) +for kl in cal_rd.each_item(): + cat_cal.append(cal_rd.category_by_id(kl.category_id()).name().replace('MR_', '')) + +categories_kl = Counter(cat_kl) +categories_cal = Counter(cat_cal) + +with open(str(sys.argv[3]), 'w') as f: + with contextlib.redirect_stdout(f): + print('%-12s%-12s%-12s%s' % ('category', 'klayout', 'calibre', 'equivalent')) + + for c in categories_kl | categories_cal: + if categories_kl[c] == categories_cal[c]: + print('%-12s%-12d%-12d%s' % (c, categories_kl[c], categories_cal[c], 'yes')) + else: + print('%-12s%-12d%-12d%s' % (c, categories_kl[c], categories_cal[c], 'no')) diff --git a/images/foss-asic-tools/addons/sak/klayout/diff_report.py b/images/foss-asic-tools/addons/sak/klayout/diff_report.py new file mode 100755 index 00000000..69f8849e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/diff_report.py @@ -0,0 +1,68 @@ +import klayout.rdb as rdb +import klayout.db as pya +import sys +from collections import Counter +import contextlib + +kl_rd = rdb.ReportDatabase("klayout database") +kl_rd.load(str(sys.argv[1])) +cal_rd = rdb.ReportDatabase("calibre database") +cal_rd.load(str(sys.argv[2])) +diff_rd = rdb.ReportDatabase("diff database") +cat_cal=[] +cat_kl=[] +diff = [] +cal_array = [] + +kl_cat_region = {} +cal_cat_region = {} +poly = 0 + +for kl in kl_rd.each_item(): + for value in kl.each_value(): + if value.is_edge_pair(): + poly = value.edge_pair().polygon(0) + elif value.polygon(): + poly = value.polygon() + if kl_rd.category_by_id(kl.category_id()).name() not in kl_cat_region: + kl_cat_region[kl_rd.category_by_id(kl.category_id()).name()] = [] + kl_cat_region[kl_rd.category_by_id(kl.category_id()).name()].append(poly) + +for cal in cal_rd.each_item(): + for value in cal.each_value(): + if value.is_edge_pair(): + poly = value.edge_pair().polygon(0) + elif value.polygon(): + poly = value.polygon() + if cal_rd.category_by_id(cal.category_id()).name().replace('MR_', '') not in cal_cat_region: + cal_cat_region[cal_rd.category_by_id(cal.category_id()).name().replace('MR_', '')] = [] + cal_cat_region[cal_rd.category_by_id(cal.category_id()).name().replace('MR_', '')].append(poly) + + +for val in cal_cat_region.values(): + for v in val: + cal_array.append(v) + + +for key, value in kl_cat_region.items(): + for val in value: + if val not in cal_array: + # print(val) + diff.append([key, value]) + +for i in diff: + cat = diff_rd.create_category(i[0]) + cell = diff_rd.create_cell(kl_rd.top_cell_name) + item = diff_rd.create_item(cell, cat) + for n in i[1]: + item.add_value(n) + +diff_rd.save(str(sys.argv[3])) + +arr = [] +for i in diff_rd.each_category(): + arr.append(i) +if len(arr) == 0: + print("\033[1;32m Klayout and Calibre Match!") +else: + print("\033[91m Klayout and Calibre Don't match!") diff --git a/images/foss-asic-tools/addons/sak/klayout/drc-gds-sky130A-klayout.sh b/images/foss-asic-tools/addons/sak/klayout/drc-gds-sky130A-klayout.sh new file mode 100755 index 00000000..2047c00a --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/drc-gds-sky130A-klayout.sh @@ -0,0 +1,65 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +usage() { echo "Usage: $0 [ -f ] [ -m ] [ ]" 1>&2; exit 2; } + +drc_full=false +drc_mr=false +while getopts "fm" o; do + case "${o}" in + f) + drc_full=true + ;; + m) + drc_mr=true + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +set -e + +[[ $# -gt 3 ]] && export TAPEOUT_ROOT=$4 || export TAPEOUT_ROOT=/mnt/shuttles + +export SAK=$TAPEOUT_ROOT/sak +export PATH=$PATH:/ef/apps/bin:$SAK/tapeout:$SAK +export CARAVEL_ROOT=${TAPEOUT_ROOT}/${1}/caravel +export PDK_ROOT=${TAPEOUT_ROOT}/${1}/pdk + +target_path=${2} +input_gds=${3} +report=${target_path}/signoff/kdrc_results.txt + +tech_mr=${SAK}/klayout/tech/sky130A/sky130A_mr.lydrc +tech_full=${SAK}/klayout/tech/sky130A/sky130A.lydrc + +if [ $drc_full = true ]; then + klayout -b \ + -rd input=${input_gds} \ + -rd report=${report} \ + -r ${tech_full} |& tee ${target_path}/signoff/klayout_drc.log +fi + +if [ $drc_mr = true ]; then + klayout -b \ + -rd input=${input_gds} \ + -rd report=${report} \ + -r ${tech_mr} |& tee "${target_path}/signoff/klayout_drc.log" +fi + +exit 0 diff --git a/images/foss-asic-tools/addons/sak/klayout/drc_kl_all.sh b/images/foss-asic-tools/addons/sak/klayout/drc_kl_all.sh new file mode 100755 index 00000000..e6aaacc6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/drc_kl_all.sh @@ -0,0 +1,3 @@ +#!/usr/bin/sh +/mnt/shuttles/precheck/drc_checks/drc_kl.sh $TAPEOUT_ROOT/precheck/tech-files/sky130A_mr.lydrc $1 ${1}.kl.report.db . +klayout $1 -m ${1}.kl.report.db & diff --git a/images/foss-asic-tools/addons/sak/klayout/drc_kl_feol.sh b/images/foss-asic-tools/addons/sak/klayout/drc_kl_feol.sh new file mode 100755 index 00000000..a2f733e3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/drc_kl_feol.sh @@ -0,0 +1,3 @@ +#!/usr/bin/sh +/mnt/shuttles/precheck/drc_checks/run_drc_klayout.sh $TAPEOUT_ROOT/precheck/tech-files/sky130A_mr.lydrc $1 ${1}.kl.report.db . +klayout $1 -m ${1}.kl.report.db & diff --git a/images/foss-asic-tools/addons/sak/klayout/erase.rb b/images/foss-asic-tools/addons/sak/klayout/erase.rb new file mode 100755 index 00000000..e319ba56 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/erase.rb @@ -0,0 +1,246 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# +# SPDX-License-Identifier: Apache-2.0 + +# This script finds origin of the user_project_wrapper and returns if they are equivalent +# +# To Run the script: +# klayout -rd file1= -rd file2= -z -r layer_check.rb + + +# ---------------------------------------------------------------- +# A boolean processor class + +class BoolProcessor + + def initialize(layout, cell) + + @layout = layout + @cell = cell + + @proc = RBA::ShapeProcessor.new + + @temp_layers = [] + + end + + # Locate a layer for input. + # The layer is specified by a RBA::LayerInfo object which identifies the layer by + # a layer and datatype for example. If the layer does not exist, it is created. + # This method returns a layer index which can be used as input for other functions. + def input(lp) + + layer_index = nil + + # locate the layer if it already exists + (0..(@layout.layers-1)).each do |i| + if @layout.is_valid_layer?(i) && @layout.get_info(i).is_equivalent?(lp) + layer_index = i + break + end + end + + # create a new layer if it does not exist + return layer_index || @layout.insert_layer(lp) + + end + + # Create a new temporary layer and remember for removal on "cleanup". + # This method returns a layer index which can be used as input for other functions. + def tmp + lp = RBA::LayerInfo.new + layer_index = @layout.insert_layer(lp) + @temp_layers.push(layer_index) + return layer_index + end + + # Assign a layer as output. + # Change the layer given by the layer index to the output layer specified + # by a RBA::LayerInfo object. If the layer already exists, it is deleted. + def output(lp, layer_index) + + li = nil + + # locate the layer if it already exists + (0..(@layout.layers-1)).each do |i| + if @layout.is_valid_layer?(i) && @layout.get_info(i).is_equivalent?(lp) + li = i + break + end + end + + # clear the layer if it already exists + if li != layer_index + if li + @layout.delete_layer(li) + end + @layout.set_info(layer_index, lp) + end + + # remove the layer from the list of temporary layers + new_temp = [] + @temp_layers.each do |i| + if i != layer_index + new_temp.push(i) + end + end + @temp_layers = new_temp + + end + + # Clean up all temporary layers + def cleanup + @temp_layers.each do |i| + @layout.delete_layer(i) + end + @temp_layers = [] + end + + # Size a layer by the given value (in micron). + # "input" is the input layer, given by a layer index. + def size(input, d) + res = tmp() + @proc.size(@layout, @cell, input, @cell.shapes(res), to_dbu(d), + 2, true, true, true) + return res + end + + # Size a layer by the given values anisotropically (in micron) + # "input" is the input layer, given by a layer index. + def size2(input, dx, dy) + res = tmp() + @proc.size(@layout, @cell, input, @cell.shapes(res), to_dbu(dx), to_dbu(dy), + 2, true, true, true) + return res + end + + # OR two layers + # "a" and "b" are the input layers, given by a layer index. + def or(a, b) + res = tmp() + @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), + RBA::EdgeProcessor::mode_or, true, true, true) + return res + end + + # XOR two layers + # "a" and "b" are the input layers, given by a layer index. + def xor(a, b) + res = tmp() + @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), + RBA::EdgeProcessor::mode_xor, true, true, true) + return res + end + + # AND two layers + # "a" and "b" are the input layers, given by a layer index. + def and(a, b) + res = tmp() + @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), + RBA::EdgeProcessor::mode_and, true, true, true) + return res + end + + # NOT two layers + # "a" and "b" are the input layers, given by a layer index. + def not(a, b) + res = tmp() + @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), + RBA::EdgeProcessor::mode_anotb, true, true, true) + return res + end + + # Convert a value from micron to database units + # "a" and "b" are the input layers, given by a layer index. + def to_dbu(micron) + return (0.5 + micron / @layout.dbu).floor() + end + + # Run a procedure in the context of this object + def run(&action) + action.call(self) + cleanup + end + + private + @layout + @cell + @proc + +end + +layout = RBA::Layout::new +layout.read($file1) + +cell_to_change = layout.cell($cell_name) +cell_to_change.shapes(layout.layer(104, 0)).insert(RBA::Box::new(-42880, -1600, 2962500, 3521290)) +cell_to_change.shapes(layout.layer(106, 0)).insert(RBA::Box::new(-6980, -37520, 2926600, 3557210)) + +BoolProcessor.new(layout, layout.cell($cell_name)).run do |p| + boundry = p.input(RBA::LayerInfo.new(235, 4)) + bbox = p.input(RBA::LayerInfo.new(104, 0)) + bbox2 = p.input(RBA::LayerInfo.new(106, 0)) + tap = p.input(RBA::LayerInfo.new(81, 14)) + met5_pin = p.input(RBA::LayerInfo.new(72, 16)) + met5 = p.input(RBA::LayerInfo.new(72, 20)) + met4_pin = p.input(RBA::LayerInfo.new(71, 16)) + met4 = p.input(RBA::LayerInfo.new(71, 20)) + via = p.input(RBA::LayerInfo.new(71, 44)) + + layout.layer_indices.each do |li| + # if li != bbox + if li == met5 || li == met5_pin + active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) + gates = p.and(active, bbox) + p.output(RBA::LayerInfo.new(10, 0), gates) + active = p.xor(gates, active) + p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) + end + # end + # if li != bbox2 + if li == met4 || li == met4_pin + active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) + gates = p.and(active, bbox2) + p.output(RBA::LayerInfo.new(10, 0), gates) + active = p.xor(gates, active) + p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) + end + if li == via + active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) + gates = p.and(active, bbox2) + gates2 = p.and(active, bbox) + p.output(RBA::LayerInfo.new(10, 0), gates) + p.output(RBA::LayerInfo.new(11, 0), gates2) + act = p.xor(gates, active) + act2 = p.xor(gates2, active) + actt = p.and(act, act2) + p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), actt) + end + # end + if li != boundry && li != tap + active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) + gates = p.and(active, boundry) + p.output(RBA::LayerInfo.new(10, 0), gates) + active = p.xor(gates, active) + p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) + end + end + layout.delete_layer(layout.layer(10,0)) + layout.delete_layer(layout.layer(11,0)) + layout.delete_layer(layout.layer(104,0)) + layout.delete_layer(layout.layer(106,0)) +end + +layout.write($output) \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/gds2oas-all.sh b/images/foss-asic-tools/addons/sak/klayout/gds2oas-all.sh new file mode 100755 index 00000000..fe1e09f1 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gds2oas-all.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +echo "converting all gds files to oasis files" + +for filename in *.gds; do + out="${filename%%.*}" + out=$out".oas" + xvfb-run -a klayout -z \ + -rd input_layout=$filename \ + -rd output=$out \ + -rm $SAK/klayout/gds2oas.py; done + +echo 'Done converting all gds files to oasis files' +exit 0 diff --git a/images/foss-asic-tools/addons/sak/klayout/gds2oas.py b/images/foss-asic-tools/addons/sak/klayout/gds2oas.py new file mode 100755 index 00000000..1e3a0d4d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gds2oas.py @@ -0,0 +1,16 @@ +import pya + +app = pya.Application.instance() +opt = pya.SaveLayoutOptions() +view = pya.Layout() + +# Setting the name of the output file and setting the substitution character +print("[INFO] Changing from " + input_layout + " to " + output) +opt.set_format_from_filename(output) +opt.oasis_substitution_char='' + +# Reading the input file and writing it to the output file name +view.read(input_layout) +view.write(output, opt) + +app.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/gds2oas.sh b/images/foss-asic-tools/addons/sak/klayout/gds2oas.sh new file mode 100755 index 00000000..ebb78267 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gds2oas.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -e + +echo "converting all gds files to oasis files" + + out="${filename%%.*}.oas" + klayout -z \ + -rd input_layout=$1 \ + -rd output=${1%.gds}.oas \ + -rm $SAK/klayout/gds2oas.py; + +echo 'Done converting all gds files to oasis files' + +echo 'Running XOR between gds and oasis files' + + $SAK/bin/xor.sh $1 ${1%.gds}.oas ${1%.gds} ${1%.gds}-gds2oas-xor.gds + +exit 0 diff --git a/images/foss-asic-tools/addons/sak/klayout/gds2spice-klayout.sh b/images/foss-asic-tools/addons/sak/klayout/gds2spice-klayout.sh new file mode 100755 index 00000000..68292327 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gds2spice-klayout.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +# This script extract the netlist from a layout using Klayout + +: ${1? "Usage: $0 The gds file that will be extracted"} + +echo "converting $1 to spice netlist" + +klayout -b -rd input=$1 \ + -r ${SAK}/klayout/tech/sky130A/sky130A.lylvs diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsAllcells.rb b/images/foss-asic-tools/addons/sak/klayout/gdsAllcells.rb new file mode 100755 index 00000000..c3d553e9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsAllcells.rb @@ -0,0 +1,178 @@ +#!/usr/bin/ruby +# usage: gdsAllcells.rb [-U|-E] [-V] +# +# Runs klayout (in batch) to read gdsFile, and enumerate all cellnames to STDOUT one per line. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this ruby script-name *must* end in .rb). +# +# -U : print unbound ("ghost") cells only; default is to print all cells incl/ unbound. +# Does not change STDERR output; does not change exit-status behavior. +# -E : print empty cells only; all "ghost" cells are empty too, but not all empty are ghost/unbound. +# -V : verbose-mode, each line of output, after cellname 1st-word, shows bbox & types of the cell +# Unbounds ALWAYS generate STDERR messages, a summary count error message, and set exit-status. +# +# For "unbound" cells STDERR messages are printed +# and exit-status is incremented (thus non-zero). +# +# Exit-status: +# I/O errors: 1 +# usage-error (missing arg): 1 +# unbound-cells: 1+number-of-unbounds (up to a maximum of 255) +# The exit status-range 2...255 indicates existence of unbounds. +# WARNING: thus status=255 indistinguishable from: there are 254 OR MORE unbounds. +# +prog="gdsAllcells.rb" +usage = "Usage: #{prog} [options] " + +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + mode = "default" + verbose = 0 + empty = 0 + argvLenReq = 1 # min-# args, after options -U -V + + require 'optparse' + + argSum = ARGV.join(' ') + if ARGV.empty? + ARGV << '--help' + end + + OptionParser.new do |opts| + opts.banner = usage + opts.on("-v", "--version", "version: pass-thru, JUST show klayout version") do + exec "klayout -nc -zz -rx -v" + end + opts.on("-V", "verbose-mode, each line of output, after cellname 1st-word, shows bbox & types of the cell") do + verbose = 1 + end + opts.on("-U", "print unbound (ghost) cells only; default prints all incl. unbound") do + mode = "unbound" + end + opts.on("-E", "print empty cells only (ghosts are empty too); default prints all incl. empty; overrides -U") do + empty = 1 + end + opts.on("-h", "--help", "show usage") do + puts opts + exit 1 + end + opts.on("--usage", "show usage") do + puts opts + exit 1 + end + end.parse! + + # -E is superset of -U. We do this here, so -E overrides -U if both were given in any order. + mode = "empty" if empty == 1 + + if ARGV.length != argvLenReq + puts "ERROR, must give one non-option argument, usage: gdsAllcells.rb [-U|-E] [-V] " + puts " -U : just print unbound(ghost) cells (referenced, not defined); instead of all cells." + puts " -E : just print empty cells (ghosts are empty too); instead of all cells." + puts " -V : verbose-mode, each line of output, after cellname 1st-word, shows bbox & types of the cell." + puts " Regardless of -U or not, stderr messages are printed for unbound cells." + puts "Exit status: 0 success (no unbounds); 1 I/O or usage error; 2...255 for 1... unbounds. See also gdsSize.rb, gdsTopCells.rb" + # this works (to set exit status) from ruby, not in klayout + Kernel.exit(1) + end + + f = ARGV[0] + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd mode=#{mode} -rd verb=#{verbose} -rd file=#{f} -r #{thisScript}" + +end + +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f = $file + +if f == "" + puts "ERROR: missing gdsFile argument" + STDOUT.flush + STDERR.flush + Kernel.exit!(1) +end + +m = 0 +if $mode == "unbound" + m = 1 +elsif $mode == "empty" + m = 2 +end +verb = 0 +if $verb == "1" + verb = 1 +end + +begin + +ly = RBA::Layout::new +ly.read(f) + +errs = 0 +ly.each_cell { |c| + msg = "" + isempty = c.is_empty? + isghost = c.is_ghost_cell? + if verb == 1 + istop = c.is_top? + isleaf = c.is_leaf? + ispcellv = c.is_pcell_variant? + isproxy = c.is_proxy? + islib = c.is_library_cell? + bbox = c.bbox + msg = " " + bbox.to_s + (msg << " top") if istop + (msg << " leaf") if isleaf + (msg << " pcellv") if ispcellv + (msg << " empty") if isempty + (msg << " ghost") if isghost + (msg << " proxy") if isproxy + (msg << " librarycell") if islib + end + + if isghost + STDERR.puts "ERROR: unbound (ghost) cell=#{c.name}" + errs = errs + 1 + end + + # print cell line in all three of these conditions: + # default(all): m == 0 + # -U ghost-only: m == 1 && isghost + # -E empty-only: m == 2 && (isempty || isghost) + # which simplify to: + if m == 0 || isghost || m == 2 && isempty + puts c.name + msg + end +} + +# if we roll-over to 256, exit-status seen by shell is zero. +# uncaught I/O errors will yield (built-in) exit status of 1. +if errs > 0 + STDERR.puts "ERROR: Found #{errs} total unbound (ghost) cells" + errs = errs + 1 +end +if errs > 255 + errs = 255 +end + +# In order to set exit-status, must use exit! not exit. +# But for exit! we'd lose buffered output unless we flush. +STDOUT.flush +STDERR.flush +Kernel.exit!(errs) + +# stdout is buffered, exit! quits without flushing buffered output: +# Kernel.exit!(errs) +# do not set exit-status: +# Kernel.exit(errs) +# exit errs +end diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsArea0.rb b/images/foss-asic-tools/addons/sak/klayout/gdsArea0.rb new file mode 100755 index 00000000..922bb174 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsArea0.rb @@ -0,0 +1,166 @@ +#!/bin/bash +# usage: gdsArea0.rb [-n] [ ] +# +# Process all layers, all cells, all cells: Find zero-area shapes. +# If gdsFileOut given: then delete such zero-area shapes and write new output file. +# Else report count of number of such shapes found. +# +# Intent is (default) deep-mode retains hier. as much as possible, just +# merging each layer of each cell "in-place". +# WARNING: if outFile is RELATIVE-PATH it is written in SAME-DIR as input-GDS. +# +# Exit status (does not work in klayout 0.23.11; does in 0.24 and later): +# 1 : I/O error or other internal error (uncaught exceptions). +# 2...127 : means 1... zero-area shapes found. If over 126 such shapes, status is 127 max. +# 0 : zero-area shapes found. +# If process dies thru signal, exit status is 128+SIGNUM, so that range is reserved. +# i.e. if kernel oom-killer sends kill -9: status=137. +# +# Runs klayout in batch AND edit-mode. +# (klayout requirement is this script-name *must* end in .rb). +# +# Shebang for: no outer ruby interpreter; generalize arg passing to script. +# for-bash: re-quote args, to import from an env-var +x=%{ + [[ "$1" == "--version" || "$1" == "-v" ]] && exec klayout -b -v # pass-thru -v + + export _M0= + for i in "$@" ; do _M0="$_M0${_M0:+,}\"${i//\"/\\\"}\""; done + exec klayout -e -b -r "$0" -rd tag="$_M0" + # tag= is NOT USED, cosmetic: So process-listing shows the arguments, and a + # user can distinguish one process from another, despite running same klayout-script. +} +# for-ruby: + +argv=eval("[ #{ENV["_M0"]} ]") # re-parse args from env-var +# puts "argv.size=#{argv.size}" +# argv.each{ |v| puts v } + + thisScript = $0 + prog="gdsArea0.rb" + usage = "Usage: #{prog} [options] [ ]" + usage += "\n Find (optionally delete) zero-area objects and optionally write modified gds out." + require 'optparse' + + if argv.empty? + argv << '--help' + end + + o = {:writeAlways=>true} + OptionParser.new do |opts| + opts.banner = usage + opts.on("-n", "Don't write gdsOutFile IF NO SHAPES DELETED. Default, if outFile given: always write.") do + o[:writeAlways] = false + end + + opts.on("-v", "--version", "version: pass-thru, JUST show klayout version") do + exec "klayout -b -v" + end + opts.on("--help", "show usage") do + puts opts + exit 1 + end + opts.on("--usage", "show usage") do + puts opts + exit 1 + end + end.parse!(argv) # default constant ARGV? Doesn't work here: not true ruby. + # "!" on end of parse: argv parameter is MODIFIED by OptionParser to delete the processed options. + + if argv.length < 1 || argv.length > 2 + puts "ERROR, not 1 or 2 arguments. #{usage}" + exit 1 + end +f = argv[0] +# c = argv[1] +fout = argv[1] + +if f == "" + puts "ERROR: insufficient arguments. #{usage}" + exit 1 +end + +doDel = fout && (fout != "") # actively do deletes IFF given an output file arg. + +# include RBA +begin + +if doDel + if o[:writeAlways] + puts "Running #{prog} on file=#{f}, output to #{fout} always" + else + puts "Running #{prog} on file=#{f}, output to #{fout} only if there were deletes" + end +else + puts "Running #{prog} on file=#{f} (passive, no gdsFileOut)" +end +puts " args: #{ENV["_M0"]}" + +STDOUT.flush +$errs = 0 +del = 0 + +# based in part on: https://www.klayout.de/forum/discussion/173/use-klayout-in-batch-mode +ly = RBA::Layout.new +ly.read(f) + +## source(f, c) +# s = source(f) +# layout = s.layout +# target(fout) + +ly.layer_indices.each { |li| + ly.each_cell { |cell| + cell.shapes(li).each { |shape| + # TODO: must we check that shape is one of: box, polygon, path? What happens to text? + if shape.is_valid? && (!shape.is_null?) && + (shape.is_box? || shape.is_path? || shape.is_polygon?) && + shape.area == 0 + $errs += 1 + if doDel + shape.delete + del += 1 + end + end + } + } +} + +if fout && fout != "" + if (! o[:writeAlways] ) && del == 0 + puts "Skipped write of #{fout} due -n and nothing deleted." + else + puts "writing #{fout} ..." + ly.write(fout) + end +end + +puts "#{$errs} zero-area shapes, #{del} shapes deleted." + +# if we roll-over to 256, exit-status seen by shell is zero. +# uncaught I/O errors will yield (built-in) exit status of 1. +if $errs > 0 + $errs = $errs + 1 +end +if $errs > 127 + $errs = 127 +end + +# experimental: report own peak process-stats. BUT: output-file isn't really written +# until we exit (during exit). So these results are not 100% accurate. +# VmHWM: max-resident-size, VmPeak: max virtual-size. +# don't need: pid=Process.pid +if File.readable?("/proc/self/status") + puts File.foreach("/proc/self/status").grep(/^(VmPeak|VmHWM)/) +end + +end # end begin + +# does not work (to set exit-status) in 0.23.11. Does work in 0.24.2, 0.27. +exit $errs + +# +# emacs syntax-mode: +# Local Variables: +# mode:ruby +# End: diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsAreamin.drc b/images/foss-asic-tools/addons/sak/klayout/gdsAreamin.drc new file mode 100755 index 00000000..031674aa --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsAreamin.drc @@ -0,0 +1,155 @@ +#!/usr/bin/ruby +# usage: gdsAreamin.rb +# +# Runs klayout (in batch) to flag shapes have area zero or less-than given-area. +# If you give zero: flags shapes with area EQUAL-TO zero. +# Else: flags shapes with area LESS-THAN (and NOT equal-to) the given area. +# Operates on RAW shapes (not merged) and all layers, all cells. See CAVEATS below. +# +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# based on ://www.klayout.de/staging/forum/discussion/1066/extract-layer-list-and-top-cell-name-from-gds-file +# +# TODO: Take klayout .lyt tech-file as optional arg, and use to apply nice symbolic names to +# the output layers (instead of just "125/44" style numeric layernum/datatype). +# +# CAVEATS: Also intent was: flag zero-area shapes that commerical tools would die on since they +# are degenerate polygons. But so far this DOES NOT WORK: Suspect klayout absorbs/discards +# degenerate (or all zero area) polygons on read-in; and will never flag zero-area shapes. +# For that original purpose a non-PDK-specific script was sufficient: process all layers +# indiscriminately, and give an area=0 or very close to zero. +# For other uses a more general script should support any combo of either/both upper/lower +# area bounds, and to limit to specific layers or layer-intersections, and to disable RAW +# mode (i.e. operate on fully merged polygons: which is slower but usually desireable). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + f = ARGV[0] + a = ARGV[1] + fout = ARGV[2] + + if f == "--version" || f == "-v" + # these options don't prevent klayout from initializing ~/.klayout unfortunately... + exec "klayout -nc -rx -zz -v" + end + + if ARGV.length != 3 + puts "ERROR, must give one argument, usage: gdsAreamin.rb " + puts "If minAreaSqMicrons is 0, will flag RAW shapes with area == 0." + puts "If minAreaSqMicrons is not 0, will flag RAW shapes with area < minAreaSqMicrons." + puts "Exit-status: 0 on success; 1 on I/O or usage error. See also gdsAllcells.rb" + exit 1 + end + + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd file=#{f} -rd fileOut=#{fout} -rd area=#{a} -r #{thisScript}" +end + +# +# to just read a gds in batch (no useful info printed): +# klayout -d 40 -z xyz.gds >& klayout.read.log +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f = $file +a = $area +fout = $fileOut + +if f == "" || a == "" || fout == "" + STDERR.puts "ERROR: missing gdsFile argument, usage: gdsAreamin.rb " + exit 1 +end + +a_invalid = !Float(a) rescue true +if a_invalid + STDERR.puts "ERROR: failed to parse min-area '#{a}' as a float." + exit 1 +end + +af = Float(a) +afs = af.to_s +# puts "got f='#{f}', a='#{a}' af.to_s='#{afs}'" + +if af < 0.0 + STDERR.puts "ERROR: min-area '#{afs}' cannot be negative." + exit 1 +end + +if af == 0.0 + why = "area == #{afs}" + whyt = "area == #{a}" +else + why = "area < #{afs}" + whyt = "area < #{a}" +end + +# include RBA + +begin + STDERR.puts "Reading file #{f}, to check shapes for #{whyt}, output to #{fout}" + # layout = Layout.new + # layout.read(f) + # dbu = layout.dbu + # STDERR.puts "dbu=#{dbu}" + s = source(f) + layout = s.layout + + title = "gdsAreamin.rb, input=#{f}, #{whyt}" + report(title, fout) + + threads(4) + deep + + errs = 0 + layers = 0 + total = 0 + ruleHeader = "--- #err|description" + + STDERR.flush + layout.layer_indices.each do |layer_id| + layers = layers + 1 + layer_info = layout.get_info(layer_id) + lpp = layer_info.to_s + # puts "checking #{lpp} ..." + layer = input(lpp).raw + if af == 0.0 + mark = layer.with_area(af).raw # area == af + else + mark = layer.with_area(nil, af).raw # area < af + end + mark.output("#{lpp} #{why}") + size = mark.data.size + if size > 0 + puts ruleHeader if errs == 0 + errs = errs + 1 + total = total + size + puts "%8d %s %s" % [size, lpp, why] + else + end + end + +end + +STDERR.puts "%8d total, among %d layers flagged, of %d source layers" % [total, errs, layers] + +# reserve status=1 for I/O errors +if errs > 0 + errs = errs + 1 +end +# don't roll-over exit-status to/past zero +if errs > 255 + errs = 255 +end + +# exit doesn't work to set status; exit! requires explicit buffered-IO flush. +STDOUT.flush +STDERR.flush +exit errs +# Kernel.exit! errs diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsFlat.rb b/images/foss-asic-tools/addons/sak/klayout/gdsFlat.rb new file mode 100755 index 00000000..2f4e3365 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsFlat.rb @@ -0,0 +1,125 @@ +#!/usr/bin/ruby +# usage: gdsFlat.rb +# +# Runs klayout (in batch) to flatten the topCell to a new output file. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + mode="flat" + argvLenReq = 3 + + f = ARGV[0] + c = ARGV[1] + fout = ARGV[2] + + if f == "--version" || f == "-v" + exec "klayout -nc -zz -rx -v" + end + + if f == "--hier" + argvLenReq = 4 + mode="hier" + f = ARGV[1] + c = ARGV[2] + fout = ARGV[3] + end + + if ARGV.length != argvLenReq + puts "ERROR, must give three non-option arguments, usage: gdsFlat.rb [--hier] " + puts 'Output format inferred from gdsOutFile: .gds[.gz] -> "GDS2", .oas[.gz] -> "OASIS"' + exit 1 + end + + + # construct command from our script arguments, replace self with klayout... + # puts "got: mode='#{mode}' f='#{f}' c='#{c}' fout='#{fout}'" + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd mode=#{mode} -rd file=#{f} -rd topcell=#{c} -rd fileOut=#{fout} -r #{thisScript}" +end + +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +m = $mode +f = $file +c = $topcell +fout = $fileOut + +# puts "got: m='#{m}' f='#{f}' c='#{c}' fout='#{fout}'" + +if f == "" + puts "ERROR: missing gdsFile argument, usage: gdsFlat.rb " + exit 1 +elsif c == "" + puts "ERROR: missing gdsFile argument, usage: gdsFlat.rb " + exit 1 +elsif fout == "" + puts "ERROR: missing gdsFile argument, usage: gdsFlat.rb " + exit 1 +end + +if m == "hier" + puts "WARNING: hierarchical output is experimental (needs more testing)." +elsif m != "flat" + puts "ERROR: mode, '#{m}' is unknown/unsupported." + exit 1 +end + +include RBA + +begin + puts "Reading file #{f} for topcell #{c}" + # make new layout. Also editable: needed for flatten only (SLOWER, avoid if possible) + if m == "flat" + layout = Layout.new(true) + else + layout = Layout.new(false) + end + layout.read(f) + + cell = layout.cell(c) + if cell.to_s.empty? + puts "couldn't open the cell #{c}" + exit 1 + end + + # flatten cell (i.e. each instance replaced with direct content)? + if m == "flat" + puts "Flattening topcell #{c}" + cell.flatten(true) + end + # flatten within each subcell only? + # cell.each_child_cell do |subcellName| + # subcell = layout.cell(subCellName) + # subcell.flatten(true) + # end + + # make options that say: save just one cell (and its sub-hier) + slo = SaveLayoutOptions.new + cellNdx = cell.cell_index + slo.add_cell(cellNdx) + + # format="OASIS" + # compress = false + # slo.format=format + # ... + # layout.write(fout, compress, slo) + + # Infer format from output filename (i.e *.oas => "OASIS") + slo.set_format_from_filename(fout) + + # save (usually flattened) cell (and its sub-hier) + puts "Writing file #{fout} format:#{slo.format} for topcell: #{c} and sub-hier" + layout.write(fout, slo) + +end + +puts "Done." + diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsLayers.rb b/images/foss-asic-tools/addons/sak/klayout/gdsLayers.rb new file mode 100755 index 00000000..81901e00 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsLayers.rb @@ -0,0 +1,96 @@ +#!/usr/bin/ruby +# usage: gdsLayers.rb +# LIMITATION: effectively sees/processes layers present in all cells, +# not just the hierarchy of "the" one topcell of interest. i.e. Can be +# multiple topcells, where only the hier. of the "extra" topcells have +# certain layers; where better is to limit output to layers in the hier. +# of just one specific topcell. +# +# TODO: take optional topcell argument: If present, delete the other +# topcells, and loop, until just that one topcell is left. (Assumes +# deleting a topcell will expose/promote subcells as new topcells). +# +# Runs klayout (in batch) to print layer-info of all layers present in a GDS file. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# based on ://www.klayout.de/staging/forum/discussion/1066/extract-layer-list-and-top-cell-name-from-gds-file +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + f = ARGV[0] + c = ARGV[1] + + if f == "--version" || f == "-v" + # these options don't prevent klayout from initializing ~/.klayout unfortunately... + exec "klayout -nc -rx -zz -v" + end + + if ARGV.length != 1 + puts "ERROR, must give one argument, usage: gdsLayers.rb " + puts "LIMITATION: effectively outputs layers from any cell, i.e. not limited to" + puts "layers used in hierarchy of just one topcell (if they are multiple topcells)." + puts "Work-around: 1st isolate the hier. of just one top cell via:" + puts " gdsFlat.rb --hier && gdsLayers.rb " + puts "Exit-status: 0 on success; 1 on I/O or usage error. See also gdsAllcells.rb" + exit 1 + end + + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd file=#{f} -r #{thisScript}" +end + +# +# to just read a gds in batch (no useful info printed): +# klayout -d 40 -z xyz.gds >& klayout.read.log +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f = $file + +if f == "" + STDERR.puts "ERROR: missing gdsFile argument, usage: gdsLayers.rb " + exit 1 +end + +include RBA + +begin + STDERR.puts "Reading file #{f}" + layout = Layout.new + layout.read(f) + # dbu = layout.dbu + # STDERR.puts "dbu=#{dbu}" + + errs = 0 + + STDERR.puts "Layers:" + STDERR.flush + layout.layer_indices.each do |layer_id| + layer_info = layout.get_info(layer_id) + puts layer_info.to_s + end + +end + +# STDERR.puts "Done." + +# reserve status=1 for I/O errors +if errs > 0 + errs = errs + 1 +end +# don't roll-over exit-status to/past zero +if errs > 255 + errs = 255 +end + +# exit doesn't work to set status; exit! requires explicit buffered-IO flush. +STDOUT.flush +STDERR.flush +Kernel.exit! errs diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsLyrdel.rb b/images/foss-asic-tools/addons/sak/klayout/gdsLyrdel.rb new file mode 100755 index 00000000..d411e253 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsLyrdel.rb @@ -0,0 +1,79 @@ +#!/usr/bin/ruby +# usage: gdsLyrdel.rb +# +# Runs klayout (in batch) to flatten the topCell to a new output file. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + mode="flat" + argvLenReq = 4 + + fin = ARGV[0] + fout = ARGV[1] + lnum = ARGV[2] + dnum = ARGV[3] + + if fin == "--version" || fin == "-v" + exec "klayout -nc -zz -rx -v" + end + + if ARGV.length != argvLenReq + puts "ERROR, must give four non-option arguments, usage: gdsLyrdel.rb " + puts 'Output format inferred from gdsOutFile: .gds[.gz] -> "GDS2", .oas[.gz] -> "OASIS"' + exit 1 + end + + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -r #{thisScript} -rd lnum=#{lnum} -rd dnum=#{dnum} -rd file=#{fin} -rd fileOut=#{fout} -rd InKlayout=1" +end + +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +fin = $file +fout = $fileOut +lnum = $lnum.to_i +dnum = $dnum.to_i + +puts "got: fin='#{fin}' fout='#{fout}' lnum='#{lnum}' dnum='#{dnum}'" + + +include RBA + +begin + puts "Reading file #{fin}" + # make new layout and editable. + layout = Layout.new(true) + layout.read(fin) + + lpp = layout.find_layer(lnum, dnum) + if lpp + puts "deleting layer: #{lnum}/#{dnum}" + STDOUT.flush + layout.delete_layer(lpp) + else + STDERR.puts "ERROR: layer not found: #{lnum}/#{dnum}" + STDERR.flush + exit 1 + end + + # Infer format from output filename (i.e *.oas => "OASIS") + slo = SaveLayoutOptions.new + slo.set_format_from_filename(fout) + + # save cell and its sub-hier + puts "Writing file #{fout} format:#{slo.format} ..." + layout.write(fout, slo) +end + +puts "Done." + diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsRename.rb b/images/foss-asic-tools/addons/sak/klayout/gdsRename.rb new file mode 100755 index 00000000..dd0d42db --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsRename.rb @@ -0,0 +1,86 @@ +#!/usr/bin/ruby +# usage: gdsRename.rb +# +# Runs klayout (in batch) to rename a cell and write a new output file. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + argvLenReq = 4 + + f1 = ARGV[0] + + if f1 == "--version" || f1 == "-v" + exec "klayout -nc -zz -rx -v" + end + + if ARGV.length != argvLenReq + puts "ERROR, 4 arguments required, usage: gdsRename.rb " + exit 1 + end + + f2 = ARGV[1] + c1 = ARGV[2] + c2 = ARGV[3] + + # construct command from our script arguments, replace self with klayout... + # puts "got: f1='#{f1}' f2='#{f2}' c1='#{c1}' c2='#{c2}'" + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd file1=#{f1} -rd file2=#{f2} -rd cell1=#{c1} -rd cell2=#{c2} -r #{thisScript}" +end + +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f1 = $file1 +f2 = $file2 +c1 = $cell1 +c2 = $cell2 +# puts "got: f1='#{f1}' f2='#{f2}' c1='#{c1}' c2='#{c2}'" + +if f1 == "" || f2 == "" || c1 == "" || c2 == "" + puts "ERROR, 4 arguments required, usage: gdsRename.rb " + exit 1 +end + +if c1 == c2 + puts "ERROR, cellFrom=#{c1} & cellTo=#{c2} cannot be the same." + exit 1 +end + +include RBA + +begin + puts "Reading file #{f1}" + # make new layout and editable (since we'll flatten) + layout = Layout.new(true) + layout.read(f1) + + cell1 = layout.cell(c1) + if cell1.to_s.empty? + puts "ERROR: couldn't open the cell #{c1}" + exit 1 + end + + cell2 = layout.cell(c2) + if ! cell2.to_s.empty? + puts "ERROR: replacement cellTo #{c2} already exists in source file #{f1}" + exit 1 + end + + layout.rename_cell(cell1.cell_index, c2) + puts "renamed cell: #{c1} to #{c2}" + + # save to file2 + puts "Writing file #{f2}" + layout.write(f2) + +end + +puts "Done." diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsSize.rb b/images/foss-asic-tools/addons/sak/klayout/gdsSize.rb new file mode 100755 index 00000000..f4063bb7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsSize.rb @@ -0,0 +1,123 @@ +#!/usr/bin/ruby +# usage: gdsSize.rb +# +# Runs klayout (in batch) to get bbox of a cell in a GDS file. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .rb). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + f = ARGV[0] + c = ARGV[1] + + if f == "--version" || f == "-v" + # these options don't prevent klayout from initializing ~/.klayout unfortunately... + exec "klayout -nc -rx -zz -v" + end + + if ARGV.length != 2 + puts "ERROR, must give two arguments, usage: gdsSize.rb " + puts " It's an error if unbound (referenced by others, not defined)." + puts " But that's the only unbound checked, no other cells checked or reported." + puts "Exit-status: 0 on success; 1 on I/O or usage error; 2 unbound. See also gdsAllcells.rb" + exit 1 + end + + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd file=#{f} -rd topcell=#{c} -r #{thisScript}" +end + +# +# to just read a gds in batch (no useful info printed): +# klayout -d 40 -z xyz.gds >& klayout.read.log +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f = $file +c = $topcell + +if f == "" + STDERR.puts "ERROR: missing gdsFile argument, usage: gdsSize.rb " + exit 1 +elsif c == "" + STDERR.puts "ERROR: missing cellName argument, usage: gdsSize.rb " + exit 1 +end + +include RBA + +begin + puts "Reading file #{f} for cell #{c}" + layout = Layout.new + layout.read(f) + dbu = layout.dbu + puts "dbu=#{dbu}" + + errs = 0 + + # does not catch case where cell.bbox -> "()" + if ! layout.has_cell?(c) + STDERR.puts "ERROR: layout does not have the cell #{c}" + STDOUT.flush + STDERR.flush + Kernel.exit! 1 + end + + cell = layout.cell(c) + if cell.to_s.empty? + STDERR.puts "ERROR: couldn't open the cell #{c}" + STDOUT.flush + STDERR.flush + Kernel.exit! 1 + end + + bbox = cell.bbox + bbox_str = bbox.to_s + puts "cell #{c} dbu-bbox(ll;ur)=#{bbox}" + + if bbox_str == "()" + STDERR.puts "ERROR: no or empty bbox for the cell #{c}" + errs = errs + 1 + else + l = bbox.left + b = bbox.bottom + r = bbox.right + t = bbox.top + w = r - l + h = t - b + puts "cell #{c} dbu-bbox(left,bottom,right,top)=(#{l},#{b},#{r},#{t})" + puts "cell #{c} dbu-size(width,height)=(#{w},#{h})" + l = l * dbu + b = b * dbu + r = r * dbu + t = t * dbu + w = w * dbu + h = h * dbu + puts "cell #{c} micron-bbox(left,bottom,right,top)=(#{l},#{b},#{r},#{t})" + puts "cell #{c} micron-size(width,height)=(#{w},#{h})" + end + +end + +puts "Done." + +# reserve status=1 for I/O errors +if errs > 0 + errs = errs + 1 +end +# don't roll-over exit-status to/past zero +if errs > 255 + errs = 255 +end + +# exit doesn't work to set status; exit! requires explicit buffered-IO flush. +STDOUT.flush +STDERR.flush +Kernel.exit! errs diff --git a/images/foss-asic-tools/addons/sak/klayout/gdsTopcells.rb b/images/foss-asic-tools/addons/sak/klayout/gdsTopcells.rb new file mode 100755 index 00000000..540d6472 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdsTopcells.rb @@ -0,0 +1,51 @@ +#!/usr/bin/ruby +# usage: gdsTopcells.rb +# +# Runs klayout (in batch) to read gdsFile, and enumerate topcell(s) to STDOUT one per line. +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this ruby script-name *must* end in .rb). +# +InKlayout=$InKlayout +if InKlayout.to_s.empty? + thisScript = $0 + f = ARGV[0] + + if f == "--version" || f == "-v" + exec "klayout -nc -zz -rx -v" + end + + if ARGV.length != 1 + puts "ERROR, must give one argument, usage: gdsTopcells.rb " + exit 1 + end + + # construct command from our script arguments, replace self with klayout... + exec "klayout -nc -zz -rx -rd InKlayout=1 -rd file=#{f} -r #{thisScript}" + +end + +# +# -d : debug level, no details during GDS-reading however, try 20 or 40 or (timing too:) 21 or 41 +# -z/-zz : -z pseudo-batch mode, still needs X-DISPLAY connection; -zz true batch +# -nc : don't use/update configuration file +# -rx : disable built-in macros, stuff not needed for batch usually +# -rd : define variables the script can reference +# + +f = $file + +if f == "" + puts "ERROR: missing gdsFile argument" + exit 1 +end + +begin + +ly = RBA::Layout::new +ly.read(f) + +ly.top_cells.each { |curCell| + puts "#{curCell.name}" +} +exit 0 +end diff --git a/images/foss-asic-tools/addons/sak/klayout/gdstk_merge.py b/images/foss-asic-tools/addons/sak/klayout/gdstk_merge.py new file mode 100755 index 00000000..ce508936 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/gdstk_merge.py @@ -0,0 +1,91 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# +# SPDX-License-Identifier: Apache-2.0 + +# Use caravel_xxxxyyyy as the golden caravel +from pathlib import Path +import gdstk +import argparse +import os.path +import sys + + +def gdstk_merge(layout_caravel, layout_merge): + # Now we load the existing libraries + lib2 = [] + if caravel_oas: + lib1 = gdstk.read_oas(layout_caravel) + else: + lib1 = gdstk.read_gds(layout_caravel) + if merge_oas: + for layout in layout_merge: + lib2.append(gdstk.read_oas(layout)) + else: + for layout in layout_merge: + lib2.append(gdstk.read_gds(layout_merge)) + + lib1 = change_uid(lib1) + + # We add all cells from the second library to the first + lib1_cell_names = set(c.name for c in lib1.cells) + for libs in lib2: + for cell in libs.cells: + # check if the cell already exist, if it does then replace it + if cell.name in lib1_cell_names: + lib1.replace(cell) + # Now we add the cell and update the set of names + lib1.add(cell) + lib1_cell_names.add(cell.name) + + lib1.write_gds("caravel_" + user_id_value + ".gds") + + +def change_uid(lib): + for cells in lib.cells: + if "xxxxyyyy" in cells.name: + cells.name = cells.name.replace("xxxxyyyy", user_id_value) + assert cells.name + return lib + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-uid", "--user_id", required=True, type=str, help="User ID character string of eight hex digits") + parser.add_argument("-l1", "--layout1_path", required=True, type=Path, help="template caravel path") + parser.add_argument("-l2", "--layout2_path", required=True, type=Path, help="gds to get merged file path", nargs=2) + args = parser.parse_args() + + layout_merge = [] + + layout_caravel = Path(args.layout1_path).absolute() + user_id_value = args.user_id + + for layout in args.layout2_path: + layout_merge.append(Path(layout).absolute()) + + extension = os.path.splitext(layout_caravel)[1] + if extension == ".oas": + caravel_oas = True + else: + caravel_oas = False + + extension = os.path.splitext(layout_merge[0])[1] + if extension == ".oas": + merge_oas = True + else: + merge_oas = False + + gdstk_merge(layout_caravel, layout_merge) diff --git a/images/foss-asic-tools/addons/sak/klayout/klayoutDrc.sh b/images/foss-asic-tools/addons/sak/klayout/klayoutDrc.sh new file mode 100755 index 00000000..83ceb1cc --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/klayoutDrc.sh @@ -0,0 +1,92 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +usage() { echo "Usage: $0 [ -f ] [ -m ] [ -d ] [ -t ] " 1>&2; exit 2; } + +drc_full=false +drc_mr=false +drc_fom=false +thr=16 + +while getopts "fmdt:" o; do + case "${o}" in + f) + drc_full=true + ;; + m) + drc_mr=true + ;; + d) + drc_fom=true + ;; + t) + thr=${OPTARG} + ;; + *) + usage + ;; + esac +done +shift $((OPTIND-1)) + +set -e + +target_path=${1} +input_gds=${2} + +tech_mr=${SAK}/../klayout/tech/sky130A/sky130A-mr.lydrc +tech_full=${SAK}/../klayout/tech/sky130A/sky130A-full.lydrc +tech_fom=${SAK}/../klayout/tech/sky130A/sky130A-fom.lydrc + + +if [ $drc_full = true ]; then + klayout -b \ + -rd input=${input_gds} \ + -rd report=${target_path}/${2%.gds}-full.lyrdb \ + -rd thr=${thr} \ + -r ${tech_full} |& tee ${target_path}/${2%.gds}-full.log + + klayout $2 -m ${2%.gds}-full.lyrdb + +fi + +if [ $drc_mr = true ]; then + klayout -b \ + -rd input=${input_gds} \ + -rd report=${target_path}/${2%.gds}-mr.lyrdb \ + -rd thr=${thr} \ + -r ${tech_mr} |& tee ${target_path}/${2%.gds}-mr.log + + klayout $2 -m ${2%.gds}-mr.lyrdb + +fi + + +if [ $drc_fom = true ]; then + klayout -b \ + -rd input=${input_gds} \ + -rd report=${target_path}/${2%.gds}-fom.lyrdb \ + -rd thr=${thr} \ + -r ${tech_fom} |& tee ${target_path}/${2%.gds}-fom.log + + klayout $2 -m ${2%.gds}-fom.lyrdb + +fi + + + + + +exit 0 diff --git a/images/foss-asic-tools/addons/sak/klayout/label2pin_inplace.sh b/images/foss-asic-tools/addons/sak/klayout/label2pin_inplace.sh new file mode 100755 index 00000000..7cd2a4f7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/label2pin_inplace.sh @@ -0,0 +1,9 @@ +layers=(67 68 69 70 71 72) +files=( "$@" ) + +for f in "${files[@]}"; do + echo "Working on $f" + for l in "${layers[@]}"; do + sh $(dirname $0)/cp_shapes.sh $f $l/5 $l/16 + done +done diff --git a/images/foss-asic-tools/addons/sak/klayout/lay2net.sh b/images/foss-asic-tools/addons/sak/klayout/lay2net.sh new file mode 100755 index 00000000..103e4840 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/lay2net.sh @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +# This script extract the netlist from a layout using Klayout + +: ${1? "Usage: $0 The gds file that will be extracted"} + +echo "converting $1 to spice netlist" + +klayout -b -rd input=$1 \ + -r lvs_sky130.lylvs diff --git a/images/foss-asic-tools/addons/sak/klayout/lvs_sky130.lylvs b/images/foss-asic-tools/addons/sak/klayout/lvs_sky130.lylvs new file mode 100755 index 00000000..3663572f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/lvs_sky130.lylvs @@ -0,0 +1,220 @@ + + + + + lvs + + + + false + false + + true + lvs_scripts + tools_menu.lvs.end + dsl + lvs-dsl-xml + +# Extraction for SKY130 +# +############################ + +#report_netlist("report.txt") + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=my_report.lyrdb -rd schematic=reference_netlist.cir -rd target_netlist=extracted_netlist.cir -r sky130.lvs +if $input + source($input) +end + +# true: use net names instead of numbers +# false: use numbers for nets +spice_with_net_names = true + +# true: put in comments with details +# false: no comments +spice_with_comments = true + +# Write extracted netlist to extracted.cir using a special +# writer delegate + + +if $target_netlist + target_netlist($target_netlist) +else + # target_netlist("netlist.cir", write_spice(spice_with_net_names, spice_with_comments), "Generated by Klayout on : #{Time.now.strftime("%d/%m/%Y %H:%M")}") + target_netlist(File.join(File.dirname(RBA::CellView::active.filename), source.cell_name+"_extracted.spice"),write_spice(spice_with_net_names, spice_with_comments),"Extracted by KLayout on : #{Time.now.strftime("%d/%m/%Y %H:%M")}") +end + +# Hierarchical mode +deep +# Use 4 CPU cores +threads(4) +# Print details +verbose(true) + + +# layers definitions +######################## +BOUND = polygons(235, 4) +DNWELL = polygons(64, 18) +PWRES = polygons(64, 13) +NWELL = polygons(64, 20) +NWELLTXT = input(64, 5) +NWELLPIN = polygons(64, 16) +SUBTXT = input(122, 5) +SUBPIN = input(64, 59) +DIFF = polygons(65, 20) +TAP = polygons(65, 44) +PSDM = polygons(94, 20) +NSDM = polygons(93, 44) +LVTN = polygons(125, 44) +HVTR = polygons(18, 20) +HVTP = polygons(78, 44) +SONOS = polygons(80, 20) +COREID = polygons(81, 2) +STDCELL = polygons(81, 4) +NPNID = polygons(82, 20) +PNPID = polygons(82, 44) +RPM = polygons(86, 20) +URPM = polygons(79, 20) +LDNTM = polygons(11, 44) +HVNTM = polygons(125, 20) +POLY = polygons(66, 20) +POLYTXT = input(66, 5) +POLYPIN = polygons(66, 16) +HVI = polygons(75, 20) +LICON = polygons(66, 44) +NPC = polygons(95, 20) +DIFFRES = polygons(65, 13) +POLYRES = polygons(66, 13) +POLYSHO = polygons(66, 15) +DIODE = polygons(81, 23) +LI = polygons(67, 20) +LITXT = input(67, 5) +LIPIN = polygons(67, 16) +LIRES = polygons(67, 13) +MCON = polygons(67, 44) +MET1 = polygons(68, 20) +MET1TXT = input(68, 5) +MET1PIN = polygons(68, 16) +MET1RES = polygons(68, 13) +VIA1 = polygons(68, 44) +MET2 = polygons(69, 20) +MET2TXT = input(69, 5) +MET2PIN = polygons(69, 16) +MET2RES = polygons(69, 13) +VIA2 = polygons(69, 44) +MET3 = polygons(70, 20) +MET3TXT = input(70, 5) +MET3PIN = polygons(70, 16) +MET3RES = polygons(70, 13) +VIA3 = polygons(70, 44) +MET4 = polygons(71, 20) +MET4TXT = input(71, 5) +MET4PIN = polygons(71, 16) +MET4RES = polygons(71, 13) +VIA4 = polygons(71, 44) +MET5 = polygons(72, 20) +MET5TXT = input(72, 5) +MET5PIN = polygons(72, 16) +MET5RES = polygons(72, 13) +RDL = polygons(74, 20) +RDLTXT = input(74, 5) +RDLPIN = polygons(74, 16) +GLASS = polygons(76, 20) +CAPM = polygons(89, 44) +CAPM2 = polygons(97, 44) +LOWTAPD = polygons(81, 14) +FILLOBSM1 = polygons(62, 24) +FILLOBSM2 = polygons(105, 52) +FILLOBSM3 = polygons(107, 24) +FILLOBSM4 = polygons(112, 4) +NCM = polygons(92, 44) + +# Bulk layer for terminal provisioning +SUB = polygons(236, 0) +# SUB = polygon_layer + +# Computed layers +PDIFF = DIFF & NWELL & PSDM +NTAP = TAP & NWELL & NSDM +PGATE = PDIFF & POLY +PSD = PDIFF - PGATE +STD_PGATE = PGATE - HVTP - NCM - HVI +HVT_PGATE = PGATE & HVTP - NCM - HVI +HV5_PGATE = PGATE - HVTP - NCM & HVI + +NDIFF = DIFF - NWELL & NSDM +PTAP = TAP - NWELL & PSDM +NGATE = NDIFF & POLY +NSD = NDIFF - NGATE +STD_NGATE = NGATE - NCM - LVTN - HVI +LVT_NGATE = NGATE - NCM & LVTN - HVI +HV5_NGATE = NGATE - NCM - LVTN & HVI +HV5NA_NGATE = NGATE - NCM & LVTN & HVI + +# drawing to physical +device_scaling(1000000) + +# PMOS transistor device extraction +extract_devices(mos4("pfet_01v8"), { "SD" => PSD, "G" => STD_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) +extract_devices(mos4("pfet_01v8_hvt"), { "SD" => PSD, "G" => HVT_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) +extract_devices(mos4("pfet_g5v0d10v5"), { "SD" => PSD, "G" => HV5_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) + +# NMOS transistor device extraction +extract_devices(mos4("nfet_01v8"), { "SD" => NSD, "G" => STD_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_01v8_lvt"), { "SD" => NSD, "G" => LVT_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_g5v0d10v5"), { "SD" => NSD, "G" => HV5_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_01v8_nvt"), { "SD" => NSD, "G" => HV5NA_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) + + +# Define connectivity for netlist extraction + +# Inter-layer +connect(SUB, PTAP) +connect(NWELL, NTAP) +connect(LICON, PTAP) +connect(LICON, NTAP) +connect(PSD, LICON) +connect(NSD, LICON) +connect(POLY, LICON) +connect(LICON, LI) +connect(LI, MCON) +connect(MCON, MET1) +connect(MET1,VIA1) +connect(VIA1, MET2) +connect(MET2, VIA2) +connect(VIA2, MET3) +connect(MET3, VIA3) +connect(VIA3, MET4) +connect(MET4, VIA4) +connect(VIA4, MET5) +# Attaching labels +connect(SUB, SUBTXT) +connect(SUB, SUBPIN) +connect(NWELL, NWELLTXT) +connect(POLY, POLYTXT) +connect(LI, LITXT) +connect(MET1, MET1TXT) +connect(MET2, MET2TXT) +connect(MET3, MET3TXT) +connect(MET4, MET4TXT) +connect(MET5, MET5TXT) + +# Global +connect_global(SUB, "VNB") + +# Actually performs the extraction +netlist # ... not really required + +# Flatten cells which are present in one netlist only +# align +# SIMPLIFICATION of the netlist +netlist.make_top_level_pins +netlist.combine_devices +netlist.purge +netlist.purge_nets +netlist.simplify +puts netlist.to_s + + \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/array_of_labels.lym b/images/foss-asic-tools/addons/sak/klayout/macros/array_of_labels.lym new file mode 100755 index 00000000..36fd30af --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/array_of_labels.lym @@ -0,0 +1,291 @@ + + + Create array of labels for manifold pins + + + + + + false + false + + true + + + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Creates an array of labels +# +# Run the script with +# klayout -rm array_of_labels.lym ... +# or put the script as "array_of_labels.lym" into the installation path. +# +# This script will install a new entry in the "Macros" menu called "Create array of labels for manifold pins". +# On running it, a dialog will be shown where you can enter the parameters of your label array. +# Each label is given an individual number which can be embedded in the label string. +# +# The parameters are: +# * start position: the point of the first label +# * distance vector: the distance (x,y) between the labels +# * start number: the number of the first label +# * end number: the number of the last label (start number can be larger than end number to get a reverse sequence) +# * format: the label text format (use sprintf notation to embed the number, e.g. "text<%d>") +# * size: the size of the label in µm units +# * orientation: check this box to get vertical labels +# * layer: the layer where to put the labels +# +# Upon "Ok", the label sequence will be generated. Undo/redo is available. + +class ArrayOfLabelsDialog < RBA::QDialog + + def initialize + + mw = RBA::MainWindow::instance + super(mw) + + build_dialog + + end + + def build_dialog + + self.windowTitle = "Create Array Of Labels" + + gl = RBA::QGridLayout::new(self) + + row = 0 + + label = RBA::QLabel::new + label.text = "Position of first label (x,y)" + gl.addWidget(label, row, 0) + + @position = RBA::QLineEdit::new + @position.text = "0,0" + gl.addWidget(@position, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "distance vector between labels (x,y)" + gl.addWidget(label, row, 0) + + @distance = RBA::QLineEdit::new + @distance.text = "0,0" + gl.addWidget(@distance, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "Start number" + gl.addWidget(label, row, 0) + + @start = RBA::QLineEdit::new + @start.text = "1" + gl.addWidget(@start, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "End number" + gl.addWidget(label, row, 0) + + @end = RBA::QLineEdit::new + @end.text = "1" + gl.addWidget(@end, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "Label format (sprintf)" + gl.addWidget(label, row, 0) + + @format = RBA::QLineEdit::new + @format.text = "pin<%d>" + gl.addWidget(@format, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "Text size (µm)" + gl.addWidget(label, row, 0) + + @text_size = RBA::QLineEdit::new + @text_size.text = "1.0" + gl.addWidget(@text_size, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "Text orientation" + gl.addWidget(label, row, 0) + + @text_rotated = RBA::QCheckBox::new + @text_rotated.text = "Rotated 90 degree" + gl.addWidget(@text_rotated, row, 1) + + row += 1 + + label = RBA::QLabel::new + label.text = "Layer (layer/datatype)" + gl.addWidget(label, row, 0) + + @layer = RBA::QLineEdit::new + @layer.text = "1/0" + gl.addWidget(@layer, row, 1) + + row += 1 + gl.setRowStretch(row, 1) + + row += 1 + + hbl = RBA::QHBoxLayout::new + gl.addLayout(hbl, row, 0, 1, 2) + hbl.addStretch(1) + + ok = RBA::QPushButton::new + ok.text = "Ok" + ok.clicked do + begin + self.check + self.accept + rescue => ex + RBA::QMessageBox::critical(self, "Error", ex.to_s) + end + end + hbl.addWidget(ok) + + cancel = RBA::QPushButton::new + cancel.text = "Cancel" + cancel.clicked do + self.reject + end + hbl.addWidget(cancel) + + end + + def check + + ly = RBA::CellView::active.layout + lspec = RBA::LayerInfo::from_string(@layer.text) + lindex = ly.find_layer(lspec) + if ! lindex + raise("No layer present with the given specification (#{@layer.text})") + end + + @lindex = lindex + + if !(@position.text.gsub(/\s/, "") =~ /^([\d.eE+-]+),([\d.eE+-]+)$/) + raise("Position is not a pair of coordinates (#{@position.text})") + end + @start_point = RBA::DPoint::new($1.to_f, $2.to_f) + + if !(@distance.text.gsub(/\s/, "") =~ /^([\d.eE+-]+),([\d.eE+-]+)$/) + raise("Distance vector is not a pair of coordinates (#{@distance.text})") + end + @distance_vector = RBA::DVector::new($1.to_f, $2.to_f) + + if !(@start.text.gsub(/\s/, "") =~ /^([\d-]+)$/) + raise("Start number is not an integer (#{@start.text})") + end + @start_number = $1.to_i + + if !(@end.text.gsub(/\s/, "") =~ /^([\d-]+)$/) + raise("End number is not an integer (#{@end.text})") + end + @end_number = $1.to_i + + end + + def start_point + @start_point + end + + def distance_vector + @distance_vector + end + + def start_number + @start_number + end + + def end_number + @end_number + end + + def lindex + @lindex + end + + def format + @format.text + end + + def text_size + @text_size.text.to_f + end + + def text_orientation + @text_rotated.isChecked ? 1 : 0 + end + +end + +view = RBA::LayoutView::current +cv = RBA::CellView::active +if ! view || !cv + RBA::QMessageBox::critical(RBA::MainWindow::instance, "Error", "No layout opened") +else + + # for debugging: + # $array_of_labels_dialog && !$array_of_labels_dialog._destroyed? && $array_of_labels_dialog._destroy + # $array_of_labels_dialog = ArrayOfLabelsDialog::new + + # for production: + $array_of_labels_dialog ||= ArrayOfLabelsDialog::new + + dia = $array_of_labels_dialog + if dia.exec != 0 + + begin + + view.transaction("Create array of labels") + + numbers = [] + if dia.start_number > dia.end_number + (dia.end_number..dia.start_number).reverse_each { |i| numbers << i } + else + (dia.start_number..dia.end_number).each { |i| numbers << i } + end + + pos = dia.start_point + numbers.each do |n| + + str = dia.format % n + text_trans = RBA::DTrans::new(dia.text_orientation, false, pos.x, pos.y) + text = RBA::DText::new(str, text_trans) + text.size = dia.text_size + cv.cell.shapes(dia.lindex).insert(text) + + pos += dia.distance_vector + + end + + ensure + view.commit + end + + end + +end + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/calc_area.lym b/images/foss-asic-tools/addons/sak/klayout/macros/calc_area.lym new file mode 100755 index 00000000..a999a9ec --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/calc_area.lym @@ -0,0 +1,63 @@ + + + Compute total area of selected shapes + + + + + + false + false + + true + calc_area + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Compute area of selected shapes +# +# Run the script with +# klayout -rm calc_area.lym ... +# or put the script as "calc_area.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# + +app = RBA::Application.instance +mw = app.main_window + +lv = mw.current_view +if lv == nil + raise "No view selected" +end + +total_area = 0.0 + +lv.each_object_selected do |obj| + + shape = obj.shape + layout = lv.cellview(obj.cv_index).layout + + if shape.is_polygon? || shape.is_box? || shape.is_path? + polygon = shape.polygon + a = polygon.area + m = obj.trans.mag * layout.dbu + total_area += a * m * m + end + +end + +RBA::MessageBox.info("Total area", "Total area of selected objects is #{total_area} square micron", RBA::MessageBox.b_ok) + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/calc_area_hier.lym b/images/foss-asic-tools/addons/sak/klayout/macros/calc_area_hier.lym new file mode 100755 index 00000000..c53cb217 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/calc_area_hier.lym @@ -0,0 +1,128 @@ + + + Compute Layer Area + + + + + + false + false + + true + calc_area + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Compute total area of all shapes on a layer. +# +# Run the script with +# klayout -rm calc_area_hier.lym ... +# or put the script as "calc_area_hier.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# +# The script will install a new menu item in the Tools menu: "Compute Layer Area". +# It will compute the area of all shapes (not considering overlaps) of the selected layer in the current cell. +# + +class CellCount + + def initialize(layout, cell) + @layout = layout + @cell = cell + @called_cells = {} + cell.called_cells.each do |c| + @called_cells[c] = true + end + @called_cells[cell.cell_index] = true + @cache = {} + end + + def inst_count(cell) + n = @cache[cell.cell_index] + if !n + cell.each_parent_inst do |pi| + if @called_cells[pi.parent_cell_index] + n ||= 0 + n += pi.inst.size * inst_count(@layout.cell(pi.parent_cell_index)) + end + end + n ||= 1 + @cache[cell.cell_index] = n + end + return n + end + +private + @layout + @cell + @called_cells + @cache +end + +# Main functionality + +app = RBA::Application.instance +mw = app.main_window + +lv = mw.current_view +if !lv + raise "No view selected" +end + +cv = lv.active_cellview +if !cv || !cv.is_valid? + raise "No cell selected" +end + +sel_layers = lv.selected_layers +if !sel_layers || sel_layers.size == 0 + raise "No layer(s) selected" +end + +cc = CellCount::new(cv.layout, cv.cell) + +t = "Area of layers in um^2:\n\n" + +sel_layers.each do |l| + + li = l.current.layer_index + if cv.layout.is_valid_layer?(li) + + cells = cv.cell.called_cells + cells.push(cv.cell.cell_index) + + atot = 0 + + cells.each do |ci| + c = cv.layout.cell(ci) + a = 0 + c.shapes(li).each do |s| + if s.is_path? || s.is_polygon? || s.is_box? + a += s.polygon.area + end + end + atot += cc.inst_count(c) * a + end + + t += sprintf(" %-10s\t", l.current.source(true).to_s) + sprintf("%.2f", (atot * cv.layout.dbu * cv.layout.dbu)) + "\n" + + end + +end + +RBA::MessageBox.info("Calculated Area Per Layer", t, RBA::MessageBox::b_ok) + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/cell_bbox.lym b/images/foss-asic-tools/addons/sak/klayout/macros/cell_bbox.lym new file mode 100755 index 00000000..94a9dfc0 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/cell_bbox.lym @@ -0,0 +1,59 @@ + + + Cell Bounding Box + + + + + + false + false + + true + + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Compute and output the bounding box of a cell (all layers) +# +# Run the script with +# klayout -rm cell_bbox.lym ... +# or put the script as "cell_bbox.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# + +app = RBA::Application.instance + +mw = app.main_window +view = mw.current_view +cv = view.cellview(view.active_cellview_index) + +if !cv.is_valid? + return +end + +cell = cv.cell +dbu = cv.layout.dbu + +text = "Cell: #{cv.layout.cell_name(cv.cell_index)}\n\n" +text += "xmin: #{cell.bbox.left*dbu} micron\n" +text += "ymin: #{cell.bbox.bottom*dbu} micron\n" +text += "xmax: #{cell.bbox.right*dbu} micron\n" +text += "ymax: #{cell.bbox.top*dbu} micron\n\n" +text += "width: #{cell.bbox.width*dbu} micron\n" +text += "height: #{cell.bbox.height*dbu} micron" + +RBA::MessageBox::info("Cell Information", text, RBA::MessageBox::b_ok) + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/dump_flat_shapes.lym b/images/foss-asic-tools/addons/sak/klayout/macros/dump_flat_shapes.lym new file mode 100755 index 00000000..52ffd0f6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/dump_flat_shapes.lym @@ -0,0 +1,131 @@ + + + Dump Flat Shapes + + + + + + false + false + + true + dump_flat_shapes + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Dump all shapes of the current cell recursively to a XML file +# +# Run the script with +# klayout -rm dump_flat_shapes.lym ... +# or put the script as "dump_flat_shapes.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# + +def dump_shapes(file, layout, cell, layer, trans) + + itrans = RBA::ICplxTrans.from_trans(trans) + + cell.shapes(layer).each do |shape| + + if shape.is_box? + box = shape.box.transformed(itrans) + file.puts(" <box>#{box.to_s}</box>") + elsif shape.is_path? + path = shape.path.transformed(itrans) + file.puts(" <path>#{path.to_s}</path>") + elsif shape.is_polygon? + polygon = shape.polygon.transformed(itrans) + file.puts(" <polygon>#{polygon.to_s}</polygon>") + elsif shape.is_text? + text = shape.text.transformed(itrans) + file.puts(" <text>#{text.to_s}</text>") + end + + end + + cell.each_inst do |inst| + + if inst.is_regular_array? + + na = inst.na + nb = inst.nb + a = inst.a + b = inst.b + + (0..(na-1)).each do |ia| + (0..(nb-1)).each do |ib| + disp = RBA::Point.new(a.x * ia + b.x * ib, a.y * ia + b.y * ib) + disp_trans = RBA::CplxTrans.new(RBA::Trans.new(disp)) + dump_shapes(file, layout, layout.cell(inst.cell_index), layer, trans * disp_trans * inst.cplx_trans) + end + end + + else + dump_shapes(file, layout, layout.cell(inst.cell_index), layer, trans * inst.cplx_trans) + end + + end + +end + +# main functionality + +app = RBA::Application.instance +mw = app.main_window + +lv = mw.current_view +if lv == nil + raise "No view selected" +end + +cv = lv.active_cellview +if !cv.is_valid? + raise "No cell or no layout found" +end + +layers = [] + +lnode = lv.begin_layers +while !lnode.at_end? + if !lnode.current.has_children? && lnode.current.layer_index >=0 && lnode.current.visible?(true) + layers.push(lnode.current.layer_index) + end + lnode.next +end + +# Ask for the file name +filename = RBA::FileDialog.get_save_file_name("Flat Dump", ".", "All files (*)") +if filename.has_value? + + File.open(filename.value, "w") do |file| + + file.puts("<shape_dump cell=\"#{cv.layout.cell_name(cv.cell_index)}\" dbu=\"#{cv.layout.dbu}\">") + + layers.each do |l| + + file.puts(" <layer source=\"#{cv.layout.get_info(l).to_s}\">") + dump_shapes(file, cv.layout, cv.cell, l, RBA::CplxTrans.new) + file.puts(" </layer>") + + end + + file.puts("</shape_dump>") + + end + +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/list_layers.lym b/images/foss-asic-tools/addons/sak/klayout/macros/list_layers.lym new file mode 100755 index 00000000..1b5d389b --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/list_layers.lym @@ -0,0 +1,185 @@ + + + List Layers + + + + + + false + false + + true + list_layers + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: List all layers under a ruler +# +# Run the script with +# klayout -rm list_layers.lym ... +# or put the script as "list_layers.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# +# This script will install a new entry in the "Tools" menu called "List Layers". Before this +# function can be used, a single ruler must be drawn. The script looks for +# shapes that are crossed by this ruler and reports the layers of those shapes. The script can operate +# on multiple layouts as well. +# + +require 'stringio' + +# locate the layout and the (single) ruler +app = RBA::Application.instance +view = app.main_window.current_view +if !view + raise "No view open for creating the cross section from" +end + +# fetch the ruler +ruler = nil +nrulers = 0 +view.each_annotation do |a| + # Use only rulers with "plain line" or ruler style + if a.style == RBA::Annotation::style_line || a.style == RBA::Annotation::style_ruler + ruler = a + nrulers += 1 + end +end + +if nrulers == 0 + raise "No ruler present (these must have 'plain line' or 'ruler' style)" +end +if nrulers > 1 + raise "More than one ruler present (with 'plain line' or 'ruler' style)" +end + +cv = view.cellview(view.active_cellview_index) +if ! cv.is_valid? + raise "The selected layout is not valid" +end + +# get all layers from the layer list +layers = [] +layer_titles = [] +cellviews = [] +layout_indices = [] + +i = view.begin_layers +while !i.at_end? + + lyi = i.current.source_cellview(true) + if lyi >= 0 && lyi < view.cellviews + + layout = view.cellview(lyi).layout + if layout.is_valid_layer?(i.current.layer_index) + + layout_indices.push(lyi) + cellviews.push(view.cellview(lyi)) + layers.push(i.current.layer_index) + + d = i.current.name + if d == "" + d = i.current.source(true).sub(/@\d+$/, "") + end + layer_titles.push(d) + + end + + end + + i.next + +end + +founds = {} + +layers.each_with_index do |layer_index,i| + + cv = cellviews[i] + layout = cv.layout + cell = cv.cell_index + dbu = layout.dbu + + # get the start and end points in database units and micron + p1_dbu = RBA::Point::from_dpoint(ruler.p1 * (1.0 / dbu)) + p2_dbu = RBA::Point::from_dpoint(ruler.p2 * (1.0 / dbu)) + line_dbu = RBA::Edge.new(p1_dbu, p2_dbu) + + # detect all touching shapes and all edges of those which cross the measurement line + shape_iter = layout.begin_shapes_touching(cell, layer_index, line_dbu.bbox) + while !shape_iter.at_end + + found = false + + shape = shape_iter.shape + if shape.is_polygon? || shape.is_path? || shape.is_box? + + polygon = shape.polygon.transformed_cplx(shape_iter.itrans) + polygon.each_edge do |edge_dbu| + + if line_dbu.crossed_by?(edge_dbu) && (line_dbu.side_of(edge_dbu.p1) > 0 || line_dbu.side_of(edge_dbu.p2) > 0) + layout_index = layout_indices[i] + founds[layout_index] ||= {} + founds[layout_index][layer_index] = i + found = true + break + end + + end + + end + + shape_iter.next + + if found + break + end + + end + +end + +# produce the output +output = StringIO.new("", "w") +output.write "<html><body>" + +output.write "<h2>Layer report</h2>" +x1 = (0.5 + ruler.p1.x * 1e5).floor * 1e-5 +y1 = (0.5 + ruler.p1.y * 1e5).floor * 1e-5 +x2 = (0.5 + ruler.p2.x * 1e5).floor * 1e-5 +y2 = (0.5 + ruler.p2.y * 1e5).floor * 1e-5 +output.write "<p>Position #{x1},#{y1} to #{x2},#{y2}</p>" + +founds.each do |lyi,f| + output.write "<h4>Layout #{view.cellview(lyi).name} (@#{lyi+1})</h4>" + ii = [] + f.each do |li,i| + ii.push(i) + end + ii.sort.each do |i| + output.write "Layer #{layer_titles[i]}<br/>" + end +end + +output.write "</body></html>" + +bs = RBA::BrowserSource::new_html(output.string) +bd = RBA::BrowserDialog::new +bd.set_source(bs) +bd.set_home("int:index.html") +bd.exec + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/new_macro.lym b/images/foss-asic-tools/addons/sak/klayout/macros/new_macro.lym new file mode 100755 index 00000000..c822bb45 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/new_macro.lym @@ -0,0 +1,31 @@ + + + + + + + + + false + false + + false + + + ruby + + include RBA +ly = RBA::CellView::active.layout + +tracer = RBA::NetTracer::new + +tech = RBA::NetTracerTechnology::new +tech.connection("1/0", "2/0", "3/0") + +tracer.trace(tech, ly, ly.top_cell, RBA::Point::new(7000, 1500), ly.find_layer(1, 0)) + +tracer.each_element do |e| + puts e.shape.polygon.transformed(e.trans) +end + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/replace_cells.lym b/images/foss-asic-tools/addons/sak/klayout/macros/replace_cells.lym new file mode 100755 index 00000000..553e8d9e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/replace_cells.lym @@ -0,0 +1,211 @@ + + + Replace Cells With Others + + + + + + false + false + + true + + @hcp_context_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Replace cells with other cells from another layout +# +# Install the script with +# klayout -rm replace_cells.lym ... +# or put the script as "replace_cells.lym" into the installation path +# (on Unix for version <=0.21: set $KLAYOUTPATH to the installation folder). +# +# The script installs a new menu entry at the end of the cell list context +# menu: "Replace Cells With Others". This function asks for a file containing +# a couple of other (top) cells, even with their own hierarchy. It will copy +# these cells into the existing layout and replace the corresponding cells in +# the current layout with the ones from the replacement library. + +# A utility function which copies one layout into another +def copy_cells(lsrc, ltarget, lmap, pmap) + + citarget = nil + + # a map for the cell indices + cmap = {} + + lsrc.each_cell_bottom_up do |cisrc| + + # create a new cell in the target layout and add to the cell index map + csrc = lsrc.cell(cisrc) + citarget = ltarget.add_cell(lsrc.cell_name(cisrc)) + ctarget = ltarget.cell(citarget) + cmap[cisrc] = citarget + + # copy the shapes + lsrc.layer_indices.each do |lisrc| + shtarget = ctarget.shapes(lmap[lisrc]) + csrc.shapes(lisrc).each do |shape| + + # property mapping + newpid = 0 # =no properties + if shape.has_prop_id? + newpid = pmap[shape.prop_id] + if !newpid + newpid = ltarget.properties_id(lsrc.properties(shape.prop_id)) + pmap[shape.prop_id] = newpid + end + end + + newshape = shtarget.insert(shape) + shtarget.replace_prop_id(newshape, newpid) + end + end + + # translate and copy the instances + csrc.each_inst do |inst| + + # property mapping + newpid = 0 # =no properties + if inst.has_prop_id? + newpid = pmap[inst.prop_id] + if !newpid + newpid = ltarget.properties_id(lsrc.properties(inst.prop_id)) + pmap[inst.prop_id] = newpid + end + end + + # get the instance object and create a new one with the new cell index + i = inst.cell_inst + trans = i.is_complex? ? i.cplx_trans : i.trans + cinew = cmap[i.cell_index] + if i.is_regular_array? + newinst = ctarget.insert(RBA::CellInstArray.new(cinew, trans, i.a, i.b, i.na, i.nb)) + else + newinst = ctarget.insert(RBA::CellInstArray.new(cinew, trans)) + end + + # apply the new property id + ctarget.replace_prop_id(newinst, newpid) + + end + + end + + return cmap + +end + +# Main functionality + +app = RBA::Application.instance +mw = app.main_window + +# get the current layout view +lv = mw.current_view +if lv == nil + raise "No view selected" +end + +# get the current cell view (the one selected in the hierarchy browser) +cv = lv.cellview(lv.active_cellview_index) +if !cv.is_valid? + raise "No layout selected" +end + +# fetch the name of the layout with the replacement cells +fn = RBA::FileDialog::get_open_file_name("Select replacement library", ".", "All files (*)") +if fn.has_value? + + lib = RBA::Layout::new + lmap = lib.read(fn.value) + + if ((lib.dbu - cv.layout.dbu).abs > 1e-6) + raise "Database units of the layouts must be identical" + end + + org_layers = {} + new_layers = {} + + cv.layout.layer_indices.each do |l| + info = cv.layout.get_info(l) + if lmap.is_mapped?(info) + ll = lmap.logical(info) + org_layers[l] = ll + new_layers[ll] = l + end + end + + has_new_layers = false + + lib.layer_indices.each do |l| + if ! new_layers[l] + ll = cv.layout.insert_layer(lib.get_info(l)) + new_layers[l] = ll + org_layers[ll] = l + has_new_layers = true + end + end + + tmap = {} + + lib.each_top_cell do |t| + tn = lib.cell_name(t) + if cv.layout.has_cell?(tn) + tt = cv.layout.cell_by_name(tn) + tmap[tt] = t + cv.layout.rename_cell(tt, "") + cv.layout.prune_subcells(tt, -1) + end + end + + pmap = {} + cmap = copy_cells(lib, cv.layout, new_layers, pmap) + + cv.layout.each_cell do |c| + + # change and the instances + c.each_inst do |inst| + + if tmap[inst.cell_index] + + # get the instance object and create a new one with the new cell index + i = inst.cell_inst + trans = i.is_complex? ? i.cplx_trans : i.trans + cinew = cmap[tmap[i.cell_index]] + if i.is_regular_array? + c.replace(inst, RBA::CellInstArray.new(cinew, trans, i.a, i.b, i.na, i.nb)) + else + c.replace(inst, RBA::CellInstArray.new(cinew, trans)) + end + + end + + end + + end + + # delete old cells + tmap.each do |k,v| + cv.layout.prune_cell(k, -1) + end + + if has_new_layers + mw.cm_lv_add_missing + end + +end + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/scale_anisotropic.lym b/images/foss-asic-tools/addons/sak/klayout/macros/scale_anisotropic.lym new file mode 100755 index 00000000..b97eca49 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/scale_anisotropic.lym @@ -0,0 +1,112 @@ + + + Anisotropic Scaling + + + + + general + false + false + + true + + edit_menu.selection_menu.sel_scale + ruby + # This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Anisotropic scaling macro for KLayout + +module AnisotropicScaling + + app = RBA::Application::instance + app.is_editable? || raise("KLayout must be run in editable mode to use this macro") + + mw = app.main_window + view = mw.current_view + view || raise("No view open") + + # check whether the selection does not contain any instances and whether there + # is any selection at all + anything = false + view.each_object_selected do |obj| + if obj.is_cell_inst? + raise("At least one instance was encountered as part of the selection.\nThese instances are not scaled. It is suggested to flatten the selection before using the anisotropic scaling function.") + end + anything = true + end + if !anything + raise("Nothing selected to scale") + end + + # ask for the scaling factors + text = RBA::InputDialog::ask_string("Enter Scaling Factor", "Scaling factor (x,y)", "1.0,1.0") + if text + + f = text.split(",") + f.size > 1 || f.push(f[0]) + f = f.collect { |n| n.to_f } + + fx = f[0] + fy = f[1] + + # begin the transaction (undo/redo support) + view.transaction("Anisotropic scaling") + begin + + # perform the scaling on every object + view.each_object_selected do |obj| + + if !obj.is_cell_inst? + + if obj.shape.is_polygon? || obj.shape.is_simple_polygon? || obj.shape.is_path? + + # Anisotropic scaling of polygon (paths are converted as polygons + # because in the general case the width cannot be maintained) + poly = obj.shape.polygon + new_hull = [] + poly.each_point_hull do |p| + new_hull.push(RBA::Point::new((p.x * fx + 0.5).floor, (p.y * fy + 0.5).floor)) + end + poly.assign_hull(new_hull) + poly.holes.times do |hi| + new_hole = [] + poly.each_point_hole(hi) do |p| + new_hole.push(RBA::Point::new((p.x * fx + 0.5).floor, (p.y * fy + 0.5).floor)) + end + poly.assign_hole(hi, new_hole) + end + obj.shape.polygon = poly + + elsif obj.shape.is_box? + + # Anisotropic scaling of box + box = obj.shape.box + p1 = RBA::Point::new((box.p1.x * fx + 0.5).floor, (box.p1.y * fy + 0.5).floor) + p2 = RBA::Point::new((box.p2.x * fx + 0.5).floor, (box.p2.y * fy + 0.5).floor) + obj.shape.box = RBA::Box::new(p1, p2) + + end + + end + + end + + ensure + view.commit + view.cancel + end + + end + +end + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/screenshot.lym b/images/foss-asic-tools/addons/sak/klayout/macros/screenshot.lym new file mode 100755 index 00000000..c36fa315 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/screenshot.lym @@ -0,0 +1,131 @@ + + + Screenshot With Options + + + + + general + false + false + + true + + file_menu.screenshot + ruby + module MyMacro + + include RBA + + # This class implements a dialog with a screenshot display area and a + # screenshot button + class ScreenshotDialog < QDialog + + include RBA + + def initialize(parent = nil) + + super + + setWindowTitle("Screenshot Saver") + + layout = QGridLayout.new(self) + setLayout(layout) + + l = QLabel.new(self) + l.text = "Width" + layout.addWidget(l, 0, 0, 1, 1) + + l = QLabel.new(self) + l.text = "Height" + layout.addWidget(l, 1, 0, 1, 1) + + width_edit = QLineEdit.new(self) + width_edit.text = "1000" + layout.addWidget(width_edit, 0, 1, 1, 1) + + height_edit = QLineEdit.new(self) + height_edit.text = "1000" + layout.addWidget(height_edit, 1, 1, 1, 1) + + l = QLabel.new(self) + l.text = "or use resolution (um/pixel):" + layout.addWidget(l, 0, 2, 1, 1) + + res_edit = QLineEdit.new(self) + res_edit.text = "1.0" + layout.addWidget(res_edit, 0, 3, 1, 1) + + res_compute = QPushButton.new(self) + res_compute.text = "Set Size" + res_compute.clicked do + begin + r = res_edit.text.to_f + r > 1.0e-6 || raise("Invalid value for resolution") + view = Application::instance.main_window.current_view + view || raise("No view open") + f = 1.0 / (r * view.viewport_trans.mag) + width_edit.text = (view.viewport_width * f + 0.5).floor.to_s + height_edit.text = (view.viewport_height * f + 0.5).floor.to_s + rescue => ex + QMessageBox::critical(self, "Error", ex.to_s, QMessageBox::Ok.to_i) + end + end + layout.addWidget(res_compute, 0, 4, 1, 1) + + l = QLabel.new(self) + l.text = "To File" + layout.addWidget(l, 2, 0, 1, 1) + + file_edit = QLineEdit.new(self) + file_edit.text = "file.png" + layout.addWidget(file_edit, 2, 1, 1, 3) + + browse = QPushButton.new(self) + browse.text = "..." + layout.addWidget(browse, 2, 4, 1, 1) + browse.clicked do + begin + file = QFileDialog::getSaveFileName(self, "Choose file to save screenshot") + !file.empty? && file_edit.text = file + rescue + end + end + + do_cancel = QPushButton.new(self) + do_cancel.text = "Cancel" + layout.addWidget(do_cancel, 4, 4, 1, 1) + do_cancel.clicked do + self.reject + end + + do_save = QPushButton.new(self) + do_save.text = "Save" + layout.addWidget(do_save, 4, 0, 1, 1) + do_save.clicked do + begin + w = width_edit.text.to_i + h = height_edit.text.to_i + f = file_edit.text + view = Application::instance.main_window.current_view + view || raise("No view open") + view.save_image(f, w, h) + self.accept + rescue => ex + QMessageBox::critical(self, "Error", ex.to_s, QMessageBox::Ok.to_i) + end + end + + layout.setRowStretch(3, 1) + + end + + end + + # Instantiate the dialog and show it. + $dialog || $dialog = ScreenshotDialog.new(Application::instance.main_window) + $dialog.exec + +end + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/search_odd_width_paths.lym b/images/foss-asic-tools/addons/sak/klayout/macros/search_odd_width_paths.lym new file mode 100755 index 00000000..1642dcc2 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/search_odd_width_paths.lym @@ -0,0 +1,70 @@ + + + Find Paths With Odd Width + + + + + + false + false + + true + + tools_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Search paths with odd width in KLayout +# +# Run the script with +# klayout -rm search_odd_path_widths.lym ... +# or put the script as "search_odd_path_widths.lym" into the installation path (on Unix for version <=0.21: +# set $KLAYOUTPATH to the installation folder). +# + +app = RBA::Application.instance +mw = app.main_window + +lv = mw.current_view +if lv == nil + raise "No view selected" +end + +cv = lv.active_cellview +if !cv.is_valid? + raise "No cell or no layout found" +end + +cv.layout.each_cell do |cell| + (0..(cv.layout.layers-1)).each do |l| + if cv.layout.is_valid_layer?(l) + cell.shapes(l).each do |s| + if s.is_path? && (s.path_width % 2) == 1 + if RBA::MessageBox::info("Path with odd width", + "Cell: #{cv.layout.cell_name(cell.cell_index)}\n" + + "Layer: #{cv.layout.get_info(l).to_s}\n" + + "Path: #{s.path.to_s}\n" + + "\n" + + "Press 'Ok' to continue, 'Cancel' to stop.", + RBA::MessageBox::b_ok + RBA::MessageBox::b_cancel) == RBA::MessageBox::b_cancel + raise "Operation aborted" + end + end + end + end + end +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/macros/write_childcells.lym b/images/foss-asic-tools/addons/sak/klayout/macros/write_childcells.lym new file mode 100755 index 00000000..568507de --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/macros/write_childcells.lym @@ -0,0 +1,100 @@ + + + Write Child Cells + + + + + + false + false + + true + write_child_cells + @hcp_context_menu.end + ruby + + # +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# DESCRIPTION: Write all child cells of the current cell to individual files +# +# Install the script with +# klayout -rm write_childcells.lym ... +# or put the script as "write_childcells.lym" into the installation path +# (on Unix for version <=0.21: set $KLAYOUTPATH to the installation folder). +# +# The script installs a new menu entry at the end of the cell list context +# menu: "Write Child Cells". This function asks for the hierarchy level and +# writes all cells at this level (below the current cell) to files called +# "{cellname}.gds". + +# Collect all cells at hiearchy level "level" below the cell "from_cell" +# into the array "cells" which is used as a set. +# The keys of "cells" will be the cell indexes of the cells collected. +def get_cells_at_hierarchy_level(layout, from_cell, level, cells) + from_cell.each_child_cell do |cc| + if level == 1 + cells[cc] = 1 + else + get_cells_at_hierarchy_level(layout, layout.cell(cc), level - 1, cells) + end + end +end + + +# Main functionality + +app = RBA::Application.instance +mw = app.main_window + +# get the current layout view +lv = mw.current_view +if lv == nil + raise "No view selected" +end + +# get the current cell view (the one selected in the hierarchy browser) +cv = lv.cellview(lv.active_cellview_index) +if !cv.is_valid? + raise "No layout selected" +end + +# fetch the hierarchy level from which to write the cells +level = RBA::InputDialog.get_int_ex("Hierachy Level", "Specify the hierarchy level below cell #{cv.layout.cell_name(cv.cell_index)}, layout @#{lv.active_cellview_index+1} from which to write the cells", 1, 1, 1000, 1) +if level.has_value? + + # gather the cells to write + cells_to_write = {} + get_cells_at_hierarchy_level(cv.layout, cv.cell, level.value, cells_to_write) + + # loop over all child cells of the current cell + cells_to_write.each do |cc,dummy| + + # make a cell object reference from the cell index + child_cell = cv.layout.cell(cc) + + # get the cell's name + cell_name = cv.layout.cell_name(cc) + + # write the cell as "{cellname}.gds" + file_name = "#{cell_name}.gds" + options = RBA::SaveLayoutOptions.new + options.add_cell(cc) # select this cell for writing + puts "Writing #{file_name} .." + cv.layout.write(file_name, false, options) + + end + +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/merge.rb b/images/foss-asic-tools/addons/sak/klayout/merge.rb new file mode 100755 index 00000000..9f2ad9b5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/merge.rb @@ -0,0 +1,20 @@ +# merge.rb +# +# Merges two files into one +# +# Run this script with +# klayout -rd file1=first_file.gds -rd file2=second_file.gds -rd output=output_file.gds -z -r merge_files.rb +# +# (Note: -z puts KLayout into non-GUI mode) +# +# Read the first layout +layout = RBA::Layout.new +lmap = layout.read($file1) + +# read the second file which basically performs the merge +load_layout_options = RBA::LoadLayoutOptions.new +load_layout_options.set_layer_map(lmap, true) +layout.read($file2, load_layout_options) + + +layout.write($output) \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/merge2.rb b/images/foss-asic-tools/addons/sak/klayout/merge2.rb new file mode 100755 index 00000000..d8a361f5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/merge2.rb @@ -0,0 +1,67 @@ +# merge2.rb +# +# Merges two files into one +# +# Run this script with +# klayout -rd file1=first_file.gds -rd file2=second_file.gds -rd output=output_file.gds -z -r merge_files.rb +# +# (Note: -z puts KLayout into non-GUI mode) +# +# Read the first layout +layout = RBA::Layout.new +lmap = layout.read($file1) + +# store and take away the cell names of all cells read so far +# (by setting the cell name to "" the cells basically become invisible for +# the following read) +cell_names = { } +(0..(layout.cells-1)).each do |ci| + cell_names[ci] = layout.cell_name(ci) + layout.rename_cell(ci, "") # this prevents a name clash on the next read +end + +# read the second file which basically performs the merge +load_layout_options = RBA::LoadLayoutOptions.new +load_layout_options.set_layer_map(lmap, true) +layout.read($file2, load_layout_options) + +# rename the cells by using prefix "A" for layout 1 and "B" for layout 2 +(0..(layout.cells-1)).each do |ci| + if cell_names[ci] + layout.rename_cell(ci, cell_names[ci]) + else + layout.rename_cell(ci, "B" + layout.cell_name(ci)) + end +end + +ind = 0 +ind2 = 0 + +layout.each_cell do |c| + # change and the instances + + if c.name == "user_project_wrapper" + ind = Integer(c.cell_index) + puts ind + elsif c.name == "Buser_project_wrapper" + ind2 = Integer(c.cell_index) + puts ind2 + end +end + +layout.each_cell do |c| + c.each_inst do |inst| + if inst.cell_index.equal? ind + # get the instance object and create a new one with the new cell index + i = inst.cell_inst + trans = i.is_complex? ? i.cplx_trans : i.trans + c.replace(inst, RBA::CellInstArray.new(ind2, trans)) + end + + end + +end + +layout.delete_cell(ind) +layout.rename_cell(ind2, "user_project_wrapper") +layout.write($output) \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/merge_kl.py b/images/foss-asic-tools/addons/sak/klayout/merge_kl.py new file mode 100755 index 00000000..8c190226 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/merge_kl.py @@ -0,0 +1,57 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# +# SPDX-License-Identifier: Apache-2.0 + +# klayout -rd file1=caravel_xxxxyyyy.oas -rd file2=user_project_wrapper.oas,caravel__fill_pattern.oas -rd user_id="" -z -r merge_kl.py + +# Use caravel_xxxxyyyy as the golden caravel +import pya + +def merge(): + files = file2.split(",") + opt = pya.LoadLayoutOptions() + opt_oas = pya.SaveLayoutOptions() + ly = pya.Layout() + + for file in files: + lmap = ly.read(file1) + + ly = change_uid(ly) + + opt.set_layer_map(lmap, True) + ly.read(file, opt) + + ly.write(output) + + for cells in ly.each_cell(): + ci = cells.cell_index() + if "$" in cells.name: + ly.delete_cell_rec(ci) + + opt_oas.set_format_from_filename(output) + opt_oas.oasis_substitution_char='' + ly.write(output, opt_oas) + +def change_uid(lib): + for cells in lib.each_cell(): + ci = cells.cell_index() + if "xxxxyyyy" in cells.name: + name = cells.name.replace("xxxxyyyy", user_id) + lib.rename_cell(ci, name) + return lib + +if __name__ == "__main__": + output = "caravel_" + user_id + ".oas" + merge() \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/mv_shapes.py b/images/foss-asic-tools/addons/sak/klayout/mv_shapes.py new file mode 100755 index 00000000..b5d7a709 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/mv_shapes.py @@ -0,0 +1,51 @@ +import pya +from time import sleep + +try: + if output_layout == "": + raise NameError + _output_layout = output_layout +except NameError: + _output_layout = input_layout + print("Warning: output_layout was not provided; will do the modifications in place!") + print("Hit CTRL-C to cancel...") + sleep(3) + +print("Starting...") +app = pya.Application.instance() +win = app.main_window() + +# Load technology file +tech = pya.Technology() +tech.load(tech_file) +layoutOptions = tech.load_layout_options + +# Load def/gds file in the main window +cell_view = win.load_layout(input_layout, layoutOptions, 0) +layout_view = cell_view.view() +layout_view.max_hier() + +# gets the corresponding layout object +layout = cell_view.layout() + +# gets the cell to change is "INV2X" +# cell = layout.cell("Active_area") +cell = cell_view.cell + +# finds source layer +layer, purpose = source_layer.split('/') +assert layer and purpose +_source_layer = layout.layer(int(layer), int(purpose)) + +# finds (or creates) target layer +layer, purpose = target_layer.split('/') +assert layer and purpose +_target_layer = layout.layer(int(layer), int(purpose)) + +layout.move_layer(_source_layer, _target_layer) + +layout.write(_output_layout) + +print("Successfully wrote", _output_layout) + +app.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/mv_shapes.sh b/images/foss-asic-tools/addons/sak/klayout/mv_shapes.sh new file mode 100755 index 00000000..2f8446e4 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/mv_shapes.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +: ${1?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${2?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${3?"Usage: $0 file.gds src_layer/src_purpose targ_layer/targ_purpose [output.gds]"} +: ${PDK_ROOT?"You need to export PDK_ROOT"} +TECH=${TECH:-sky130A} + +xvfb-run klayout -z -rd input_layout=$1 -rd tech_file=$PDK_ROOT/$TECH/libs.tech/klayout/$TECH.lyt -rd source_layer=$2 -rd target_layer=$3 -rd output_layout=$4 -rm $(dirname $0)/mv_shapes.py diff --git a/images/foss-asic-tools/addons/sak/klayout/parse_klayout_xor_log.py b/images/foss-asic-tools/addons/sak/klayout/parse_klayout_xor_log.py new file mode 100755 index 00000000..f5bbff29 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/parse_klayout_xor_log.py @@ -0,0 +1,51 @@ +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +import argparse +import re + +parser = argparse.ArgumentParser( + description='extracts the total xor differnces from an xor log') + +parser.add_argument('--log_file', '-l', required=True, + help='log file') + +parser.add_argument('--output', '-o', required=True, + help='output file to store results') + +args = parser.parse_args() +log_file_name = args.log_file +out_file_name = args.output + +string = "XOR differences:" +pattern = re.compile(r'\s*%s\s*([\d+]+)' % string) +tot_cnt = 0 +with open(log_file_name, "r") as f: + for line in f: + m = pattern.match(line) + if m: + tot_cnt += int(m.group(1)) + +string = "Issue with layer:" +pattern = re.compile(r'\s*%s\s*([\d+]+)' % string) +with open(log_file_name, "r") as f: + for line in f: + m = pattern.match(line) + if m: + outFileOpener = open(out_file_name, "a") + outFileOpener.write(line + '\n') + +outFileOpener = open(out_file_name, "a") +outFileOpener.write("Total XOR differences = " + str(tot_cnt) + '\n') +outFileOpener.close() diff --git a/images/foss-asic-tools/addons/sak/klayout/parse_xor_log.py b/images/foss-asic-tools/addons/sak/klayout/parse_xor_log.py new file mode 100755 index 00000000..ea4b90e3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/parse_xor_log.py @@ -0,0 +1,55 @@ +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +import argparse +import re + +parser = argparse.ArgumentParser( + description='extracts the total xor differnces from an xor log') + +parser.add_argument('--log_file', '-l', required=True, + help='log file') + +parser.add_argument('--output', '-o', required=True, + help='output file to store results') + +parser.add_argument('--cell_name', '-c', required=True, + help='cell name') + +args = parser.parse_args() +log_file_name = args.log_file +out_file_name = args.output +cell_name = args.cell_name + +string = "XOR differences:" +pattern = re.compile(r'\s*%s\s*([\d+]+)' % string) +tot_cnt = 0 +with open(log_file_name, "r") as f: + for line in f: + m = pattern.match(line) + if m: + tot_cnt += int(m.group(1)) + +string = "Issue with layer:" +pattern = re.compile(r'\s*%s\s*([\d+]+)' % string) +with open(log_file_name, "r") as f: + for line in f: + m = pattern.match(line) + if m: + outFileOpener = open(out_file_name, "a") + outFileOpener.write(line + '\n') + +outFileOpener = open(out_file_name, "a") +outFileOpener.write("Total XOR differences of " + cell_name + " = " + str(tot_cnt) + '\n') +outFileOpener.close() diff --git a/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.rb b/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.rb new file mode 100755 index 00000000..8f56895f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.rb @@ -0,0 +1,308 @@ +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# +# SPDX-License-Identifier: Apache-2.0 + +# Precheck that checks: +# 1. origin of the user_project_wrapper +# 2. Bounry layer is in user_project_wrapper +# 3. erase everything on the boundry layer for xor check +# +# To Run the script: +# klayout -rd file1= -rd file2= -z -r precheck_klayout.rb + +# class BoolProcessor + +# def initialize(layout, cell) + +# @layout = layout +# @cell = cell + +# @proc = RBA::ShapeProcessor.new + +# @temp_layers = [] + +# end + +# # Locate a layer for input. +# # The layer is specified by a RBA::LayerInfo object which identifies the layer by +# # a layer and datatype for example. If the layer does not exist, it is created. +# # This method returns a layer index which can be used as input for other functions. +# def input(lp) + +# layer_index = nil + +# # locate the layer if it already exists +# (0..(@layout.layers-1)).each do |i| +# if @layout.is_valid_layer?(i) && @layout.get_info(i).is_equivalent?(lp) +# layer_index = i +# break +# end +# end + +# # create a new layer if it does not exist +# return layer_index || @layout.insert_layer(lp) + +# end + +# # Create a new temporary layer and remember for removal on "cleanup". +# # This method returns a layer index which can be used as input for other functions. +# def tmp +# lp = RBA::LayerInfo.new +# layer_index = @layout.insert_layer(lp) +# @temp_layers.push(layer_index) +# return layer_index +# end + +# # Assign a layer as output. +# # Change the layer given by the layer index to the output layer specified +# # by a RBA::LayerInfo object. If the layer already exists, it is deleted. +# def output(lp, layer_index) + +# li = nil + +# # locate the layer if it already exists +# (0..(@layout.layers-1)).each do |i| +# if @layout.is_valid_layer?(i) && @layout.get_info(i).is_equivalent?(lp) +# li = i +# break +# end +# end + +# # clear the layer if it already exists +# if li != layer_index +# if li +# @layout.delete_layer(li) +# end +# @layout.set_info(layer_index, lp) +# end + +# # remove the layer from the list of temporary layers +# new_temp = [] +# @temp_layers.each do |i| +# if i != layer_index +# new_temp.push(i) +# end +# end +# @temp_layers = new_temp + +# end + +# # Clean up all temporary layers +# def cleanup +# @temp_layers.each do |i| +# @layout.delete_layer(i) +# end +# @temp_layers = [] +# end + +# # Size a layer by the given value (in micron). +# # "input" is the input layer, given by a layer index. +# def size(input, d) +# res = tmp() +# @proc.size(@layout, @cell, input, @cell.shapes(res), to_dbu(d), +# 2, true, true, true) +# return res +# end + +# # Size a layer by the given values anisotropically (in micron) +# # "input" is the input layer, given by a layer index. +# def size2(input, dx, dy) +# res = tmp() +# @proc.size(@layout, @cell, input, @cell.shapes(res), to_dbu(dx), to_dbu(dy), +# 2, true, true, true) +# return res +# end + +# # OR two layers +# # "a" and "b" are the input layers, given by a layer index. +# def or(a, b) +# res = tmp() +# @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), +# RBA::EdgeProcessor::mode_or, true, true, true) +# return res +# end + +# # XOR two layers +# # "a" and "b" are the input layers, given by a layer index. +# def xor(a, b) +# res = tmp() +# @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), +# RBA::EdgeProcessor::mode_xor, true, true, true) +# return res +# end + +# # AND two layers +# # "a" and "b" are the input layers, given by a layer index. +# def and(a, b) +# res = tmp() +# @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), +# RBA::EdgeProcessor::mode_and, true, true, true) +# return res +# end + +# # NOT two layers +# # "a" and "b" are the input layers, given by a layer index. +# def not(a, b) +# res = tmp() +# @proc.boolean(@layout, @cell, a, @layout, @cell, b, @cell.shapes(res), +# RBA::EdgeProcessor::mode_anotb, true, true, true) +# return res +# end + +# # Convert a value from micron to database units +# # "a" and "b" are the input layers, given by a layer index. +# def to_dbu(micron) +# return (0.5 + micron / @layout.dbu).floor() +# end + +# # Run a procedure in the context of this object +# def run(&action) +# action.call(self) +# cleanup +# end + +# private +# @layout +# @cell +# @proc + +# end + +layout = RBA::Layout.new +lmap = layout.read($file1) + + +origin = Struct.new( :instx, :insty, :instrot) +originx = Array.new +originy = Array.new +originr = Array.new + +lmap2 = layout.read($file2) + +ind = 0 + +# define which cell to select +check_cell = layout.cell($cell_name) +if check_cell == nil + raise "user_project_wrapper is not in layout" +else + puts "[INFO] Found user_project_wrapper" +end + +ind = check_cell.cell_index + + +layout.each_cell do |c| + c.each_inst do |inst| + if inst.cell_index == ind + iindex = inst.cell_index + name = layout.cell_name(iindex) + itrans = inst.trans.to_s.gsub(",", "\s").split("\s") + instrot = itrans[0] + instx = (itrans[1].to_i * layout.dbu).round(6) + insty = (itrans[2].to_i * layout.dbu).round(6) + origin.new(instx, insty, instrot) + originx.append(instx) + originy.append(insty) + originr.append(instrot) + # puts("#{name},#{instx},#{insty},#{instrot}") + end + end +end + +# Checks if the origins are the same +if originx.uniq.size > 1 || originy.uniq.size > 1 || originr.uniq.size > 1 + raise "Origin of the user_project_wrapper is wrong" +else + puts "[INFO] Origin test passed successfully" +end + +# define which layer to select +boundry_layer = layout.layer(235, 4) + +# define a box on the layer and erase anything on that box +region = check_cell.bbox_per_layer(boundry_layer) + +# Checks if there's a boundry layer +if region.area == 0 + raise "There is no boundry layer in user_project_wrapper" +else + puts "[INFO] Boundry Layer test passed successfully" +end + +# Erase all layers on boundry layer +# cell_to_change = layout.cell($cell_name) +# cell_to_change.shapes(layout.layer(104, 0)).insert(RBA::Box::new(-42880, -1600, 2962500, 3521290)) +# cell_to_change.shapes(layout.layer(106, 0)).insert(RBA::Box::new(-6980, -37520, 2926600, 3557210)) + +# BoolProcessor.new(layout, layout.cell($cell_name)).run do |p| +# boundry = p.input(RBA::LayerInfo.new(235, 4)) +# bbox = p.input(RBA::LayerInfo.new(104, 0)) +# bbox2 = p.input(RBA::LayerInfo.new(106, 0)) +# tap = p.input(RBA::LayerInfo.new(81, 14)) +# met5_pin = p.input(RBA::LayerInfo.new(72, 16)) +# met5 = p.input(RBA::LayerInfo.new(72, 20)) +# met4_pin = p.input(RBA::LayerInfo.new(71, 16)) +# met4 = p.input(RBA::LayerInfo.new(71, 20)) +# via = p.input(RBA::LayerInfo.new(71, 44)) + +# layout.layer_indices.each do |li| +# # if li != bbox +# if li == met5 || li == met5_pin +# active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) +# gates = p.and(active, bbox) +# p.output(RBA::LayerInfo.new(10, 0), gates) +# active = p.xor(gates, active) +# p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) +# end +# # end +# # if li != bbox2 +# if li == met4 || li == met4_pin +# active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) +# gates = p.and(active, bbox2) +# p.output(RBA::LayerInfo.new(10, 0), gates) +# active = p.xor(gates, active) +# p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) +# end +# if li == via +# active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) +# gates = p.and(active, bbox2) +# gates2 = p.and(active, bbox) +# p.output(RBA::LayerInfo.new(10, 0), gates) +# p.output(RBA::LayerInfo.new(11, 0), gates2) +# act = p.xor(gates, active) +# act2 = p.xor(gates2, active) +# actt = p.and(act, act2) +# p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), actt) +# end +# # end +# if li != boundry && li != tap +# active = p.input(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype)) +# gates = p.and(active, boundry) +# p.output(RBA::LayerInfo.new(10, 0), gates) +# active = p.xor(gates, active) +# p.output(RBA::LayerInfo.new(layout.get_info(li).layer, layout.get_info(li).datatype), active) +# end +# end +# layout.delete_layer(layout.layer(10,0)) +# layout.delete_layer(layout.layer(11,0)) +# layout.delete_layer(layout.layer(104,0)) +# layout.delete_layer(layout.layer(106,0)) +# end + +#write to output file +# puts "[INFO] Writing empty gds file to temp_erase.gds" +# layout.write("temp_erase.gds") + diff --git a/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.sh b/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.sh new file mode 100755 index 00000000..15036dfc --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/precheck_klayout.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +: ${1?"Usage: $0 golden user_project_wrapper.gds/user_analog_project_wrapper.gds"} +: ${2?"Usage: $0 modified user_project_wrapper.gds/user_analog_project_wrapper.gds"} +: ${3?"Usage: $0 cell name"} +: ${4?"Usage: $0 output file for xoring .gds"} + + +echo "First Layout: $1" +echo "Second Layout: $2" +echo "cell: $3" +echo "output from xor Layout: $4" + +klayout -rd file1=$1 -rd file2=$2 -rd cell_name=$3 -z -r $(dirname $0)/precheck_klayout.rb + +klayout -rd file1=$1 -rd output=golden_erased.gds -rd cell_name=$3 -z -r $(dirname $0)/erase.rb + +klayout -rd file1=$2 -rd output=modified_erased.gds -rd cell_name=$3 -z -r $(dirname $0)/erase.rb + +$SAK/klayout/run_xor.sh modified_erased.gds golden_erased.gds $3 $4 + +rm golden_erase.gds +rm modified_erased.gds + diff --git a/images/foss-asic-tools/addons/sak/klayout/replace_some_cells.py b/images/foss-asic-tools/addons/sak/klayout/replace_some_cells.py new file mode 100755 index 00000000..ef0df5a8 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/replace_some_cells.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python3 +import subprocess +import argparse +import os + +parser = argparse.ArgumentParser( + description='Replaces a portion of the cells with others from the library.') + +parser.add_argument('--probability', '-p', type=float, required=True, + default=1.0, + help='') + +parser.add_argument('--design-name', '-name', required=True) + +parser.add_argument('--from-cell-prefix', '-from', required=True, nargs='+') +parser.add_argument('--to-cell-prefix', '-to', required=True, nargs='+') + +parser.add_argument('--user-gds', '-design', required=True) +parser.add_argument('--library-gds', '-library', required=True, nargs='+') + +parser.add_argument('--output-gds', '-o', required=True) + +parser.add_argument('--xor', action='store_true', + default=False, + help='Produce an XOR GDS of the output_gds vs the original user_gds.' + 'In the same output directory as output_gds') + +args = parser.parse_args() + +probability = args.probability + +design_name = args.design_name + +from_cell_prefix = args.from_cell_prefix +to_cell_prefix = args.to_cell_prefix + +user_gds = args.user_gds +library_gds = args.library_gds +output_gds = args.output_gds + +xor_flag = args.xor + +klayout_cmd = f"klayout -zz \ + -rd design_name={design_name} \ + -rd from_cell_prefix={','.join(from_cell_prefix)} \ + -rd to_cell_prefix={','.join(to_cell_prefix)} \ + -rd library_gds={','.join(library_gds)} \ + -rd user_gds={user_gds} \ + -rd output_gds={output_gds} \ + -rd probability={probability} \ + -rm tmp.py" + +klayout_code=r""" +import pya +from random import random, seed + +seed(a=0) + +app = pya.Application.instance() +win = app.main_window() + +# design_name = 'manual_macro_placement_test' + +# from_cell_prefix = 'sky130_fd_sc_hd__decap' +# to_cell_prefix = 'sky130_fd_sc_hd__fill' + +# library_gds = '/home/xrex/usr/devel/pdks/sky130A/libs.ref/sky130_fd_sc_hd/gds/sky130_fd_sc_hd.gds' +# user_gds = '/home/xrex/usr/devel/openlane_develop/designs/manual_macro_placement_test/runs/test/results/magic/manual_macro_placement_test.gds' +# output_gds = '/home/xrex/usr/devel/openlane_develop/designs/manual_macro_placement_test/runs/test/results/magic/out.gds' + +# probability = 1.0 + +####### + +library_gds = library_gds.split(',') +from_cell_prefix = from_cell_prefix.split(',') +to_cell_prefix = to_cell_prefix.split(',') + +from_cells = [] +to_cells = [] + +user_layout = pya.Layout() + +for gds in library_gds: + print("Reading", gds) + user_layout.read(gds) + +# find the cells we're interested in (flat cell list) +for cell in user_layout.each_cell(): + cell_name = cell.name + + for prefix in from_cell_prefix: + if cell_name.startswith(prefix): + assert cell not in from_cells + from_cells.append(cell) + + for prefix in to_cell_prefix: + if cell_name.startswith(prefix): + assert cell not in to_cells + to_cells.append(cell) + +print("From:", [c.name for c in from_cells]) +print("To:", [c.name for c in to_cells]) + +subst_dict = {} +for cell_from in from_cells: + cell_from_width = cell_from.bbox().width() + for cell_to in to_cells: + cell_to_width = cell_to.bbox().width() + if cell_to_width == cell_from_width: + subst_dict[cell_from.name] = cell_to + break + + subst_dict.setdefault(cell_from.name, None) + +print('-'*10) + +for k, v in subst_dict.items(): + if v: + print("Found a substitution", k, "->", v.name) + +print('-'*10) + +############################## + +matching_insts = [] + +def add_if_matching_cell(inst): + cell_name = inst.cell.name + # print("DBUG: Checking", cell_name) + for prefix in from_cell_prefix: + if cell_name.startswith(prefix): + matching_insts.append(inst) + +def print_cell_name(inst): + pass + +def substitute_matching_cell(inst): + cell_name = inst.cell.name + assert cell_name in subst_dict + if subst_dict[cell_name] is not None: + # print("DBUG: Replacing", cell_name, end=' ') + # print("with", subst_dict[cell_name].name) + inst.cell = subst_dict[cell_name] + +def exec_for_each_inst(cell, func): + # print("DBUG_CELL:", cell.name) + for inst in cell.each_inst(): + # print(" DBUG_INST:", inst.cell.name) + assert inst is not None + + # for cells that have no hierarchy beneath (standard cells in this case) + if inst.cell.hierarchy_levels() == 0: + func(inst) + + # for macros + for child_idx in cell.each_child_cell(): + cell = user_layout.cell(child_idx) + if cell.hierarchy_levels() > 0: + # print("DBUG_CHILD:", cell.name) + exec_for_each_inst(cell, func) + +user_layout.read(user_gds) + +top_cell = user_layout.cell(design_name) + +print("Top-cell name:", top_cell.name) + +exec_for_each_inst(top_cell, add_if_matching_cell) + +subst_cnt = 0 +tot = len(matching_insts) +for inst in matching_insts: + if random() <= float(probability): + subst_cnt += 1 + substitute_matching_cell(inst) + +print("Substituted", subst_cnt, "out of", tot, "substitutable cells") + +# delete the rest of the top-level cells +####### revise this: +for cell in user_layout.top_cells(): + if cell.name != design_name: + cell.delete() + +for cell in user_layout.top_cells(): + if cell.name != design_name: + cell.delete() + +user_layout.write(output_gds) + +print("Successfully wrote", output_gds) +""" + +with open("tmp.py", "w") as f: + f.write(klayout_code) + +try: + print("Executing:") + print(klayout_cmd) + output = subprocess.call(klayout_cmd.split()) +except: + print("KLayout script failed") +finally: + pass + os.remove('tmp.py') + +if xor_flag: + print("Running XOR on the result against the original user GDS.") + output_xor_file_name = os.path.splitext(output_gds)[0] + '.xor.gds' + xor_cmd = f"sh {os.path.dirname(os.path.realpath(__file__))}/xor.sh {output_gds} {user_gds} {design_name} {output_xor_file_name}" + try: + print("Executing:") + print(xor_cmd) + output = subprocess.call(xor_cmd.split()) + except: + print("XOR script failed") diff --git a/images/foss-asic-tools/addons/sak/klayout/run_gds2oas.sh b/images/foss-asic-tools/addons/sak/klayout/run_gds2oas.sh new file mode 100755 index 00000000..96c411cc --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/run_gds2oas.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -e + +echo "converting all gds files to oasis files" + +for filename in *.gds; do + out="${filename%%.*}" + out=$out".oas" + xvfb-run -a klayout -z \ + -rd input_layout=$filename \ + -rd output=$out \ + -rm $(dirname $0)/gds2oas.py; done + +echo 'Done converting all gds files to oasis files' +exit 0 \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/run_xor.sh b/images/foss-asic-tools/addons/sak/klayout/run_xor.sh new file mode 100755 index 00000000..2e18d2a9 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/run_xor.sh @@ -0,0 +1,32 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +# script for running the xor script and then running the parsing script + +: ${1?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${2?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${3?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${4?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} + +./xor.sh $1 $2 $3 $4 | tee xor.log + +rm xor_total.txt + +python3 parse_xor_log.py \ + -l "xor.log" \ + -o "xor_total.txt" \ + -c $3 + +cat xor_total.txt diff --git a/images/foss-asic-tools/addons/sak/klayout/scrotLayout.py b/images/foss-asic-tools/addons/sak/klayout/scrotLayout.py new file mode 100755 index 00000000..473fdb9a --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/scrotLayout.py @@ -0,0 +1,40 @@ +import pya +import re +import os + +WIDTH = 2048 +HEIGHT = 2048 + +app = pya.Application.instance() +win = app.main_window() + +# Load technology file +tech = pya.Technology() +tech.load(tech_file) +layoutOptions = tech.load_layout_options +layoutOptions.text_enabled = False + +# Load def file in the main window +cell_view = win.load_layout(input_layout, layoutOptions, 0) +layout_view = cell_view.view() +layout_view.grid_visible = False + +layout_view.max_hier() +# layout_view.clear_layers() + +# Hide layers with these purposes +hidden_purposes = [0, 4, 5] + +li = layout_view.begin_layers() +while not li.at_end(): + lp = li.current() + if lp.source_datatype in hidden_purposes: + new_lp = lp.dup() + new_lp.visible = False + layout_view.set_layer_properties(li, new_lp) + + li.next() + +layout_view.save_image(os.path.splitext(input_layout)[0]+'.png', WIDTH, HEIGHT) + +app.exit(0) diff --git a/images/foss-asic-tools/addons/sak/klayout/scrotLayout.sh b/images/foss-asic-tools/addons/sak/klayout/scrotLayout.sh new file mode 100755 index 00000000..d8337839 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/scrotLayout.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +set -e + +: ${1?"Usage: $0 tech_file input"} +: ${2?"Usage: $0 tech_file input"} + +echo "Using Techfile: $1" +echo "Using layout file: $2" + +# The -a here is necessary to handle race conditions. +# This limits the max number of possible jobs to 100. +xvfb-run -a klayout -z \ + -rd input_layout=$2 \ + -rd tech_file=$1 \ + -rm $(dirname $0)/scrotLayout.py + +exit 0 diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/DRC_ciic.sh b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/DRC_ciic.sh new file mode 100755 index 00000000..358efa90 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/DRC_ciic.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +: ${1?"Usage: $0 gds input file"} +: ${2?"Usage: $0 report name"} +: ${3?"Usage: $0 number of threads"} +: ${4?"Usage: $0 size of tiles"} + +start=$(date +"%r") +/ciic/tools/bin/klayout -rd input=$1 -rd report=$2 -rd thr=$3 -rd tiles=$4 -rd beol=1 -rd feol=1 -zz -r sky130A_mr_opt.drc +end=$(date +"%r") +echo "start: $start \nend: $end" diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/do-not-use-sky130_2_jeffdi.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/do-not-use-sky130_2_jeffdi.lydrc new file mode 100755 index 00000000..cb80e644 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/do-not-use-sky130_2_jeffdi.lydrc @@ -0,0 +1,868 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = false # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = false # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +# use 4 cpu cores +threads(16) +# if more inof is needed, set true +verbose(true) + +# layers definitions +######################## +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) +li = input(67, 20) +mcon = polygons(67, 44) +m1 = polygons(68, 20) +via = polygons(68, 44) +m2 = polygons(69, 20) +via2 = polygons(69, 44) +m3 = polygons(70, 20) +via3 = polygons(70, 44) +m4 = polygons(71, 20) +via4 = polygons(71, 44) +m5 = polygons(72, 20) +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# li +not_in_cell5 = layout(source.cell_obj).select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.input(67, 20) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") +in_cell5 = layout(source.cell_obj).select("+s8rf2_xcmvpp_hd5_*") +in_cell5_li = in_cell5.input(67, 20) +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +# rule li.2 not coded +not_in_cell5_li.isolated(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.isolated(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.isolated(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +huge_m1 = m1.sized(-1.5).sized(1.5) +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") +m1.isolated(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") +huge_m1.separation(m1, 0.28, euclidian).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(68, 20) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(68, 20) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +huge_m2 = m2.sized(-1.5).sized(1.5) +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") +m2.isolated(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") +huge_m2.separation(m2, 0.28, euclidian).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +huge_m3 = m3 - m3.width(3.0, projection).polygons +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") +m3.isolated(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") +huge_m3.separation(m3, 0.4, euclidian).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# m4 +huge_m4 = m4.sized(-1.5).sized(1.5) +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") +m4.isolated(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +huge_m4.separation(m4, 0.4, euclidian).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") +m5.isolated(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density.drc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density.drc new file mode 100755 index 00000000..2439f292 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density.drc @@ -0,0 +1,162 @@ + +errs = 0 +log("fom_density.drc:: sourcing design file=#{$gds_input} topcell=#{$top_cell} ...") +src = source($gds_input, $top_cell) +layout = src.layout +log("done.") + + +report("Density Checks", $report_file) + +verbose(false) + +diff_wildcard = "65/20" +tap_wildcard = "65/44" +fomfill_wildcard = "65,23/28" +fommk_wildcard = "23/0" + +#$chip_boundary = input(235,4) +log("flattening chip boundary...") +$chip_boundary = input(235,4).flatten +log("done.") + +$bbox = $chip_boundary.bbox + +window_size = 700 + +if $step + step_size = $step.to_f +else + step_size = 70 +end +log("step size = #{step_size}") + +llx, lly, urx, ury = $bbox.left, $bbox.bottom, $bbox.right, $bbox.top +log("llx=#{llx} lly=#{lly} urx=#{urx} ury=#{ury}") +if urx-llx <= 0 || ury-lly <= 0 + STDERR.puts "ERROR: fom_density.drc: fatal error, chip_boundary bbox empty or malformed" + errs += 1 +end + +cnt = 0 +x_cnt = ((urx-step_size-llx) / step_size).ceil() +y_cnt = ((ury-step_size-lly) / step_size ).ceil() +tot = x_cnt * y_cnt +$fom_area_map = array = Array.new(x_cnt+1) { Array.new(y_cnt+1) { 0.0 } } +$tile_area_map = array = Array.new(x_cnt+1) { Array.new(y_cnt+1) { 0.0 } } + +log("x_cnt = #{x_cnt}") +log("y_cnt = #{y_cnt}") + +if x_cnt < 1 || y_cnt < 1 + STDERR.puts "ERROR: fom_density.drc: fatal error, x-count or y-count < 1: #{x_cnt} #{y_cnt}" + errs += 1 +end + +# any errors till now?: abort. +if errs > 0 + exit 1 +end + +class FomArea < RBA::TileOutputReceiver + def put(ix, iy, tile, obj, dbu, clip) + if tile + fom_area_scaled = obj.to_f * dbu * dbu + #tile_area_scaled = tile.area * dbu * dbu + tile_area_scaled = (tile & ($bbox * (1.0 / dbu))).area * dbu * dbu + #puts "got area for tile #{ix+1},#{iy+1}: #{fom_area_scaled.to_s} #{tile_area_scaled.to_s}" + $fom_area_map[ix][iy] += fom_area_scaled + $tile_area_map[ix][iy] = tile_area_scaled + else + puts "empty tile #{ix+1},#{iy+1}" + end + end + def finish(success) + puts "finish received: success = #{success}" + end + +end + +tp = RBA::TilingProcessor::new + +# register the custom receiver +tp.output("my_receiver", FomArea::new) + +tp.input("diff", layout.top_cell().begin_shapes_rec(layout.layer(65,20) ) ) +tp.input("tap", layout.top_cell().begin_shapes_rec(layout.layer(65,44) ) ) +tp.input("fomfill", layout.top_cell().begin_shapes_rec(layout.layer(23,28) ) ) + +tp.frame=$bbox +tp.tile_size(step_size, step_size) # 70x70 um tile size +log("dbu = #{layout.dbu}") +log("bbox_area = #{$bbox.area}") +tp.dbu = layout.dbu +tp.threads = $thr.to_i +# tp.scale_to_dbu = false + +# The script clips the input at the tile and computes the (merged) area: +tp.queue("_output(my_receiver, _tile && ((diff | tap | fomfill) & _tile).area)") + +log("calculating subtile areas (= #{tot})...") +tp.execute("Job description") + +cnt = 0 +big_x_cnt = ((urx-window_size-llx) / step_size).ceil() +big_y_cnt = ((ury-window_size-lly) / step_size).ceil() +big_tot = big_x_cnt * big_y_cnt +tiles_per_step = (window_size / step_size).ceil() +log("tiles per step = #{tiles_per_step}") +log("calculating window step densities (= #{big_tot})...") +markers_min = polygon_layer +markers_max = polygon_layer +min_err = 0 +max_err = 0 +min_density = 1 +max_density = 0 +for x in (0 ... big_x_cnt) + log("{{ CHECK }} #{cnt}/#{big_tot.round}") + for y in (0 ... big_y_cnt) + fom_area = 0 + tile_area = 0 + fom_density = 0 + #$fom_area_map.slice(x, tiles_per_step).each { |a| a.slice(y, tiles_per_step).each { |b| puts "#{x},#{y} = #{b}" } } + $fom_area_map.slice(x, tiles_per_step).each { |a| a.slice(y, tiles_per_step).each { |b| fom_area+=b } } + $tile_area_map.slice(x, tiles_per_step).each { |a| a.slice(y, tiles_per_step).each { |b| tile_area+=b } } + marker_box = box(x * step_size, y* step_size, (x+tiles_per_step)*step_size, (y+tiles_per_step)*step_size) + if tile_area > 0 + fom_density = fom_area / tile_area + #log("fom density #{cnt}/#{big_tot.round} is #{fom_density} for area #{tile_area}") + if fom_density < min_density + min_density = fom_density + end + if fom_density > max_density + max_density = fom_density + end + if fom_density < 0.33 + min_err += 1 + markers_min.insert(marker_box) + log("fom density below 0.33 : #{cnt}/#{big_tot.round} is #{"%.4f" % fom_density} for tile (#{marker_box.to_s}), area = #{tile_area.round}") + elsif fom_density > 0.57 + max_err += 1 + markers_max.insert(marker_box) + log("fom density above 0.57 : #{cnt}/#{big_tot.round} is #{"%.4f" % fom_density} for tile (#{marker_box.to_s}), area = #{tile_area.round}") + end + end + cnt += 1 + end +end + +log("minimum fom density = #{"%.4f" % min_density}") +log("maximum fom density = #{"%.4f" % max_density}") + +if min_err > 0 + log("cfom.pd.1d violations = #{min_err}") + markers_min.output("cfom.pd.1d", "0.33 min fom pattern density") +end + +if max_err > 0 + log("cfom.pd.1e violations = #{max_err}") + markers_max.output("cfom.pd.1e", "0.57 max fom pattern density") +end + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density_old.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density_old.lydrc new file mode 100755 index 00000000..c95182a7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/fom_density_old.lydrc @@ -0,0 +1,96 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + + +log("sourcing design file...") +source($gds_input, $top_cell) +log("done.") + +report("Density Checks", $report_file) + +verbose(false) + +diff_wildcard = "65/20" +tap_wildcard = "65/44" +fomfill_wildcard = "65,23/28" +fommk_wildcard = "23/0" + +#chip_boundary = input(235,4) +log("flattening chip boundary...") +chip_boundary = input(235,4).flatten +log("done.") + +#pl = polygon_layer +#pl.insert(box(0, 0, 700, 700)) +#pl & chip_boundary + +if $thr + threads($thr) +else + threads(4) +end + +bbox = chip_boundary.bbox + +window_size = 700 + +if $step + step_size = $step.to_f +else + step_size = 70 +end +log("step size = #{step_size}") + +llx, lly, urx, ury = bbox.left, bbox.bottom, bbox.right, bbox.top + +log("merging fom layers...") +#fom = polygons(diff_wildcard, tap_wildcard, fomfill_wildcard, fommk_wildcard).merged() +log("done.") + +cnt = 0 +tot = ((urx-window_size-llx) / step_size).ceil() * ((ury-window_size-lly) / step_size ).ceil() +for x in (llx..urx-window_size).step(step_size) + log("{{ CHECK }} #{cnt}/#{tot.round}") + for y in (lly..ury-window_size).step(step_size) + pl = polygon_layer + pl.insert(box(x, y, x+window_size, y+window_size)) + box_within_boundary = pl & chip_boundary + m_area_within_seal = (box_within_boundary & source.touching(box_within_boundary.bbox).polygons(diff_wildcard, tap_wildcard, fomfill_wildcard, fommk_wildcard)).area + #m_area_within_seal = (box_within_boundary & fom).area + m_density = m_area_within_seal / box_within_boundary.area + + cnt = cnt + 1 + # Needed for interfacing with other scripts + # puts does not print to stdout but rather to tty + # which can not be captured in python + #system 'echo %d/%d'%[cnt, tot.round] + log("fom density #{cnt}/#{tot.round} is #{m_density}") + if m_density < 0.33 + #box_within_boundary.output("cfom.pd.1d", "0.33 min fom pattern density, fom density is #{m_density}") + box_within_boundary.output("cfom.pd.1d", "0.33 min fom pattern density") + end + if m_density > 0.57 + #box_within_boundary.output("cfom.pd.1e", "0.57 max fom pattern density, fom density is #{m_density}") + box_within_boundary.output("cfom.pd.1e", "0.57 max fom pattern density") + end + # m_density < 0.33 && box_within_boundary.output("cfom.pd.1d", "0.33 min FOM pattern density") + # m_density > 0.57 && box_within_boundary.output("cfom.pd.1e", "0.57 max FOM pattern density") + end +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/met_density.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/met_density.lydrc new file mode 100755 index 00000000..c71a9d62 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/met_density.lydrc @@ -0,0 +1,163 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + + +source($gds_input, $top_cell) +report("Density Checks", $report_file) + +verbose(false) + +li1_wildcard = "67/0-4,6-43,45-*" +mcon_wildcard = "67/44" +li1fill_wildcard = "56/28" + +m1_wildcard = "68/0-4,6-43,45-*" +via_wildcard = "68/44" +m1fill_wildcard = "36/28" + +m2_wildcard = "69/0-4,6-43,45-*" +via2_wildcard = "69/44" +m2fill_wildcard = "41/28" + +m3_wildcard = "70/0-4,6-43,45-*" +via3_wildcard = "70/44" +m3fill_wildcard = "34/28" + +m4_wildcard = "71/0-4,6-43,45-*" +via4_wildcard = "71/44" +m4fill_wildcard = "51/28" + +m5_wildcard = "72/0-4,6-43,45-*" +m5fill_wildcard = "59/28" + +seal_wildcard = "61/20" + +# --------------- + +li1 = polygons(li1_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +m4fill = polygons(m4fill_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +seal_layer = input(seal_wildcard) +chip_boundary = input(235,4) +#area = (m4+m4fill).area +bbox_area = seal_layer.bbox.area +area_within_seal = bbox_area - seal_layer.area + +marker_box = polygon_layer +marker_box.insert(chip_boundary.bbox) + +#li1_wildcard = "67/20" +#li1fill_wildcard = "56/28" +li1_density = polygons(li1_wildcard, li1fill_wildcard).area / area_within_seal +li1_ca_density = 1 - li1_density +log("li1_ca_density is #{li1_ca_density}") +if li1_ca_density < 0.4 + #chip_boundary.output("li1.pd.1d", "0.4 min li1 ca pattern density, li1 ca density is #{li1_ca_density}") + marker_box.output("li1.pd.1d", "0.4 min li1 ca pattern density") +end +if li1_ca_density > 0.65 + #chip_boundary.output("li1.pd.1e", "0.65 max li1 ca pattern density, li1 ca density is #{li1_ca_density}") + marker_box.output("li1.pd.1e", "0.65 max li1 ca pattern density") +end + +#m1_wildcard = "68/20" +#m1fill_wildcard = "36/28" +m1_density = polygons(m1_wildcard, m1fill_wildcard).area / area_within_seal +m1_ca_density = 1 - m1_density +log("m1_ca_density is #{m1_ca_density}") +if m1_ca_density < 0.4 + #chip_boundary.output("m1.pd.1d", "0.4 min m1 ca pattern density, m1 ca density is #{m1_ca_density}") + marker_box.output("m1.pd.1d", "0.4 min m1 ca pattern density") +end +if m1_ca_density > 0.65 + #chip_boundary.output("m1.pd.1e", "0.65 max m1 ca pattern density, m1 ca density is #{m1_ca_density}") + marker_box.output("m1.pd.1e", "0.65 max m1 ca pattern density") +end + +#m2_wildcard = "69/20" +#m2_fill_wildcard = "41/28" +m2_density = polygons(m2_wildcard, m2fill_wildcard).area / area_within_seal +m2_ca_density = 1 - m2_density +log("m2_ca_density is #{m2_ca_density}") +if m2_ca_density < 0.4 + #chip_boundary.output("m2.pd.1d", "0.4 min m2 ca pattern density, m2 ca density is #{m2_ca_density}") + marker_box.output("m2.pd.1d", "0.4 min m2 ca pattern density") +end +if m2_ca_density > 0.65 + #chip_boundary.output("m2.pd.1e", "0.65 max m2 ca pattern density, m2 ca density is #{m2_ca_density}") + marker_box.output("m2.pd.1e", "0.65 max m2 ca pattern density") +end + +#m3_wildcard = "70/20" +#m3_fill_wildcard = "34/28" +m3_density = polygons(m3_wildcard, m3fill_wildcard).area / area_within_seal +m3_ca_density = 1 - m3_density +log("m3_ca_density is #{m3_ca_density}") +if m3_ca_density < 0.4 + #chip_boundary.output("m3.pd.1d", "0.4 min m3 ca pattern density, m3 ca density is #{m3_ca_density}") + marker_box.output("m3.pd.1d", "0.4 min m3 ca pattern density") +end +if m3_ca_density > 0.65 + #chip_boundary.output("m3.pd.1e", "0.65 max m3 ca pattern density, m3 ca density is #{m3_ca_density}") + marker_box.output("m3.pd.1e", "0.65 max m3 ca pattern density") +end + +#m4_wildcard = "71/20" +#m4fill_wildcard = "51/28" +m4_density = polygons(m4_wildcard, m4fill_wildcard).area / area_within_seal +m4_ca_density = 1 - m4_density +log("m4_ca_density is #{m4_ca_density}") +if m4_ca_density < 0.4 + #chip_boundary.output("m4.pd.1d", "0.4 min m4 ca pattern density, m4 ca density is #{m4_ca_density}") + marker_box.output("m4.pd.1d", "0.4 min m4 ca pattern density, m4 ca density is #{m4_ca_density}") +end +if m4_ca_density > 0.65 + #chip_boundary.output("m4.pd.1e", "0.65 max m4 ca pattern density") + marker_box.output("m4.pd.1e", "0.65 max m4 ca pattern density") +end + +#m5_wildcard = "72/20" +#m5fill_wildcard = "59/28" +m5_density = polygons(m5_wildcard, m5fill_wildcard).area / area_within_seal +m5_ca_density = 1 - m5_density +log("m5_ca_density is #{m5_ca_density}") +if m5_ca_density < 0.24 + #chip_boundary.output("m5.pd.1d", "0.24 min m5 ca pattern density, m5 ca density is #{m5_ca_density}") + marker_box.output("m5.pd.1d", "0.24 min m5 ca pattern density") +end +if m5_ca_density > 0.55 + #chip_boundary.output("m5.pd.1e", "0.55 max m5 ca pattern density, m5 ca density is #{m5_ca_density}") + marker_box.output("m5.pd.1e", "0.55 max m5 ca pattern density") +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-drc-wip.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-drc-wip.lydrc new file mode 100755 index 00000000..73c716e6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-drc-wip.lydrc @@ -0,0 +1,868 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report($report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = false # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = false # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +# use 4 cpu cores +threads(4) +# if more inof is needed, set true +verbose(true) + +# layers definitions +######################## +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) +li = input(67, 20) +mcon = polygons(67, 44) +m1 = polygons(68, 20) +via = polygons(68, 44) +m2 = polygons(69, 20) +via2 = polygons(69, 44) +m3 = polygons(70, 20) +via3 = polygons(70, 44) +m4 = polygons(71, 20) +via4 = polygons(71, 44) +m5 = polygons(72, 20) +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# li +not_in_cell5 = layout(source.cell_obj).select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.input(67, 20) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") +in_cell5 = layout(source.cell_obj).select("+s8rf2_xcmvpp_hd5_*") +in_cell5_li = in_cell5.input(67, 20) +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +# rule li.2 not coded +not_in_cell5_li.isolated(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.isolated(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.isolated(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +huge_m1 = m1.sized(-1.5).sized(1.5) +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") +m1.isolated(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") +huge_m1.separation(m1, 0.28, euclidian).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(68, 20) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(68, 20) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +huge_m2 = m2.sized(-1.5).sized(1.5) +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") +m2.isolated(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") +huge_m2.separation(m2, 0.28, euclidian).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +huge_m3 = m3 - m3.width(3.0, projection).polygons +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") +m3.isolated(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") +huge_m3.separation(m3, 0.4, euclidian).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# m4 +huge_m4 = m4.sized(-1.5).sized(1.5) +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") +m4.isolated(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +huge_m4.separation(m4, 0.4, euclidian).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") +m5.isolated(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-eft.lyp b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-eft.lyp new file mode 100755 index 00000000..a2eb105d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-eft.lyp @@ -0,0 +1,8649 @@ + + + + #ccccd9 + #ccccd9 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + prBoundary.boundary - 235/4 + 235/4@1 + + + #00ffff + #00ffff + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + pwell.drawing - 64/44 + 64/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C39 + C0 + true + true + false + 1 + false + false + 0 + pwell.pin - 122/16 + 122/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pwell.label - 64/59 + 64/59@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + pwell.res - 64/13 + 64/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pwell.cut - 64/14 + 64/14@1 + + + #ffffff + #96c8ff + 0 + 0 + C39 + C0 + true + true + false + 1 + false + false + 0 + pwelliso.pin - 44/16 + 44/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pwelliso.label - 44/5 + 44/5@1 + + + #00cc66 + #00cc66 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + nwell.drawing - 64/20 + 64/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + C2 + C0 + true + true + false + 1 + false + false + 0 + nwell.net - 84/23 + 84/23@1 + + + #268c6b + #268c6b + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + nwell.pin - 64/16 + 64/16@1 + + + #333399 + #333399 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + nwell.label - 64/5 + 64/5@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + dnwell.drawing - 64/18 + 64/18@1 + + + #00ffff + #00ffff + 0 + 0 + C6 + C0 + true + true + false + 1 + false + false + 0 + vhvi.drawing - 74/21 + 74/21@1 + + + #00ff00 + #00ff00 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + diff.drawing - 65/20 + 65/20@1 + + + #00ff00 + #00ff00 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + diff.res - 65/13 + 65/13@1 + + + #00ff00 + #00ff00 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + diff.cut - 65/14 + 65/14@1 + + + #268c6b + #268c6b + 0 + 0 + C37 + C0 + false + true + false + 1 + false + false + 0 + diff.pin - 65/16 + 65/16@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + diff.label - 65/6 + 65/6@1 + + + #00ff00 + #00ff00 + 0 + 0 + C5 + C0 + false + true + false + 1 + false + false + 0 + diff.net - 65/23 + 65/23@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + diff.boundary - 65/4 + 65/4@1 + + + #9900e6 + #9900e6 + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + diff.hv - 65/8 + 65/8@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + tap.drawing - 65/44 + 65/44@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + tap.pin - 65/48 + 65/48@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + false + true + false + 1 + false + false + 0 + tap.net - 65/41 + 65/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + tap.boundary - 65/60 + 65/60@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + tap.label - 65/5 + 65/5@1 + + + #9900e6 + #9900e6 + 0 + 0 + C23 + C0 + true + true + false + 1 + false + false + 0 + psdm.drawing - 94/20 + 94/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C22 + C0 + true + true + false + 1 + false + false + 0 + nsdm.drawing - 93/44 + 93/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C42 + C0 + true + true + false + 1 + false + false + 0 + poly.drawing - 66/20 + 66/20@1 + + + #ff8000 + #ff8000 + 0 + 0 + C39 + C0 + true + true + false + 1 + false + false + 0 + poly.pin - 66/16 + 66/16@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + poly.res - 66/13 + 66/13@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.cut - 66/14 + 66/14@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + poly.gate - 66/9 + 66/9@1 + + + #ffafaf + #ffafaf + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.label - 66/5 + 66/5@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + poly.boundary - 66/4 + 66/4@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.probe - 66/25 + 66/25@1 + + + #ff0000 + #ff0000 + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + poly.short - 66/15 + 66/15@1 + + + #ff0000 + #ff0000 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + poly.net - 66/23 + 66/23@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.model - 66/83 + 66/83@1 + + + #00cc66 + #00cc66 + 0 + 0 + C51 + C0 + true + true + false + 1 + false + false + 0 + ldntm.drawing - 11/44 + 11/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + lvtn.drawing - 125/44 + 125/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + hvtp.drawing - 78/44 + 78/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + hvtr.drawing - 18/20 + 18/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C42 + C0 + true + true + false + 1 + false + false + 0 + tunm.drawing - 80/20 + 80/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C24 + C0 + true + true + false + 1 + false + false + 0 + licon1.drawing - 66/44 + 66/44@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + licon1.boundary - 66/60 + 66/60@1 + + + #ffe6bf + #c8ffff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + licon1.pin - 66/58 + 66/58@1 + + + #ffffcc + #ffffcc + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + licon1.net - 66/41 + 66/41@1 + + + #bf4026 + #bf4026 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + npc.drawing - 95/20 + 95/20@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + li1.drawing - 67/20 + 67/20@1 + + + #bf4026 + #bf4026 + 0 + 0 + C47 + C0 + true + true + false + 1 + false + false + 0 + li1.pin - 67/16 + 67/16@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + li1.res - 67/13 + 67/13@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + li1.cut - 67/14 + 67/14@1 + + + #bf4026 + #bf4026 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + li1.label - 67/5 + 67/5@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + li1.net - 67/23 + 67/23@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + li1.boundary - 67/4 + 67/4@1 + + + #bf4026 + #bf4026 + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + li1.blockage - 67/10 + 67/10@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + li1.short - 67/15 + 67/15@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + li1.probe - 67/25 + 67/25@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + mcon.drawing - 67/44 + 67/44@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + mcon.boundary - 67/60 + 67/60@1 + + + #ffffcc + #d9e6ff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + mcon.pin - 67/48 + 67/48@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + mcon.net - 67/41 + 67/41@1 + + + #0000ff + #0000ff + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.drawing - 68/20 + 68/20@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met1.res - 68/13 + 68/13@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met1.cut - 68/14 + 68/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C6 + C0 + true + true + false + 1 + false + false + 0 + met1.pin - 68/16 + 68/16@1 + + + #96c8ff + #96c8ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met1.label - 68/5 + 68/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met1.net - 68/23 + 68/23@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met1.boundary - 68/4 + 68/4@1 + + + #0000ff + #0000ff + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + met1.blockage - 68/10 + 68/10@1 + + + #0000ff + #0000ff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + met1.short - 68/15 + 68/15@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met1.probe - 68/25 + 68/25@1 + + + #0000ff + #0000ff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met1.option1 - 68/32 + 68/32@1 + + + #0000ff + #0000ff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met1.option2 - 68/33 + 68/33@1 + + + #0000ff + #0000ff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met1.option3 - 68/34 + 68/34@1 + + + #0000ff + #0000ff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met1.option4 - 68/35 + 68/35@1 + + + #0000ff + #0000ff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met1.option5 - 68/36 + 68/36@1 + + + #0000ff + #0000ff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met1.option6 - 68/37 + 68/37@1 + + + #0000ff + #0000ff + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + met1.option7 - 68/38 + 68/38@1 + + + #0000ff + #0000ff + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + met1.option8 - 68/39 + 68/39@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + via.drawing - 68/44 + 68/44@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via.boundary - 68/60 + 68/60@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via.net - 68/41 + 68/41@1 + + + #ae7dff + #ae7dff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via.pin - 68/58 + 68/58@1 + + + #ff00ff + #ff00ff + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.drawing - 69/20 + 69/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met2.res - 69/13 + 69/13@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met2.cut - 69/14 + 69/14@1 + + + #ff00ff + #ff00ff + 0 + 0 + C46 + C0 + true + true + false + 1 + false + false + 0 + met2.pin - 69/16 + 69/16@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met2.label - 69/5 + 69/5@1 + + + #ff00ff + #ff00ff + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met2.net - 69/23 + 69/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met2.boundary - 69/4 + 69/4@1 + + + #ff00ff + #ff00ff + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + met2.blockage - 69/10 + 69/10@1 + + + #ff00ff + #ff00ff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + met2.short - 69/15 + 69/15@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met2.probe - 69/25 + 69/25@1 + + + #ff00ff + #ff00ff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met2.option1 - 69/32 + 69/32@1 + + + #ff00ff + #ff00ff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met2.option2 - 69/33 + 69/33@1 + + + #ff00ff + #ff00ff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met2.option3 - 69/34 + 69/34@1 + + + #ff00ff + #ff00ff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met2.option4 - 69/35 + 69/35@1 + + + #ff00ff + #ff00ff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met2.option5 - 69/36 + 69/36@1 + + + #ff00ff + #ff00ff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met2.option6 - 69/37 + 69/37@1 + + + #ff00ff + #ff00ff + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + met2.option7 - 69/38 + 69/38@1 + + + #ff00ff + #ff00ff + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + met2.option8 - 69/39 + 69/39@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C7 + true + true + false + 3 + false + false + 0 + via2.drawing - 69/44 + 69/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via2.boundary - 69/60 + 69/60@1 + + + #ff8000 + #ff8000 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via2.pin - 69/58 + 69/58@1 + + + #ff8000 + #ff8000 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via2.net - 69/41 + 69/41@1 + + + #00ffff + #00ffff + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.drawing - 70/20 + 70/20@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met3.res - 70/13 + 70/13@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met3.cut - 70/14 + 70/14@1 + + + #00ffff + #00ffff + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met3.pin - 70/16 + 70/16@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met3.label - 70/5 + 70/5@1 + + + #00ffff + #00ffff + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met3.net - 70/23 + 70/23@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met3.boundary - 70/4 + 70/4@1 + + + #00ffff + #00ffff + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + met3.blockage - 70/10 + 70/10@1 + + + #00ffff + #00ffff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + met3.short - 70/15 + 70/15@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met3.fuse - 70/17 + 70/17@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met3.probe - 70/25 + 70/25@1 + + + #00ffff + #00ffff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met3.option1 - 70/32 + 70/32@1 + + + #00ffff + #00ffff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met3.option2 - 70/33 + 70/33@1 + + + #00ffff + #00ffff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met3.option3 - 70/34 + 70/34@1 + + + #00ffff + #00ffff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met3.option4 - 70/35 + 70/35@1 + + + #00ffff + #00ffff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met3.option5 - 70/36 + 70/36@1 + + + #00ffff + #00ffff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met3.option6 - 70/37 + 70/37@1 + + + #00ffff + #00ffff + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + met3.option7 - 70/38 + 70/38@1 + + + #00ffff + #00ffff + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + met3.option8 - 70/39 + 70/39@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C7 + true + true + false + 3 + false + false + 0 + via3.drawing - 70/44 + 70/44@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via3.boundary - 70/60 + 70/60@1 + + + #268c6b + #268c6b + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via3.pin - 70/48 + 70/48@1 + + + #268c6b + #268c6b + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via3.net - 70/41 + 70/41@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.drawing - 71/20 + 71/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met4.res - 71/13 + 71/13@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met4.cut - 71/14 + 71/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met4.pin - 71/16 + 71/16@1 + + + #ae7dff + #ae7dff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met4.label - 71/5 + 71/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met4.net - 71/23 + 71/23@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met4.boundary - 71/4 + 71/4@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + met4.blockage - 71/10 + 71/10@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + met4.short - 71/15 + 71/15@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met4.fuse - 71/17 + 71/17@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met4.probe - 71/25 + 71/25@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met4.option1 - 71/32 + 71/32@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met4.option2 - 71/33 + 71/33@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met4.option3 - 71/34 + 71/34@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met4.option4 - 71/35 + 71/35@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met4.option5 - 71/36 + 71/36@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met4.option6 - 71/37 + 71/37@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + met4.option7 - 71/38 + 71/38@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + met4.option8 - 71/39 + 71/39@1 + + + #ffff00 + #ffff00 + 0 + 0 + I1 + C7 + true + true + false + 3 + false + false + 0 + via4.drawing - 71/44 + 71/44@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via4.boundary - 71/60 + 71/60@1 + + + #ffff00 + #ffff00 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via4.pin - 71/48 + 71/48@1 + + + #ffff00 + #ffff00 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via4.net - 71/41 + 71/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.drawing - 72/20 + 72/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met5.res - 72/13 + 72/13@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met5.cut - 72/14 + 72/14@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met5.pin - 72/16 + 72/16@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met5.label - 72/5 + 72/5@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met5.net - 72/23 + 72/23@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met5.boundary - 72/4 + 72/4@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C54 + C0 + true + true + false + 1 + false + false + 0 + met5.blockage - 72/10 + 72/10@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + met5.short - 72/15 + 72/15@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met5.fuse - 72/17 + 72/17@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met5.probe - 72/25 + 72/25@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met5.option1 - 72/32 + 72/32@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met5.option2 - 72/33 + 72/33@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met5.option3 - 72/34 + 72/34@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met5.option4 - 72/35 + 72/35@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met5.option5 - 72/36 + 72/36@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met5.option6 - 72/37 + 72/37@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + met5.option7 - 72/38 + 72/38@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + met5.option8 - 72/39 + 72/39@1 + + + #00cc66 + #00cc66 + 0 + 0 + C51 + C0 + true + true + false + 1 + false + false + 0 + nsm.drawing - 61/20 + 61/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + pad.drawing - 76/20 + 76/20@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pad.label - 76/5 + 76/5@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + pad.pin - 76/16 + 76/16@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + pnp.drawing - 82/44 + 82/44@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pnp.label - 82/59 + 82/59@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + npn.drawing - 82/20 + 82/20@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + npn.label - 82/5 + 82/5@1 + + + #ffffff + #96c8ff + 0 + 0 + C39 + C0 + true + true + false + 1 + false + false + 0 + rpm.drawing - 86/20 + 86/20@1 + + + #ffffff + #c896ff + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + urpm.drawing - 79/20 + 79/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C4 + C0 + true + true + false + 1 + false + false + 0 + hvi.drawing - 75/20 + 75/20@1 + + + #ffb232 + #ffb232 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + capacitor.drawing - 82/64 + 82/64@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + ncm.drawing - 92/44 + 92/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cncm.drawing - 96/44 + 96/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cncm.mask - 17/0 + 17/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C21 + C1 + true + true + false + 1 + false + false + 0 + pmm.drawing - 85/44 + 85/44@1 + + + #bf4026 + #bf4026 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + pmm2.drawing - 77/20 + 77/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + rdl.drawing - 74/20 + 74/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + rdl.pin - 74/16 + 74/16@1 + + + #ff6464 + #ff6464 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + rdl.label - 74/5 + 74/5@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + rdl.res - 74/13 + 74/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + rdl.cut - 74/14 + 74/14@1 + + + #e61f0d + #e61f0d + 0 + 0 + C37 + C0 + false + true + false + 1 + false + false + 0 + rdl.short - 74/15 + 74/15@1 + + + #e61f0d + #e61f0d + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + rdl.option1 - 89/32 + 89/32@1 + + + #e61f0d + #e61f0d + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + rdl.option2 - 89/33 + 89/33@1 + + + #e61f0d + #e61f0d + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + rdl.option3 - 89/34 + 89/34@1 + + + #e61f0d + #e61f0d + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + rdl.option4 - 89/35 + 89/35@1 + + + #e61f0d + #e61f0d + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + rdl.option5 - 89/36 + 89/36@1 + + + #e61f0d + #e61f0d + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + rdl.option6 - 89/37 + 89/37@1 + + + #e61f0d + #e61f0d + 0 + 0 + C32 + C0 + false + true + false + 1 + false + false + 0 + rdl.option7 - 89/38 + 89/38@1 + + + #e61f0d + #e61f0d + 0 + 0 + C33 + C0 + false + true + false + 1 + false + false + 0 + rdl.option8 - 89/39 + 89/39@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + ubm.drawing - 127/21 + 127/21@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + bump.drawing - 127/22 + 127/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + inductor.drawing - 82/24 + 82/24@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + inductor.label - 82/25 + 82/25@1 + + + #333399 + #ffffff + 0 + 0 + C26 + C0 + true + true + false + 1 + false + false + 0 + inductor.term1 - 82/26 + 82/26@1 + + + #333399 + #ffffff + 0 + 0 + C27 + C0 + true + true + false + 1 + false + false + 0 + inductor.term2 - 82/27 + 82/27@1 + + + #333399 + #ffffff + 0 + 0 + C28 + C0 + true + true + false + 1 + false + false + 0 + inductor.term3 - 82/28 + 82/28@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + cfom.drawing - 22/20 + 22/20@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cfom.mask - 23/0 + 23/0@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cfom.fill - 23/28 + 23/28@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cfom.maskAdd - 22/21 + 22/21@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cfom.maskDrop - 22/22 + 22/22@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cfom.waffleDrop - 22/24 + 22/24@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + fom.dummy - 22/23 + 22/23@1 + + + #268c6b + #268c6b + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cnwm.drawing - 109/44 + 109/44@1 + + + #268c6b + #268c6b + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cnwm.mask - 21/0 + 21/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cnwm.maskAdd - 109/43 + 109/43@1 + + + #268c6b + #268c6b + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cnwm.maskDrop - 109/42 + 109/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cdnm.drawing - 110/20 + 110/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cdnm.mask - 48/0 + 48/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cdnm.maskAdd - 110/21 + 110/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + cdnm.maskDrop - 110/22 + 110/22@1 + + + #96c8ff + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.drawing - 25/44 + 25/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clvtnm.mask - 25/0 + 25/0@1 + + + #96c8ff + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.maskAdd - 25/43 + 25/43@1 + + + #96c8ff + #0000ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.maskDrop - 25/42 + 25/42@1 + + + #ff8000 + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.drawing - 88/44 + 88/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + chvtpm.mask - 97/0 + 97/0@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.maskAdd - 97/43 + 97/43@1 + + + #ff8000 + #0000ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.maskDrop - 97/42 + 97/42@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.drawing - 98/44 + 98/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.mask - 98/0 + 98/0@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.maskAdd - 98/43 + 98/43@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.maskDrop - 98/42 + 98/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + ctunm.drawing - 96/20 + 96/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + ctunm.mask - 20/0 + 20/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + ctunm.maskAdd - 96/21 + 96/21@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + ctunm.maskDrop - 96/22 + 96/22@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + conom.drawing - 87/44 + 87/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + conom.mask - 88/0 + 88/0@1 + + + #ff0000 + #ff0000 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + conom.maskAdd - 87/43 + 87/43@1 + + + #ff0000 + #ff0000 + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + conom.maskDrop - 87/42 + 87/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.drawing - 29/20 + 29/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.mask - 30/0 + 30/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.maskAdd - 29/21 + 29/21@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.maskDrop - 29/22 + 29/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.drawing - 31/20 + 31/20@1 + + + #ffff00 + #ffff00 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.mask - 32/0 + 32/0@1 + + + #ffff00 + #ffff00 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.maskAdd - 31/21 + 31/21@1 + + + #ffff00 + #ffff00 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.maskDrop - 31/22 + 31/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + cntm.drawing - 26/20 + 26/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cntm.mask - 27/0 + 27/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cntm.maskAdd - 26/21 + 26/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cntm.maskDrop - 26/22 + 26/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + hvntm.drawing - 125/20 + 125/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + chvntm.drawing - 38/20 + 38/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + chvntm.mask - 39/0 + 39/0@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvntm.maskAdd - 38/21 + 38/21@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + chvntm.maskDrop - 38/22 + 38/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cldntm.drawing - 11/20 + 11/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cldntm.mask - 11/0 + 11/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clvom.drawing - 45/20 + 45/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + clvom.mask - 46/0 + 46/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + clvom.maskAdd - 45/21 + 45/21@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + clvom.maskDrop - 45/22 + 45/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cp1m.drawing - 33/44 + 33/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cp1m.mask - 28/0 + 28/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cp1m.fill - 28/28 + 28/28@1 + + + #ff8000 + #ff8000 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cp1m.maskAdd - 33/43 + 33/43@1 + + + #9900e6 + #9900e6 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cp1m.waffleDrop - 33/24 + 33/24@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cp1m.maskDrop - 33/42 + 33/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cli1m.drawing - 115/44 + 115/44@1 + + + #00ffff + #00ffff + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cli1m.mask - 56/0 + 56/0@1 + + + #00ffff + #00ffff + 0 + 0 + C12 + C0 + true + true + false + 1 + false + false + 0 + cli1m.fill - 56/28 + 56/28@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cli1m.maskAdd - 115/43 + 115/43@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + cli1m.maskDrop - 115/42 + 115/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + clicm1.drawing - 106/44 + 106/44@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clicm1.mask - 43/0 + 43/0@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + clicm1.maskAdd - 106/43 + 106/43@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + clicm1.maskDrop - 106/42 + 106/42@1 + + + #0000ff + #0000ff + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cmm1.drawing - 62/20 + 62/20@1 + + + #0000ff + #0000ff + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm1.mask - 36/0 + 36/0@1 + + + #0000ff + #0000ff + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm1.fill - 36/28 + 36/28@1 + + + #0000ff + #0000ff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm1.maskAdd - 62/21 + 62/21@1 + + + #0000ff + #0000ff + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm1.maskDrop - 62/22 + 62/22@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm1.waffleDrop - 62/24 + 62/24@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam.drawing - 105/20 + 105/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam.mask - 40/0 + 40/0@1 + + + #ffffcc + #ffffcc + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam.maskAdd - 105/21 + 105/21@1 + + + #ffffcc + #ffffcc + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam.maskDrop - 105/22 + 105/22@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cmm2.drawing - 105/44 + 105/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm2.mask - 41/0 + 41/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm2.fill - 41/28 + 41/28@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm2.maskAdd - 105/43 + 105/43@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm2.maskDrop - 105/42 + 105/42@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm2.waffleDrop - 105/52 + 105/52@1 + + + #333399 + #333399 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam2.drawing - 108/20 + 108/20@1 + + + #333399 + #333399 + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam2.mask - 44/0 + 44/0@1 + + + #333399 + #333399 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam2.maskAdd - 108/21 + 108/21@1 + + + #333399 + #333399 + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam2.maskDrop - 108/22 + 108/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cmm3.drawing - 107/20 + 107/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm3.mask - 34/0 + 34/0@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm3.fill - 34/28 + 34/28@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm3.maskAdd - 107/21 + 107/21@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm3.maskDrop - 107/22 + 107/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm3.waffleDrop - 107/24 + 107/24@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cnpc.drawing - 44/20 + 44/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C40 + C0 + true + true + false + 1 + false + false + 0 + cnpc.mask - 49/0 + 49/0@1 + + + #e61f0d + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cnpc.maskAdd - 44/43 + 44/43@1 + + + #e61f0d + #e61f0d + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cnpc.maskDrop - 44/42 + 44/42@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam3.drawing - 112/20 + 112/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam3.mask - 50/0 + 50/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam3.maskAdd - 112/21 + 112/21@1 + + + #268c6b + #268c6b + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam3.maskDrop - 112/22 + 112/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + cnsm.mask - 22/0 + 22/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cpdm.drawing - 104/44 + 104/44@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpdm.mask - 37/0 + 37/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cpdm.maskAdd - 104/43 + 104/43@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cpdm.maskDrop - 104/42 + 104/42@1 + + + #8c8ca6 + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cpmm.drawing - 91/44 + 91/44@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpbo.mask - 99/0 + 99/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm4.mask - 51/0 + 51/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm4.fill - 51/28 + 51/28@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cmm4.maskAdd - 112/43 + 112/43@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm4.maskDrop - 112/42 + 112/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm4.waffleDrop - 112/4 + 112/4@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam4.drawing - 117/20 + 117/20@1 + + + #00ffff + #00ffff + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam4.mask - 58/0 + 58/0@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam4.maskAdd - 117/21 + 117/21@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam4.maskDrop - 117/22 + 117/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm5.mask - 59/0 + 59/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm5.fill - 59/28 + 59/28@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm5.waffleDrop - 117/4 + 117/4@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + target.drawing - 76/44 + 76/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cctm1.drawing - 101/44 + 101/44@1 + + + #ffffff + #ffffff + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cctm1.mask - 35/0 + 35/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cctm1.maskAdd - 101/43 + 101/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cctm1.maskDrop - 101/42 + 101/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + crpm.drawing - 53/44 + 53/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + crpm.mask - 96/0 + 96/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + crpm.maskAdd - 53/43 + 53/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + crpm.maskDrop - 53/42 + 53/42@1 + + + #e61f0d + #e61f0d + 0 + 0 + C48 + C0 + false + true + false + 1 + false + false + 0 + ccu1m.mask - 93/0 + 93/0@1 + + + #bf4026 + #bf4026 + 0 + 0 + C41 + C0 + false + true + false + 1 + false + false + 0 + cpmm2.mask - 94/0 + 94/0@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + false + true + false + 1 + false + false + 0 + cubm.mask - 100/0 + 100/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C21 + C0 + false + true + false + 1 + false + false + 0 + cbump.mask - 101/0 + 101/0@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + overlap.drawing - 90/20 + 90/20@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + overlap.boundary - 90/4 + 90/4@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.lowTapDensity - 81/14 + 81/14@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.notCritSide - 81/15 + 81/15@1 + + + #adff2f + #adff2f + 0 + 0 + C2 + C7 + true + true + false + 3 + false + false + 0 + areaid.injection - 81/17 + 81/17@1 + + + #bebed8 + #bebed8 + 0 + 0 + C2 + C7 + true + true + false + 3 + false + false + 0 + areaid.rfdiode - 81/125 + 81/125@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.seal - 81/1 + 81/1@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.core - 81/2 + 81/2@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.frame - 81/3 + 81/3@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.esd - 81/19 + 81/19@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.dieCut - 81/11 + 81/11@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.moduleCut - 81/10 + 81/10@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.frameRect - 81/12 + 81/12@1 + + + #333399 + #ccccd9 + 0 + 0 + C23 + C0 + true + true + false + 1 + false + false + 0 + areaid.substrateCut - 81/53 + 81/53@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.diode - 81/23 + 81/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.standardc - 81/4 + 81/4@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.deadZon - 81/50 + 81/50@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.critCorner - 81/51 + 81/51@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.critSid - 81/52 + 81/52@1 + + + #8c8ca6 + #c8ffc8 + 0 + 0 + C21 + C7 + true + true + false + 3 + false + false + 0 + areaid.opcDrop - 81/54 + 81/54@1 + + + #00bfff + #00ffe7 + 0 + 0 + C1 + C7 + true + true + false + 3 + false + false + 0 + areaid.waffleWindow - 81/13 + 81/13@1 + + + #daa520 + #daa520 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.extendedDrain - 81/57 + 81/57@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.lvNative - 81/60 + 81/60@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.photo - 81/81 + 81/81@1 + + + #ff00ff + #00ff00 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.etest - 81/101 + 81/101@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.hvnwell - 81/63 + 81/63@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.rdlprobepad - 81/27 + 81/27@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.sigPadDiff - 81/6 + 81/6@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.sigPadWell - 81/7 + 81/7@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.sigPadMetNtr - 81/8 + 81/8@1 + + + #ff6464 + #ff6464 + 0 + 0 + C0 + C7 + true + true + false + 3 + false + false + 0 + areaid.analog - 81/79 + 81/79@1 + + + #0080ff + #0080ff + 0 + 0 + C0 + + true + true + false + + false + false + 0 + text.drawing 83/44@1 + 83/44@1 + + + #008080 + #008080 + 0 + 0 + I9 + + true + true + false + + false + false + 0 + crrpm.mask 102/0@1 + 102/0@1 + + + #ffff00 + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + prune.drawing - 84/44 + 84/44@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + padCenter.drawing - 81/20 + 81/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa1 - 68/88 + 68/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa1 - 69/88 + 69/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa1 - 70/88 + 70/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa1 - 71/88 + 71/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa1 - 72/88 + 72/88@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa2 - 68/89 + 68/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa2 - 69/89 + 69/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa2 - 70/89 + 70/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa2 - 71/89 + 71/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa2 - 72/89 + 72/89@1 + + + #ffffcc + #ffffcc + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa3 - 68/90 + 68/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa3 - 69/90 + 69/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa3 - 70/90 + 70/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa3 - 71/90 + 71/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa3 - 72/90 + 72/90@1 + + + #802626 + #802626 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa4 - 68/91 + 68/91@1 + + + #802626 + #802626 + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa4 - 69/91 + 69/91@1 + + + #802626 + #802626 + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa4 - 70/91 + 70/91@1 + + + #802626 + #802626 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa4 - 71/91 + 71/91@1 + + + #802626 + #802626 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa4 - 72/91 + 72/91@1 + + + #333399 + #333399 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa5 - 68/92 + 68/92@1 + + + #333399 + #333399 + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa5 - 69/92 + 69/92@1 + + + #333399 + #333399 + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa5 - 70/92 + 70/92@1 + + + #333399 + #333399 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa5 - 71/92 + 71/92@1 + + + #333399 + #333399 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa5 - 72/92 + 72/92@1 + + + #fa8072 + #fa8072 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa6 - 68/93 + 68/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + met2.psa6 - 69/93 + 69/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C50 + C0 + true + true + false + 1 + false + false + 0 + met3.psa6 - 70/93 + 70/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa6 - 71/93 + 71/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C43 + C0 + true + true + false + 1 + false + false + 0 + met5.psa6 - 72/93 + 72/93@1 + + + #ff0000 + #ff0000 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa1 - 74/88 + 74/88@1 + + + #0000ff + #0000ff + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa2 - 74/89 + 74/89@1 + + + #00cc66 + #00cc66 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa3 - 74/90 + 74/90@1 + + + #ffffff + #ffffff + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa4 - 74/91 + 74/91@1 + + + #ffff00 + #ffff00 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa5 - 74/92 + 74/92@1 + + + #bf4026 + #bf4026 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa6 - 74/93 + 74/93@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C21 + C1 + false + true + false + 1 + false + false + 0 + blanking.drawing - 124/40 + 124/40@1 + + + #80a8ff + #80a8ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via.label 5/1@1 + 5/1@1 + + + #80a8ff + #80a8ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via.blockage 5/3@1 + 5/3@1 + + + #ff0080 + #ff0080 + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via2.blockage 7/3@1 + 7/3@1 + + + #8000ff + #8000ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via3.label 9/1@1 + 9/1@1 + + + #8000ff + #8000ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via3.blockage 9/3@1 + 9/3@1 + + + #0080ff + #0080ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via4.label 11/1@1 + 11/1@1 + + + #0080ff + #0080ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via4.blockage 11/3@1 + 11/3@1 + + + #800057 + #800057 + 0 + 0 + I9 + + true + true + false + + false + false + 0 + rdlcon.drawing 13/0@1 + 13/0@1 + + + #0080ff + #0080ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + marker.error 83/6@1 + 83/6@1 + + + #0080ff + #0080ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + marker.warning 83/7@1 + 83/7@1 + + + #008080 + #008080 + 0 + 0 + I5 + + true + true + false + + false + false + 0 + rrpm.drawing 102/20@1 + 102/20@1 + + + #80ff8d + #80ff8d + 0 + 0 + C0 + + true + true + false + + false + false + 0 + prBoundary.drawing 235/0@1 + 235/0@1 + + + #ffae00 + #ffae00 + 0 + 0 + C0 + + true + true + false + + false + false + 0 + OUTLINE 236/0@1 + 236/0@1 + + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + + 1 + blank + + + + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + + 2 + solid + + + + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + + 3 + dots + + + + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + + 4 + hLine + + + + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + + 5 + vLine + + + + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + + 6 + cross + + + + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + + 7 + grid + + + + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + + 8 + slash + + + + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + + 9 + backSlash + + + + **......**...... + ..*.......*..... + ...**......**... + .....*.......*.. + ......**......** + *.......*....... + .**......**..... + ...*.......*.... + ....**......**.. + ......*.......*. + *......**......* + .*.......*...... + ..**......**.... + ....*.......*... + .....**......**. + .......*.......* + + 10 + hZigZag + + + + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + + 11 + vZigZag + + + + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + + 12 + hCurb + + + + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + + 13 + vCurb + + + + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + + 14 + brick + + + + ................ + ..*.......*..... + ..*.......*..... + ..*.......*..... + *****...*****... + ..*.......*..... + ..*.......*..... + ..*.......*..... + ................ + .....*.......*.. + .....*.......*.. + .....*.......*.. + ...*****...***** + .....*.......*.. + .....*.......*.. + .....*.......*.. + + 15 + dagger + + + + ................ + ..*............. + ..*............. + ..*............. + *****........... + ..*............. + ..*............. + ..*............. + ................ + .............*.. + .............*.. + .............*.. + ...........***** + .............*.. + .............*.. + .............*.. + + 16 + sparseDagger + + + + ................ + ..........*..... + ..........*..... + ..........*..... + ........*****... + ..........*..... + ..........*..... + ..........*..... + ................ + .....*.......... + .....*.......... + .....*.......... + ...*****........ + .....*.......... + .....*.......... + .....*.......... + + 17 + sparseDagger2 + + + + ................ + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *********....... + ................ + ................ + ................ + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .......********* + ................ + ................ + + 18 + triangle + + + + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + + 19 + x + + + + ................ + .*.....*.....*.. + ..*...**....*... + ...*.*.*...*.... + ....*..*..*..... + .....*.*.*...... + ......***....... + .......*........ + ......***....... + .....*.*.*...... + ....*..*..*..... + ...*...*...*.... + ..*....*....*... + .*..*******..*.. + ................ + ................ + + 20 + Xone + + + + ................ + .*....**.....*.. + ..*..*..*...*... + ...**....*.*.... + ....*....**..... + .....*...*...... + ......*.*....... + .......*........ + ......*.*....... + .....*...*...... + ....*.....*..... + ...**......*.... + ..*.*.......*... + .*..******...*.. + ................ + ................ + + 21 + Xtwo + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + + 22 + spareDots + + + + ................ + ................ + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + + 23 + spareDots21 + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ................ + ................ + + 24 + spareDots22 + + + + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + + 25 + checker + + + + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + + 26 + checker2 + + + + ................ + ................ + ................ + ................ + .......*........ + ......**........ + .......*........ + .......*........ + .......*........ + .......*........ + ......***....... + ................ + ................ + ................ + ................ + ................ + + 27 + one + + + + ................ + ................ + ................ + ................ + ................ + .......**....... + ......*..*...... + .........*...... + ........*....... + .......*........ + ......*......... + ......****...... + ................ + ................ + ................ + ................ + + 28 + two + + + + ................ + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .........*...... + .......**....... + .........*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + + 29 + three + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .............*.. + ............**.. + ...........*.*.. + ..........*..*.. + .........******. + .............*.. + .............*.. + ................ + + 30 + four + + + + ................ + ................ + ................ + ......***....... + .....*.......... + .....*.......... + .....***........ + ........*....... + ........*....... + .....***........ + ................ + ................ + ................ + ................ + ................ + ................ + + 31 + five + + + + ................ + ................ + ................ + ................ + .......***...... + ......*......... + ......*......... + ......****...... + ......*...*..... + ......*...*..... + .......***...... + ................ + ................ + ................ + ................ + ................ + + 32 + six + + + + ................ + ................ + ................ + .....******..... + ..........*..... + .........*...... + .........*...... + ........*....... + ........*....... + .......*........ + ......*......... + .....*.......... + ................ + ................ + ................ + ................ + + 33 + seven + + + + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .....*...*...... + ......***....... + .....*...*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + ................ + + 34 + eight + + + + *..............* + .*............*. + ..*..........*.. + ...*........*... + ....*......*.... + .....*....*..... + ......*..*...... + .......**....... + .......**....... + ......*..*...... + .....*....*..... + ....*......*.... + ...*........*... + ..*..........*.. + .*............*. + *..............* + + 35 + box45 + + + + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + + 36 + gray50 + + + + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + + 37 + gray25 + + + + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + + 38 + snow + + + + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + + 39 + backSlash2 + + + + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + + 40 + lattice + + + + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + + 41 + smallChecker + + + + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + + 42 + slantBox + + + + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + + 43 + slash2 + + + + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + + 44 + bigSlash + + + + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + + 45 + boxes + + + + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + + 46 + circles + + + + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + + 47 + zigzag + + + + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + + 48 + lightMesh + + + + ...............* + ..............*. + .............*.. + ............*... + ...........*.... + ..........*..... + .........*...... + ........*....... + .......*........ + ......*......... + .....*.......... + ....*........... + ...*............ + ..*............. + .*.............. + *............... + + 49 + hugeSlash + + + + *............... + .*.............. + ..*............. + ...*............ + ....*........... + .....*.......... + ......*......... + .......*........ + ........*....... + .........*...... + ..........*..... + ...........*.... + ............*... + .............*.. + ..............*. + ...............* + + 50 + hugeSlash2 + + + + *.........*..... + .....*.......... + ..*.........*... + .......*........ + ....*.........*. + .*.......*...... + ......*......... + ...*.......*.... + ........*....... + .....*.......*.. + *.........*..... + .......*........ + ..*.........*... + .........*...... + ....*.........*. + ...........*.... + + 51 + curve + + + + ....*....*....*. + ..*............. + *.......*....... + .............*.. + .......*........ + ............*... + .....*.......... + ...*.......*.... + *............... + ................ + .........*...... + ................ + ......*........* + ...*............ + *............*.. + ..........*..... + + 52 + curve2 + + + + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 53 + diams + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 54 + sparsediam + + + + .......*.......* + ......*......... + .....*.......... + ................ + ................ + ................ + .*.............. + *............... + .......*.......* + ..............*. + .............*.. + ................ + ................ + ................ + .........*...... + ........*....... + + 55 + rain + + + *** + 1 + solid + + + ****.. + 2 + dashed + + + *.. + 3 + dots + + + ***..*.. + 4 + dashDot + + + **.. + 5 + shortDash + + + ****..**.. + 6 + doubleDash + + + *... + 7 + hidden + + + *** + 8 + thickLine + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lydrc new file mode 100755 index 00000000..0aee42df --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lydrc @@ -0,0 +1,78 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + + +source($input) +report("Density Checks", $report) + +verbose(true) + +diff_wildcard = "65/20" +tap_wildcard = "65/44" +fomfill_wildcard = "65,23/28" +fommk_wildcard = "23/0" + +chip_boundary = input(235,4) +pl = polygon_layer +pl.insert(box(0, 0, 700, 700)) +pl & chip_boundary + +if $thr + threads($thr) +else + threads(4) +end + +verbose(true) + +bbox = chip_boundary.bbox + +window_size = 700 + +step_size = 70 + +llx, lly, urx, ury = bbox.left, bbox.bottom, bbox.right, bbox.top + +cnt = 0 +tot = ((urx-window_size-llx) / step_size).ceil() * ((ury-window_size-lly) / step_size ).ceil() +for x in (llx..urx-window_size).step(step_size) + for y in (lly..ury-window_size).step(step_size) + pl = polygon_layer + pl.insert(box(x, y, x+window_size, y+window_size)) + box_within_boundary = pl & chip_boundary + m_area_within_seal = (box_within_boundary & source.touching(box_within_boundary.bbox).polygons(diff_wildcard, tap_wildcard, fomfill_wildcard, fommk_wildcard)).area + m_density = m_area_within_seal / box_within_boundary.area + + cnt = cnt + 1 + # Needed for interfacing with other scripts + # puts does not print to stdout but rather to tty + # which can not be captured in python + system 'echo %d/%d'%[cnt, tot.round] + if m_density < 0.33 + box_within_boundary.output("cfom.pd.1d", "0.33 min FOM pattern density #{box_within_boundary.bbox}") + end + if m_density > 0.57 + box_within_boundary.output("cfom.pd.1e", "0.57 max FOM pattern density #{box_within_boundary.bbox}") + + end + # m_density < 0.33 && box_within_boundary.output("cfom.pd.1d", "0.33 min FOM pattern density") + # m_density > 0.57 && box_within_boundary.output("cfom.pd.1e", "0.57 max FOM pattern density") + end +end + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lyp b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lyp new file mode 100755 index 00000000..fd62ac4c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-fom.lyp @@ -0,0 +1,8377 @@ + + + + #ccccd9 + #ccccd9 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + prBoundary.boundary - 235/4 + 235/4@1 + + + #00ffff + #00ffff + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + pwell.drawing - 64/44 + 64/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C38 + C0 + true + false + false + 1 + false + false + 0 + pwell.pin - 122/16 + 122/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + pwell.label - 64/59 + 64/59@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + pwell.res - 64/13 + 64/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + pwell.cut - 64/14 + 64/14@1 + + + #ffffff + #96c8ff + 0 + 0 + C38 + C0 + true + false + false + 1 + false + false + 0 + pwelliso.pin - 44/16 + 44/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + pwelliso.label - 44/5 + 44/5@1 + + + #00cc66 + #00cc66 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + nwell.drawing - 64/20 + 64/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + C2 + C0 + true + false + false + 1 + false + false + 0 + nwell.net - 84/23 + 84/23@1 + + + #268c6b + #268c6b + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + nwell.pin - 64/16 + 64/16@1 + + + #333399 + #333399 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + nwell.label - 64/5 + 64/5@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C47 + C0 + true + false + false + 1 + false + false + 0 + dnwell.drawing - 64/18 + 64/18@1 + + + #00ffff + #00ffff + 0 + 0 + C6 + C0 + true + false + false + 1 + false + false + 0 + vhvi.drawing - 74/21 + 74/21@1 + + + #00ff00 + #00ff00 + 0 + 0 + C34 + C0 + true + true + false + 1 + false + false + 0 + diff.drawing - 65/20 + 65/20@1 + + + #00ff00 + #00ff00 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + diff.res - 65/13 + 65/13@1 + + + #00ff00 + #00ff00 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + diff.cut - 65/14 + 65/14@1 + + + #268c6b + #268c6b + 0 + 0 + C36 + C0 + false + false + false + 1 + false + false + 0 + diff.pin - 65/16 + 65/16@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + diff.label - 65/6 + 65/6@1 + + + #00ff00 + #00ff00 + 0 + 0 + C5 + C0 + false + false + false + 1 + false + false + 0 + diff.net - 65/23 + 65/23@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + diff.boundary - 65/4 + 65/4@1 + + + #9900e6 + #9900e6 + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + diff.hv - 65/8 + 65/8@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C34 + C0 + true + true + false + 1 + false + false + 0 + tap.drawing - 65/44 + 65/44@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + tap.pin - 65/48 + 65/48@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + false + false + false + 1 + false + false + 0 + tap.net - 65/41 + 65/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + tap.boundary - 65/60 + 65/60@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + tap.label - 65/5 + 65/5@1 + + + #9900e6 + #9900e6 + 0 + 0 + C22 + C0 + true + false + false + 1 + false + false + 0 + psdm.drawing - 94/20 + 94/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C21 + C0 + true + false + false + 1 + false + false + 0 + nsdm.drawing - 93/44 + 93/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C41 + C0 + true + false + false + 1 + false + false + 0 + poly.drawing - 66/20 + 66/20@1 + + + #ff8000 + #ff8000 + 0 + 0 + C38 + C0 + true + false + false + 1 + false + false + 0 + poly.pin - 66/16 + 66/16@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + poly.res - 66/13 + 66/13@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + poly.cut - 66/14 + 66/14@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + poly.gate - 66/9 + 66/9@1 + + + #ffafaf + #ffafaf + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + poly.label - 66/5 + 66/5@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + poly.boundary - 66/4 + 66/4@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + poly.probe - 66/25 + 66/25@1 + + + #ff0000 + #ff0000 + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + poly.short - 66/15 + 66/15@1 + + + #ff0000 + #ff0000 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + poly.net - 66/23 + 66/23@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + poly.model - 66/83 + 66/83@1 + + + #00cc66 + #00cc66 + 0 + 0 + C50 + C0 + true + false + false + 1 + false + false + 0 + ldntm.drawing - 11/44 + 11/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + lvtn.drawing - 125/44 + 125/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + hvtp.drawing - 78/44 + 78/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + hvtr.drawing - 18/20 + 18/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C41 + C0 + true + false + false + 1 + false + false + 0 + tunm.drawing - 80/20 + 80/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C23 + C0 + true + false + false + 1 + false + false + 0 + licon1.drawing - 66/44 + 66/44@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + licon1.boundary - 66/60 + 66/60@1 + + + #ffe6bf + #c8ffff + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + licon1.pin - 66/58 + 66/58@1 + + + #ffffcc + #ffffcc + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + licon1.net - 66/41 + 66/41@1 + + + #bf4026 + #bf4026 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + npc.drawing - 95/20 + 95/20@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + li1.drawing - 67/20 + 67/20@1 + + + #bf4026 + #bf4026 + 0 + 0 + C46 + C0 + true + false + false + 1 + false + false + 0 + li1.pin - 67/16 + 67/16@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + li1.res - 67/13 + 67/13@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + li1.cut - 67/14 + 67/14@1 + + + #bf4026 + #bf4026 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + li1.label - 67/5 + 67/5@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + li1.net - 67/23 + 67/23@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + li1.boundary - 67/4 + 67/4@1 + + + #bf4026 + #bf4026 + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + li1.blockage - 67/10 + 67/10@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + li1.short - 67/15 + 67/15@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + li1.probe - 67/25 + 67/25@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + mcon.drawing - 67/44 + 67/44@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + mcon.boundary - 67/60 + 67/60@1 + + + #ffffcc + #d9e6ff + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + mcon.pin - 67/48 + 67/48@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + mcon.net - 67/41 + 67/41@1 + + + #0000ff + #0000ff + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.drawing - 68/20 + 68/20@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met1.res - 68/13 + 68/13@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + met1.cut - 68/14 + 68/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C6 + C0 + true + false + false + 1 + false + false + 0 + met1.pin - 68/16 + 68/16@1 + + + #96c8ff + #96c8ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met1.label - 68/5 + 68/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + met1.net - 68/23 + 68/23@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + met1.boundary - 68/4 + 68/4@1 + + + #0000ff + #0000ff + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + met1.blockage - 68/10 + 68/10@1 + + + #0000ff + #0000ff + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + met1.short - 68/15 + 68/15@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met1.probe - 68/25 + 68/25@1 + + + #0000ff + #0000ff + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + met1.option1 - 68/32 + 68/32@1 + + + #0000ff + #0000ff + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + met1.option2 - 68/33 + 68/33@1 + + + #0000ff + #0000ff + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + met1.option3 - 68/34 + 68/34@1 + + + #0000ff + #0000ff + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + met1.option4 - 68/35 + 68/35@1 + + + #0000ff + #0000ff + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + met1.option5 - 68/36 + 68/36@1 + + + #0000ff + #0000ff + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + met1.option6 - 68/37 + 68/37@1 + + + #0000ff + #0000ff + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + met1.option7 - 68/38 + 68/38@1 + + + #0000ff + #0000ff + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + met1.option8 - 68/39 + 68/39@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + via.drawing - 68/44 + 68/44@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + via.boundary - 68/60 + 68/60@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + via.net - 68/41 + 68/41@1 + + + #ae7dff + #ae7dff + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + via.pin - 68/58 + 68/58@1 + + + #ff00ff + #ff00ff + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.drawing - 69/20 + 69/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met2.res - 69/13 + 69/13@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + met2.cut - 69/14 + 69/14@1 + + + #ff00ff + #ff00ff + 0 + 0 + C45 + C0 + true + false + false + 1 + false + false + 0 + met2.pin - 69/16 + 69/16@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met2.label - 69/5 + 69/5@1 + + + #ff00ff + #ff00ff + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + met2.net - 69/23 + 69/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + met2.boundary - 69/4 + 69/4@1 + + + #ff00ff + #ff00ff + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + met2.blockage - 69/10 + 69/10@1 + + + #ff00ff + #ff00ff + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + met2.short - 69/15 + 69/15@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met2.probe - 69/25 + 69/25@1 + + + #ff00ff + #ff00ff + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + met2.option1 - 69/32 + 69/32@1 + + + #ff00ff + #ff00ff + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + met2.option2 - 69/33 + 69/33@1 + + + #ff00ff + #ff00ff + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + met2.option3 - 69/34 + 69/34@1 + + + #ff00ff + #ff00ff + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + met2.option4 - 69/35 + 69/35@1 + + + #ff00ff + #ff00ff + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + met2.option5 - 69/36 + 69/36@1 + + + #ff00ff + #ff00ff + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + met2.option6 - 69/37 + 69/37@1 + + + #ff00ff + #ff00ff + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + met2.option7 - 69/38 + 69/38@1 + + + #ff00ff + #ff00ff + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + met2.option8 - 69/39 + 69/39@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C0 + true + false + false + 3 + false + false + 0 + via2.drawing - 69/44 + 69/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + via2.boundary - 69/60 + 69/60@1 + + + #ff8000 + #ff8000 + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + via2.pin - 69/58 + 69/58@1 + + + #ff8000 + #ff8000 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + via2.net - 69/41 + 69/41@1 + + + #00ffff + #00ffff + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.drawing - 70/20 + 70/20@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met3.res - 70/13 + 70/13@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + met3.cut - 70/14 + 70/14@1 + + + #00ffff + #00ffff + 0 + 0 + C34 + C0 + true + false + false + 1 + false + false + 0 + met3.pin - 70/16 + 70/16@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met3.label - 70/5 + 70/5@1 + + + #00ffff + #00ffff + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + met3.net - 70/23 + 70/23@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + met3.boundary - 70/4 + 70/4@1 + + + #00ffff + #00ffff + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + met3.blockage - 70/10 + 70/10@1 + + + #00ffff + #00ffff + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + met3.short - 70/15 + 70/15@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met3.fuse - 70/17 + 70/17@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met3.probe - 70/25 + 70/25@1 + + + #00ffff + #00ffff + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + met3.option1 - 70/32 + 70/32@1 + + + #00ffff + #00ffff + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + met3.option2 - 70/33 + 70/33@1 + + + #00ffff + #00ffff + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + met3.option3 - 70/34 + 70/34@1 + + + #00ffff + #00ffff + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + met3.option4 - 70/35 + 70/35@1 + + + #00ffff + #00ffff + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + met3.option5 - 70/36 + 70/36@1 + + + #00ffff + #00ffff + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + met3.option6 - 70/37 + 70/37@1 + + + #00ffff + #00ffff + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + met3.option7 - 70/38 + 70/38@1 + + + #00ffff + #00ffff + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + met3.option8 - 70/39 + 70/39@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C0 + true + false + false + 3 + false + false + 0 + via3.drawing - 70/44 + 70/44@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + via3.boundary - 70/60 + 70/60@1 + + + #268c6b + #268c6b + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + via3.pin - 70/48 + 70/48@1 + + + #268c6b + #268c6b + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + via3.net - 70/41 + 70/41@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.drawing - 71/20 + 71/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met4.res - 71/13 + 71/13@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + met4.cut - 71/14 + 71/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C34 + C0 + true + false + false + 1 + false + false + 0 + met4.pin - 71/16 + 71/16@1 + + + #ae7dff + #ae7dff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met4.label - 71/5 + 71/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + met4.net - 71/23 + 71/23@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + met4.boundary - 71/4 + 71/4@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + met4.blockage - 71/10 + 71/10@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + met4.short - 71/15 + 71/15@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met4.fuse - 71/17 + 71/17@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met4.probe - 71/25 + 71/25@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + met4.option1 - 71/32 + 71/32@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + met4.option2 - 71/33 + 71/33@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + met4.option3 - 71/34 + 71/34@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + met4.option4 - 71/35 + 71/35@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + met4.option5 - 71/36 + 71/36@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + met4.option6 - 71/37 + 71/37@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + met4.option7 - 71/38 + 71/38@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + met4.option8 - 71/39 + 71/39@1 + + + #ffff00 + #ffff00 + 0 + 0 + I1 + C0 + true + false + false + 3 + false + false + 0 + via4.drawing - 71/44 + 71/44@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + via4.boundary - 71/60 + 71/60@1 + + + #ffff00 + #ffff00 + 0 + 0 + C6 + C0 + false + false + false + 1 + false + false + 0 + via4.pin - 71/48 + 71/48@1 + + + #ffff00 + #ffff00 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + via4.net - 71/41 + 71/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.drawing - 72/20 + 72/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met5.res - 72/13 + 72/13@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + false + false + false + 1 + false + false + 0 + met5.cut - 72/14 + 72/14@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C34 + C0 + true + false + false + 1 + false + false + 0 + met5.pin - 72/16 + 72/16@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met5.label - 72/5 + 72/5@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + true + false + false + 1 + false + false + 0 + met5.net - 72/23 + 72/23@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + met5.boundary - 72/4 + 72/4@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C53 + C0 + true + false + false + 1 + false + false + 0 + met5.blockage - 72/10 + 72/10@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C36 + C0 + true + false + false + 1 + false + false + 0 + met5.short - 72/15 + 72/15@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + false + false + 1 + false + false + 0 + met5.fuse - 72/17 + 72/17@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + met5.probe - 72/25 + 72/25@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + met5.option1 - 72/32 + 72/32@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + met5.option2 - 72/33 + 72/33@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + met5.option3 - 72/34 + 72/34@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + met5.option4 - 72/35 + 72/35@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + met5.option5 - 72/36 + 72/36@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + met5.option6 - 72/37 + 72/37@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + met5.option7 - 72/38 + 72/38@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + met5.option8 - 72/39 + 72/39@1 + + + #00cc66 + #00cc66 + 0 + 0 + C50 + C0 + true + false + false + 1 + false + false + 0 + nsm.drawing - 61/20 + 61/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + pad.drawing - 76/20 + 76/20@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + pad.label - 76/5 + 76/5@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C34 + C0 + true + false + false + 1 + false + false + 0 + pad.pin - 76/16 + 76/16@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + pnp.drawing - 82/44 + 82/44@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + pnp.label - 82/59 + 82/59@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + npn.drawing - 82/20 + 82/20@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + npn.label - 82/5 + 82/5@1 + + + #ffffff + #96c8ff + 0 + 0 + C38 + C0 + true + false + false + 1 + false + false + 0 + rpm.drawing - 86/20 + 86/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C4 + C0 + true + false + false + 1 + false + false + 0 + hvi.drawing - 75/20 + 75/20@1 + + + #ffb232 + #ffb232 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + capacitor.drawing - 82/64 + 82/64@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + ncm.drawing - 92/44 + 92/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + cncm.drawing - 96/44 + 96/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + cncm.mask - 17/0 + 17/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C20 + C1 + true + false + false + 1 + false + false + 0 + pmm.drawing - 85/44 + 85/44@1 + + + #bf4026 + #bf4026 + 0 + 0 + C40 + C0 + true + false + false + 1 + false + false + 0 + pmm2.drawing - 77/20 + 77/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C47 + C0 + true + false + false + 1 + false + false + 0 + rdl.drawing - 74/20 + 74/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C34 + C0 + true + false + false + 1 + false + false + 0 + rdl.pin - 74/16 + 74/16@1 + + + #ff6464 + #ff6464 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + rdl.label - 74/5 + 74/5@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + rdl.res - 74/13 + 74/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + rdl.cut - 74/14 + 74/14@1 + + + #e61f0d + #e61f0d + 0 + 0 + C36 + C0 + false + false + false + 1 + false + false + 0 + rdl.short - 74/15 + 74/15@1 + + + #e61f0d + #e61f0d + 0 + 0 + C25 + C0 + false + false + false + 1 + false + false + 0 + rdl.option1 - 89/32 + 89/32@1 + + + #e61f0d + #e61f0d + 0 + 0 + C26 + C0 + false + false + false + 1 + false + false + 0 + rdl.option2 - 89/33 + 89/33@1 + + + #e61f0d + #e61f0d + 0 + 0 + C27 + C0 + false + false + false + 1 + false + false + 0 + rdl.option3 - 89/34 + 89/34@1 + + + #e61f0d + #e61f0d + 0 + 0 + C28 + C0 + false + false + false + 1 + false + false + 0 + rdl.option4 - 89/35 + 89/35@1 + + + #e61f0d + #e61f0d + 0 + 0 + C29 + C0 + false + false + false + 1 + false + false + 0 + rdl.option5 - 89/36 + 89/36@1 + + + #e61f0d + #e61f0d + 0 + 0 + C30 + C0 + false + false + false + 1 + false + false + 0 + rdl.option6 - 89/37 + 89/37@1 + + + #e61f0d + #e61f0d + 0 + 0 + C31 + C0 + false + false + false + 1 + false + false + 0 + rdl.option7 - 89/38 + 89/38@1 + + + #e61f0d + #e61f0d + 0 + 0 + C32 + C0 + false + false + false + 1 + false + false + 0 + rdl.option8 - 89/39 + 89/39@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + ubm.drawing - 127/21 + 127/21@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + bump.drawing - 127/22 + 127/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + inductor.drawing - 82/24 + 82/24@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + inductor.label - 82/25 + 82/25@1 + + + #333399 + #ffffff + 0 + 0 + C25 + C0 + true + false + false + 1 + false + false + 0 + inductor.term1 - 82/26 + 82/26@1 + + + #333399 + #ffffff + 0 + 0 + C26 + C0 + true + false + false + 1 + false + false + 0 + inductor.term2 - 82/27 + 82/27@1 + + + #333399 + #ffffff + 0 + 0 + C27 + C0 + true + false + false + 1 + false + false + 0 + inductor.term3 - 82/28 + 82/28@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + cfom.drawing - 22/20 + 22/20@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cfom.mask - 23/0 + 23/0@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cfom.fill - 23/28 + 23/28@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cfom.maskAdd - 22/21 + 22/21@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cfom.maskDrop - 22/22 + 22/22@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cfom.waffleDrop - 22/24 + 22/24@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + fom.dummy - 22/23 + 22/23@1 + + + #268c6b + #268c6b + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cnwm.drawing - 109/44 + 109/44@1 + + + #268c6b + #268c6b + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cnwm.mask - 21/0 + 21/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cnwm.maskAdd - 109/43 + 109/43@1 + + + #268c6b + #268c6b + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cnwm.maskDrop - 109/42 + 109/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + cdnm.drawing - 110/20 + 110/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cdnm.mask - 48/0 + 48/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cdnm.maskAdd - 110/21 + 110/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + cdnm.maskDrop - 110/22 + 110/22@1 + + + #96c8ff + #ffffcc + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + clvtnm.drawing - 25/44 + 25/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + clvtnm.mask - 25/0 + 25/0@1 + + + #96c8ff + #ffffff + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + clvtnm.maskAdd - 25/43 + 25/43@1 + + + #96c8ff + #0000ff + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + clvtnm.maskDrop - 25/42 + 25/42@1 + + + #ff8000 + #ffffcc + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + chvtpm.drawing - 88/44 + 88/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + chvtpm.mask - 97/0 + 97/0@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + chvtpm.maskAdd - 97/43 + 97/43@1 + + + #ff8000 + #0000ff + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + chvtpm.maskDrop - 97/42 + 97/42@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + chvtrm.drawing - 98/44 + 98/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + chvtrm.mask - 98/0 + 98/0@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + chvtrm.maskAdd - 98/43 + 98/43@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + chvtrm.maskDrop - 98/42 + 98/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + ctunm.drawing - 96/20 + 96/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + ctunm.mask - 20/0 + 20/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + ctunm.maskAdd - 96/21 + 96/21@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + ctunm.maskDrop - 96/22 + 96/22@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + conom.drawing - 87/44 + 87/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + conom.mask - 88/0 + 88/0@1 + + + #ff0000 + #ff0000 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + conom.maskAdd - 87/43 + 87/43@1 + + + #ff0000 + #ff0000 + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + conom.maskDrop - 87/42 + 87/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + cnsdm.drawing - 29/20 + 29/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cnsdm.mask - 30/0 + 30/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cnsdm.maskAdd - 29/21 + 29/21@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cnsdm.maskDrop - 29/22 + 29/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + cpsdm.drawing - 31/20 + 31/20@1 + + + #ffff00 + #ffff00 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cpsdm.mask - 32/0 + 32/0@1 + + + #ffff00 + #ffff00 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cpsdm.maskAdd - 31/21 + 31/21@1 + + + #ffff00 + #ffff00 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cpsdm.maskDrop - 31/22 + 31/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + cntm.drawing - 26/20 + 26/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cntm.mask - 27/0 + 27/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cntm.maskAdd - 26/21 + 26/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cntm.maskDrop - 26/22 + 26/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + hvntm.drawing - 125/20 + 125/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + chvntm.drawing - 38/20 + 38/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + chvntm.mask - 39/0 + 39/0@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + chvntm.maskAdd - 38/21 + 38/21@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + chvntm.maskDrop - 38/22 + 38/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cldntm.drawing - 11/20 + 11/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cldntm.mask - 11/0 + 11/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + clvom.drawing - 45/20 + 45/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + clvom.mask - 46/0 + 46/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + clvom.maskAdd - 45/21 + 45/21@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + clvom.maskDrop - 45/22 + 45/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cp1m.drawing - 33/44 + 33/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cp1m.mask - 28/0 + 28/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cp1m.fill - 28/28 + 28/28@1 + + + #ff8000 + #ff8000 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cp1m.maskAdd - 33/43 + 33/43@1 + + + #9900e6 + #9900e6 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cp1m.waffleDrop - 33/24 + 33/24@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cp1m.maskDrop - 33/42 + 33/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cli1m.drawing - 115/44 + 115/44@1 + + + #00ffff + #00ffff + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cli1m.mask - 56/0 + 56/0@1 + + + #00ffff + #00ffff + 0 + 0 + C12 + C0 + true + false + false + 1 + false + false + 0 + cli1m.fill - 56/28 + 56/28@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cli1m.maskAdd - 115/43 + 115/43@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + cli1m.maskDrop - 115/42 + 115/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + clicm1.drawing - 106/44 + 106/44@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + clicm1.mask - 43/0 + 43/0@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + clicm1.maskAdd - 106/43 + 106/43@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + clicm1.maskDrop - 106/42 + 106/42@1 + + + #0000ff + #0000ff + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cmm1.drawing - 62/20 + 62/20@1 + + + #0000ff + #0000ff + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cmm1.mask - 36/0 + 36/0@1 + + + #0000ff + #0000ff + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm1.fill - 36/28 + 36/28@1 + + + #0000ff + #0000ff + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cmm1.maskAdd - 62/21 + 62/21@1 + + + #0000ff + #0000ff + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cmm1.maskDrop - 62/22 + 62/22@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cmm1.waffleDrop - 62/24 + 62/24@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cviam.drawing - 105/20 + 105/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cviam.mask - 40/0 + 40/0@1 + + + #ffffcc + #ffffcc + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cviam.maskAdd - 105/21 + 105/21@1 + + + #ffffcc + #ffffcc + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cviam.maskDrop - 105/22 + 105/22@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cmm2.drawing - 105/44 + 105/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cmm2.mask - 41/0 + 41/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm2.fill - 41/28 + 41/28@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cmm2.maskAdd - 105/43 + 105/43@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cmm2.maskDrop - 105/42 + 105/42@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cmm2.waffleDrop - 105/52 + 105/52@1 + + + #333399 + #333399 + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cviam2.drawing - 108/20 + 108/20@1 + + + #333399 + #333399 + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cviam2.mask - 44/0 + 44/0@1 + + + #333399 + #333399 + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cviam2.maskAdd - 108/21 + 108/21@1 + + + #333399 + #333399 + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cviam2.maskDrop - 108/22 + 108/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cmm3.drawing - 107/20 + 107/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cmm3.mask - 34/0 + 34/0@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm3.fill - 34/28 + 34/28@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cmm3.maskAdd - 107/21 + 107/21@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cmm3.maskDrop - 107/22 + 107/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cmm3.waffleDrop - 107/24 + 107/24@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + cnpc.drawing - 44/20 + 44/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C39 + C0 + true + false + false + 1 + false + false + 0 + cnpc.mask - 49/0 + 49/0@1 + + + #e61f0d + #e61f0d + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cnpc.maskAdd - 44/43 + 44/43@1 + + + #e61f0d + #e61f0d + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cnpc.maskDrop - 44/42 + 44/42@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cviam3.drawing - 112/20 + 112/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cviam3.mask - 50/0 + 50/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cviam3.maskAdd - 112/21 + 112/21@1 + + + #268c6b + #268c6b + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cviam3.maskDrop - 112/22 + 112/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + cnsm.mask - 22/0 + 22/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cpdm.drawing - 104/44 + 104/44@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cpdm.mask - 37/0 + 37/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cpdm.maskAdd - 104/43 + 104/43@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C11 + C0 + false + false + false + 1 + false + false + 0 + cpdm.maskDrop - 104/42 + 104/42@1 + + + #8c8ca6 + #0000ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + cpmm.drawing - 91/44 + 91/44@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cpbo.mask - 99/0 + 99/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cmm4.mask - 51/0 + 51/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm4.fill - 51/28 + 51/28@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cmm4.maskAdd - 112/43 + 112/43@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm4.maskDrop - 112/42 + 112/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cmm4.waffleDrop - 112/4 + 112/4@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cviam4.drawing - 117/20 + 117/20@1 + + + #00ffff + #00ffff + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cviam4.mask - 58/0 + 58/0@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cviam4.maskAdd - 117/21 + 117/21@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cviam4.maskDrop - 117/22 + 117/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + false + false + 1 + false + false + 0 + cmm5.mask - 59/0 + 59/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cmm5.fill - 59/28 + 59/28@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + cmm5.waffleDrop - 117/4 + 117/4@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + target.drawing - 76/44 + 76/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + false + false + 1 + false + false + 0 + cctm1.drawing - 101/44 + 101/44@1 + + + #ffffff + #ffffff + 0 + 0 + C17 + C0 + true + false + false + 1 + false + false + 0 + cctm1.mask - 35/0 + 35/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + false + false + false + 1 + false + false + 0 + cctm1.maskAdd - 101/43 + 101/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + false + false + false + 1 + false + false + 0 + cctm1.maskDrop - 101/42 + 101/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + crpm.drawing - 53/44 + 53/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + crpm.mask - 96/0 + 96/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + crpm.maskAdd - 53/43 + 53/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + false + false + 1 + false + false + 0 + crpm.maskDrop - 53/42 + 53/42@1 + + + #e61f0d + #e61f0d + 0 + 0 + C47 + C0 + false + false + false + 1 + false + false + 0 + ccu1m.mask - 93/0 + 93/0@1 + + + #bf4026 + #bf4026 + 0 + 0 + C40 + C0 + false + false + false + 1 + false + false + 0 + cpmm2.mask - 94/0 + 94/0@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + false + false + false + 1 + false + false + 0 + cubm.mask - 100/0 + 100/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C20 + C0 + false + false + false + 1 + false + false + 0 + cbump.mask - 101/0 + 101/0@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + overlap.drawing - 90/20 + 90/20@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + overlap.boundary - 90/4 + 90/4@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.lowTapDensity - 81/14 + 81/14@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.notCritSide - 81/15 + 81/15@1 + + + #adff2f + #adff2f + 0 + 0 + C2 + C0 + true + false + false + 3 + false + false + 0 + areaid.injection - 81/17 + 81/17@1 + + + #bebed8 + #bebed8 + 0 + 0 + C2 + C0 + true + false + false + 3 + false + false + 0 + areaid.rfdiode - 81/125 + 81/125@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.seal - 81/1 + 81/1@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.core - 81/2 + 81/2@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.frame - 81/3 + 81/3@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.esd - 81/19 + 81/19@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.dieCut - 81/11 + 81/11@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.moduleCut - 81/10 + 81/10@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.frameRect - 81/12 + 81/12@1 + + + #333399 + #ccccd9 + 0 + 0 + C22 + C0 + true + false + false + 1 + false + false + 0 + areaid.substrateCut - 81/53 + 81/53@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.diode - 81/23 + 81/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.standardc - 81/4 + 81/4@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C5 + true + false + false + 1 + false + false + 0 + areaid.deadZon - 81/50 + 81/50@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C5 + true + false + false + 1 + false + false + 0 + areaid.critCorner - 81/51 + 81/51@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C5 + true + false + false + 1 + false + false + 0 + areaid.critSid - 81/52 + 81/52@1 + + + #8c8ca6 + #c8ffc8 + 0 + 0 + C20 + C0 + true + false + false + 3 + false + false + 0 + areaid.opcDrop - 81/54 + 81/54@1 + + + #00bfff + #00ffe7 + 0 + 0 + C1 + C0 + true + false + false + 3 + false + false + 0 + areaid.waffleWindow - 81/13 + 81/13@1 + + + #daa520 + #daa520 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.extendedDrain - 81/57 + 81/57@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.lvNative - 81/60 + 81/60@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.photo - 81/81 + 81/81@1 + + + #ff00ff + #00ff00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.etest - 81/101 + 81/101@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.hvnwell - 81/63 + 81/63@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.rdlprobepad - 81/27 + 81/27@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.sigPadDiff - 81/6 + 81/6@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.sigPadWell - 81/7 + 81/7@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.sigPadMetNtr - 81/8 + 81/8@1 + + + #ff6464 + #ff6464 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.analog - 81/79 + 81/79@1 + + + #ffff00 + #ffffff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + prune.drawing - 84/44 + 84/44@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + padCenter.drawing - 81/20 + 81/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa1 - 68/88 + 68/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa1 - 69/88 + 69/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa1 - 70/88 + 70/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa1 - 71/88 + 71/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa1 - 72/88 + 72/88@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa2 - 68/89 + 68/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa2 - 69/89 + 69/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa2 - 70/89 + 70/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa2 - 71/89 + 71/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa2 - 72/89 + 72/89@1 + + + #ffffcc + #ffffcc + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa3 - 68/90 + 68/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa3 - 69/90 + 69/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa3 - 70/90 + 70/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa3 - 71/90 + 71/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa3 - 72/90 + 72/90@1 + + + #802626 + #802626 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa4 - 68/91 + 68/91@1 + + + #802626 + #802626 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa4 - 69/91 + 69/91@1 + + + #802626 + #802626 + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa4 - 70/91 + 70/91@1 + + + #802626 + #802626 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa4 - 71/91 + 71/91@1 + + + #802626 + #802626 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa4 - 72/91 + 72/91@1 + + + #333399 + #333399 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa5 - 68/92 + 68/92@1 + + + #333399 + #333399 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa5 - 69/92 + 69/92@1 + + + #333399 + #333399 + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa5 - 70/92 + 70/92@1 + + + #333399 + #333399 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa5 - 71/92 + 71/92@1 + + + #333399 + #333399 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa5 - 72/92 + 72/92@1 + + + #fa8072 + #fa8072 + 0 + 0 + C7 + C0 + true + false + false + 1 + false + false + 0 + met1.psa6 - 68/93 + 68/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + met2.psa6 - 69/93 + 69/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C49 + C0 + true + false + false + 1 + false + false + 0 + met3.psa6 - 70/93 + 70/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + met4.psa6 - 71/93 + 71/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C42 + C0 + true + false + false + 1 + false + false + 0 + met5.psa6 - 72/93 + 72/93@1 + + + #ff0000 + #ff0000 + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa1 - 74/88 + 74/88@1 + + + #0000ff + #0000ff + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa2 - 74/89 + 74/89@1 + + + #00cc66 + #00cc66 + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa3 - 74/90 + 74/90@1 + + + #ffffff + #ffffff + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa4 - 74/91 + 74/91@1 + + + #ffff00 + #ffff00 + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa5 - 74/92 + 74/92@1 + + + #bf4026 + #bf4026 + 0 + 0 + C10 + C0 + true + false + false + 1 + false + false + 0 + rdl.psa6 - 74/93 + 74/93@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C20 + C1 + false + false + false + 1 + false + false + 0 + blanking.drawing - 124/40 + 124/40@1 + + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + + 1 + blank + + + + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + + 2 + solid + + + + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + + 3 + dots + + + + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + + 4 + hLine + + + + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + + 5 + vLine + + + + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + + 6 + cross + + + + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + + 7 + grid + + + + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + + 8 + slash + + + + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + + 9 + backSlash + + + + **......**...... + ..*.......*..... + ...**......**... + .....*.......*.. + ......**......** + *.......*....... + .**......**..... + ...*.......*.... + ....**......**.. + ......*.......*. + *......**......* + .*.......*...... + ..**......**.... + ....*.......*... + .....**......**. + .......*.......* + + 10 + hZigZag + + + + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + + 11 + vZigZag + + + + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + + 12 + hCurb + + + + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + + 13 + vCurb + + + + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + + 14 + brick + + + + ................ + ..*.......*..... + ..*.......*..... + ..*.......*..... + *****...*****... + ..*.......*..... + ..*.......*..... + ..*.......*..... + ................ + .....*.......*.. + .....*.......*.. + .....*.......*.. + ...*****...***** + .....*.......*.. + .....*.......*.. + .....*.......*.. + + 15 + dagger + + + + ................ + ..*............. + ..*............. + ..*............. + *****........... + ..*............. + ..*............. + ..*............. + ................ + .............*.. + .............*.. + .............*.. + ...........***** + .............*.. + .............*.. + .............*.. + + 16 + sparseDagger + + + + ................ + ..........*..... + ..........*..... + ..........*..... + ........*****... + ..........*..... + ..........*..... + ..........*..... + ................ + .....*.......... + .....*.......... + .....*.......... + ...*****........ + .....*.......... + .....*.......... + .....*.......... + + 17 + sparseDagger2 + + + + ................ + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *********....... + ................ + ................ + ................ + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .......********* + ................ + ................ + + 18 + triangle + + + + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + + 19 + x + + + + ................ + .*.....*.....*.. + ..*...**....*... + ...*.*.*...*.... + ....*..*..*..... + .....*.*.*...... + ......***....... + .......*........ + ......***....... + .....*.*.*...... + ....*..*..*..... + ...*...*...*.... + ..*....*....*... + .*..*******..*.. + ................ + ................ + + 20 + Xone + + + + ................ + .*....**.....*.. + ..*..*..*...*... + ...**....*.*.... + ....*....**..... + .....*...*...... + ......*.*....... + .......*........ + ......*.*....... + .....*...*...... + ....*.....*..... + ...**......*.... + ..*.*.......*... + .*..******...*.. + ................ + ................ + + 21 + Xtwo + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + + 22 + spareDots + + + + ................ + ................ + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + + 23 + spareDots21 + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ................ + ................ + + 24 + spareDots22 + + + + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + + 25 + checker + + + + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + + 26 + checker2 + + + + ................ + ................ + ................ + ................ + .......*........ + ......**........ + .......*........ + .......*........ + .......*........ + .......*........ + ......***....... + ................ + ................ + ................ + ................ + ................ + + 27 + one + + + + ................ + ................ + ................ + ................ + ................ + .......**....... + ......*..*...... + .........*...... + ........*....... + .......*........ + ......*......... + ......****...... + ................ + ................ + ................ + ................ + + 28 + two + + + + ................ + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .........*...... + .......**....... + .........*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + + 29 + three + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .............*.. + ............**.. + ...........*.*.. + ..........*..*.. + .........******. + .............*.. + .............*.. + ................ + + 30 + four + + + + ................ + ................ + ................ + ......***....... + .....*.......... + .....*.......... + .....***........ + ........*....... + ........*....... + .....***........ + ................ + ................ + ................ + ................ + ................ + ................ + + 31 + five + + + + ................ + ................ + ................ + ................ + .......***...... + ......*......... + ......*......... + ......****...... + ......*...*..... + ......*...*..... + .......***...... + ................ + ................ + ................ + ................ + ................ + + 32 + six + + + + ................ + ................ + ................ + .....******..... + ..........*..... + .........*...... + .........*...... + ........*....... + ........*....... + .......*........ + ......*......... + .....*.......... + ................ + ................ + ................ + ................ + + 33 + seven + + + + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .....*...*...... + ......***....... + .....*...*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + ................ + + 34 + eight + + + + *..............* + .*............*. + ..*..........*.. + ...*........*... + ....*......*.... + .....*....*..... + ......*..*...... + .......**....... + .......**....... + ......*..*...... + .....*....*..... + ....*......*.... + ...*........*... + ..*..........*.. + .*............*. + *..............* + + 35 + box45 + + + + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + + 36 + gray50 + + + + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + + 37 + gray25 + + + + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + + 38 + snow + + + + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + + 39 + backSlash2 + + + + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + + 40 + lattice + + + + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + + 41 + smallChecker + + + + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + + 42 + slantBox + + + + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + + 43 + slash2 + + + + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + + 44 + bigSlash + + + + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + + 45 + boxes + + + + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + + 46 + circles + + + + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + + 47 + zigzag + + + + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + + 48 + lightMesh + + + + ...............* + ..............*. + .............*.. + ............*... + ...........*.... + ..........*..... + .........*...... + ........*....... + .......*........ + ......*......... + .....*.......... + ....*........... + ...*............ + ..*............. + .*.............. + *............... + + 49 + hugeSlash + + + + *............... + .*.............. + ..*............. + ...*............ + ....*........... + .....*.......... + ......*......... + .......*........ + ........*....... + .........*...... + ..........*..... + ...........*.... + ............*... + .............*.. + ..............*. + ...............* + + 50 + hugeSlash2 + + + + *.........*..... + .....*.......... + ..*.........*... + .......*........ + ....*.........*. + .*.......*...... + ......*......... + ...*.......*.... + ........*....... + .....*.......*.. + *.........*..... + .......*........ + ..*.........*... + .........*...... + ....*.........*. + ...........*.... + + 51 + curve + + + + ....*....*....*. + ..*............. + *.......*....... + .............*.. + .......*........ + ............*... + .....*.......... + ...*.......*.... + *............... + ................ + .........*...... + ................ + ......*........* + ...*............ + *............*.. + ..........*..... + + 52 + curve2 + + + + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 53 + diams + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 54 + sparsediam + + + + .......*.......* + ......*......... + .....*.......... + ................ + ................ + ................ + .*.............. + *............... + .......*.......* + ..............*. + .............*.. + ................ + ................ + ................ + .........*...... + ........*....... + + 55 + rain + + + *** + 1 + solid + + + ****.. + 2 + dashed + + + *.. + 3 + dots + + + ***..*.. + 4 + dashDot + + + **.. + 5 + shortDash + + + ****..**.. + 6 + doubleDash + + + *... + 7 + hidden + + + *** + 8 + thickLine + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-full.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-full.lydrc new file mode 100755 index 00000000..093edb8c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-full.lydrc @@ -0,0 +1,924 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = true # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = true # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +if $thr + threads($thr) +else + threads(4) +end + +# if more inof is needed, set true +verbose(true) +#verbose(false) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/20" +mcon_wildcard = "67/44" + +m1_wildcard = "68/20" +via_wildcard = "68/44" + +m2_wildcard = "69/20" +via2_wildcard = "69/44" + +m3_wildcard = "70/20" +via3_wildcard = "70/44" + +m4_wildcard = "71/20" +via4_wildcard = "71/44" + +m5_wildcard = "72/20" + + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# li +not_in_cell5 = source.select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.polygons(li_wildcard) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +in_cell5_li = li - not_in_cell5_li +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# rule li.2 not coded + +not_in_cell5_li.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.space(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5) +non_huge_m1 = m1 - huge_m1 + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5) +non_huge_m2 = m2 - huge_m2 + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5) +non_huge_m3 = m3 - huge_m3 + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +(huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") + +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# m4 +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5) +non_huge_m4 = m4 - huge_m4 + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-lvs-wip.lylvs b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-lvs-wip.lylvs new file mode 100755 index 00000000..42dff63a --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-lvs-wip.lylvs @@ -0,0 +1,87 @@ + + + + + lvs + + + + false + false + + true + lvs_scripts + tools_menu.lvs.end + dsl + lvs-dsl-xml + # +# Extraction for SKY130 +# +############################ + +# layers definitions +######################## +LI = polygons(67, 20) +LITXT = input(67, 5) +LIPIN = polygons(67, 16) +LIRES = polygons(67, 13) +MCON = polygons(67, 44) +MET1 = polygons(68, 20) +MET1TXT = input(68, 5) +MET1PIN = polygons(68, 16) +MET1RES = polygons(68, 13) +VIA1 = polygons(68, 44) +MET2 = polygons(69, 20) +MET2TXT = input(69, 5) +MET2PIN = polygons(69, 16) +MET2RES = polygons(69, 13) +VIA2 = polygons(69, 44) +MET3 = polygons(70, 20) +MET3TXT = input(70, 5) +MET3PIN = polygons(70, 16) +MET3RES = polygons(70, 13) +VIA3 = polygons(70, 44) +MET4 = polygons(71, 20) +MET4TXT = input(71, 5) +MET4PIN = polygons(71, 16) +MET4RES = polygons(71, 13) +VIA4 = polygons(71, 44) +MET5 = polygons(72, 20) +MET5TXT = input(72, 5) +MET5PIN = polygons(72, 16) +MET5RES = polygons(72, 13) + +# Define connectivity for netlist extraction + +# Inter-layer +connect(LI, MCON) +connect(MCON, MET1) +connect(MET1,VIA1) +connect(VIA1, MET2) +connect(MET2, VIA2) +connect(VIA2, MET3) +connect(MET3, VIA3) +connect(VIA3, MET4) +connect(MET4, VIA4) +connect(VIA4, MET5) +# Attaching labels +connect(LI, LITXT) +connect(MET1, MET1TXT) +connect(MET2, MET2TXT) +connect(MET3, MET3TXT) +connect(MET4, MET4TXT) +connect(MET5, MET5TXT) + +# Enter your Ruby code here +netlist = l2n_data.netlist +netlist.combine_devices +netlist.make_top_level_pins +netlist.purge +netlist.purge_nets + +writer = RBA::NetlistSpiceWriter::new + +path = "ringo_simplified.cir" + +netlist.write(path, writer, "Netlist comment") + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-mr.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-mr.lydrc new file mode 100755 index 00000000..63038409 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A-mr.lydrc @@ -0,0 +1,923 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = true # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = true # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +if $thr + threads($thr) +else + threads(4) +end + +# if more inof is needed, set true + verbose(true) +#verbose(false) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/0-4,6-43,45-*" +mcon_wildcard = "67/44" + +m1_wildcard = "68/0-4,6-43,45-*" +via_wildcard = "68/44" + +m2_wildcard = "69/0-4,6-43,45-*" +via2_wildcard = "69/44" + +m3_wildcard = "70/0-4,6-43,45-*" +via3_wildcard = "70/44" + +m4_wildcard = "71/0-4,6-43,45-*" +via4_wildcard = "71/44" + +m5_wildcard = "72/0-4,6-43,45-*" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +# dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +# dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +# dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# # dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +# nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +# dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +# dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +# pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +# dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +# pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +# pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +# pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +# hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +# hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +# hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +# lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +# lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +# lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +# lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +# lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +# nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +# lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +# lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +# ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +# ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +# ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +# ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +# ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +# ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +# not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +# not_in_cell1_diff = not_in_cell1.input(65, 20) +# not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +# diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +# tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +# tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +# (tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +# tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +# diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +# nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +# diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +# nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +# tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +# tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +# tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +# gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +# tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +# tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +# poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +# poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +# poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +# poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +# gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +# diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +# poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +# poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +# diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +# gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +# not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +# not_in_cell3_poly = not_in_cell3.input(66, 20) +# not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +# poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +# rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +# psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +# npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +# rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +# rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +# rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +# poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +# rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +# varac = poly & tap & (nwell - hvi) - areaid_ce +# tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +# tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +# varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +# varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +# nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +# tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +# nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +# photodiode = dnwell & areaid_po +# photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +# photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +# photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +# areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +# photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +# photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +# areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +# photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +# npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +# npsdm = nsdm + psdm +# nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +# psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +# nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +# psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +# npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +# npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +# tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +# nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +# diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +# tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +# tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +# nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +# psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +# licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +# licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +# licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +# licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +# licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +# diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +# tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +# licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +# opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +# licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +# poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +# licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +# licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +# opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +# licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# # rule licon.9 not coded +# licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +# not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +# not_in_cell4_licon = not_in_cell4.input(66, 44) +# not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +# licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +# in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +# in_cell4_licon = in_cell4.input(66, 44) +# in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# # rules 11.b , 11.d not coded +# diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +# licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +# npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +# tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +# npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# vpp +# vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# # rules 1.b, 1.c not coded +# vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +# vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +# vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +# vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +# vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +# vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +# vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +# nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +# vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# # rule vpp.10 not coded +# # rule vpp.11 not coded because moscap is not defined properly by any gds layer +# # rules vpp.12a, 12b, 12c not coded because specific to one cell +# if backend_flow = CU +# m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +# end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +# capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +# capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +# capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +# capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +# capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +# capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +# capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +# capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +# capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +# capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# li +not_in_cell5 = source.select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.polygons(li_wildcard) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +# in_cell5_li = li - not_in_cell5_li +# in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# rule li.2 not coded + +not_in_cell5_li.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +# in_cell5_li.space(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +# if backend_flow = CU +# li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") +# li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +# end +# +# m1 +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5) +non_huge_m1 = m1 - huge_m1 + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +#if bakend_flow = CU +# m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") +# # rule m1.12 not coded because inconsistent with m1.11 +# # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +#end + +# via +#rule via.3 not coded +# via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + # via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + # m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + # via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +# if backend_flow = CU + # via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + # via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + # via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + # opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + # via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +# end + +# m2 +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5) +non_huge_m2 = m2 - huge_m2 + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +# via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +# if bakend_flow = CU + # m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +# end + +# via2 +#rule via233 not coded +# via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + # via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +# if backend_flow = CU + # via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + # via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + # m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +# end + +# m3 +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5) +non_huge_m3 = m3 - huge_m3 + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +# (huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") + +# rule m3.3c not coded +# m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +# via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + # via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +# if bakend_flow = CU + # m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + # m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +# end + +# via3 +#rule via3.3 not coded +# via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +# if backend_flow = CU + # via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + # via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + # m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +# end + +# m4 +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5) +non_huge_m4 = m4 - huge_m4 + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +# m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +# via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + # m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + # m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + # m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +# via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# nsm +# nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +# nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +# nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +# nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +# nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +# nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +# nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +# nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +# nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +# nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +# nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +# nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +# if backend_flow = AL +# nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") +# nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") +# nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") +# nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") +# nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") +# nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") +# nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") +# nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") +# nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") +# nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +# end + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +#mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +#mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +#mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +# hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +# hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +# hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +# areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +# diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +# diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +# diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +# diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +# tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +# hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +# hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +# hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +# hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +# hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +# hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +# hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +# hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +# hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +# diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +# diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +# hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +# hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +# hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +# hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +# hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +# hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +# poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +# diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +# diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +# nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +# nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +# nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +# nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +# nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +# nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +# poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +# diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +# diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +# pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +# nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +# pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +# pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +# pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +# nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +# pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +# psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +# areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +# difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +# vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +# vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +# vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# # rules vhvi.4, vhvi.6 not coded +# vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +# vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +# vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +# nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +# diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +# nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +# diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# # rule hv.diff.3b not coded +# poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +# poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +# nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +# poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +# uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +# uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +# uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +# pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +# uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +# areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +# #dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +# natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +# pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +# pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +# pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +# pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +# tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +# tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +# tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +# tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# # rules pwres.7a, pwres.7b not coded +# pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +# pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +# areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +# areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.drc.xml b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.drc.xml new file mode 100755 index 00000000..f4e159dd --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.drc.xml @@ -0,0 +1,901 @@ +# +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = false # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = true # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +# use 4 cpu cores +threads(4) +# if more inof is needed, set true +verbose(true) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/0-4,6-43,45-*" +mcon_wildcard = "67/44" + +m1_wildcard = "68/0-4,6-43,45-*" +via_wildcard = "68/44" + +m2_wildcard = "69/0-4,6-43,45-*" +via2_wildcard = "69/44" + +m3_wildcard = "70/0-4,6-43,45-*" +via3_wildcard = "70/44" + +m4_wildcard = "71/0-4,6-43,45-*" +via4_wildcard = "71/44" + +m5_wildcard = "72/0-4,6-43,45-*" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# li +not_in_cell5 = source.select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.polygons(li_wildcard) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +in_cell5_li = li - not_in_cell5_li +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# rule li.2 not coded + +not_in_cell5_li.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.space(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5) +non_huge_m1 = m1 - huge_m1 + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5) +non_huge_m2 = m2 - huge_m2 + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5) +non_huge_m3 = m3 - huge_m3 + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +(huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") + +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# m4 +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5) +non_huge_m4 = m4 - huge_m4 + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc new file mode 100755 index 00000000..8b23e116 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc @@ -0,0 +1,516 @@ + + + false + false + 10 + true + + auto + true + 1 + by-name + true + true + auto + 50 + false + false + + any-top + 1000000000 + 1 + fit-marker + BrowseInstancesForm="AdnQywACAAAAAANkAAACAAAABY4AAALgAAADZwAAAh0AAAWLAAAC3QAAAAAAAAAACL4=";splitter2="AAAA/wAAAAEAAAACAAABCAAAAQgBAAAABgEAAAABAQ==";lv_cell_instance="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp8AAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAABPAAAAAEAAAAAAAABYwAAAAEAAAAAAAAD6AD/////";lv_cell="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAADAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAADAAABEgAAAAEAAAAAAAAAZAAAAAEAAAAAAAABKgAAAAEAAAAAAAAD6AD/////"; + 32 + false + 255,157,157[0] 255,128,168[1] 192,128,255[2] 149,128,255[3] 128,134,255[4] 128,168,255[5] 255,0,0[6] 255,0,128[7] 255,0,255[8] 128,0,255[9] 0,0,255[10] 0,128,255[11] 128,0,0[12] 128,0,87[13] 128,0,128[14] 80,0,128[15] 0,0,128[16] 0,64,128[17] 128,255,251[18] 128,255,141[19] 175,255,128[20] 243,255,128[21] 255,194,128[22] 255,160,128[23] 0,255,255[24] 1,255,107[25] 145,255,0[26] 221,255,0[27] 255,174,0[28] 255,128,0[29] 0,128,128[30] 0,128,80[31] 0,128,0[32] 80,128,0[33] 128,128,0[34] 128,80,0[35] 255,255,255 192,192,192 128,128,128 96,96,96 64,64,64 0,0,0 + add + auto + 50 + false + + 4 + + false + file='/home/mk/Downloads/RAM_4Kx32.def';import-mode=0; + true + 0 + 0.01,0.005 + + 0.1 + true + true + true + false + true + true + 2 + 5 + false + 1 + false + 0 + 10 + any + 0.005 + -1 + 0 + false + caravel_00020002_fill_pattern + 0 + 0 + 1 + + false + + true + 0 + 0 + 1 + 1 + 1000 + false + any + flush + 0.0 + 0.0 + 0.1 + true + false + left + 0 + ABC + bottom + true + true + false + true + r0 *1 0,0 + auto + auto + auto + 0.005 + auto + true + invisible + dots + tenths-dotted-lines + true + auto + 1 + 5 + true + true + 1 + true + 1 + sky130A + auto + 0 + true + true + 0 + '@@navigator_menu.navigator_main_menu.navigator_all_hier_levels':'';'@@navigator_menu.navigator_main_menu.navigator_freeze':'';'@@navigator_menu.navigator_main_menu.navigator_show_images':'';'@bookmarks_context_menu.follow_selection':'';'@bookmarks_context_menu.load_bookmarks':'';'@bookmarks_context_menu.manage_bookmarks':'';'@bookmarks_context_menu.save_bookmarks':'';'@hcp_context_menu.cell_user_properties':'';'@hcp_context_menu.flat_mode':'';'@hcp_context_menu.hide_cell':'';'@hcp_context_menu.open_current':'';'@hcp_context_menu.save_cell_as':'';'@hcp_context_menu.show_all':'';'@hcp_context_menu.show_as_top':'Ctrl+T';'@hcp_context_menu.show_cell':'';'@hcp_context_menu.sorting.by_area':'';'@hcp_context_menu.sorting.by_name':'';'@hcp_context_menu.split_mode':'';'@lcp_context_menu.add_others':'';'@lcp_context_menu.clean_up':'';'@lcp_context_menu.copy':'';'@lcp_context_menu.cut':'';'@lcp_context_menu.del':'';'@lcp_context_menu.group':'';'@lcp_context_menu.hide':'';'@lcp_context_menu.hide_all':'';'@lcp_context_menu.hide_empty_layers':'';'@lcp_context_menu.insert':'';'@lcp_context_menu.invvalid':'';'@lcp_context_menu.paste':'';'@lcp_context_menu.regroup_menu.flatten':'';'@lcp_context_menu.regroup_menu.grp_d':'';'@lcp_context_menu.regroup_menu.grp_i':'';'@lcp_context_menu.regroup_menu.grp_l':'';'@lcp_context_menu.rename':'';'@lcp_context_menu.select_all':'';'@lcp_context_menu.select_source':'';'@lcp_context_menu.show':'';'@lcp_context_menu.show_all':'';'@lcp_context_menu.show_only':'';'@lcp_context_menu.sort_menu.sort_dli':'';'@lcp_context_menu.sort_menu.sort_idl':'';'@lcp_context_menu.sort_menu.sort_ild':'';'@lcp_context_menu.sort_menu.sort_ldi':'';'@lcp_context_menu.sort_menu.sort_name':'';'@lcp_context_menu.tab_menu.new_tab':'';'@lcp_context_menu.tab_menu.remove_tab':'';'@lcp_context_menu.tab_menu.rename_tab':'';'@lcp_context_menu.test_shapes_in_view':'';'@lcp_context_menu.ungroup':'';'@lcp_context_menu.valid':'';'@lcp_tabs_context_menu.new_tab':'';'@lcp_tabs_context_menu.remove_tab':'';'@lcp_tabs_context_menu.rename_tab':'';'@secrets.duplicate_interactive':'';'@secrets.paste_interactive':'';'@secrets.sel_move_interactive':'';'@toolbar.move':'';'@toolbar.next_display_state':'';'@toolbar.prev_display_state':'';'@toolbar.ruler':'';'@toolbar.select':'';'@toolbar.technology_selector':'';bookmark_menu:'';bookmark_menu.bookmark_view:'';bookmark_menu.goto_bookmark_menu:'';bookmark_menu.load_bookmarks:'';bookmark_menu.manage_bookmarks:'';bookmark_menu.save_bookmarks:'';edit_menu:'';edit_menu.add_image:'';edit_menu.cancel:'';edit_menu.clear_all_rulers:'';edit_menu.configure_rulers:'';edit_menu.copy:'';edit_menu.cut:'';edit_menu.delete:'';edit_menu.duplicate:'';edit_menu.image_menu:'';edit_menu.image_menu.bring_to_back:'';edit_menu.image_menu.bring_to_front:'';edit_menu.image_menu.clear_all_images:'';edit_menu.mode_menu:'';edit_menu.mode_menu.move:'';edit_menu.mode_menu.ruler:'';edit_menu.mode_menu.select:'';edit_menu.paste:'';edit_menu.redo:'';edit_menu.search_replace_viewer:'';edit_menu.select_menu:'';edit_menu.select_menu.disable_all:'';edit_menu.select_menu.enable_all:'';edit_menu.select_menu.pi_enable_10:'';edit_menu.select_menu.pi_enable_11:'';edit_menu.select_menu.pi_enable_12:'';edit_menu.select_menu.pi_enable_13:'';edit_menu.select_menu.pi_enable_15:'';edit_menu.select_menu.pi_enable_7:'';edit_menu.select_menu.pi_enable_8:'';edit_menu.select_menu.pi_enable_9:'';edit_menu.select_menu.select_all:'';edit_menu.select_menu.unselect_all:'';edit_menu.selection_menu:'';edit_menu.selection_menu.sel_flip_x:'';edit_menu.selection_menu.sel_flip_y:'';edit_menu.selection_menu.sel_free_rot:'';edit_menu.selection_menu.sel_move:'';edit_menu.selection_menu.sel_move_to:'';edit_menu.selection_menu.sel_rot_ccw:'';edit_menu.selection_menu.sel_rot_cw:'';edit_menu.selection_menu.sel_scale:'';edit_menu.show_properties:'';edit_menu.undo:'';file_menu:'';file_menu.clone:'';file_menu.close:'';file_menu.close_all:'';file_menu.exit:none;file_menu.import_menu:'';file_menu.import_menu.import_def:'';file_menu.import_menu.import_gerber_menu:'';file_menu.import_menu.import_gerber_menu.import_gerber_new:'';file_menu.import_menu.import_gerber_menu.import_gerber_new_free:'';file_menu.import_menu.import_gerber_menu.import_gerber_open:'';file_menu.import_menu.import_gerber_menu.import_gerber_recent:'';file_menu.import_menu.import_lef:'';file_menu.import_menu.import_stream:'';file_menu.layout_props:'';file_menu.layout_stats:'';file_menu.load_layer_props:'';file_menu.open:'';file_menu.open_new_panel:'';file_menu.open_recent_menu:'';file_menu.open_recent_menu.open_recent_1:'';file_menu.open_recent_menu.open_recent_2:'';file_menu.open_same_panel:'';file_menu.print:'';file_menu.pull_in:'';file_menu.reader_options:'';file_menu.reload:'';file_menu.restore_session:'';file_menu.save:'Ctrl+S';file_menu.save_all:'';file_menu.save_as:'';file_menu.save_layer_props:'';file_menu.save_session:'';file_menu.screenshot:'';file_menu.setup:'';file_menu.view_log:'';file_menu.writer_options:'';help_menu:'';help_menu.about:'';help_menu.about_qt:'';help_menu.assistant:'';help_menu.show_all_tips:'';macros_menu:'';macros_menu.examples:'';macros_menu.examples.macro_in_menu_browser:'';macros_menu.examples.macro_in_menu_datamap:'';macros_menu.examples.macro_in_menu_dump_menu:'';macros_menu.examples.macro_in_menu_flatten:'';macros_menu.examples.macro_in_menu_fractal:'';macros_menu.examples.macro_in_menu_qtdialog:'';macros_menu.examples.macro_in_menu_qtrubyserver:'';macros_menu.examples.macro_in_menu_screenshots:'';macros_menu.examples.macro_in_menu_sokoban:'';macros_menu.macro_development:'';tools_menu:'';tools_menu.browse_instances:'';tools_menu.browse_markers:'Ctrl+M';tools_menu.browse_netlists:'';tools_menu.browse_shapes:'';tools_menu.diff_tool:'';tools_menu.drc:'';tools_menu.drc.edit_script:'';tools_menu.drc.new_script:'';tools_menu.edit_layer_stack:'';tools_menu.lvs:'';tools_menu.lvs.edit_script:'';tools_menu.lvs.macro_in_menu_lvs:'';tools_menu.lvs.new_script:'';tools_menu.net_trace:'';tools_menu.packages:'';tools_menu.shapes_to_markers:'';tools_menu.shapes_to_markers.scan_layers:'';tools_menu.shapes_to_markers.scan_layers_flat:'';tools_menu.technologies:'';tools_menu.trace_all_nets_menu:'';tools_menu.trace_all_nets_menu.trace_all_nets:'Ctrl+Q';tools_menu.trace_all_nets_menu.trace_all_nets_flat:'';tools_menu.xor_tool:'';tools_menu.xsection_script_submenu:'';tools_menu.xsection_script_submenu.xsection_for_technology:'';tools_menu.xsection_script_submenu.xsection_script_load:'';view_menu:'';view_menu.default_grid:'';view_menu.default_grid.default_grid_1:'';view_menu.default_grid.default_grid_2:'';view_menu.default_grid.default_grid_3:'';view_menu.no_stipples:'';view_menu.reset_window_state:'';view_menu.show_bookmarks_view:'';view_menu.show_cell_boxes:'';view_menu.show_grid:'';view_menu.show_hierarchy_panel:'';view_menu.show_layer_panel:'';view_menu.show_layer_toolbox:'';view_menu.show_libraries_view:'';view_menu.show_markers:'';view_menu.show_navigator:'';view_menu.show_texts:'';view_menu.show_toolbar:'';view_menu.synchronized_views:'';view_menu.transient_selection:'';zoom_menu:'';zoom_menu.ascend:'';zoom_menu.dec_max_hier:'';zoom_menu.descend:'';zoom_menu.global_trans:'';zoom_menu.global_trans.m0:'';zoom_menu.global_trans.m135:'';zoom_menu.global_trans.m45:'';zoom_menu.global_trans.m90:'';zoom_menu.global_trans.r0:'';zoom_menu.global_trans.r180:'';zoom_menu.global_trans.r270:'';zoom_menu.global_trans.r90:'';zoom_menu.goto_position:'';zoom_menu.inc_max_hier:'';zoom_menu.max_hier:'';zoom_menu.max_hier_0:'';zoom_menu.max_hier_1:'';zoom_menu.next_display_state:'';zoom_menu.prev_display_state:'';zoom_menu.redraw:'';zoom_menu.select_cell:'';zoom_menu.select_current_cell:'';zoom_menu.synchronized_views:'';zoom_menu.zoom_fit:F;zoom_menu.zoom_fit_sel:'';zoom_menu.zoom_in:Z;zoom_menu.zoom_out:'Shift+Z';edit_menu.select_menu.pi_enable_14:'';file_menu.open_recent_menu.open_recent_10:'';file_menu.open_recent_menu.open_recent_3:'';file_menu.open_recent_menu.open_recent_4:'';file_menu.open_recent_menu.open_recent_5:'';file_menu.open_recent_menu.open_recent_6:'';file_menu.open_recent_menu.open_recent_7:'';file_menu.open_recent_menu.open_recent_8:'';file_menu.open_recent_menu.open_recent_9:'';tools_menu.drc.macro_in_menu_drc:'';'@hcp_context_menu.copy':'';'@hcp_context_menu.cut':'';'@hcp_context_menu.delete_cell':'';'@hcp_context_menu.flatten_cell':'';'@hcp_context_menu.new_cell':'';'@hcp_context_menu.paste':'';'@hcp_context_menu.rename_cell':'';'@hcp_context_menu.replace_cell':'';'@toolbar.box':'';'@toolbar.combine_mode':'';'@toolbar.instance':'';'@toolbar.partial':'';'@toolbar.path':'';'@toolbar.polygon':'';'@toolbar.text':'';edit_menu.cell_menu:'';edit_menu.cell_menu.adjust_cell_origin:'';edit_menu.cell_menu.convert_cell_to_static:'';edit_menu.cell_menu.delete_cell:'';edit_menu.cell_menu.flatten_cell:'';edit_menu.cell_menu.new_cell:'';edit_menu.cell_menu.rename_cell:'';edit_menu.cell_menu.replace_cell:'';edit_menu.cell_menu.user_properties:'';edit_menu.edit_options:'';edit_menu.layer_menu:'';edit_menu.layer_menu.boolean:'';edit_menu.layer_menu.clear_layer:'';edit_menu.layer_menu.copy_layer:'';edit_menu.layer_menu.delete_layer:'';edit_menu.layer_menu.edit_layer:'';edit_menu.layer_menu.merge:'';edit_menu.layer_menu.new_layer:'';edit_menu.layer_menu.size:'';edit_menu.layout_menu:'';edit_menu.layout_menu.lay_convert_to_static:'';edit_menu.layout_menu.lay_flip_x:'';edit_menu.layout_menu.lay_flip_y:'';edit_menu.layout_menu.lay_free_rot:'';edit_menu.layout_menu.lay_move:'';edit_menu.layout_menu.lay_rot_ccw:'';edit_menu.layout_menu.lay_rot_cw:'';edit_menu.layout_menu.lay_scale:'';edit_menu.mode_menu.box:'';edit_menu.mode_menu.instance:'';edit_menu.mode_menu.partial:'';edit_menu.mode_menu.path:'';edit_menu.mode_menu.polygon:'';edit_menu.mode_menu.text:'';edit_menu.search_replace_editor:'';edit_menu.selection_menu.align:'';edit_menu.selection_menu.change_layer:'';edit_menu.selection_menu.convert_to_cell:'';edit_menu.selection_menu.convert_to_pcell:'';edit_menu.selection_menu.difference:'';edit_menu.selection_menu.flatten_insts:'';edit_menu.selection_menu.intersection:'';edit_menu.selection_menu.make_array:'';edit_menu.selection_menu.make_cell:'';edit_menu.selection_menu.make_cell_variants:'';edit_menu.selection_menu.move_hier_up:'';edit_menu.selection_menu.resolve_arefs:'';edit_menu.selection_menu.round_corners:'';edit_menu.selection_menu.separate:'';edit_menu.selection_menu.size:'';edit_menu.selection_menu.tap:'';edit_menu.selection_menu.union:'';edit_menu.utils_menu:'';edit_menu.utils_menu.clip_tool:'';edit_menu.utils_menu.fill_tool:'';file_menu.new_layout:'';file_menu.new_panel:'';view_menu.edit_top_level_selection:'';tools_menu.drc.macro_in_menu_drc_sky130:'';tools_menu.drc.macro_in_menu_drc_sky130_1:'';tools_menu.lvs.macro_in_menu_lvs_sky130:'';'@hcp_context_menu.macro_in_menu_replace_cells':'';'@hcp_context_menu.macro_in_menu_write_childcells':'';'@hcp_context_menu.sorting.by_area_reverse':'';'@secrets.select_next_item':'';'@secrets.select_next_item_add':'';bookmark_menu.open_recent_menu_bookmarks:'';edit_menu.select_menu.pi_enable_16:'';edit_menu.select_menu.pi_enable_18:'';edit_menu.select_menu.pi_enable_19:'';edit_menu.select_menu.pi_enable_20:'';edit_menu.selection_menu.macro_in_menu_scale_anisotropic:'';file_menu.macro_in_menu_screenshot:'';file_menu.open_recent_menu_layer_props:'';file_menu.open_recent_menu_sessions:'';macros_menu.macro_in_menu_array_of_labels:'';tools_menu.macro_in_menu_calc_area:'';tools_menu.macro_in_menu_calc_area_hier:'';tools_menu.macro_in_menu_cell_bbox:'';tools_menu.macro_in_menu_dump_flat_shapes:'';tools_menu.macro_in_menu_list_layers:'';tools_menu.macro_in_menu_search_odd_width_paths:'';view_menu.mouse_tracking:'';view_menu.show_images:'';tools_menu.drc.macro_in_menu_drc_1:'';tools_menu.drc.macro_in_menu_drc_2:'' + CIRCUIT_ + DEVICE_ + NET_ + 'PR_' + true + true + 1000 + #800000 + 255,0,0 0,255,0 0,0,255 0,0,0 255,0,255 0,255,255 160,80,255 136,45,0 + true + -1 + 1 + 50 + 3 + false + -1 + 100000000 + false + 1 + dont-change + NetlistBrowserDialog="AdnQywABAAAAAAPsAAAAAAAAB2gAAASRAAAD7QAAABYAAAdnAAAEjAAAAAAAAA==";splitter_2="AAAA/wAAAAAAAAABAAACAAEAAAAGAQAAAAE=";splitter="AAAA/wAAAAAAAAACAAAAlQAAAs4BAAAABgEAAAAB";directory_tree="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAADAgAAAAEAAAABAAAAGQAAAswAAAADAQEAAQAAAAAAAAAAAAAAAJYAAAAZAAAAgQAAAAAAAAADAAABWgAAAAEAAAAAAAAAAAAAAAEAAAAAAAABcgAAAAEAAAAA";hierarchy_tree="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJMAAAABAQAAAQAAAAAAAAAAAAAAAGQAAAAZAAAAgQAAAAAAAAABAAAAkwAAAAEAAAAA"; + false + true + false + true + + 0 1 2 3 + + python + + + true + true + DejaVu Sans + 13 + + 2 + + false + true + basic:'Alert'=(bold:true,color:'#bf0303',background:'#f7e7e7'),'Attribute'=(color:'#0057ae'),'Base-N Integer'=(color:'#b07e00'),'Built-in'=(bold:true,color:'#644a9b'),'Character'=(color:'#ff80e0'),'Comment'=(italic:true,color:'#888786'),'Control Flow'=(bold:true,color:'#1f1c1b'),'Data Type'=(color:'#0057ae'),'Decimal/Value'=(color:'#b07e00'),'Error'=(color:'#bf0303'),'Extension'=(color:'#0095ff'),'Floating Point'=(color:'#b07e00'),'Function'=(color:'#442886'),'Import'=(color:'#ff5500'),'Keyword'=(bold:true),'Normal'=(),'Operator'=(color:'#1f1c1b'),'Others'=(color:'#006e26'),'Preprocessor'=(color:'#006e28'),'Region Marker'=(color:'#0057ae',background:'#e1eaf8'),'Special Character'=(color:'#3daee9'),'Special String'=(color:'#ff5500'),'String'=(color:'#bf0303'),'Variable'=(color:'#0057ae'),'Verbatim String'=(color:'#bf0303');ruby:'Access Control'=(color:'#0000ff'),'Attribute Definition'=(),'Bin'=(),'Blockcomment'=(),'Char'=(),'Class Variable'=(),'Command'=(color:'#aa3000'),'Comment'=(),'Constant'=(),'Constant Value'=(color:'#bb1188'),'Data'=(),'Dec'=(),'Default globals'=(bold:true,color:'#c00000'),'Definition'=(),'Delimiter'=(color:'#ff9fec'),'Error'=(),'Expression'=(),'Float'=(),'GDL input'=(),'Global Constant'=(bold:true,color:'#bb1188'),'Global Variable'=(color:'#c00000'),'Here Document'=(),'Hex'=(),'Instance Variable'=(),'Kernel methods'=(color:'#000080'),'Keyword'=(),'Member'=(),'Message'=(color:'#4000a7'),'Module mixin methods'=(color:'#000080'),'Normal Text'=(),'Octal'=(),'Operator'=(color:'#ff9fec'),'Pseudo variable'=(),'RDoc Value'=(),'Raw String'=(color:'#dd4a4a'),'Region Marker'=(color:'#0000ff'),'Regular Expression'=(color:'#4a5704'),'String'=(),'Substitution'=(),'Symbol'=(color:'#d40000');python:'Builtin Function'=(),'ClassNames'=(italic:false,bold:true,color:'#fcad3d'),'Comment'=(),'Complex'=(),'Decorator'=(),'Definition Keyword'=(),'Error'=(),'Exceptions'=(),'Extensions'=(),'F-String'=(),'Float'=(),'Flow Control Keyword'=(),'Hex'=(),'Import'=(),'Int'=(),'Normal Text'=(),'Octal'=(),'Operator'=(),'Operator Keyword'=(),'Overloaders'=(),'Raw F-String'=(),'Raw String'=(),'Special Variable'=(),'String'=(),'String Char'=(),'String Substitution'=(); + 8 + + MacroEditorDialog="AdnQywACAAAAAAGRAAABrgAABYYAAATGAAABlAAAAcsAAAWDAAAEwwAAAAAAAAAACgA=";splitter="AAAA/wAAAAEAAAADAAAAnAAAAGQAAACOAQAAAAYBAAAAAgE=";splitter_2="AAAA/wAAAAEAAAADAAAAVAAAAFQAAABUAQAAAAYBAAAAAQE=";watchList="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAAAZAAAAAEAAAAAAAAAZAAAAAEAAAAAAAAD6AD/////";variableList="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAAAZAAAAAEAAAAAAAAAZAAAAAEAAAAAAAAD6AD/////";mainHSplitter="AAAA/wAAAAEAAAACAAABEAAAA8MBAAAABgEAAAABAQ==";splitter_7="AAAA/wAAAAEAAAABAAAAiwAAAAAGAQAAAAEB";lvs_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";drc_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";pymacros_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";macros_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQoAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAABCgAAAAEAAAAAAAAD6AAAAABk"; + true + '@@navigator_menu.navigator_main_menu.navigator_all_hier_levels':false;'@@navigator_menu.navigator_main_menu.navigator_freeze':false;'@@navigator_menu.navigator_main_menu.navigator_show_images':false;'@bookmarks_context_menu.follow_selection':false;'@bookmarks_context_menu.load_bookmarks':false;'@bookmarks_context_menu.manage_bookmarks':false;'@bookmarks_context_menu.save_bookmarks':false;'@hcp_context_menu.cell_user_properties':false;'@hcp_context_menu.flat_mode':false;'@hcp_context_menu.hide_cell':false;'@hcp_context_menu.open_current':false;'@hcp_context_menu.save_cell_as':false;'@hcp_context_menu.show_all':false;'@hcp_context_menu.show_as_top':false;'@hcp_context_menu.show_cell':false;'@hcp_context_menu.sorting.by_area':false;'@hcp_context_menu.sorting.by_name':false;'@hcp_context_menu.split_mode':false;'@lcp_context_menu.add_others':false;'@lcp_context_menu.clean_up':false;'@lcp_context_menu.copy':false;'@lcp_context_menu.cut':false;'@lcp_context_menu.del':false;'@lcp_context_menu.group':false;'@lcp_context_menu.hide':false;'@lcp_context_menu.hide_all':false;'@lcp_context_menu.hide_empty_layers':false;'@lcp_context_menu.insert':false;'@lcp_context_menu.invvalid':false;'@lcp_context_menu.paste':false;'@lcp_context_menu.regroup_menu.flatten':false;'@lcp_context_menu.regroup_menu.grp_d':false;'@lcp_context_menu.regroup_menu.grp_i':false;'@lcp_context_menu.regroup_menu.grp_l':false;'@lcp_context_menu.rename':false;'@lcp_context_menu.select_all':false;'@lcp_context_menu.select_source':false;'@lcp_context_menu.show':false;'@lcp_context_menu.show_all':false;'@lcp_context_menu.show_only':false;'@lcp_context_menu.sort_menu.sort_dli':false;'@lcp_context_menu.sort_menu.sort_idl':false;'@lcp_context_menu.sort_menu.sort_ild':false;'@lcp_context_menu.sort_menu.sort_ldi':false;'@lcp_context_menu.sort_menu.sort_name':false;'@lcp_context_menu.tab_menu.new_tab':false;'@lcp_context_menu.tab_menu.remove_tab':false;'@lcp_context_menu.tab_menu.rename_tab':false;'@lcp_context_menu.test_shapes_in_view':false;'@lcp_context_menu.ungroup':false;'@lcp_context_menu.valid':false;'@lcp_tabs_context_menu.new_tab':false;'@lcp_tabs_context_menu.remove_tab':false;'@lcp_tabs_context_menu.rename_tab':false;'@secrets.duplicate_interactive':false;'@secrets.paste_interactive':false;'@secrets.sel_move_interactive':false;'@toolbar.move':false;'@toolbar.next_display_state':false;'@toolbar.prev_display_state':false;'@toolbar.ruler':false;'@toolbar.select':false;'@toolbar.technology_selector':false;bookmark_menu:false;bookmark_menu.bookmark_view:false;bookmark_menu.goto_bookmark_menu:false;bookmark_menu.load_bookmarks:false;bookmark_menu.manage_bookmarks:false;bookmark_menu.save_bookmarks:false;edit_menu:false;edit_menu.add_image:false;edit_menu.cancel:false;edit_menu.clear_all_rulers:false;edit_menu.configure_rulers:false;edit_menu.copy:false;edit_menu.cut:false;edit_menu.delete:false;edit_menu.duplicate:false;edit_menu.image_menu:false;edit_menu.image_menu.bring_to_back:false;edit_menu.image_menu.bring_to_front:false;edit_menu.image_menu.clear_all_images:false;edit_menu.mode_menu:false;edit_menu.mode_menu.move:false;edit_menu.mode_menu.ruler:false;edit_menu.mode_menu.select:false;edit_menu.paste:false;edit_menu.redo:false;edit_menu.search_replace_viewer:false;edit_menu.select_menu:false;edit_menu.select_menu.disable_all:false;edit_menu.select_menu.enable_all:false;edit_menu.select_menu.pi_enable_10:false;edit_menu.select_menu.pi_enable_11:false;edit_menu.select_menu.pi_enable_12:false;edit_menu.select_menu.pi_enable_13:false;edit_menu.select_menu.pi_enable_15:false;edit_menu.select_menu.pi_enable_7:false;edit_menu.select_menu.pi_enable_8:false;edit_menu.select_menu.pi_enable_9:false;edit_menu.select_menu.select_all:false;edit_menu.select_menu.unselect_all:false;edit_menu.selection_menu:false;edit_menu.selection_menu.sel_flip_x:false;edit_menu.selection_menu.sel_flip_y:false;edit_menu.selection_menu.sel_free_rot:false;edit_menu.selection_menu.sel_move:false;edit_menu.selection_menu.sel_move_to:false;edit_menu.selection_menu.sel_rot_ccw:false;edit_menu.selection_menu.sel_rot_cw:false;edit_menu.selection_menu.sel_scale:false;edit_menu.show_properties:false;edit_menu.undo:false;file_menu:false;file_menu.clone:false;file_menu.close:false;file_menu.close_all:false;file_menu.exit:false;file_menu.import_menu:false;file_menu.import_menu.import_def:false;file_menu.import_menu.import_gerber_menu:false;file_menu.import_menu.import_gerber_menu.import_gerber_new:false;file_menu.import_menu.import_gerber_menu.import_gerber_new_free:false;file_menu.import_menu.import_gerber_menu.import_gerber_open:false;file_menu.import_menu.import_gerber_menu.import_gerber_recent:false;file_menu.import_menu.import_lef:false;file_menu.import_menu.import_stream:false;file_menu.layout_props:false;file_menu.layout_stats:false;file_menu.load_layer_props:false;file_menu.open:false;file_menu.open_new_panel:false;file_menu.open_recent_menu:false;file_menu.open_recent_menu.open_recent_1:false;file_menu.open_recent_menu.open_recent_2:false;file_menu.open_same_panel:false;file_menu.print:false;file_menu.pull_in:false;file_menu.reader_options:false;file_menu.reload:false;file_menu.restore_session:false;file_menu.save:false;file_menu.save_all:false;file_menu.save_as:false;file_menu.save_layer_props:false;file_menu.save_session:false;file_menu.screenshot:false;file_menu.setup:false;file_menu.view_log:false;file_menu.writer_options:false;help_menu:false;help_menu.about:false;help_menu.about_qt:false;help_menu.assistant:false;help_menu.show_all_tips:false;macros_menu:false;macros_menu.examples:false;macros_menu.examples.macro_in_menu_browser:false;macros_menu.examples.macro_in_menu_datamap:false;macros_menu.examples.macro_in_menu_dump_menu:false;macros_menu.examples.macro_in_menu_flatten:false;macros_menu.examples.macro_in_menu_fractal:false;macros_menu.examples.macro_in_menu_qtdialog:false;macros_menu.examples.macro_in_menu_qtrubyserver:false;macros_menu.examples.macro_in_menu_screenshots:false;macros_menu.examples.macro_in_menu_sokoban:false;macros_menu.macro_development:false;tools_menu:false;tools_menu.browse_instances:false;tools_menu.browse_markers:false;tools_menu.browse_netlists:false;tools_menu.browse_shapes:false;tools_menu.diff_tool:false;tools_menu.drc:false;tools_menu.drc.edit_script:false;tools_menu.drc.new_script:false;tools_menu.edit_layer_stack:false;tools_menu.lvs:false;tools_menu.lvs.edit_script:false;tools_menu.lvs.macro_in_menu_lvs:false;tools_menu.lvs.new_script:false;tools_menu.net_trace:false;tools_menu.packages:false;tools_menu.shapes_to_markers:false;tools_menu.shapes_to_markers.scan_layers:false;tools_menu.shapes_to_markers.scan_layers_flat:false;tools_menu.technologies:false;tools_menu.trace_all_nets_menu:false;tools_menu.trace_all_nets_menu.trace_all_nets:false;tools_menu.trace_all_nets_menu.trace_all_nets_flat:false;tools_menu.xor_tool:false;tools_menu.xsection_script_submenu:false;tools_menu.xsection_script_submenu.xsection_for_technology:false;tools_menu.xsection_script_submenu.xsection_script_load:false;view_menu:false;view_menu.default_grid:false;view_menu.default_grid.default_grid_1:false;view_menu.default_grid.default_grid_2:false;view_menu.default_grid.default_grid_3:false;view_menu.no_stipples:false;view_menu.reset_window_state:false;view_menu.show_bookmarks_view:false;view_menu.show_cell_boxes:false;view_menu.show_grid:false;view_menu.show_hierarchy_panel:false;view_menu.show_layer_panel:false;view_menu.show_layer_toolbox:false;view_menu.show_libraries_view:false;view_menu.show_markers:false;view_menu.show_navigator:false;view_menu.show_texts:false;view_menu.show_toolbar:false;view_menu.synchronized_views:false;view_menu.transient_selection:false;zoom_menu:false;zoom_menu.ascend:false;zoom_menu.dec_max_hier:false;zoom_menu.descend:false;zoom_menu.global_trans:false;zoom_menu.global_trans.m0:false;zoom_menu.global_trans.m135:false;zoom_menu.global_trans.m45:false;zoom_menu.global_trans.m90:false;zoom_menu.global_trans.r0:false;zoom_menu.global_trans.r180:false;zoom_menu.global_trans.r270:false;zoom_menu.global_trans.r90:false;zoom_menu.goto_position:false;zoom_menu.inc_max_hier:false;zoom_menu.max_hier:false;zoom_menu.max_hier_0:false;zoom_menu.max_hier_1:false;zoom_menu.next_display_state:false;zoom_menu.prev_display_state:false;zoom_menu.redraw:false;zoom_menu.select_cell:false;zoom_menu.select_current_cell:false;zoom_menu.synchronized_views:false;zoom_menu.zoom_fit:false;zoom_menu.zoom_fit_sel:false;zoom_menu.zoom_in:false;zoom_menu.zoom_out:false;edit_menu.select_menu.pi_enable_14:false;file_menu.open_recent_menu.open_recent_10:false;file_menu.open_recent_menu.open_recent_3:false;file_menu.open_recent_menu.open_recent_4:false;file_menu.open_recent_menu.open_recent_5:false;file_menu.open_recent_menu.open_recent_6:false;file_menu.open_recent_menu.open_recent_7:false;file_menu.open_recent_menu.open_recent_8:false;file_menu.open_recent_menu.open_recent_9:false;tools_menu.drc.macro_in_menu_drc:false;'@hcp_context_menu.copy':false;'@hcp_context_menu.cut':false;'@hcp_context_menu.delete_cell':false;'@hcp_context_menu.flatten_cell':false;'@hcp_context_menu.new_cell':false;'@hcp_context_menu.paste':false;'@hcp_context_menu.rename_cell':false;'@hcp_context_menu.replace_cell':false;'@toolbar.box':false;'@toolbar.combine_mode':false;'@toolbar.instance':false;'@toolbar.partial':false;'@toolbar.path':false;'@toolbar.polygon':false;'@toolbar.text':false;edit_menu.cell_menu:false;edit_menu.cell_menu.adjust_cell_origin:false;edit_menu.cell_menu.convert_cell_to_static:false;edit_menu.cell_menu.delete_cell:false;edit_menu.cell_menu.flatten_cell:false;edit_menu.cell_menu.new_cell:false;edit_menu.cell_menu.rename_cell:false;edit_menu.cell_menu.replace_cell:false;edit_menu.cell_menu.user_properties:false;edit_menu.edit_options:false;edit_menu.layer_menu:false;edit_menu.layer_menu.boolean:false;edit_menu.layer_menu.clear_layer:false;edit_menu.layer_menu.copy_layer:false;edit_menu.layer_menu.delete_layer:false;edit_menu.layer_menu.edit_layer:false;edit_menu.layer_menu.merge:false;edit_menu.layer_menu.new_layer:false;edit_menu.layer_menu.size:false;edit_menu.layout_menu:false;edit_menu.layout_menu.lay_convert_to_static:false;edit_menu.layout_menu.lay_flip_x:false;edit_menu.layout_menu.lay_flip_y:false;edit_menu.layout_menu.lay_free_rot:false;edit_menu.layout_menu.lay_move:false;edit_menu.layout_menu.lay_rot_ccw:false;edit_menu.layout_menu.lay_rot_cw:false;edit_menu.layout_menu.lay_scale:false;edit_menu.mode_menu.box:false;edit_menu.mode_menu.instance:false;edit_menu.mode_menu.partial:false;edit_menu.mode_menu.path:false;edit_menu.mode_menu.polygon:false;edit_menu.mode_menu.text:false;edit_menu.search_replace_editor:false;edit_menu.selection_menu.align:false;edit_menu.selection_menu.change_layer:false;edit_menu.selection_menu.convert_to_cell:false;edit_menu.selection_menu.convert_to_pcell:false;edit_menu.selection_menu.difference:false;edit_menu.selection_menu.flatten_insts:false;edit_menu.selection_menu.intersection:false;edit_menu.selection_menu.make_array:false;edit_menu.selection_menu.make_cell:false;edit_menu.selection_menu.make_cell_variants:false;edit_menu.selection_menu.move_hier_up:false;edit_menu.selection_menu.resolve_arefs:false;edit_menu.selection_menu.round_corners:false;edit_menu.selection_menu.separate:false;edit_menu.selection_menu.size:false;edit_menu.selection_menu.tap:false;edit_menu.selection_menu.union:false;edit_menu.utils_menu:false;edit_menu.utils_menu.clip_tool:false;edit_menu.utils_menu.fill_tool:false;file_menu.new_layout:false;file_menu.new_panel:false;view_menu.edit_top_level_selection:false;tools_menu.drc.macro_in_menu_drc_sky130:false;tools_menu.drc.macro_in_menu_drc_sky130_1:false;tools_menu.lvs.macro_in_menu_lvs_sky130:false;'@hcp_context_menu.macro_in_menu_replace_cells':false;'@hcp_context_menu.macro_in_menu_write_childcells':false;'@hcp_context_menu.sorting.by_area_reverse':false;'@secrets.select_next_item':false;'@secrets.select_next_item_add':false;bookmark_menu.open_recent_menu_bookmarks:false;edit_menu.select_menu.pi_enable_16:false;edit_menu.select_menu.pi_enable_18:false;edit_menu.select_menu.pi_enable_19:false;edit_menu.select_menu.pi_enable_20:false;edit_menu.selection_menu.macro_in_menu_scale_anisotropic:false;file_menu.macro_in_menu_screenshot:false;file_menu.open_recent_menu_layer_props:false;file_menu.open_recent_menu_sessions:false;macros_menu.macro_in_menu_array_of_labels:false;tools_menu.macro_in_menu_calc_area:false;tools_menu.macro_in_menu_calc_area_hier:false;tools_menu.macro_in_menu_cell_bbox:false;tools_menu.macro_in_menu_dump_flat_shapes:false;tools_menu.macro_in_menu_list_layers:false;tools_menu.macro_in_menu_search_odd_width_paths:false;view_menu.mouse_tracking:false;view_menu.show_images:false;tools_menu.drc.macro_in_menu_drc_1:false;tools_menu.drc.macro_in_menu_drc_2:false + 16 + 0 + '/ciic/designs/caravel.develop/gds/mgmt_protect.gds.gz'@'sky130A' '/ciic/designs/caravel.develop/gds/mgmt_protect_hv.gds.gz'@'sky130A' '/ciic/pdks/sky130-drc-regression-tests/design-testcases/mpw-two/slot-040/user_analog_project_wrapper.gds.gz'@'sky130A' '/ciic/designs/caravel.mpw-one-final-metal-fix/gds/mgmt_protect_hv.gds.gz'@'sky130A' '/ciic/designs/caravel.develop/gds/sky130_fd_sc_hvl__lsbufhv2lv_1_wrapped.gds'@'sky130A' '/ciic/pdks/sky130-drc-regression-tests/design-testcases/mpw-2/slot-025/caravel_00020019.oas'@'sky130A' '/ciic/pdks/sky130-drc-regression-tests/design-testcases/mpw-2/slot-040/caravel_00020028/caravel_00020028.oas'@'sky130A' '/ciic/pdks/sky130-drc-regression-tests/design-testcases/mpw-2/slot-005/caravel_00020005/caravel_00020005.oas'@'sky130A' '/ciic/designs/caravel.develop/gds/caravan.gds'@'sky130A' '/ciic/designs/caravel.develop/gds/caravel.gds'@'sky130A' '/ciic/designs/caravel.develop/gds/mprj_logic_high.gds'@'sky130A' '/ciic/designs/caravel.develop/gds/chip_io.gds'@'sky130A' '/ciic/designs/caravel.develop/gds/mgmt_core.gds'@'sky130A' '/ciic/pdks/sky130-drc-regression-tests/user-designs-google-mpw/mpw-2/slot-040/caravel_00020028/caravel_00020028.oas'@'sky130A' '/home/mkk/Downloads/slot-040-refs_heads_main-gds/caravel_00020028.oas'@'sky130A' '/ciic/designs/caravel.develop/gds/mgmt_protect_hv.gds'@'sky130A' + + + + false + true + false + auto + 255,0,0 0,255,0 0,0,255 255,255,0 255,0,255 0,255,255 160,80,255 255,160,0 + true + -1 + -1 + 50 + -1 + -1 + 1000000 + 0 + 1 + dont-change + 0.15 + 2 + + database-top + #ff0000 + -1 + 1 + 3 + -1 + 10000000 + false + 3 + fit-marker + MarkerBrowserDialog="AdnQywABAAAAAAIzAAAAJQAABugAAAQ0AAACNAAAADsAAAbnAAAELwAAAAAAAA==";splitter_2="AAAA/wAAAAAAAAACAAACNQAAAmcBAAAABgEAAAAB";splitter="AAAA/wAAAAAAAAACAAAA/QAAAP8BAAAABgEAAAAC";markers_list="AAAA/wAAAAAAAAABAAAAAAAAAAMBAAAABAAAAAAAAAACAAAAAwAAAAEAAAAEAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAAAAAExQAAAAQBAQABAAAAAAAAAAAAAAAAZAAAABgAAACBAAAAAAAAAAQAAAA1AAAAAQAAAAAAAANPAAAAAQAAAAAAAABkAAAAAQAAAAAAAADdAAAAAQAAAAA=";directory_tree="AAAA/wAAAAAAAAABAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAiEAAAACAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAABCgAAAAEAAAAAAAABFwAAAAEAAAAA"; + false + #ff0000 + true + true + true + any + 8 + mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=diag,snap=true,angle_constraint=global;mode=single_click,title=Cross,category=_cross,fmt='$U,$V',fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=diag,snap=true,angle_constraint=global;mode=auto_metric,title=Measure,category=_measure,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global;mode=normal,title=Ellipse,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=line,outline=ellipse,snap=true,angle_constraint=global;mode=normal,title=Box,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=box,snap=true,angle_constraint=global;mode=normal,title=XSection,category=XS,fmt=XS,fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=arrow_both,outline=diag,snap=true,angle_constraint=global + -1 + + 5 + 0 + #ff0000 + 1 + true + false + 1 + true + 3 + + any-top + 100000000 + 100000000 + 1 + dont-change + + false + true + true + true + false + false + false + true + false + false + all-cells + == + + + == + + ~ + res_amp_lin + + == + + == + + == + + + == + + == + + + == + + + == + + == + + ~ + + 1000 + find + 'instances of cells *.* where cell_name ~ "res_amp_lin"';'instances of cells *.* where cell_name ~ "res_amp"';'instances of cells *.* where cell_name ~ "*ICV*"';'instances of cells *.* where cell_name ~ "*ICV_1093*"';'instances of cells *.* where cell_name ~ "ICV_1093"';'instances of cell caravel_00020017.* where cell_name ~ "ICV_1093"';'instances of cell deconv_kernel_estimator_top_level.* where cell_name ~ "deconv_kernel_estimator_to_VIA15"';'delete instances of cell deconv_kernel_estimator_top_level.* where cell_name ~ "deconv_kernel_estimator_to_VIA15"' + instance + + 1 + fit-marker + search_replace_dialog="AdnQywACAAAAAABfAAABLAAAA6kAAAOZAAAAYgAAAUkAAAOmAAADlgAAAAAAAAAACA0=";splitter="AAAA/wAAAAEAAAACAAABxwAAATAB/////wEAAAABAA==";results="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAAAAAAD6AD/////"; + true + 0 1 2 3 4 5[1] 6 7 8 9[0] 10 11 12 13 14 15 + <?xml version="1.0" encoding="utf-8"?> +<stream-import-data> + <files> + <file>/mnt/shuttles/mpw-two-b/slot-012/fuserisc/gds/cus_tg_mux41_buf</file> + </files> + <cell-name/> + <layer-offset/> + <layer-mode>original</layer-mode> + <import-mode>extra</import-mode> + <reference-points> + </reference-points> + <explicit-trans>r0 *1 0,0</explicit-trans> + <options> + <gds2> + <box-mode>1</box-mode> + <allow-big-records>true</allow-big-records> + <allow-multi-xy-records>true</allow-multi-xy-records> + </gds2> + <common> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + <enable-properties>true</enable-properties> + <enable-text-objects>true</enable-text-objects> + </common> + <lefdef> + <read-all-layers>true</read-all-layers> + <layer-map>layer_map()</layer-map> + <dbu>0.001</dbu> + <produce-net-names>true</produce-net-names> + <net-property-name>#1</net-property-name> + <produce-inst-names>true</produce-inst-names> + <inst-property-name>#1</inst-property-name> + <produce-pin-names>false</produce-pin-names> + <pin-property-name>#1</pin-property-name> + <produce-cell-outlines>true</produce-cell-outlines> + <cell-outline-layer>OUTLINE</cell-outline-layer> + <produce-placement-blockages>true</produce-placement-blockages> + <placement-blockage-layer>PLACEMENT_BLK</placement-blockage-layer> + <produce-regions>true</produce-regions> + <region-layer>REGIONS</region-layer> + <produce-via-geometry>true</produce-via-geometry> + <via-geometry-suffix/> + <via-geometry-datatype>0</via-geometry-datatype> + <produce-pins>true</produce-pins> + <pins-suffix>.PIN</pins-suffix> + <pins-datatype>2</pins-datatype> + <produce-obstructions>true</produce-obstructions> + <obstructions-suffix>.OBS</obstructions-suffix> + <obstructions-datatype>3</obstructions-datatype> + <produce-blockages>true</produce-blockages> + <blockages-suffix>.BLK</blockages-suffix> + <blockages-datatype>4</blockages-datatype> + <produce-labels>true</produce-labels> + <labels-suffix>.LABEL</labels-suffix> + <labels-datatype>1</labels-datatype> + <produce-routing>true</produce-routing> + <routing-suffix/> + <routing-datatype>0</routing-datatype> + </lefdef> + <dxf> + <dbu>0.001</dbu> + <unit>1</unit> + <text-scaling>100</text-scaling> + <circle-points>100</circle-points> + <circle-accuracy>0</circle-accuracy> + <contour-accuracy>0</contour-accuracy> + <polyline-mode>0</polyline-mode> + <render-texts-as-polygons>false</render-texts-as-polygons> + <keep-other-cells>false</keep-other-cells> + <keep-layer-names>false</keep-layer-names> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + </dxf> + <cif> + <wire-mode>0</wire-mode> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + </cif> + <mag> + <lambda>1</lambda> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + <merge>true</merge> + <lib-paths> + </lib-paths> + </mag> + </options> +</stream-import-data> + + true + tech_setup_dialog="AdnQywACAAAAAAT4AAAAsQAACEgAAAOeAAAE+wAAAM4AAAhFAAADmwAAAAAAAAAAC4A=";splitter="AAAA/wAAAAEAAAACAAABAAAAABsB/////wEAAAABAA==";tech_tree="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAABAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAgAAAAAEAAAAAAAAD6AAAAABk"; + <?xml version="1.0" encoding="utf-8"?> +<technologies> + <technology> + <name/> + <description>(Default)</description> + <group/> + <dbu>0.001</dbu> + <base-path/> + <original-base-path/> + <layer-properties_file/> + <add-other-layers>true</add-other-layers> + <reader-options> + <gds2> + <box-mode>1</box-mode> + <allow-big-records>true</allow-big-records> + <allow-multi-xy-records>true</allow-multi-xy-records> + </gds2> + <common> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + <enable-properties>true</enable-properties> + <enable-text-objects>true</enable-text-objects> + </common> + <lefdef> + <read-all-layers>true</read-all-layers> + <layer-map>layer_map()</layer-map> + <dbu>0.001</dbu> + <produce-net-names>true</produce-net-names> + <net-property-name>#1</net-property-name> + <produce-inst-names>true</produce-inst-names> + <inst-property-name>#1</inst-property-name> + <produce-pin-names>false</produce-pin-names> + <pin-property-name>#1</pin-property-name> + <produce-cell-outlines>true</produce-cell-outlines> + <cell-outline-layer>OUTLINE</cell-outline-layer> + <produce-placement-blockages>true</produce-placement-blockages> + <placement-blockage-layer>PLACEMENT_BLK</placement-blockage-layer> + <produce-regions>true</produce-regions> + <region-layer>REGIONS</region-layer> + <produce-via-geometry>true</produce-via-geometry> + <via-geometry-suffix/> + <via-geometry-datatype>0</via-geometry-datatype> + <produce-pins>true</produce-pins> + <pins-suffix>.PIN</pins-suffix> + <pins-datatype>2</pins-datatype> + <produce-obstructions>true</produce-obstructions> + <obstructions-suffix>.OBS</obstructions-suffix> + <obstructions-datatype>3</obstructions-datatype> + <produce-blockages>true</produce-blockages> + <blockages-suffix>.BLK</blockages-suffix> + <blockages-datatype>4</blockages-datatype> + <produce-labels>true</produce-labels> + <labels-suffix>.LABEL</labels-suffix> + <labels-datatype>1</labels-datatype> + <produce-routing>true</produce-routing> + <routing-suffix/> + <routing-datatype>0</routing-datatype> + </lefdef> + <dxf> + <dbu>0.001</dbu> + <unit>1</unit> + <text-scaling>100</text-scaling> + <circle-points>100</circle-points> + <circle-accuracy>0</circle-accuracy> + <contour-accuracy>0</contour-accuracy> + <polyline-mode>0</polyline-mode> + <render-texts-as-polygons>false</render-texts-as-polygons> + <keep-other-cells>false</keep-other-cells> + <keep-layer-names>false</keep-layer-names> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + </dxf> + <cif> + <wire-mode>0</wire-mode> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + </cif> + <mag> + <lambda>1</lambda> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + <merge>true</merge> + <lib-paths> + </lib-paths> + </mag> + </reader-options> + <writer-options> + <gds2> + <write-timestamps>true</write-timestamps> + <write-cell-properties>false</write-cell-properties> + <write-file-properties>false</write-file-properties> + <no-zero-length-paths>false</no-zero-length-paths> + <multi-xy-records>false</multi-xy-records> + <max-vertex-count>8000</max-vertex-count> + <max-cellname-length>32000</max-cellname-length> + <libname>LIB</libname> + </gds2> + <oasis> + <compression-level>2</compression-level> + <write-cblocks>false</write-cblocks> + <strict-mode>false</strict-mode> + <write-std-properties>1</write-std-properties> + <subst-char>*</subst-char> + <permissive>false</permissive> + </oasis> + <cif> + <polygon-mode>0</polygon-mode> + </cif> + <cif> + <dummy-calls>false</dummy-calls> + <blank-separator>false</blank-separator> + </cif> + <mag> + <lambda>0</lambda> + <tech/> + <write-timestamp>true</write-timestamp> + </mag> + </writer-options> + <connectivity> + </connectivity> + </technology> +</technologies> + + false + auto + 0 + true + true + only-top-level-shown-by-default=3,editor-mode=4,editor-mode=0,hide-empty-layers=4,hide-empty-layers=0,has-non-add-edit-combine-mode=4,has-non-add-edit-combine-mode=0,tech-manager-basic-tips=4,tech-manager-basic-tips=0 + auto + true + AdnQywABAAD///7eAAAAAAAABM8AAAUD///+3wAAABYAAATOAAAE/gAAAAAAAA== + AAAA/wAAAAD9AAAAAgAAAAAAAAEsAAAEgfwCAAAABPsAAAAcAGgAcABfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAEAAABSAAAEgQAAABkA////+wAAACoAbgBhAHYAaQBnAGEAdABvAHIAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAACWAP////sAAAAgAGwAaQBiAHMAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAUgAAA5cAAAAZAP////sAAAAcAGUAbwBfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAAAAAAA/////wAAAJYA////AAAAAQAAAUMAAASB/AIAAAAD+wAAACoAYgBvAG8AawBtAGEAcgBrAHMAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAAAZAP////sAAAAcAGwAcABfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAEAAABSAAAD6gAAABkA////+wAAABwAbAB0AF8AZABvAGMAawBfAHcAaQBkAGcAZQB0AQAABEIAAACRAAAAkQAAAJEAAAN1AAAEgQAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAABAAAADgB0AG8AbwBsAGIAYQByAQAAAAD/////AAAAAAAAAAA= + false + true + false + false + all + + 90 + rdb + all + true + 200 + true + 0 + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc.save b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc.save new file mode 100755 index 00000000..1b894e75 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.krc.save @@ -0,0 +1,516 @@ + + + false + false + 10 + true + + auto + true + 1 + by-name + true + true + auto + 50 + false + false + + any-top + 1000000000 + 1 + fit-marker + BrowseInstancesForm="AdnQywACAAAAAAPoAAACJQAABhIAAAMFAAAD6wAAAkIAAAYPAAADAgAAAAAAAAAACgA=";splitter2="AAAA/wAAAAEAAAACAAABCAAAAQgBAAAABgEAAAABAQ==";lv_cell_instance="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAp8AAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAABPAAAAAEAAAAAAAABYwAAAAEAAAAAAAAD6AD/////";lv_cell="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAADAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAADAAABEgAAAAEAAAAAAAAAZAAAAAEAAAAAAAABKgAAAAEAAAAAAAAD6AD/////"; + 32 + false + 255,157,157[0] 255,128,168[1] 192,128,255[2] 149,128,255[3] 128,134,255[4] 128,168,255[5] 255,0,0[6] 255,0,128[7] 255,0,255[8] 128,0,255[9] 0,0,255[10] 0,128,255[11] 128,0,0[12] 128,0,87[13] 128,0,128[14] 80,0,128[15] 0,0,128[16] 0,64,128[17] 128,255,251[18] 128,255,141[19] 175,255,128[20] 243,255,128[21] 255,194,128[22] 255,160,128[23] 0,255,255[24] 1,255,107[25] 145,255,0[26] 221,255,0[27] 255,174,0[28] 255,128,0[29] 0,128,128[30] 0,128,80[31] 0,128,0[32] 80,128,0[33] 128,128,0[34] 128,80,0[35] 255,255,255 192,192,192 128,128,128 96,96,96 64,64,64 0,0,0 + add + auto + 50 + false + + 4 + + false + file='/home/mk/Downloads/RAM_4Kx32.def';import-mode=0; + false + 0 + 0.01,0.005 + + 0.1 + true + true + true + false + true + true + 2 + 5 + false + 1 + false + 0 + 10 + any + 0.005 + -1 + 0 + false + caravel_00020002_fill_pattern + 0 + 0 + 1 + + false + + true + 0 + 0 + 1 + 1 + 1000 + false + any + flush + 0.0 + 0.0 + 0.1 + true + false + left + 0 + ABC + bottom + true + true + false + true + r0 *1 0,0 + auto + auto + auto + 0.005 + auto + true + invisible + dots + tenths-dotted-lines + true + auto + 1 + 5 + true + true + 1 + true + 1 + sky130A + auto + 0 + true + true + 0 + '@@navigator_menu.navigator_main_menu.navigator_all_hier_levels':'';'@@navigator_menu.navigator_main_menu.navigator_freeze':'';'@@navigator_menu.navigator_main_menu.navigator_show_images':'';'@bookmarks_context_menu.follow_selection':'';'@bookmarks_context_menu.load_bookmarks':'';'@bookmarks_context_menu.manage_bookmarks':'';'@bookmarks_context_menu.save_bookmarks':'';'@hcp_context_menu.cell_user_properties':'';'@hcp_context_menu.flat_mode':'';'@hcp_context_menu.hide_cell':'';'@hcp_context_menu.open_current':'';'@hcp_context_menu.save_cell_as':'';'@hcp_context_menu.show_all':'';'@hcp_context_menu.show_as_top':'Ctrl+T';'@hcp_context_menu.show_cell':'';'@hcp_context_menu.sorting.by_area':'';'@hcp_context_menu.sorting.by_name':'';'@hcp_context_menu.split_mode':'';'@lcp_context_menu.add_others':'';'@lcp_context_menu.clean_up':'';'@lcp_context_menu.copy':'';'@lcp_context_menu.cut':'';'@lcp_context_menu.del':'';'@lcp_context_menu.group':'';'@lcp_context_menu.hide':'';'@lcp_context_menu.hide_all':'';'@lcp_context_menu.hide_empty_layers':'';'@lcp_context_menu.insert':'';'@lcp_context_menu.invvalid':'';'@lcp_context_menu.paste':'';'@lcp_context_menu.regroup_menu.flatten':'';'@lcp_context_menu.regroup_menu.grp_d':'';'@lcp_context_menu.regroup_menu.grp_i':'';'@lcp_context_menu.regroup_menu.grp_l':'';'@lcp_context_menu.rename':'';'@lcp_context_menu.select_all':'';'@lcp_context_menu.select_source':'';'@lcp_context_menu.show':'';'@lcp_context_menu.show_all':'';'@lcp_context_menu.show_only':'';'@lcp_context_menu.sort_menu.sort_dli':'';'@lcp_context_menu.sort_menu.sort_idl':'';'@lcp_context_menu.sort_menu.sort_ild':'';'@lcp_context_menu.sort_menu.sort_ldi':'';'@lcp_context_menu.sort_menu.sort_name':'';'@lcp_context_menu.tab_menu.new_tab':'';'@lcp_context_menu.tab_menu.remove_tab':'';'@lcp_context_menu.tab_menu.rename_tab':'';'@lcp_context_menu.test_shapes_in_view':'';'@lcp_context_menu.ungroup':'';'@lcp_context_menu.valid':'';'@lcp_tabs_context_menu.new_tab':'';'@lcp_tabs_context_menu.remove_tab':'';'@lcp_tabs_context_menu.rename_tab':'';'@secrets.duplicate_interactive':'';'@secrets.paste_interactive':'';'@secrets.sel_move_interactive':'';'@toolbar.move':'';'@toolbar.next_display_state':'';'@toolbar.prev_display_state':'';'@toolbar.ruler':'';'@toolbar.select':'';'@toolbar.technology_selector':'';bookmark_menu:'';bookmark_menu.bookmark_view:'';bookmark_menu.goto_bookmark_menu:'';bookmark_menu.load_bookmarks:'';bookmark_menu.manage_bookmarks:'';bookmark_menu.save_bookmarks:'';edit_menu:'';edit_menu.add_image:'';edit_menu.cancel:'';edit_menu.clear_all_rulers:'';edit_menu.configure_rulers:'';edit_menu.copy:'';edit_menu.cut:'';edit_menu.delete:'';edit_menu.duplicate:'';edit_menu.image_menu:'';edit_menu.image_menu.bring_to_back:'';edit_menu.image_menu.bring_to_front:'';edit_menu.image_menu.clear_all_images:'';edit_menu.mode_menu:'';edit_menu.mode_menu.move:'';edit_menu.mode_menu.ruler:'';edit_menu.mode_menu.select:'';edit_menu.paste:'';edit_menu.redo:'';edit_menu.search_replace_viewer:'';edit_menu.select_menu:'';edit_menu.select_menu.disable_all:'';edit_menu.select_menu.enable_all:'';edit_menu.select_menu.pi_enable_10:'';edit_menu.select_menu.pi_enable_11:'';edit_menu.select_menu.pi_enable_12:'';edit_menu.select_menu.pi_enable_13:'';edit_menu.select_menu.pi_enable_15:'';edit_menu.select_menu.pi_enable_7:'';edit_menu.select_menu.pi_enable_8:'';edit_menu.select_menu.pi_enable_9:'';edit_menu.select_menu.select_all:'';edit_menu.select_menu.unselect_all:'';edit_menu.selection_menu:'';edit_menu.selection_menu.sel_flip_x:'';edit_menu.selection_menu.sel_flip_y:'';edit_menu.selection_menu.sel_free_rot:'';edit_menu.selection_menu.sel_move:'';edit_menu.selection_menu.sel_move_to:'';edit_menu.selection_menu.sel_rot_ccw:'';edit_menu.selection_menu.sel_rot_cw:'';edit_menu.selection_menu.sel_scale:'';edit_menu.show_properties:'';edit_menu.undo:'';file_menu:'';file_menu.clone:'';file_menu.close:'';file_menu.close_all:'';file_menu.exit:none;file_menu.import_menu:'';file_menu.import_menu.import_def:'';file_menu.import_menu.import_gerber_menu:'';file_menu.import_menu.import_gerber_menu.import_gerber_new:'';file_menu.import_menu.import_gerber_menu.import_gerber_new_free:'';file_menu.import_menu.import_gerber_menu.import_gerber_open:'';file_menu.import_menu.import_gerber_menu.import_gerber_recent:'';file_menu.import_menu.import_lef:'';file_menu.import_menu.import_stream:'';file_menu.layout_props:'';file_menu.layout_stats:'';file_menu.load_layer_props:'';file_menu.open:'';file_menu.open_new_panel:'';file_menu.open_recent_menu:'';file_menu.open_recent_menu.open_recent_1:'';file_menu.open_recent_menu.open_recent_2:'';file_menu.open_same_panel:'';file_menu.print:'';file_menu.pull_in:'';file_menu.reader_options:'';file_menu.reload:'';file_menu.restore_session:'';file_menu.save:'Ctrl+S';file_menu.save_all:'';file_menu.save_as:'';file_menu.save_layer_props:'';file_menu.save_session:'';file_menu.screenshot:'';file_menu.setup:'';file_menu.view_log:'';file_menu.writer_options:'';help_menu:'';help_menu.about:'';help_menu.about_qt:'';help_menu.assistant:'';help_menu.show_all_tips:'';macros_menu:'';macros_menu.examples:'';macros_menu.examples.macro_in_menu_browser:'';macros_menu.examples.macro_in_menu_datamap:'';macros_menu.examples.macro_in_menu_dump_menu:'';macros_menu.examples.macro_in_menu_flatten:'';macros_menu.examples.macro_in_menu_fractal:'';macros_menu.examples.macro_in_menu_qtdialog:'';macros_menu.examples.macro_in_menu_qtrubyserver:'';macros_menu.examples.macro_in_menu_screenshots:'';macros_menu.examples.macro_in_menu_sokoban:'';macros_menu.macro_development:'';tools_menu:'';tools_menu.browse_instances:'';tools_menu.browse_markers:'Ctrl+M';tools_menu.browse_netlists:'';tools_menu.browse_shapes:'';tools_menu.diff_tool:'';tools_menu.drc:'';tools_menu.drc.edit_script:'';tools_menu.drc.new_script:'';tools_menu.edit_layer_stack:'';tools_menu.lvs:'';tools_menu.lvs.edit_script:'';tools_menu.lvs.macro_in_menu_lvs:'';tools_menu.lvs.new_script:'';tools_menu.net_trace:'';tools_menu.packages:'';tools_menu.shapes_to_markers:'';tools_menu.shapes_to_markers.scan_layers:'';tools_menu.shapes_to_markers.scan_layers_flat:'';tools_menu.technologies:'';tools_menu.trace_all_nets_menu:'';tools_menu.trace_all_nets_menu.trace_all_nets:'Ctrl+Q';tools_menu.trace_all_nets_menu.trace_all_nets_flat:'';tools_menu.xor_tool:'';tools_menu.xsection_script_submenu:'';tools_menu.xsection_script_submenu.xsection_for_technology:'';tools_menu.xsection_script_submenu.xsection_script_load:'';view_menu:'';view_menu.default_grid:'';view_menu.default_grid.default_grid_1:'';view_menu.default_grid.default_grid_2:'';view_menu.default_grid.default_grid_3:'';view_menu.no_stipples:'';view_menu.reset_window_state:'';view_menu.show_bookmarks_view:'';view_menu.show_cell_boxes:'';view_menu.show_grid:'';view_menu.show_hierarchy_panel:'';view_menu.show_layer_panel:'';view_menu.show_layer_toolbox:'';view_menu.show_libraries_view:'';view_menu.show_markers:'';view_menu.show_navigator:'';view_menu.show_texts:'';view_menu.show_toolbar:'';view_menu.synchronized_views:'';view_menu.transient_selection:'';zoom_menu:'';zoom_menu.ascend:'';zoom_menu.dec_max_hier:'';zoom_menu.descend:'';zoom_menu.global_trans:'';zoom_menu.global_trans.m0:'';zoom_menu.global_trans.m135:'';zoom_menu.global_trans.m45:'';zoom_menu.global_trans.m90:'';zoom_menu.global_trans.r0:'';zoom_menu.global_trans.r180:'';zoom_menu.global_trans.r270:'';zoom_menu.global_trans.r90:'';zoom_menu.goto_position:'';zoom_menu.inc_max_hier:'';zoom_menu.max_hier:'';zoom_menu.max_hier_0:'';zoom_menu.max_hier_1:'';zoom_menu.next_display_state:'';zoom_menu.prev_display_state:'';zoom_menu.redraw:'';zoom_menu.select_cell:'';zoom_menu.select_current_cell:'';zoom_menu.synchronized_views:'';zoom_menu.zoom_fit:F;zoom_menu.zoom_fit_sel:'';zoom_menu.zoom_in:Z;zoom_menu.zoom_out:'Shift+Z';edit_menu.select_menu.pi_enable_14:'';file_menu.open_recent_menu.open_recent_10:'';file_menu.open_recent_menu.open_recent_3:'';file_menu.open_recent_menu.open_recent_4:'';file_menu.open_recent_menu.open_recent_5:'';file_menu.open_recent_menu.open_recent_6:'';file_menu.open_recent_menu.open_recent_7:'';file_menu.open_recent_menu.open_recent_8:'';file_menu.open_recent_menu.open_recent_9:'';tools_menu.drc.macro_in_menu_drc:'';'@hcp_context_menu.copy':'';'@hcp_context_menu.cut':'';'@hcp_context_menu.delete_cell':'';'@hcp_context_menu.flatten_cell':'';'@hcp_context_menu.new_cell':'';'@hcp_context_menu.paste':'';'@hcp_context_menu.rename_cell':'';'@hcp_context_menu.replace_cell':'';'@toolbar.box':'';'@toolbar.combine_mode':'';'@toolbar.instance':'';'@toolbar.partial':'';'@toolbar.path':'';'@toolbar.polygon':'';'@toolbar.text':'';edit_menu.cell_menu:'';edit_menu.cell_menu.adjust_cell_origin:'';edit_menu.cell_menu.convert_cell_to_static:'';edit_menu.cell_menu.delete_cell:'';edit_menu.cell_menu.flatten_cell:'';edit_menu.cell_menu.new_cell:'';edit_menu.cell_menu.rename_cell:'';edit_menu.cell_menu.replace_cell:'';edit_menu.cell_menu.user_properties:'';edit_menu.edit_options:'';edit_menu.layer_menu:'';edit_menu.layer_menu.boolean:'';edit_menu.layer_menu.clear_layer:'';edit_menu.layer_menu.copy_layer:'';edit_menu.layer_menu.delete_layer:'';edit_menu.layer_menu.edit_layer:'';edit_menu.layer_menu.merge:'';edit_menu.layer_menu.new_layer:'';edit_menu.layer_menu.size:'';edit_menu.layout_menu:'';edit_menu.layout_menu.lay_convert_to_static:'';edit_menu.layout_menu.lay_flip_x:'';edit_menu.layout_menu.lay_flip_y:'';edit_menu.layout_menu.lay_free_rot:'';edit_menu.layout_menu.lay_move:'';edit_menu.layout_menu.lay_rot_ccw:'';edit_menu.layout_menu.lay_rot_cw:'';edit_menu.layout_menu.lay_scale:'';edit_menu.mode_menu.box:'';edit_menu.mode_menu.instance:'';edit_menu.mode_menu.partial:'';edit_menu.mode_menu.path:'';edit_menu.mode_menu.polygon:'';edit_menu.mode_menu.text:'';edit_menu.search_replace_editor:'';edit_menu.selection_menu.align:'';edit_menu.selection_menu.change_layer:'';edit_menu.selection_menu.convert_to_cell:'';edit_menu.selection_menu.convert_to_pcell:'';edit_menu.selection_menu.difference:'';edit_menu.selection_menu.flatten_insts:'';edit_menu.selection_menu.intersection:'';edit_menu.selection_menu.make_array:'';edit_menu.selection_menu.make_cell:'';edit_menu.selection_menu.make_cell_variants:'';edit_menu.selection_menu.move_hier_up:'';edit_menu.selection_menu.resolve_arefs:'';edit_menu.selection_menu.round_corners:'';edit_menu.selection_menu.separate:'';edit_menu.selection_menu.size:'';edit_menu.selection_menu.tap:'';edit_menu.selection_menu.union:'';edit_menu.utils_menu:'';edit_menu.utils_menu.clip_tool:'';edit_menu.utils_menu.fill_tool:'';file_menu.new_layout:'';file_menu.new_panel:'';view_menu.edit_top_level_selection:'';tools_menu.drc.macro_in_menu_drc_sky130:'';tools_menu.drc.macro_in_menu_drc_sky130_1:'';tools_menu.lvs.macro_in_menu_lvs_sky130:'';'@hcp_context_menu.macro_in_menu_replace_cells':'';'@hcp_context_menu.macro_in_menu_write_childcells':'';'@hcp_context_menu.sorting.by_area_reverse':'';'@secrets.select_next_item':'';'@secrets.select_next_item_add':'';bookmark_menu.open_recent_menu_bookmarks:'';edit_menu.select_menu.pi_enable_16:'';edit_menu.select_menu.pi_enable_18:'';edit_menu.select_menu.pi_enable_19:'';edit_menu.select_menu.pi_enable_20:'';edit_menu.selection_menu.macro_in_menu_scale_anisotropic:'';file_menu.macro_in_menu_screenshot:'';file_menu.open_recent_menu_layer_props:'';file_menu.open_recent_menu_sessions:'';macros_menu.macro_in_menu_array_of_labels:'';tools_menu.macro_in_menu_calc_area:'';tools_menu.macro_in_menu_calc_area_hier:'';tools_menu.macro_in_menu_cell_bbox:'';tools_menu.macro_in_menu_dump_flat_shapes:'';tools_menu.macro_in_menu_list_layers:'';tools_menu.macro_in_menu_search_odd_width_paths:'';view_menu.mouse_tracking:'';view_menu.show_images:'';tools_menu.drc.macro_in_menu_drc_1:'';tools_menu.drc.macro_in_menu_drc_2:'' + CIRCUIT_ + DEVICE_ + NET_ + 'PR_' + true + true + 1000 + #800000 + 255,0,0 0,255,0 0,0,255 0,0,0 255,0,255 0,255,255 160,80,255 136,45,0 + true + -1 + 1 + 50 + 3 + false + -1 + 100000000 + false + 1 + dont-change + NetlistBrowserDialog="AdnQywACAAAAAAG6AAAAAAAABZwAAAP4AAABvQAAAB0AAAWZAAAD9QAAAAAAAAAABpA=";splitter_2="AAAA/wAAAAEAAAABAAACAAEAAAAGAQAAAAEB";splitter="AAAA/wAAAAEAAAACAAAAAAAAA/ABAAAABgEAAAABAQ==";directory_tree="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAADAgAAAAEAAAABAAAAGQAAA7UAAAADAQEAAQAAAAAAAAAAAAAAAJYAAAAZAAAAgQAAAAAAAAADAAABtAAAAAEAAAAAAAAAAAAAAAEAAAAAAAACAQAAAAEAAAAAAAAD6AEAAACW";hierarchy_tree="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQAAAQAAAAAAAAAAAAAAAGQAAAAZAAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AEAAABk"; + false + true + false + true + + 0 1 2 3 + + python + + + true + true + DejaVu Sans + 13 + + 2 + + false + true + basic:'Alert'=(bold:true,color:'#bf0303',background:'#f7e7e7'),'Attribute'=(color:'#0057ae'),'Base-N Integer'=(color:'#b07e00'),'Built-in'=(bold:true,color:'#644a9b'),'Character'=(color:'#ff80e0'),'Comment'=(italic:true,color:'#888786'),'Control Flow'=(bold:true,color:'#1f1c1b'),'Data Type'=(color:'#0057ae'),'Decimal/Value'=(color:'#b07e00'),'Error'=(color:'#bf0303'),'Extension'=(color:'#0095ff'),'Floating Point'=(color:'#b07e00'),'Function'=(color:'#442886'),'Import'=(color:'#ff5500'),'Keyword'=(bold:true),'Normal'=(),'Operator'=(color:'#1f1c1b'),'Others'=(color:'#006e26'),'Preprocessor'=(color:'#006e28'),'Region Marker'=(color:'#0057ae',background:'#e1eaf8'),'Special Character'=(color:'#3daee9'),'Special String'=(color:'#ff5500'),'String'=(color:'#bf0303'),'Variable'=(color:'#0057ae'),'Verbatim String'=(color:'#bf0303');ruby:'Access Control'=(color:'#0000ff'),'Attribute Definition'=(),'Bin'=(),'Blockcomment'=(),'Char'=(),'Class Variable'=(),'Command'=(color:'#aa3000'),'Comment'=(),'Constant'=(),'Constant Value'=(color:'#bb1188'),'Data'=(),'Dec'=(),'Default globals'=(bold:true,color:'#c00000'),'Definition'=(),'Delimiter'=(color:'#ff9fec'),'Error'=(),'Expression'=(),'Float'=(),'GDL input'=(),'Global Constant'=(bold:true,color:'#bb1188'),'Global Variable'=(color:'#c00000'),'Here Document'=(),'Hex'=(),'Instance Variable'=(),'Kernel methods'=(color:'#000080'),'Keyword'=(),'Member'=(),'Message'=(color:'#4000a7'),'Module mixin methods'=(color:'#000080'),'Normal Text'=(),'Octal'=(),'Operator'=(color:'#ff9fec'),'Pseudo variable'=(),'RDoc Value'=(),'Raw String'=(color:'#dd4a4a'),'Region Marker'=(color:'#0000ff'),'Regular Expression'=(color:'#4a5704'),'String'=(),'Substitution'=(),'Symbol'=(color:'#d40000');python:'Builtin Function'=(),'ClassNames'=(italic:false,bold:true,color:'#fcad3d'),'Comment'=(),'Complex'=(),'Decorator'=(),'Definition Keyword'=(),'Error'=(),'Exceptions'=(),'Extensions'=(),'F-String'=(),'Float'=(),'Flow Control Keyword'=(),'Hex'=(),'Import'=(),'Int'=(),'Normal Text'=(),'Octal'=(),'Operator'=(),'Operator Keyword'=(),'Overloaders'=(),'Raw F-String'=(),'Raw String'=(),'Special Variable'=(),'String'=(),'String Char'=(),'String Substitution'=(); + 8 + + MacroEditorDialog="AdnQywACAAAAAAGRAAABrgAABYYAAATGAAABlAAAAcsAAAWDAAAEwwAAAAAAAAAACgA=";splitter="AAAA/wAAAAEAAAADAAAAnAAAAGQAAACOAQAAAAYBAAAAAgE=";splitter_2="AAAA/wAAAAEAAAADAAAAVAAAAFQAAABUAQAAAAYBAAAAAQE=";watchList="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAAAZAAAAAEAAAAAAAAAZAAAAAEAAAAAAAAD6AD/////";variableList="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAAAACAQAAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAAAZAAAAAEAAAAAAAAAZAAAAAEAAAAAAAAD6AD/////";mainHSplitter="AAAA/wAAAAEAAAACAAABEAAAA8MBAAAABgEAAAABAQ==";splitter_7="AAAA/wAAAAEAAAABAAAAiwAAAAAGAQAAAAEB";lvs_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";drc_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";pymacros_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAGQAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAAAZAAAAAEAAAAAAAAD6AAAAABk";macros_tree="AAAA/wAAAAAAAAABAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQoAAAABAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAABAAABCgAAAAEAAAAAAAAD6AAAAABk"; + true + '@@navigator_menu.navigator_main_menu.navigator_all_hier_levels':false;'@@navigator_menu.navigator_main_menu.navigator_freeze':false;'@@navigator_menu.navigator_main_menu.navigator_show_images':false;'@bookmarks_context_menu.follow_selection':false;'@bookmarks_context_menu.load_bookmarks':false;'@bookmarks_context_menu.manage_bookmarks':false;'@bookmarks_context_menu.save_bookmarks':false;'@hcp_context_menu.cell_user_properties':false;'@hcp_context_menu.flat_mode':false;'@hcp_context_menu.hide_cell':false;'@hcp_context_menu.open_current':false;'@hcp_context_menu.save_cell_as':false;'@hcp_context_menu.show_all':false;'@hcp_context_menu.show_as_top':false;'@hcp_context_menu.show_cell':false;'@hcp_context_menu.sorting.by_area':false;'@hcp_context_menu.sorting.by_name':false;'@hcp_context_menu.split_mode':false;'@lcp_context_menu.add_others':false;'@lcp_context_menu.clean_up':false;'@lcp_context_menu.copy':false;'@lcp_context_menu.cut':false;'@lcp_context_menu.del':false;'@lcp_context_menu.group':false;'@lcp_context_menu.hide':false;'@lcp_context_menu.hide_all':false;'@lcp_context_menu.hide_empty_layers':false;'@lcp_context_menu.insert':false;'@lcp_context_menu.invvalid':false;'@lcp_context_menu.paste':false;'@lcp_context_menu.regroup_menu.flatten':false;'@lcp_context_menu.regroup_menu.grp_d':false;'@lcp_context_menu.regroup_menu.grp_i':false;'@lcp_context_menu.regroup_menu.grp_l':false;'@lcp_context_menu.rename':false;'@lcp_context_menu.select_all':false;'@lcp_context_menu.select_source':false;'@lcp_context_menu.show':false;'@lcp_context_menu.show_all':false;'@lcp_context_menu.show_only':false;'@lcp_context_menu.sort_menu.sort_dli':false;'@lcp_context_menu.sort_menu.sort_idl':false;'@lcp_context_menu.sort_menu.sort_ild':false;'@lcp_context_menu.sort_menu.sort_ldi':false;'@lcp_context_menu.sort_menu.sort_name':false;'@lcp_context_menu.tab_menu.new_tab':false;'@lcp_context_menu.tab_menu.remove_tab':false;'@lcp_context_menu.tab_menu.rename_tab':false;'@lcp_context_menu.test_shapes_in_view':false;'@lcp_context_menu.ungroup':false;'@lcp_context_menu.valid':false;'@lcp_tabs_context_menu.new_tab':false;'@lcp_tabs_context_menu.remove_tab':false;'@lcp_tabs_context_menu.rename_tab':false;'@secrets.duplicate_interactive':false;'@secrets.paste_interactive':false;'@secrets.sel_move_interactive':false;'@toolbar.move':false;'@toolbar.next_display_state':false;'@toolbar.prev_display_state':false;'@toolbar.ruler':false;'@toolbar.select':false;'@toolbar.technology_selector':false;bookmark_menu:false;bookmark_menu.bookmark_view:false;bookmark_menu.goto_bookmark_menu:false;bookmark_menu.load_bookmarks:false;bookmark_menu.manage_bookmarks:false;bookmark_menu.save_bookmarks:false;edit_menu:false;edit_menu.add_image:false;edit_menu.cancel:false;edit_menu.clear_all_rulers:false;edit_menu.configure_rulers:false;edit_menu.copy:false;edit_menu.cut:false;edit_menu.delete:false;edit_menu.duplicate:false;edit_menu.image_menu:false;edit_menu.image_menu.bring_to_back:false;edit_menu.image_menu.bring_to_front:false;edit_menu.image_menu.clear_all_images:false;edit_menu.mode_menu:false;edit_menu.mode_menu.move:false;edit_menu.mode_menu.ruler:false;edit_menu.mode_menu.select:false;edit_menu.paste:false;edit_menu.redo:false;edit_menu.search_replace_viewer:false;edit_menu.select_menu:false;edit_menu.select_menu.disable_all:false;edit_menu.select_menu.enable_all:false;edit_menu.select_menu.pi_enable_10:false;edit_menu.select_menu.pi_enable_11:false;edit_menu.select_menu.pi_enable_12:false;edit_menu.select_menu.pi_enable_13:false;edit_menu.select_menu.pi_enable_15:false;edit_menu.select_menu.pi_enable_7:false;edit_menu.select_menu.pi_enable_8:false;edit_menu.select_menu.pi_enable_9:false;edit_menu.select_menu.select_all:false;edit_menu.select_menu.unselect_all:false;edit_menu.selection_menu:false;edit_menu.selection_menu.sel_flip_x:false;edit_menu.selection_menu.sel_flip_y:false;edit_menu.selection_menu.sel_free_rot:false;edit_menu.selection_menu.sel_move:false;edit_menu.selection_menu.sel_move_to:false;edit_menu.selection_menu.sel_rot_ccw:false;edit_menu.selection_menu.sel_rot_cw:false;edit_menu.selection_menu.sel_scale:false;edit_menu.show_properties:false;edit_menu.undo:false;file_menu:false;file_menu.clone:false;file_menu.close:false;file_menu.close_all:false;file_menu.exit:false;file_menu.import_menu:false;file_menu.import_menu.import_def:false;file_menu.import_menu.import_gerber_menu:false;file_menu.import_menu.import_gerber_menu.import_gerber_new:false;file_menu.import_menu.import_gerber_menu.import_gerber_new_free:false;file_menu.import_menu.import_gerber_menu.import_gerber_open:false;file_menu.import_menu.import_gerber_menu.import_gerber_recent:false;file_menu.import_menu.import_lef:false;file_menu.import_menu.import_stream:false;file_menu.layout_props:false;file_menu.layout_stats:false;file_menu.load_layer_props:false;file_menu.open:false;file_menu.open_new_panel:false;file_menu.open_recent_menu:false;file_menu.open_recent_menu.open_recent_1:false;file_menu.open_recent_menu.open_recent_2:false;file_menu.open_same_panel:false;file_menu.print:false;file_menu.pull_in:false;file_menu.reader_options:false;file_menu.reload:false;file_menu.restore_session:false;file_menu.save:false;file_menu.save_all:false;file_menu.save_as:false;file_menu.save_layer_props:false;file_menu.save_session:false;file_menu.screenshot:false;file_menu.setup:false;file_menu.view_log:false;file_menu.writer_options:false;help_menu:false;help_menu.about:false;help_menu.about_qt:false;help_menu.assistant:false;help_menu.show_all_tips:false;macros_menu:false;macros_menu.examples:false;macros_menu.examples.macro_in_menu_browser:false;macros_menu.examples.macro_in_menu_datamap:false;macros_menu.examples.macro_in_menu_dump_menu:false;macros_menu.examples.macro_in_menu_flatten:false;macros_menu.examples.macro_in_menu_fractal:false;macros_menu.examples.macro_in_menu_qtdialog:false;macros_menu.examples.macro_in_menu_qtrubyserver:false;macros_menu.examples.macro_in_menu_screenshots:false;macros_menu.examples.macro_in_menu_sokoban:false;macros_menu.macro_development:false;tools_menu:false;tools_menu.browse_instances:false;tools_menu.browse_markers:false;tools_menu.browse_netlists:false;tools_menu.browse_shapes:false;tools_menu.diff_tool:false;tools_menu.drc:false;tools_menu.drc.edit_script:false;tools_menu.drc.new_script:false;tools_menu.edit_layer_stack:false;tools_menu.lvs:false;tools_menu.lvs.edit_script:false;tools_menu.lvs.macro_in_menu_lvs:false;tools_menu.lvs.new_script:false;tools_menu.net_trace:false;tools_menu.packages:false;tools_menu.shapes_to_markers:false;tools_menu.shapes_to_markers.scan_layers:false;tools_menu.shapes_to_markers.scan_layers_flat:false;tools_menu.technologies:false;tools_menu.trace_all_nets_menu:false;tools_menu.trace_all_nets_menu.trace_all_nets:false;tools_menu.trace_all_nets_menu.trace_all_nets_flat:false;tools_menu.xor_tool:false;tools_menu.xsection_script_submenu:false;tools_menu.xsection_script_submenu.xsection_for_technology:false;tools_menu.xsection_script_submenu.xsection_script_load:false;view_menu:false;view_menu.default_grid:false;view_menu.default_grid.default_grid_1:false;view_menu.default_grid.default_grid_2:false;view_menu.default_grid.default_grid_3:false;view_menu.no_stipples:false;view_menu.reset_window_state:false;view_menu.show_bookmarks_view:false;view_menu.show_cell_boxes:false;view_menu.show_grid:false;view_menu.show_hierarchy_panel:false;view_menu.show_layer_panel:false;view_menu.show_layer_toolbox:false;view_menu.show_libraries_view:false;view_menu.show_markers:false;view_menu.show_navigator:false;view_menu.show_texts:false;view_menu.show_toolbar:false;view_menu.synchronized_views:false;view_menu.transient_selection:false;zoom_menu:false;zoom_menu.ascend:false;zoom_menu.dec_max_hier:false;zoom_menu.descend:false;zoom_menu.global_trans:false;zoom_menu.global_trans.m0:false;zoom_menu.global_trans.m135:false;zoom_menu.global_trans.m45:false;zoom_menu.global_trans.m90:false;zoom_menu.global_trans.r0:false;zoom_menu.global_trans.r180:false;zoom_menu.global_trans.r270:false;zoom_menu.global_trans.r90:false;zoom_menu.goto_position:false;zoom_menu.inc_max_hier:false;zoom_menu.max_hier:false;zoom_menu.max_hier_0:false;zoom_menu.max_hier_1:false;zoom_menu.next_display_state:false;zoom_menu.prev_display_state:false;zoom_menu.redraw:false;zoom_menu.select_cell:false;zoom_menu.select_current_cell:false;zoom_menu.synchronized_views:false;zoom_menu.zoom_fit:false;zoom_menu.zoom_fit_sel:false;zoom_menu.zoom_in:false;zoom_menu.zoom_out:false;edit_menu.select_menu.pi_enable_14:false;file_menu.open_recent_menu.open_recent_10:false;file_menu.open_recent_menu.open_recent_3:false;file_menu.open_recent_menu.open_recent_4:false;file_menu.open_recent_menu.open_recent_5:false;file_menu.open_recent_menu.open_recent_6:false;file_menu.open_recent_menu.open_recent_7:false;file_menu.open_recent_menu.open_recent_8:false;file_menu.open_recent_menu.open_recent_9:false;tools_menu.drc.macro_in_menu_drc:false;'@hcp_context_menu.copy':false;'@hcp_context_menu.cut':false;'@hcp_context_menu.delete_cell':false;'@hcp_context_menu.flatten_cell':false;'@hcp_context_menu.new_cell':false;'@hcp_context_menu.paste':false;'@hcp_context_menu.rename_cell':false;'@hcp_context_menu.replace_cell':false;'@toolbar.box':false;'@toolbar.combine_mode':false;'@toolbar.instance':false;'@toolbar.partial':false;'@toolbar.path':false;'@toolbar.polygon':false;'@toolbar.text':false;edit_menu.cell_menu:false;edit_menu.cell_menu.adjust_cell_origin:false;edit_menu.cell_menu.convert_cell_to_static:false;edit_menu.cell_menu.delete_cell:false;edit_menu.cell_menu.flatten_cell:false;edit_menu.cell_menu.new_cell:false;edit_menu.cell_menu.rename_cell:false;edit_menu.cell_menu.replace_cell:false;edit_menu.cell_menu.user_properties:false;edit_menu.edit_options:false;edit_menu.layer_menu:false;edit_menu.layer_menu.boolean:false;edit_menu.layer_menu.clear_layer:false;edit_menu.layer_menu.copy_layer:false;edit_menu.layer_menu.delete_layer:false;edit_menu.layer_menu.edit_layer:false;edit_menu.layer_menu.merge:false;edit_menu.layer_menu.new_layer:false;edit_menu.layer_menu.size:false;edit_menu.layout_menu:false;edit_menu.layout_menu.lay_convert_to_static:false;edit_menu.layout_menu.lay_flip_x:false;edit_menu.layout_menu.lay_flip_y:false;edit_menu.layout_menu.lay_free_rot:false;edit_menu.layout_menu.lay_move:false;edit_menu.layout_menu.lay_rot_ccw:false;edit_menu.layout_menu.lay_rot_cw:false;edit_menu.layout_menu.lay_scale:false;edit_menu.mode_menu.box:false;edit_menu.mode_menu.instance:false;edit_menu.mode_menu.partial:false;edit_menu.mode_menu.path:false;edit_menu.mode_menu.polygon:false;edit_menu.mode_menu.text:false;edit_menu.search_replace_editor:false;edit_menu.selection_menu.align:false;edit_menu.selection_menu.change_layer:false;edit_menu.selection_menu.convert_to_cell:false;edit_menu.selection_menu.convert_to_pcell:false;edit_menu.selection_menu.difference:false;edit_menu.selection_menu.flatten_insts:false;edit_menu.selection_menu.intersection:false;edit_menu.selection_menu.make_array:false;edit_menu.selection_menu.make_cell:false;edit_menu.selection_menu.make_cell_variants:false;edit_menu.selection_menu.move_hier_up:false;edit_menu.selection_menu.resolve_arefs:false;edit_menu.selection_menu.round_corners:false;edit_menu.selection_menu.separate:false;edit_menu.selection_menu.size:false;edit_menu.selection_menu.tap:false;edit_menu.selection_menu.union:false;edit_menu.utils_menu:false;edit_menu.utils_menu.clip_tool:false;edit_menu.utils_menu.fill_tool:false;file_menu.new_layout:false;file_menu.new_panel:false;view_menu.edit_top_level_selection:false;tools_menu.drc.macro_in_menu_drc_sky130:false;tools_menu.drc.macro_in_menu_drc_sky130_1:false;tools_menu.lvs.macro_in_menu_lvs_sky130:false;'@hcp_context_menu.macro_in_menu_replace_cells':false;'@hcp_context_menu.macro_in_menu_write_childcells':false;'@hcp_context_menu.sorting.by_area_reverse':false;'@secrets.select_next_item':false;'@secrets.select_next_item_add':false;bookmark_menu.open_recent_menu_bookmarks:false;edit_menu.select_menu.pi_enable_16:false;edit_menu.select_menu.pi_enable_18:false;edit_menu.select_menu.pi_enable_19:false;edit_menu.select_menu.pi_enable_20:false;edit_menu.selection_menu.macro_in_menu_scale_anisotropic:false;file_menu.macro_in_menu_screenshot:false;file_menu.open_recent_menu_layer_props:false;file_menu.open_recent_menu_sessions:false;macros_menu.macro_in_menu_array_of_labels:false;tools_menu.macro_in_menu_calc_area:false;tools_menu.macro_in_menu_calc_area_hier:false;tools_menu.macro_in_menu_cell_bbox:false;tools_menu.macro_in_menu_dump_flat_shapes:false;tools_menu.macro_in_menu_list_layers:false;tools_menu.macro_in_menu_search_odd_width_paths:false;view_menu.mouse_tracking:false;view_menu.show_images:false;tools_menu.drc.macro_in_menu_drc_1:false;tools_menu.drc.macro_in_menu_drc_2:false + 16 + 1 + '/mnt/shuttles/mpw-two-b/slot-005/fabulous_sky/gds/user_project_wrapper.gds.gz'@'sky130A' '/mnt/shuttles/mpw-two-b/slot-005/fabulous_sky/gds/user_project_wrapper.gds.gz.x'@'sky130A' '/mnt/shuttles/mpw-two-b/slot-021/SOFA-Plus-eFPGA/gds/user_project_wrapper.gds.gz'@'sky130A' '/mnt/shuttles/mpw-two-b/slot-005/fabulous_sky/gds/xor.gds'@'sky130A' '/mnt/shuttles/mpw-two-b/slot-005/fabulous_sky/gds/user_project_wrapper.gds.gz.ef'@'sky130A' '/mnt/shuttles/mpw-two-b/slot-012/fuserisc/gds/user_project_wrapper.gds.gz'@'sky130A' '/mnt/shuttles/mpw-two/slot-025/fast_gcd_for_large_i/gds/caravel_00020019.oas'@'sky130A' '/mnt/shuttles/mpw-two/slot-013/amsat_txrx_ic_mpw2/gds/caravel_0002000d.oas'@'sky130A' '/mnt/shuttles/mpw-two/slot-008/lexicon/gds/caravel_00020008.oas'@'sky130A' '/mnt/shuttles/mpw-two/slot-005/fabulous_sky/gds/caravel_00020005.oas'@'sky130A' + + + + false + true + false + auto + 255,0,0 0,255,0 0,0,255 255,255,0 255,0,255 0,255,255 160,80,255 255,160,0 + true + -1 + -1 + 50 + -1 + -1 + 1000000 + 0 + 1 + dont-change + 0.15 + 2 + + database-top + #ff0000 + -1 + 1 + 3 + -1 + 10000000 + false + 3 + fit-marker + MarkerBrowserDialog="AdnQywACAAAAAAXtAAACiQAAB/UAAATRAAAF8AAAAqYAAAfyAAAEzgAAAAAAAAAACBE=";splitter_2="AAAA/wAAAAEAAAACAAABAAAAAOsBAAAABgEAAAABAQ==";splitter="AAAA/wAAAAEAAAACAAAA+wAAAP8BAAAABgEAAAACAQ==";markers_list="AAAA/wAAAAAAAAABAAAAAQAAAAMBAAAABAAAAAAAAAACAAAAAwAAAAEAAAAEAAAAAAAAAAMAAAABAAAAAgAAAAAAAAAAAAAE9AAAAAQBAQABAAAAAAAAAAAAAAAAZAAAABgAAACBAAAAAAAAAAQAAABkAAAAAQAAAAAAAANPAAAAAQAAAAAAAABkAAAAAQAAAAAAAADdAAAAAQAAAAAAAAPoAAAAAN0=";directory_tree="AAAA/wAAAAAAAAABAAAAAQAAAAEBAAAAAAAAAAAAAAAAAAAAAAAAAesAAAACAQEAAQAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAACAAABCgAAAAEAAAAAAAAA4QAAAAEAAAAAAAAD6AD/////"; + false + #ff0000 + true + true + true + any + 8 + mode=normal,title=Ruler,category=_ruler,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=diag,snap=true,angle_constraint=global;mode=single_click,title=Cross,category=_cross,fmt='$U,$V',fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=diag,snap=true,angle_constraint=global;mode=auto_metric,title=Measure,category=_measure,fmt=$D,fmt_x=$X,fmt_y=$Y,position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=ruler,outline=diag,snap=true,angle_constraint=global;mode=normal,title=Ellipse,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=line,outline=ellipse,snap=true,angle_constraint=global;mode=normal,title=Box,category='',fmt='',fmt_x='W=$(abs(X))',fmt_y='H=$(abs(Y))',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=cross_both,outline=box,snap=true,angle_constraint=global;mode=normal,title=XSection,category=XS,fmt=XS,fmt_x='',fmt_y='',position=auto,xalign=auto,yalign=auto,xlabel_xalign=auto,xlabel_yalign=auto,ylabel_xalign=auto,ylabel_yalign=auto,style=arrow_both,outline=diag,snap=true,angle_constraint=global + -1 + + 5 + 0 + #ff0000 + 1 + true + false + 1 + true + 3 + + any-top + 100000000 + 100000000 + 1 + dont-change + + false + true + true + true + false + false + false + true + false + false + current-cell + == + + + == + + ~ + deconv_kernel_estimator_to_VIA15 + + == + + == + + == + + + == + + == + + + == + + + == + + == + + ~ + + 1000 + delete + 'instances of cell deconv_kernel_estimator_top_level.* where cell_name ~ "deconv_kernel_estimator_to_VIA15"';'delete instances of cell deconv_kernel_estimator_top_level.* where cell_name ~ "deconv_kernel_estimator_to_VIA15"' + instance + + 1 + fit-marker + search_replace_dialog="AdnQywACAAAAAACKAAAAwQAABcwAAAM3AAAAjQAAAN4AAAXJAAADNAAAAAAAAAAABoA=";splitter="AAAA/wAAAAEAAAACAAABTQAAAQAB/////wEAAAABAA==";results="AAAA/wAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx0AAAAEAQAAAAAAAAAAAAAAAAAAAGT/////AAAAgQAAAAAAAAAEAAABggAAAAEAAAAAAAAA6wAAAAEAAAAAAAAAcQAAAAEAAAAAAAAAPwAAAAEAAAAAAAAD6AD/////"; + true + 0 1 2 3 4 5[1] 6 7 8 9[0] 10 11 12 13 14 15 + <?xml version="1.0" encoding="utf-8"?> +<stream-import-data> + <files> + <file>/mnt/shuttles/mpw-two-b/slot-012/fuserisc/gds/cus_tg_mux41_buf</file> + </files> + <cell-name/> + <layer-offset/> + <layer-mode>original</layer-mode> + <import-mode>extra</import-mode> + <reference-points> + </reference-points> + <explicit-trans>r0 *1 0,0</explicit-trans> + <options> + <gds2> + <box-mode>1</box-mode> + <allow-big-records>true</allow-big-records> + <allow-multi-xy-records>true</allow-multi-xy-records> + </gds2> + <common> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + <enable-properties>true</enable-properties> + <enable-text-objects>true</enable-text-objects> + </common> + <lefdef> + <read-all-layers>true</read-all-layers> + <layer-map>layer_map()</layer-map> + <dbu>0.001</dbu> + <produce-net-names>true</produce-net-names> + <net-property-name>#1</net-property-name> + <produce-inst-names>true</produce-inst-names> + <inst-property-name>#1</inst-property-name> + <produce-pin-names>false</produce-pin-names> + <pin-property-name>#1</pin-property-name> + <produce-cell-outlines>true</produce-cell-outlines> + <cell-outline-layer>OUTLINE</cell-outline-layer> + <produce-placement-blockages>true</produce-placement-blockages> + <placement-blockage-layer>PLACEMENT_BLK</placement-blockage-layer> + <produce-regions>true</produce-regions> + <region-layer>REGIONS</region-layer> + <produce-via-geometry>true</produce-via-geometry> + <via-geometry-suffix/> + <via-geometry-datatype>0</via-geometry-datatype> + <produce-pins>true</produce-pins> + <pins-suffix>.PIN</pins-suffix> + <pins-datatype>2</pins-datatype> + <produce-obstructions>true</produce-obstructions> + <obstructions-suffix>.OBS</obstructions-suffix> + <obstructions-datatype>3</obstructions-datatype> + <produce-blockages>true</produce-blockages> + <blockages-suffix>.BLK</blockages-suffix> + <blockages-datatype>4</blockages-datatype> + <produce-labels>true</produce-labels> + <labels-suffix>.LABEL</labels-suffix> + <labels-datatype>1</labels-datatype> + <produce-routing>true</produce-routing> + <routing-suffix/> + <routing-datatype>0</routing-datatype> + </lefdef> + <dxf> + <dbu>0.001</dbu> + <unit>1</unit> + <text-scaling>100</text-scaling> + <circle-points>100</circle-points> + <circle-accuracy>0</circle-accuracy> + <contour-accuracy>0</contour-accuracy> + <polyline-mode>0</polyline-mode> + <render-texts-as-polygons>false</render-texts-as-polygons> + <keep-other-cells>false</keep-other-cells> + <keep-layer-names>false</keep-layer-names> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + </dxf> + <cif> + <wire-mode>0</wire-mode> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + </cif> + <mag> + <lambda>1</lambda> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + <merge>true</merge> + <lib-paths> + </lib-paths> + </mag> + </options> +</stream-import-data> + + true + + <?xml version="1.0" encoding="utf-8"?> +<technologies> + <technology> + <name/> + <description>(Default)</description> + <group/> + <dbu>0.001</dbu> + <base-path/> + <original-base-path/> + <layer-properties_file/> + <add-other-layers>true</add-other-layers> + <reader-options> + <gds2> + <box-mode>1</box-mode> + <allow-big-records>true</allow-big-records> + <allow-multi-xy-records>true</allow-multi-xy-records> + </gds2> + <common> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + <enable-properties>true</enable-properties> + <enable-text-objects>true</enable-text-objects> + </common> + <lefdef> + <read-all-layers>true</read-all-layers> + <layer-map>layer_map()</layer-map> + <dbu>0.001</dbu> + <produce-net-names>true</produce-net-names> + <net-property-name>#1</net-property-name> + <produce-inst-names>true</produce-inst-names> + <inst-property-name>#1</inst-property-name> + <produce-pin-names>false</produce-pin-names> + <pin-property-name>#1</pin-property-name> + <produce-cell-outlines>true</produce-cell-outlines> + <cell-outline-layer>OUTLINE</cell-outline-layer> + <produce-placement-blockages>true</produce-placement-blockages> + <placement-blockage-layer>PLACEMENT_BLK</placement-blockage-layer> + <produce-regions>true</produce-regions> + <region-layer>REGIONS</region-layer> + <produce-via-geometry>true</produce-via-geometry> + <via-geometry-suffix/> + <via-geometry-datatype>0</via-geometry-datatype> + <produce-pins>true</produce-pins> + <pins-suffix>.PIN</pins-suffix> + <pins-datatype>2</pins-datatype> + <produce-obstructions>true</produce-obstructions> + <obstructions-suffix>.OBS</obstructions-suffix> + <obstructions-datatype>3</obstructions-datatype> + <produce-blockages>true</produce-blockages> + <blockages-suffix>.BLK</blockages-suffix> + <blockages-datatype>4</blockages-datatype> + <produce-labels>true</produce-labels> + <labels-suffix>.LABEL</labels-suffix> + <labels-datatype>1</labels-datatype> + <produce-routing>true</produce-routing> + <routing-suffix/> + <routing-datatype>0</routing-datatype> + </lefdef> + <dxf> + <dbu>0.001</dbu> + <unit>1</unit> + <text-scaling>100</text-scaling> + <circle-points>100</circle-points> + <circle-accuracy>0</circle-accuracy> + <contour-accuracy>0</contour-accuracy> + <polyline-mode>0</polyline-mode> + <render-texts-as-polygons>false</render-texts-as-polygons> + <keep-other-cells>false</keep-other-cells> + <keep-layer-names>false</keep-layer-names> + <create-other-layers>true</create-other-layers> + <layer-map>layer_map()</layer-map> + </dxf> + <cif> + <wire-mode>0</wire-mode> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + </cif> + <mag> + <lambda>1</lambda> + <dbu>0.001</dbu> + <layer-map>layer_map()</layer-map> + <create-other-layers>true</create-other-layers> + <keep-layer-names>false</keep-layer-names> + <merge>true</merge> + <lib-paths> + </lib-paths> + </mag> + </reader-options> + <writer-options> + <gds2> + <write-timestamps>true</write-timestamps> + <write-cell-properties>false</write-cell-properties> + <write-file-properties>false</write-file-properties> + <no-zero-length-paths>false</no-zero-length-paths> + <multi-xy-records>false</multi-xy-records> + <max-vertex-count>8000</max-vertex-count> + <max-cellname-length>32000</max-cellname-length> + <libname>LIB</libname> + </gds2> + <oasis> + <compression-level>2</compression-level> + <write-cblocks>false</write-cblocks> + <strict-mode>false</strict-mode> + <write-std-properties>1</write-std-properties> + <subst-char>*</subst-char> + <permissive>false</permissive> + </oasis> + <cif> + <polygon-mode>0</polygon-mode> + </cif> + <cif> + <dummy-calls>false</dummy-calls> + <blank-separator>false</blank-separator> + </cif> + <mag> + <lambda>0</lambda> + <tech/> + <write-timestamp>true</write-timestamp> + </mag> + </writer-options> + <connectivity> + </connectivity> + </technology> +</technologies> + + false + auto + 0 + true + true + only-top-level-shown-by-default=3,editor-mode=4,editor-mode=0,hide-empty-layers=4,hide-empty-layers=0,has-non-add-edit-combine-mode=4,has-non-add-edit-combine-mode=0 + auto + true + AdnQywACAAAAAADEAAAAAAAAB8QAAAT7AAAAxwAAAB0AAAfBAAAE+AAAAAAAAAAACBE= + AAAA/wAAAAD9AAAAAgAAAAAAAAGaAAAEePwCAAAABPsAAAAcAGgAcABfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAEAAABOAAAEeAAAABMA////+wAAACoAbgBhAHYAaQBnAGEAdABvAHIAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAACNAP////sAAAAgAGwAaQBiAHMAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAUgAAA5cAAAATAP////sAAAAcAGUAbwBfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAAAAAAA/////wAAAAAAAAAAAAAAAQAAANcAAAR4/AIAAAAD+wAAACoAYgBvAG8AawBtAGEAcgBrAHMAXwBkAG8AYwBrAF8AdwBpAGQAZwBlAHQAAAAAAP////8AAAATAP////sAAAAcAGwAcABfAGQAbwBjAGsAXwB3AGkAZABnAGUAdAEAAABOAAAD7QAAABMA////+wAAABwAbAB0AF8AZABvAGMAawBfAHcAaQBkAGcAZQB0AQAABEEAAACFAAAAhQAAAIUAAAR+AAAEeAAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAABAAAADgB0AG8AbwBsAGIAYQByAQAAAAD/////AAAAAAAAAAA= + false + true + false + false + all + + 90 + rdb + all + true + 200 + true + 0 + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc new file mode 100755 index 00000000..e2481410 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc @@ -0,0 +1,918 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = false # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = true # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +# use 4 cpu cores +threads(4) +# if more inof is needed, set true +verbose(true) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/0-4,6-43,45-*" +mcon_wildcard = "67/44" + +m1_wildcard = "68/0-4,6-43,45-*" +via_wildcard = "68/44" + +m2_wildcard = "69/0-4,6-43,45-*" +via2_wildcard = "69/44" + +m3_wildcard = "70/0-4,6-43,45-*" +via3_wildcard = "70/44" + +m4_wildcard = "71/0-4,6-43,45-*" +via4_wildcard = "71/44" + +m5_wildcard = "72/0-4,6-43,45-*" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# li +not_in_cell5 = source.select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.polygons(li_wildcard) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +in_cell5_li = li - not_in_cell5_li +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# rule li.2 not coded + +not_in_cell5_li.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.space(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5) +non_huge_m1 = m1 - huge_m1 + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5) +non_huge_m2 = m2 - huge_m2 + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5) +non_huge_m3 = m3 - huge_m3 + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +(huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") + +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# m4 +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5) +non_huge_m4 = m4 - huge_m4 + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc.sak b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc.sak new file mode 100755 index 00000000..e7a665ec --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lydrc.sak @@ -0,0 +1,869 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optional for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +# ... or with EXPLICIT TOPCELL: klayout -b -rd input=my_layout.gds -rd topcell=mychiptop -rd report=sky130_drc.txt -r drc_sky130.drc +if $input && $topcell + source($input, $topcell) +elsif $input + source($input) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +FEOL = true # front-end-of-line checks +BEOL = true # back-end-of-line checks +OFFGRID = true # manufacturing grid/angle checks + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +# use 4 cpu cores +threads(4) +# if more inof is needed, set true +verbose(false) + +# layers definitions +######################## +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) +li = input(67, 20) +mcon = polygons(67, 44) +m1 = polygons(68, 20) +via = polygons(68, 44) +m2 = polygons(69, 20) +via2 = polygons(69, 44) +m3 = polygons(70, 20) +via3 = polygons(70, 44) +m4 = polygons(71, 20) +via4 = polygons(71, 44) +m5 = polygons(72, 20) +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +info("DRC section") + +if FEOL +info("FEOL section") +gate = diff & poly + +# dnwell +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# dnwell.6 rue not coded + +# nwell +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +difftap = diff + tap +difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") +not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b" , "-s8fpls_pl8", "-s8fpls_rdrv4" , "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +not_in_cell1_diff = not_in_cell1.input(65, 20) +not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +(tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") +poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +not_in_cell3_poly = not_in_cell3.input(66, 20) +not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +varac = poly & tap & (nwell - hvi) - areaid_ce +tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +photodiode = dnwell & areaid_po +photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +npsdm = nsdm + psdm +nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +licon.not(poly.interacting(poly_rs)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs)).not_interacting((licon.and(poly.interacting(poly_rs)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +licon.and(poly.interacting(poly_rs)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +licon.interacting(licon.and(poly.interacting(poly_rs)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +licon.and(poly.interacting(poly_rs)).separation(licon.not(poly.interacting(poly_rs)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff) ") +diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# rule licon.9 not coded +licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +not_in_cell4_licon = not_in_cell4.input(66, 44) +not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +in_cell4_licon = in_cell4.input(66, 44) +in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# rules 11.b , 11.d not coded +diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") +poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") +npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# li +not_in_cell5 = layout(source.cell_obj).select("-s8rf2_xcmvpp_hd5_*") +not_in_cell5_li = not_in_cell5.input(67, 20) +not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") +in_cell5 = layout(source.cell_obj).select("+s8rf2_xcmvpp_hd5_*") +in_cell5_li = in_cell5.input(67, 20) +in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +# rule li.2 not coded +not_in_cell5_li.isolated(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +in_cell5_li.isolated(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") +licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# vpp +vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# rules 1.b, 1.c not coded +vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# rule vpp.10 not coded +# rule vpp.11 not coded because moscap is not defined properly by any gds layer +# rules vpp.12a, 12b, 12c not coded because specific to one cell +if backend_flow = CU + m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +end + +# CAPM +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +info("BEOL section") + +# ct +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.isolated(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded +mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +if backend_flow = CU + li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") + li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +end + +# m1 +huge_m1 = m1.sized(-1.5).sized(1.5) +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") +m1.isolated(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") +huge_m1.separation(m1, 0.28, euclidian).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(68, 20) +not_in_cell6_m1.enclosing(mcon, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(68, 20) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +if bakend_flow = CU + m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") + # rule m1.12 not coded because inconsistent with m1.11 + # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via +#rule via.3 not coded +via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +if backend_flow = CU + via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +end + +# m2 +huge_m2 = m2.sized(-1.5).sized(1.5) +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") +m2.isolated(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") +huge_m2.separation(m2, 0.28, euclidian).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.14 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +if bakend_flow = CU + m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via2 +#rule via233 not coded +via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +if backend_flow = CU + via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +end + +# m3 +huge_m3 = m3.sized(-1.5).sized(1.5) +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") +m3.isolated(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") +huge_m3.separation(m3, 0.4, euclidian).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") +# rule m3.3c not coded +m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +if bakend_flow = CU + m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +end + +# via3 +#rule via3.3 not coded +via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +if backend_flow = CU + via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +end + +# nsm +nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +if backend_flow = AL + nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") + nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") + nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") + nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") + nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") + nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") + nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") + nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") + nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") + nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +end + +# m4 +huge_m4 = m4.sized(-1.5).sized(1.5) +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") +m4.isolated(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") +m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +huge_m4.separation(m4, 0.4, euclidian).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") +via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") +m5.isolated(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") +via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# pad +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +info("FEOL section") + +# mf +mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# rules vhvi.4, vhvi.6 not coded +vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# rule hv.diff.3b not coded +poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +#poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +#dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# rules pwres.7a, pwres.7b not coded +pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +info("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lylvs b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lylvs new file mode 100755 index 00000000..3663572f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lylvs @@ -0,0 +1,220 @@ + + + + + lvs + + + + false + false + + true + lvs_scripts + tools_menu.lvs.end + dsl + lvs-dsl-xml + +# Extraction for SKY130 +# +############################ + +#report_netlist("report.txt") + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=my_report.lyrdb -rd schematic=reference_netlist.cir -rd target_netlist=extracted_netlist.cir -r sky130.lvs +if $input + source($input) +end + +# true: use net names instead of numbers +# false: use numbers for nets +spice_with_net_names = true + +# true: put in comments with details +# false: no comments +spice_with_comments = true + +# Write extracted netlist to extracted.cir using a special +# writer delegate + + +if $target_netlist + target_netlist($target_netlist) +else + # target_netlist("netlist.cir", write_spice(spice_with_net_names, spice_with_comments), "Generated by Klayout on : #{Time.now.strftime("%d/%m/%Y %H:%M")}") + target_netlist(File.join(File.dirname(RBA::CellView::active.filename), source.cell_name+"_extracted.spice"),write_spice(spice_with_net_names, spice_with_comments),"Extracted by KLayout on : #{Time.now.strftime("%d/%m/%Y %H:%M")}") +end + +# Hierarchical mode +deep +# Use 4 CPU cores +threads(4) +# Print details +verbose(true) + + +# layers definitions +######################## +BOUND = polygons(235, 4) +DNWELL = polygons(64, 18) +PWRES = polygons(64, 13) +NWELL = polygons(64, 20) +NWELLTXT = input(64, 5) +NWELLPIN = polygons(64, 16) +SUBTXT = input(122, 5) +SUBPIN = input(64, 59) +DIFF = polygons(65, 20) +TAP = polygons(65, 44) +PSDM = polygons(94, 20) +NSDM = polygons(93, 44) +LVTN = polygons(125, 44) +HVTR = polygons(18, 20) +HVTP = polygons(78, 44) +SONOS = polygons(80, 20) +COREID = polygons(81, 2) +STDCELL = polygons(81, 4) +NPNID = polygons(82, 20) +PNPID = polygons(82, 44) +RPM = polygons(86, 20) +URPM = polygons(79, 20) +LDNTM = polygons(11, 44) +HVNTM = polygons(125, 20) +POLY = polygons(66, 20) +POLYTXT = input(66, 5) +POLYPIN = polygons(66, 16) +HVI = polygons(75, 20) +LICON = polygons(66, 44) +NPC = polygons(95, 20) +DIFFRES = polygons(65, 13) +POLYRES = polygons(66, 13) +POLYSHO = polygons(66, 15) +DIODE = polygons(81, 23) +LI = polygons(67, 20) +LITXT = input(67, 5) +LIPIN = polygons(67, 16) +LIRES = polygons(67, 13) +MCON = polygons(67, 44) +MET1 = polygons(68, 20) +MET1TXT = input(68, 5) +MET1PIN = polygons(68, 16) +MET1RES = polygons(68, 13) +VIA1 = polygons(68, 44) +MET2 = polygons(69, 20) +MET2TXT = input(69, 5) +MET2PIN = polygons(69, 16) +MET2RES = polygons(69, 13) +VIA2 = polygons(69, 44) +MET3 = polygons(70, 20) +MET3TXT = input(70, 5) +MET3PIN = polygons(70, 16) +MET3RES = polygons(70, 13) +VIA3 = polygons(70, 44) +MET4 = polygons(71, 20) +MET4TXT = input(71, 5) +MET4PIN = polygons(71, 16) +MET4RES = polygons(71, 13) +VIA4 = polygons(71, 44) +MET5 = polygons(72, 20) +MET5TXT = input(72, 5) +MET5PIN = polygons(72, 16) +MET5RES = polygons(72, 13) +RDL = polygons(74, 20) +RDLTXT = input(74, 5) +RDLPIN = polygons(74, 16) +GLASS = polygons(76, 20) +CAPM = polygons(89, 44) +CAPM2 = polygons(97, 44) +LOWTAPD = polygons(81, 14) +FILLOBSM1 = polygons(62, 24) +FILLOBSM2 = polygons(105, 52) +FILLOBSM3 = polygons(107, 24) +FILLOBSM4 = polygons(112, 4) +NCM = polygons(92, 44) + +# Bulk layer for terminal provisioning +SUB = polygons(236, 0) +# SUB = polygon_layer + +# Computed layers +PDIFF = DIFF & NWELL & PSDM +NTAP = TAP & NWELL & NSDM +PGATE = PDIFF & POLY +PSD = PDIFF - PGATE +STD_PGATE = PGATE - HVTP - NCM - HVI +HVT_PGATE = PGATE & HVTP - NCM - HVI +HV5_PGATE = PGATE - HVTP - NCM & HVI + +NDIFF = DIFF - NWELL & NSDM +PTAP = TAP - NWELL & PSDM +NGATE = NDIFF & POLY +NSD = NDIFF - NGATE +STD_NGATE = NGATE - NCM - LVTN - HVI +LVT_NGATE = NGATE - NCM & LVTN - HVI +HV5_NGATE = NGATE - NCM - LVTN & HVI +HV5NA_NGATE = NGATE - NCM & LVTN & HVI + +# drawing to physical +device_scaling(1000000) + +# PMOS transistor device extraction +extract_devices(mos4("pfet_01v8"), { "SD" => PSD, "G" => STD_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) +extract_devices(mos4("pfet_01v8_hvt"), { "SD" => PSD, "G" => HVT_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) +extract_devices(mos4("pfet_g5v0d10v5"), { "SD" => PSD, "G" => HV5_PGATE, "tS" => PSD, "tD" => PSD, "tG" => POLY, "W" => NWELL }) + +# NMOS transistor device extraction +extract_devices(mos4("nfet_01v8"), { "SD" => NSD, "G" => STD_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_01v8_lvt"), { "SD" => NSD, "G" => LVT_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_g5v0d10v5"), { "SD" => NSD, "G" => HV5_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) +extract_devices(mos4("nfet_01v8_nvt"), { "SD" => NSD, "G" => HV5NA_NGATE, "tS" => NSD, "tD" => NSD, "tG" => POLY, "W" => SUB }) + + +# Define connectivity for netlist extraction + +# Inter-layer +connect(SUB, PTAP) +connect(NWELL, NTAP) +connect(LICON, PTAP) +connect(LICON, NTAP) +connect(PSD, LICON) +connect(NSD, LICON) +connect(POLY, LICON) +connect(LICON, LI) +connect(LI, MCON) +connect(MCON, MET1) +connect(MET1,VIA1) +connect(VIA1, MET2) +connect(MET2, VIA2) +connect(VIA2, MET3) +connect(MET3, VIA3) +connect(VIA3, MET4) +connect(MET4, VIA4) +connect(VIA4, MET5) +# Attaching labels +connect(SUB, SUBTXT) +connect(SUB, SUBPIN) +connect(NWELL, NWELLTXT) +connect(POLY, POLYTXT) +connect(LI, LITXT) +connect(MET1, MET1TXT) +connect(MET2, MET2TXT) +connect(MET3, MET3TXT) +connect(MET4, MET4TXT) +connect(MET5, MET5TXT) + +# Global +connect_global(SUB, "VNB") + +# Actually performs the extraction +netlist # ... not really required + +# Flatten cells which are present in one netlist only +# align +# SIMPLIFICATION of the netlist +netlist.make_top_level_pins +netlist.combine_devices +netlist.purge +netlist.purge_nets +netlist.simplify +puts netlist.to_s + + \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyp b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyp new file mode 100755 index 00000000..27935a37 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyp @@ -0,0 +1,8498 @@ + + + + #ccccd9 + #ccccd9 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + prBoundary.boundary - 235/4 + 235/4@1 + + + #00ffff + #00ffff + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + pwell.drawing - 64/44 + 64/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C37 + C0 + true + false + false + 1 + false + false + 0 + pwell.pin - 122/16 + 122/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + false + true + 1 + false + false + 0 + pwell.label - 64/59 + 64/59@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + pwell.res - 64/13 + 64/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pwell.cut - 64/14 + 64/14@1 + + + #ffffff + #96c8ff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + pwelliso.pin - 44/16 + 44/16@1 + + + #9900e6 + #9900e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pwelliso.label - 44/5 + 44/5@1 + + + #00cc66 + #00cc66 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + nwell.drawing - 64/20 + 64/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + C2 + C0 + true + true + false + 1 + false + false + 0 + nwell.net - 84/23 + 84/23@1 + + + #268c6b + #268c6b + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + nwell.pin - 64/16 + 64/16@1 + + + #333399 + #333399 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + nwell.label - 64/5 + 64/5@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C46 + C0 + true + false + false + 1 + false + false + 0 + dnwell.drawing - 64/18 + 64/18@1 + + + #00ffff + #00ffff + 0 + 0 + C6 + C0 + true + true + false + 1 + false + false + 0 + vhvi.drawing - 74/21 + 74/21@1 + + + #00ff00 + #00ff00 + 0 + 0 + C33 + C0 + true + false + false + 1 + false + false + 0 + diff.drawing - 65/20 + 65/20@1 + + + #00ff00 + #00ff00 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + diff.res - 65/13 + 65/13@1 + + + #00ff00 + #00ff00 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + diff.cut - 65/14 + 65/14@1 + + + #268c6b + #268c6b + 0 + 0 + C35 + C0 + false + true + false + 1 + false + false + 0 + diff.pin - 65/16 + 65/16@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + diff.label - 65/6 + 65/6@1 + + + #00ff00 + #00ff00 + 0 + 0 + C5 + C0 + false + true + false + 1 + false + false + 0 + diff.net - 65/23 + 65/23@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + diff.boundary - 65/4 + 65/4@1 + + + #9900e6 + #9900e6 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + diff.hv - 65/8 + 65/8@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C33 + C0 + true + false + false + 1 + false + false + 0 + tap.drawing - 65/44 + 65/44@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + tap.pin - 65/48 + 65/48@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + false + true + false + 1 + false + false + 0 + tap.net - 65/41 + 65/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + tap.boundary - 65/60 + 65/60@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + tap.label - 65/5 + 65/5@1 + + + #9900e6 + #9900e6 + 0 + 0 + C21 + C0 + true + false + false + 1 + false + false + 0 + psdm.drawing - 94/20 + 94/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C20 + C0 + true + false + false + 1 + false + false + 0 + nsdm.drawing - 93/44 + 93/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C40 + C0 + true + false + false + 1 + false + false + 0 + poly.drawing - 66/20 + 66/20@1 + + + #ff8000 + #ff8000 + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + poly.pin - 66/16 + 66/16@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + poly.res - 66/13 + 66/13@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + false + false + 1 + false + false + 0 + poly.cut - 66/14 + 66/14@1 + + + #ff0000 + #ff0000 + 0 + 0 + I1 + C0 + true + false + false + 1 + false + false + 0 + poly.gate - 66/9 + 66/9@1 + + + #ffafaf + #ffafaf + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.label - 66/5 + 66/5@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + poly.boundary - 66/4 + 66/4@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.probe - 66/25 + 66/25@1 + + + #ff0000 + #ff0000 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + poly.short - 66/15 + 66/15@1 + + + #ff0000 + #ff0000 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + poly.net - 66/23 + 66/23@1 + + + #ff0000 + #ff0000 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + poly.model - 66/83 + 66/83@1 + + + #00cc66 + #00cc66 + 0 + 0 + C49 + C0 + true + true + false + 1 + false + false + 0 + ldntm.drawing - 11/44 + 11/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C15 + C0 + true + false + false + 1 + false + false + 0 + lvtn.drawing - 125/44 + 125/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + hvtp.drawing - 78/44 + 78/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + hvtr.drawing - 18/20 + 18/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C40 + C0 + true + true + false + 1 + false + false + 0 + tunm.drawing - 80/20 + 80/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C22 + C0 + true + true + false + 1 + false + false + 0 + licon1.drawing - 66/44 + 66/44@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + licon1.boundary - 66/60 + 66/60@1 + + + #ffe6bf + #c8ffff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + licon1.pin - 66/58 + 66/58@1 + + + #ffffcc + #ffffcc + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + licon1.net - 66/41 + 66/41@1 + + + #bf4026 + #bf4026 + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + npc.drawing - 95/20 + 95/20@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + li1.drawing - 67/20 + 67/20@1 + + + #bf4026 + #bf4026 + 0 + 0 + C45 + C0 + true + true + false + 1 + false + false + 0 + li1.pin - 67/16 + 67/16@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + li1.res - 67/13 + 67/13@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + li1.cut - 67/14 + 67/14@1 + + + #bf4026 + #bf4026 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + li1.label - 67/5 + 67/5@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + li1.net - 67/23 + 67/23@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + li1.boundary - 67/4 + 67/4@1 + + + #bf4026 + #bf4026 + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + li1.blockage - 67/10 + 67/10@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C35 + C0 + true + false + false + 1 + false + false + 0 + li1.short - 67/15 + 67/15@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + li1.probe - 67/25 + 67/25@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + mcon.drawing - 67/44 + 67/44@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + mcon.boundary - 67/60 + 67/60@1 + + + #ffffcc + #d9e6ff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + mcon.pin - 67/48 + 67/48@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + mcon.net - 67/41 + 67/41@1 + + + #0000ff + #0000ff + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.drawing - 68/20 + 68/20@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met1.res - 68/13 + 68/13@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met1.cut - 68/14 + 68/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C6 + C0 + true + true + false + 1 + false + false + 0 + met1.pin - 68/16 + 68/16@1 + + + #96c8ff + #96c8ff + 0 + 0 + C1 + C0 + true + true + true + 1 + false + false + 0 + met1.label - 68/5 + 68/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met1.net - 68/23 + 68/23@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met1.boundary - 68/4 + 68/4@1 + + + #0000ff + #0000ff + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + met1.blockage - 68/10 + 68/10@1 + + + #0000ff + #0000ff + 0 + 0 + C35 + C0 + true + false + false + 1 + false + false + 0 + met1.short - 68/15 + 68/15@1 + + + #0000ff + #0000ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met1.probe - 68/25 + 68/25@1 + + + #0000ff + #0000ff + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + met1.option1 - 68/32 + 68/32@1 + + + #0000ff + #0000ff + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + met1.option2 - 68/33 + 68/33@1 + + + #0000ff + #0000ff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met1.option3 - 68/34 + 68/34@1 + + + #0000ff + #0000ff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met1.option4 - 68/35 + 68/35@1 + + + #0000ff + #0000ff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met1.option5 - 68/36 + 68/36@1 + + + #0000ff + #0000ff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met1.option6 - 68/37 + 68/37@1 + + + #0000ff + #0000ff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met1.option7 - 68/38 + 68/38@1 + + + #0000ff + #0000ff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met1.option8 - 68/39 + 68/39@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + via.drawing - 68/44 + 68/44@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via.boundary - 68/60 + 68/60@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via.net - 68/41 + 68/41@1 + + + #ae7dff + #ae7dff + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via.pin - 68/58 + 68/58@1 + + + #ff00ff + #ff00ff + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.drawing - 69/20 + 69/20@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met2.res - 69/13 + 69/13@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met2.cut - 69/14 + 69/14@1 + + + #ff00ff + #ff00ff + 0 + 0 + C44 + C0 + true + true + false + 1 + false + false + 0 + met2.pin - 69/16 + 69/16@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met2.label - 69/5 + 69/5@1 + + + #ff00ff + #ff00ff + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met2.net - 69/23 + 69/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met2.boundary - 69/4 + 69/4@1 + + + #ff00ff + #ff00ff + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + met2.blockage - 69/10 + 69/10@1 + + + #ff00ff + #ff00ff + 0 + 0 + C35 + C0 + true + false + false + 1 + false + false + 0 + met2.short - 69/15 + 69/15@1 + + + #ff00ff + #ff00ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met2.probe - 69/25 + 69/25@1 + + + #ff00ff + #ff00ff + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + met2.option1 - 69/32 + 69/32@1 + + + #ff00ff + #ff00ff + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + met2.option2 - 69/33 + 69/33@1 + + + #ff00ff + #ff00ff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met2.option3 - 69/34 + 69/34@1 + + + #ff00ff + #ff00ff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met2.option4 - 69/35 + 69/35@1 + + + #ff00ff + #ff00ff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met2.option5 - 69/36 + 69/36@1 + + + #ff00ff + #ff00ff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met2.option6 - 69/37 + 69/37@1 + + + #ff00ff + #ff00ff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met2.option7 - 69/38 + 69/38@1 + + + #ff00ff + #ff00ff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met2.option8 - 69/39 + 69/39@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C0 + true + true + false + 3 + false + false + 0 + via2.drawing - 69/44 + 69/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via2.boundary - 69/60 + 69/60@1 + + + #ff8000 + #ff8000 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via2.pin - 69/58 + 69/58@1 + + + #ff8000 + #ff8000 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via2.net - 69/41 + 69/41@1 + + + #00ffff + #00ffff + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.drawing - 70/20 + 70/20@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met3.res - 70/13 + 70/13@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met3.cut - 70/14 + 70/14@1 + + + #00ffff + #00ffff + 0 + 0 + C33 + C0 + true + true + false + 1 + false + false + 0 + met3.pin - 70/16 + 70/16@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + true + true + 1 + false + false + 0 + met3.label - 70/5 + 70/5@1 + + + #00ffff + #00ffff + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met3.net - 70/23 + 70/23@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met3.boundary - 70/4 + 70/4@1 + + + #00ffff + #00ffff + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + met3.blockage - 70/10 + 70/10@1 + + + #00ffff + #00ffff + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met3.short - 70/15 + 70/15@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met3.fuse - 70/17 + 70/17@1 + + + #00ffff + #00ffff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met3.probe - 70/25 + 70/25@1 + + + #00ffff + #00ffff + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + met3.option1 - 70/32 + 70/32@1 + + + #00ffff + #00ffff + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + met3.option2 - 70/33 + 70/33@1 + + + #00ffff + #00ffff + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met3.option3 - 70/34 + 70/34@1 + + + #00ffff + #00ffff + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met3.option4 - 70/35 + 70/35@1 + + + #00ffff + #00ffff + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met3.option5 - 70/36 + 70/36@1 + + + #00ffff + #00ffff + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met3.option6 - 70/37 + 70/37@1 + + + #00ffff + #00ffff + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met3.option7 - 70/38 + 70/38@1 + + + #00ffff + #00ffff + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met3.option8 - 70/39 + 70/39@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C0 + true + true + false + 3 + false + false + 0 + via3.drawing - 70/44 + 70/44@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via3.boundary - 70/60 + 70/60@1 + + + #268c6b + #268c6b + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via3.pin - 70/48 + 70/48@1 + + + #268c6b + #268c6b + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via3.net - 70/41 + 70/41@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.drawing - 71/20 + 71/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met4.res - 71/13 + 71/13@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met4.cut - 71/14 + 71/14@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C33 + C0 + true + true + false + 1 + false + false + 0 + met4.pin - 71/16 + 71/16@1 + + + #ae7dff + #ae7dff + 0 + 0 + C1 + C0 + true + true + true + 1 + false + false + 0 + met4.label - 71/5 + 71/5@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met4.net - 71/23 + 71/23@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met4.boundary - 71/4 + 71/4@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + met4.blockage - 71/10 + 71/10@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met4.short - 71/15 + 71/15@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met4.fuse - 71/17 + 71/17@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met4.probe - 71/25 + 71/25@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + met4.option1 - 71/32 + 71/32@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + met4.option2 - 71/33 + 71/33@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met4.option3 - 71/34 + 71/34@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met4.option4 - 71/35 + 71/35@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met4.option5 - 71/36 + 71/36@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met4.option6 - 71/37 + 71/37@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met4.option7 - 71/38 + 71/38@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met4.option8 - 71/39 + 71/39@1 + + + #ffff00 + #ffff00 + 0 + 0 + I1 + C0 + true + true + false + 3 + false + false + 0 + via4.drawing - 71/44 + 71/44@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + via4.boundary - 71/60 + 71/60@1 + + + #ffff00 + #ffff00 + 0 + 0 + C6 + C0 + false + true + false + 1 + false + false + 0 + via4.pin - 71/48 + 71/48@1 + + + #ffff00 + #ffff00 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + via4.net - 71/41 + 71/41@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.drawing - 72/20 + 72/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met5.res - 72/13 + 72/13@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + false + true + false + 1 + false + false + 0 + met5.cut - 72/14 + 72/14@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C33 + C0 + true + true + false + 1 + false + false + 0 + met5.pin - 72/16 + 72/16@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + true + true + 1 + false + false + 0 + met5.label - 72/5 + 72/5@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C5 + C0 + true + true + false + 1 + false + false + 0 + met5.net - 72/23 + 72/23@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + met5.boundary - 72/4 + 72/4@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C52 + C0 + true + true + false + 1 + false + false + 0 + met5.blockage - 72/10 + 72/10@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C35 + C0 + true + true + false + 1 + false + false + 0 + met5.short - 72/15 + 72/15@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + I1 + C0 + false + true + false + 1 + false + false + 0 + met5.fuse - 72/17 + 72/17@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + met5.probe - 72/25 + 72/25@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + met5.option1 - 72/32 + 72/32@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + met5.option2 - 72/33 + 72/33@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + met5.option3 - 72/34 + 72/34@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + met5.option4 - 72/35 + 72/35@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + met5.option5 - 72/36 + 72/36@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + met5.option6 - 72/37 + 72/37@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + met5.option7 - 72/38 + 72/38@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + met5.option8 - 72/39 + 72/39@1 + + + #00cc66 + #00cc66 + 0 + 0 + C49 + C0 + true + true + false + 1 + false + false + 0 + nsm.drawing - 61/20 + 61/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + pad.drawing - 76/20 + 76/20@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pad.label - 76/5 + 76/5@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C33 + C0 + true + true + false + 1 + false + false + 0 + pad.pin - 76/16 + 76/16@1 + + + #ff00ff + #ff00ff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + pnp.drawing - 82/44 + 82/44@1 + + + #ffc8ff + #ffc8ff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + pnp.label - 82/59 + 82/59@1 + + + #00ffff + #00ffff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + npn.drawing - 82/20 + 82/20@1 + + + #c8ffff + #c8ffff + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + npn.label - 82/5 + 82/5@1 + + + #ffffff + #96c8ff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + rpm.drawing - 86/20 + 86/20@1 + + + #ffffff + #c896ff + 0 + 0 + C37 + C0 + true + true + false + 1 + false + false + 0 + urpm.drawing - 79/20 + 79/20@1 + + + #9900e6 + #9900e6 + 0 + 0 + C4 + C0 + true + false + false + 1 + false + false + 0 + hvi.drawing - 75/20 + 75/20@1 + + + #ffb232 + #ffb232 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + capacitor.drawing - 82/64 + 82/64@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + ncm.drawing - 92/44 + 92/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cncm.drawing - 96/44 + 96/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cncm.mask - 17/0 + 17/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C19 + C1 + true + true + false + 1 + false + false + 0 + pmm.drawing - 85/44 + 85/44@1 + + + #bf4026 + #bf4026 + 0 + 0 + C39 + C0 + true + true + false + 1 + false + false + 0 + pmm2.drawing - 77/20 + 77/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C46 + C0 + true + true + false + 1 + false + false + 0 + rdl.drawing - 74/20 + 74/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C33 + C0 + true + true + false + 1 + false + false + 0 + rdl.pin - 74/16 + 74/16@1 + + + #ff6464 + #ff6464 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + rdl.label - 74/5 + 74/5@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + rdl.res - 74/13 + 74/13@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + rdl.cut - 74/14 + 74/14@1 + + + #e61f0d + #e61f0d + 0 + 0 + C35 + C0 + false + true + false + 1 + false + false + 0 + rdl.short - 74/15 + 74/15@1 + + + #e61f0d + #e61f0d + 0 + 0 + C24 + C0 + false + true + false + 1 + false + false + 0 + rdl.option1 - 89/32 + 89/32@1 + + + #e61f0d + #e61f0d + 0 + 0 + C25 + C0 + false + true + false + 1 + false + false + 0 + rdl.option2 - 89/33 + 89/33@1 + + + #e61f0d + #e61f0d + 0 + 0 + C26 + C0 + false + true + false + 1 + false + false + 0 + rdl.option3 - 89/34 + 89/34@1 + + + #e61f0d + #e61f0d + 0 + 0 + C27 + C0 + false + true + false + 1 + false + false + 0 + rdl.option4 - 89/35 + 89/35@1 + + + #e61f0d + #e61f0d + 0 + 0 + C28 + C0 + false + true + false + 1 + false + false + 0 + rdl.option5 - 89/36 + 89/36@1 + + + #e61f0d + #e61f0d + 0 + 0 + C29 + C0 + false + true + false + 1 + false + false + 0 + rdl.option6 - 89/37 + 89/37@1 + + + #e61f0d + #e61f0d + 0 + 0 + C30 + C0 + false + true + false + 1 + false + false + 0 + rdl.option7 - 89/38 + 89/38@1 + + + #e61f0d + #e61f0d + 0 + 0 + C31 + C0 + false + true + false + 1 + false + false + 0 + rdl.option8 - 89/39 + 89/39@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + ubm.drawing - 127/21 + 127/21@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + bump.drawing - 127/22 + 127/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + inductor.drawing - 82/24 + 82/24@1 + + + #fff464 + #fff464 + 0 + 0 + C1 + C0 + true + true + false + 1 + false + false + 0 + inductor.label - 82/25 + 82/25@1 + + + #333399 + #ffffff + 0 + 0 + C24 + C0 + true + true + false + 1 + false + false + 0 + inductor.term1 - 82/26 + 82/26@1 + + + #333399 + #ffffff + 0 + 0 + C25 + C0 + true + true + false + 1 + false + false + 0 + inductor.term2 - 82/27 + 82/27@1 + + + #333399 + #ffffff + 0 + 0 + C26 + C0 + true + true + false + 1 + false + false + 0 + inductor.term3 - 82/28 + 82/28@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + cfom.drawing - 22/20 + 22/20@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cfom.mask - 23/0 + 23/0@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cfom.maskAdd - 22/21 + 22/21@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C11 + C0 + true + false + false + 1 + false + false + 0 + cfom.maskDrop - 22/22 + 22/22@1 + + + #268c6b + #268c6b + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cfom.waffleDrop - 22/24 + 22/24@1 + + + #ccccd9 + #ccccd9 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + fom.dummy - 22/23 + 22/23@1 + + + #268c6b + #268c6b + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cnwm.drawing - 109/44 + 109/44@1 + + + #268c6b + #268c6b + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cnwm.mask - 21/0 + 21/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cnwm.maskAdd - 109/43 + 109/43@1 + + + #268c6b + #268c6b + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cnwm.maskDrop - 109/42 + 109/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cdnm.drawing - 110/20 + 110/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cdnm.mask - 48/0 + 48/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cdnm.maskAdd - 110/21 + 110/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + cdnm.maskDrop - 110/22 + 110/22@1 + + + #96c8ff + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.drawing - 25/44 + 25/44@1 + + + #96c8ff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clvtnm.mask - 25/0 + 25/0@1 + + + #96c8ff + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.maskAdd - 25/43 + 25/43@1 + + + #96c8ff + #0000ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + clvtnm.maskDrop - 25/42 + 25/42@1 + + + #ff8000 + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.drawing - 88/44 + 88/44@1 + + + #ff8000 + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + chvtpm.mask - 97/0 + 97/0@1 + + + #ff8000 + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.maskAdd - 97/43 + 97/43@1 + + + #ff8000 + #0000ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + chvtpm.maskDrop - 97/42 + 97/42@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.drawing - 98/44 + 98/44@1 + + + #ff0000 + #e61f0d + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.mask - 98/0 + 98/0@1 + + + #ff0000 + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.maskAdd - 98/43 + 98/43@1 + + + #ff0000 + #d9e6ff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + chvtrm.maskDrop - 98/42 + 98/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + ctunm.drawing - 96/20 + 96/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + ctunm.mask - 20/0 + 20/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + ctunm.maskAdd - 96/21 + 96/21@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + ctunm.maskDrop - 96/22 + 96/22@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + conom.drawing - 87/44 + 87/44@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + conom.mask - 88/0 + 88/0@1 + + + #ff0000 + #ff0000 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + conom.maskAdd - 87/43 + 87/43@1 + + + #ff0000 + #ff0000 + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + conom.maskDrop - 87/42 + 87/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.drawing - 29/20 + 29/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.mask - 30/0 + 30/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.maskAdd - 29/21 + 29/21@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cnsdm.maskDrop - 29/22 + 29/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.drawing - 31/20 + 31/20@1 + + + #ffff00 + #ffff00 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.mask - 32/0 + 32/0@1 + + + #ffff00 + #ffff00 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.maskAdd - 31/21 + 31/21@1 + + + #ffff00 + #ffff00 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cpsdm.maskDrop - 31/22 + 31/22@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + cntm.drawing - 26/20 + 26/20@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cntm.mask - 27/0 + 27/0@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cntm.maskAdd - 26/21 + 26/21@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cntm.maskDrop - 26/22 + 26/22@1 + + + #ffff00 + #ffff00 + 0 + 0 + C19 + C0 + true + false + false + 1 + false + false + 0 + hvntm.drawing - 125/20 + 125/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + chvntm.drawing - 38/20 + 38/20@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + chvntm.mask - 39/0 + 39/0@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + chvntm.maskAdd - 38/21 + 38/21@1 + + + #fff5e6 + #fff5e6 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + chvntm.maskDrop - 38/22 + 38/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cldntm.drawing - 11/20 + 11/20@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cldntm.mask - 11/0 + 11/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clvom.drawing - 45/20 + 45/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + clvom.mask - 46/0 + 46/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + clvom.maskAdd - 45/21 + 45/21@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + clvom.maskDrop - 45/22 + 45/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cp1m.drawing - 33/44 + 33/44@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cp1m.mask - 28/0 + 28/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + C14 + C0 + true + false + false + 1 + false + false + 0 + cp1m.maskAdd - 33/43 + 33/43@1 + + + #9900e6 + #9900e6 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cp1m.waffleDrop - 33/24 + 33/24@1 + + + #ff8000 + #ff8000 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cp1m.maskDrop - 33/42 + 33/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cli1m.drawing - 115/44 + 115/44@1 + + + #00ffff + #00ffff + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cli1m.mask - 56/0 + 56/0@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cli1m.maskAdd - 115/43 + 115/43@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + cli1m.maskDrop - 115/42 + 115/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + clicm1.drawing - 106/44 + 106/44@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + clicm1.mask - 43/0 + 43/0@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + clicm1.maskAdd - 106/43 + 106/43@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + clicm1.maskDrop - 106/42 + 106/42@1 + + + #0000ff + #0000ff + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cmm1.drawing - 62/20 + 62/20@1 + + + #0000ff + #0000ff + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm1.mask - 36/0 + 36/0@1 + + + #0000ff + #0000ff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm1.maskAdd - 62/21 + 62/21@1 + + + #0000ff + #0000ff + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm1.maskDrop - 62/22 + 62/22@1 + + + #0000ff + #0000ff + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm1.waffleDrop - 62/24 + 62/24@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam.drawing - 105/20 + 105/20@1 + + + #ffffcc + #ffffcc + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam.mask - 40/0 + 40/0@1 + + + #ffffcc + #ffffcc + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam.maskAdd - 105/21 + 105/21@1 + + + #ffffcc + #ffffcc + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam.maskDrop - 105/22 + 105/22@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cmm2.drawing - 105/44 + 105/44@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm2.mask - 41/0 + 41/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm2.maskAdd - 105/43 + 105/43@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm2.maskDrop - 105/42 + 105/42@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm2.waffleDrop - 105/52 + 105/52@1 + + + #333399 + #333399 + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam2.drawing - 108/20 + 108/20@1 + + + #333399 + #333399 + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam2.mask - 44/0 + 44/0@1 + + + #333399 + #333399 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam2.maskAdd - 108/21 + 108/21@1 + + + #333399 + #333399 + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam2.maskDrop - 108/22 + 108/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cmm3.drawing - 107/20 + 107/20@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm3.mask - 34/0 + 34/0@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cmm3.maskAdd - 107/21 + 107/21@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cmm3.maskDrop - 107/22 + 107/22@1 + + + #5e00e6 + #5e00e6 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm3.waffleDrop - 107/24 + 107/24@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cnpc.drawing - 44/20 + 44/20@1 + + + #e61f0d + #e61f0d + 0 + 0 + C38 + C0 + true + true + false + 1 + false + false + 0 + cnpc.mask - 49/0 + 49/0@1 + + + #e61f0d + #e61f0d + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cnpc.maskAdd - 44/43 + 44/43@1 + + + #e61f0d + #e61f0d + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cnpc.maskDrop - 44/42 + 44/42@1 + + + #268c6b + #268c6b + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam3.drawing - 112/20 + 112/20@1 + + + #268c6b + #268c6b + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam3.mask - 50/0 + 50/0@1 + + + #268c6b + #268c6b + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam3.maskAdd - 112/21 + 112/21@1 + + + #268c6b + #268c6b + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam3.maskDrop - 112/22 + 112/22@1 + + + #00cc66 + #00cc66 + 0 + 0 + C19 + C0 + true + true + false + 1 + false + false + 0 + cnsm.mask - 22/0 + 22/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cpdm.drawing - 104/44 + 104/44@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpdm.mask - 37/0 + 37/0@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cpdm.maskAdd - 104/43 + 104/43@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C11 + C0 + false + true + false + 1 + false + false + 0 + cpdm.maskDrop - 104/42 + 104/42@1 + + + #8c8ca6 + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + cpmm.drawing - 91/44 + 91/44@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cpbo.mask - 99/0 + 99/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm4.mask - 51/0 + 51/0@1 + + + #00cc66 + #00cc66 + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + cmm4.maskAdd - 112/43 + 112/43@1 + + + #00cc66 + #00cc66 + 0 + 0 + C11 + C0 + true + true + false + 1 + false + false + 0 + cmm4.maskDrop - 112/42 + 112/42@1 + + + #00cc66 + #00cc66 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm4.waffleDrop - 112/4 + 112/4@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cviam4.drawing - 117/20 + 117/20@1 + + + #00ffff + #00ffff + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cviam4.mask - 58/0 + 58/0@1 + + + #00ffff + #00ffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cviam4.maskAdd - 117/21 + 117/21@1 + + + #00ffff + #00ffff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cviam4.maskDrop - 117/22 + 117/22@1 + + + #ff8000 + #ff8000 + 0 + 0 + C13 + C0 + true + true + false + 1 + false + false + 0 + cmm5.mask - 59/0 + 59/0@1 + + + #ff8000 + #ff8000 + 0 + 0 + I1 + C0 + true + true + false + 1 + false + false + 0 + cmm5.waffleDrop - 117/4 + 117/4@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + target.drawing - 76/44 + 76/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + false + true + false + 1 + false + false + 0 + cctm1.drawing - 101/44 + 101/44@1 + + + #ffffff + #ffffff + 0 + 0 + C17 + C0 + true + true + false + 1 + false + false + 0 + cctm1.mask - 35/0 + 35/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + false + true + false + 1 + false + false + 0 + cctm1.maskAdd - 101/43 + 101/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + false + true + false + 1 + false + false + 0 + cctm1.maskDrop - 101/42 + 101/42@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + crpm.drawing - 53/44 + 53/44@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + crpm.mask - 96/0 + 96/0@1 + + + #ffffff + #ffffff + 0 + 0 + C14 + C0 + true + true + false + 1 + false + false + 0 + crpm.maskAdd - 53/43 + 53/43@1 + + + #ffffff + #ffffff + 0 + 0 + C3 + C0 + true + true + false + 1 + false + false + 0 + crpm.maskDrop - 53/42 + 53/42@1 + + + #e61f0d + #e61f0d + 0 + 0 + C46 + C0 + false + true + false + 1 + false + false + 0 + ccu1m.mask - 93/0 + 93/0@1 + + + #bf4026 + #bf4026 + 0 + 0 + C39 + C0 + false + true + false + 1 + false + false + 0 + cpmm2.mask - 94/0 + 94/0@1 + + + #ccccd9 + #333399 + 0 + 0 + C7 + C0 + false + true + false + 1 + false + false + 0 + cubm.mask - 100/0 + 100/0@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C19 + C0 + false + true + false + 1 + false + false + 0 + cbump.mask - 101/0 + 101/0@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + overlap.drawing - 90/20 + 90/20@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + overlap.boundary - 90/4 + 90/4@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.lowTapDensity - 81/14 + 81/14@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.notCritSide - 81/15 + 81/15@1 + + + #adff2f + #adff2f + 0 + 0 + C2 + C0 + true + true + false + 3 + false + false + 0 + areaid.injection - 81/17 + 81/17@1 + + + #bebed8 + #bebed8 + 0 + 0 + C2 + C0 + true + true + false + 3 + false + false + 0 + areaid.rfdiode - 81/125 + 81/125@1 + + + #ffffff + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.seal - 81/1 + 81/1@1 + + + #d9e6ff + #d9e6ff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.core - 81/2 + 81/2@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.frame - 81/3 + 81/3@1 + + + #d9cc00 + #d9cc00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.esd - 81/19 + 81/19@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.dieCut - 81/11 + 81/11@1 + + + #00ff00 + #00ff00 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.moduleCut - 81/10 + 81/10@1 + + + #00ffff + #00ffff + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.frameRect - 81/12 + 81/12@1 + + + #333399 + #ccccd9 + 0 + 0 + C21 + C0 + true + true + false + 1 + false + false + 0 + areaid.substrateCut - 81/53 + 81/53@1 + + + #ffff00 + #ffff00 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.diode - 81/23 + 81/23@1 + + + #ff00ff + #ff00ff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.standardc - 81/4 + 81/4@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.deadZon - 81/50 + 81/50@1 + + + #ff8000 + #ff8000 + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.critCorner - 81/51 + 81/51@1 + + + #ffffcc + #ffffcc + 0 + 0 + C0 + C5 + true + true + false + 1 + false + false + 0 + areaid.critSid - 81/52 + 81/52@1 + + + #8c8ca6 + #c8ffc8 + 0 + 0 + C19 + C0 + true + true + false + 3 + false + false + 0 + areaid.opcDrop - 81/54 + 81/54@1 + + + #00bfff + #00ffe7 + 0 + 0 + C1 + C0 + true + true + false + 3 + false + false + 0 + areaid.waffleWindow - 81/13 + 81/13@1 + + + #daa520 + #daa520 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.extendedDrain - 81/57 + 81/57@1 + + + #ffbff2 + #ffbff2 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.lvNative - 81/60 + 81/60@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.photo - 81/81 + 81/81@1 + + + #ff00ff + #00ff00 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.etest - 81/101 + 81/101@1 + + + #ff0000 + #ff0000 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.hvnwell - 81/63 + 81/63@1 + + + #9900e6 + #9900e6 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.rdlprobepad - 81/27 + 81/27@1 + + + #00bfff + #00bfff + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.sigPadDiff - 81/6 + 81/6@1 + + + #c8ffc8 + #c8ffc8 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.sigPadWell - 81/7 + 81/7@1 + + + #ff7f50 + #ff7f50 + 0 + 0 + C0 + C0 + true + false + false + 3 + false + false + 0 + areaid.sigPadMetNtr - 81/8 + 81/8@1 + + + #ff6464 + #ff6464 + 0 + 0 + C0 + C0 + true + true + false + 3 + false + false + 0 + areaid.analog - 81/79 + 81/79@1 + + + #ffff00 + #ffffff + 0 + 0 + C0 + C0 + true + true + false + 1 + false + false + 0 + prune.drawing - 84/44 + 84/44@1 + + + #0000ff + #0000ff + 0 + 0 + C0 + C0 + true + false + false + 1 + false + false + 0 + padCenter.drawing - 81/20 + 81/20@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa1 - 68/88 + 68/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa1 - 69/88 + 69/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa1 - 70/88 + 70/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa1 - 71/88 + 71/88@1 + + + #8c8ca6 + #8c8ca6 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa1 - 72/88 + 72/88@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa2 - 68/89 + 68/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa2 - 69/89 + 69/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa2 - 70/89 + 70/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa2 - 71/89 + 71/89@1 + + + #00ffe7 + #00ffe7 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa2 - 72/89 + 72/89@1 + + + #ffffcc + #ffffcc + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa3 - 68/90 + 68/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa3 - 69/90 + 69/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa3 - 70/90 + 70/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa3 - 71/90 + 71/90@1 + + + #ffffcc + #ffffcc + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa3 - 72/90 + 72/90@1 + + + #802626 + #802626 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa4 - 68/91 + 68/91@1 + + + #802626 + #802626 + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa4 - 69/91 + 69/91@1 + + + #802626 + #802626 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa4 - 70/91 + 70/91@1 + + + #802626 + #802626 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa4 - 71/91 + 71/91@1 + + + #802626 + #802626 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa4 - 72/91 + 72/91@1 + + + #333399 + #333399 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa5 - 68/92 + 68/92@1 + + + #333399 + #333399 + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa5 - 69/92 + 69/92@1 + + + #333399 + #333399 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa5 - 70/92 + 70/92@1 + + + #333399 + #333399 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa5 - 71/92 + 71/92@1 + + + #333399 + #333399 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa5 - 72/92 + 72/92@1 + + + #fa8072 + #fa8072 + 0 + 0 + C7 + C0 + true + true + false + 1 + false + false + 0 + met1.psa6 - 68/93 + 68/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C36 + C0 + true + true + false + 1 + false + false + 0 + met2.psa6 - 69/93 + 69/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C48 + C0 + true + true + false + 1 + false + false + 0 + met3.psa6 - 70/93 + 70/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C15 + C0 + true + true + false + 1 + false + false + 0 + met4.psa6 - 71/93 + 71/93@1 + + + #fa8072 + #fa8072 + 0 + 0 + C41 + C0 + true + true + false + 1 + false + false + 0 + met5.psa6 - 72/93 + 72/93@1 + + + #ff0000 + #ff0000 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa1 - 74/88 + 74/88@1 + + + #0000ff + #0000ff + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa2 - 74/89 + 74/89@1 + + + #00cc66 + #00cc66 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa3 - 74/90 + 74/90@1 + + + #ffffff + #ffffff + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa4 - 74/91 + 74/91@1 + + + #ffff00 + #ffff00 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa5 - 74/92 + 74/92@1 + + + #bf4026 + #bf4026 + 0 + 0 + C10 + C0 + true + true + false + 1 + false + false + 0 + rdl.psa6 - 74/93 + 74/93@1 + + + #ffe6bf + #ffe6bf + 0 + 0 + C19 + C1 + false + true + false + 1 + false + false + 0 + blanking.drawing - 124/40 + 124/40@1 + + + #80a8ff + #80a8ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via.label 5/1@1 + 5/1@1 + + + #80a8ff + #80a8ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via.blockage 5/3@1 + 5/3@1 + + + #ff0080 + #ff0080 + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via2.blockage 7/3@1 + 7/3@1 + + + #8000ff + #8000ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via3.label 9/1@1 + 9/1@1 + + + #8000ff + #8000ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via3.blockage 9/3@1 + 9/3@1 + + + #0080ff + #0080ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + via4.label 11/1@1 + 11/1@1 + + + #0080ff + #0080ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + via4.blockage 11/3@1 + 11/3@1 + + + #800057 + #800057 + 0 + 0 + I9 + + true + true + false + + false + false + 0 + rdlcon.drawing 13/0@1 + 13/0@1 + + + #0080ff + #0080ff + 0 + 0 + I5 + + true + true + false + + false + false + 0 + marker.error 83/6@1 + 83/6@1 + + + #0080ff + #0080ff + 0 + 0 + I9 + + true + true + false + + false + false + 0 + marker.warning 83/7@1 + 83/7@1 + + + #0080ff + #0080ff + 0 + 0 + C0 + + true + false + false + + false + false + 0 + text.drawing 83/44@1 + 83/44@1 + + + #008080 + #008080 + 0 + 0 + I9 + + true + true + false + + false + false + 0 + crrpm.mask 102/0@1 + 102/0@1 + + + #008080 + #008080 + 0 + 0 + I5 + + true + true + false + + false + false + 0 + rrpm.drawing 102/20@1 + 102/20@1 + + + #80ff8d + #80ff8d + 0 + 0 + C0 + + true + false + false + + false + false + 0 + prBoundary.drawing 235/0@1 + 235/0@1 + + + #ffae00 + #ffae00 + 0 + 0 + C0 + + true + true + false + + false + false + 0 + OUTLINE 236/0@1 + 236/0@1 + + GDS + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + + 1 + blank + + + + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + **************** + + 2 + solid + + + + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + + 3 + dots + + + + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + ................ + ................ + ................ + **************** + + 4 + hLine + + + + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + ..*...*...*...*. + + 5 + vLine + + + + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + *...*...*...*... + .*.*.*.*.*.*.*.* + ..*...*...*...*. + .*.*.*.*.*.*.*.* + + 6 + cross + + + + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + ...*...*...*...* + ...*...*...*...* + ...*...*...*...* + **************** + + 7 + grid + + + + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + + 8 + slash + + + + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + *...*...*...*... + .*...*...*...*.. + ..*...*...*...*. + ...*...*...*...* + + 9 + backSlash + + + + **......**...... + ..*.......*..... + ...**......**... + .....*.......*.. + ......**......** + *.......*....... + .**......**..... + ...*.......*.... + ....**......**.. + ......*.......*. + *......**......* + .*.......*...... + ..**......**.... + ....*.......*... + .....**......**. + .......*.......* + + 10 + hZigZag + + + + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + *....*....*..... + *.....*....*.... + .*....*.....*... + ..*....*....*... + ..*.....*....*.. + ...*....*.....*. + ....*....*....*. + ....*.....*....* + + 11 + vZigZag + + + + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + ................ + ................ + ...*****...***** + ...*...*...*...* + ...*...*...*...* + ****...*****...* + ................ + ................ + + 12 + hCurb + + + + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + .....*.......*.. + .....*.......*.. + .....*.......*.. + ..****....****.. + ..*.......*..... + ..*.......*..... + ..*.......*..... + ..****....****.. + + 13 + vCurb + + + + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + **************** + ..*.......*..... + ..*.......*..... + ..*.......*..... + **************** + ......*.......*. + ......*.......*. + ......*.......*. + + 14 + brick + + + + ................ + ..*.......*..... + ..*.......*..... + ..*.......*..... + *****...*****... + ..*.......*..... + ..*.......*..... + ..*.......*..... + ................ + .....*.......*.. + .....*.......*.. + .....*.......*.. + ...*****...***** + .....*.......*.. + .....*.......*.. + .....*.......*.. + + 15 + dagger + + + + ................ + ..*............. + ..*............. + ..*............. + *****........... + ..*............. + ..*............. + ..*............. + ................ + .............*.. + .............*.. + .............*.. + ...........***** + .............*.. + .............*.. + .............*.. + + 16 + sparseDagger + + + + ................ + ..........*..... + ..........*..... + ..........*..... + ........*****... + ..........*..... + ..........*..... + ..........*..... + ................ + .....*.......... + .....*.......... + .....*.......... + ...*****........ + .....*.......... + .....*.......... + .....*.......... + + 17 + sparseDagger2 + + + + ................ + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *********....... + ................ + ................ + ................ + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .......********* + ................ + ................ + + 18 + triangle + + + + ................ + .*.....*.....*.. + ..*...**....*... + ...*.*.*...*.... + ....*..*..*..... + .....*.*.*...... + ......***....... + .......*........ + ......***....... + .....*.*.*...... + ....*..*..*..... + ...*...*...*.... + ..*....*....*... + .*..*******..*.. + ................ + ................ + + 19 + Xone + + + + ................ + .*....**.....*.. + ..*..*..*...*... + ...**....*.*.... + ....*....**..... + .....*...*...... + ......*.*....... + .......*........ + ......*.*....... + .....*...*...... + ....*.....*..... + ...**......*.... + ..*.*.......*... + .*..******...*.. + ................ + ................ + + 20 + Xtwo + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ..*.......*..... + ................ + + 21 + spareDots + + + + ................ + ................ + ................ + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + + 22 + spareDots21 + + + + ................ + ................ + ......*.......*. + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ..*.......*..... + ................ + ................ + ................ + ................ + ................ + + 23 + spareDots22 + + + + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + + 24 + checker + + + + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + ....****....**** + ....****....**** + ....****....**** + ....****....**** + ****....****.... + ****....****.... + ****....****.... + ****....****.... + + 25 + checker2 + + + + ................ + ................ + ................ + ................ + .......*........ + ......**........ + .......*........ + .......*........ + .......*........ + .......*........ + ......***....... + ................ + ................ + ................ + ................ + ................ + + 26 + one + + + + ................ + ................ + ................ + ................ + ................ + .......**....... + ......*..*...... + .........*...... + ........*....... + .......*........ + ......*......... + ......****...... + ................ + ................ + ................ + ................ + + 27 + two + + + + ................ + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .........*...... + .......**....... + .........*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + + 28 + three + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + .............*.. + ............**.. + ...........*.*.. + ..........*..*.. + .........******. + .............*.. + .............*.. + ................ + + 29 + four + + + + ................ + ................ + ................ + ......***....... + .....*.......... + .....*.......... + .....***........ + ........*....... + ........*....... + .....***........ + ................ + ................ + ................ + ................ + ................ + ................ + + 30 + five + + + + ................ + ................ + ................ + ................ + .......***...... + ......*......... + ......*......... + ......****...... + ......*...*..... + ......*...*..... + .......***...... + ................ + ................ + ................ + ................ + ................ + + 31 + six + + + + ................ + ................ + ................ + .....******..... + ..........*..... + .........*...... + .........*...... + ........*....... + ........*....... + .......*........ + ......*......... + .....*.......... + ................ + ................ + ................ + ................ + + 32 + seven + + + + ................ + ................ + ................ + ................ + ......***....... + .....*...*...... + .....*...*...... + ......***....... + .....*...*...... + .....*...*...... + ......***....... + ................ + ................ + ................ + ................ + ................ + + 33 + eight + + + + *..............* + .*............*. + ..*..........*.. + ...*........*... + ....*......*.... + .....*....*..... + ......*..*...... + .......**....... + .......**....... + ......*..*...... + .....*....*..... + ....*......*.... + ...*........*... + ..*..........*.. + .*............*. + *..............* + + 34 + box45 + + + + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + .*.*.*.*.*.*.*.* + *.*.*.*.*.*.*.*. + + 35 + gray50 + + + + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + *...*...*...*... + ................ + ..*...*...*...*. + ................ + + 36 + gray25 + + + + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + .*.*.*...*.*.*.. + ................ + ...*...*...*...* + ................ + .*...*.*.*...*.* + ................ + ...*...*...*...* + ................ + + 37 + snow + + + + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + *.......*....... + .*.......*...... + + 38 + backSlash2 + + + + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + *.....*.*.....*. + .*...*...*...*.. + ..*.*.....*.*... + ...*...*...*...* + ..*.*.....*.*... + .*...*...*...*.. + *.....*.*.....*. + ...*...*...*...* + + 39 + lattice + + + + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + **..**..**..**.. + **..**..**..**.. + ..**..**..**..** + ..**..**..**..** + + 40 + smallChecker + + + + ....*........... + ...*.*.......... + ..*...*......... + .*.....*........ + *.......*....... + .*.......*...... + ..*.......*..... + ...*.......*.... + ....*.......*... + .....*.......*.. + ......*.......*. + .......*.......* + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + + 41 + slantBox + + + + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + .*...*...*...*.. + *...*...*...*... + ...*...*...*...* + ..*...*...*...*. + + 42 + slash2 + + + + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + ...*.......*.... + ..*.......*..... + .*.......*...... + *.......*....... + .......*.......* + ......*.......*. + .....*.......*.. + ....*.......*... + + 43 + bigSlash + + + + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + ****....****.... + *..*....*..*.... + *..*....*..*.... + ****....****.... + ................ + ................ + ................ + ................ + + 44 + boxes + + + + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + ..**......**.... + .*..*....*..*... + *....*..*....*.. + *....*..*....*.. + .*..*....*..*... + ..**......**.... + ................ + ................ + + 45 + circles + + + + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + .**..**..**..**. + ...*...*...*...* + *...*...*...*... + .**..**..**..**. + .**..**..**..**. + *...*...*...*... + ...*...*...*...* + .**..**..**..**. + + 46 + zigzag + + + + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + ................ + *.*.*.*.*.*.*.*. + ................ + ...*....*....*.. + + 47 + lightMesh + + + + ...............* + ..............*. + .............*.. + ............*... + ...........*.... + ..........*..... + .........*...... + ........*....... + .......*........ + ......*......... + .....*.......... + ....*........... + ...*............ + ..*............. + .*.............. + *............... + + 48 + hugeSlash + + + + *............... + .*.............. + ..*............. + ...*............ + ....*........... + .....*.......... + ......*......... + .......*........ + ........*....... + .........*...... + ..........*..... + ...........*.... + ............*... + .............*.. + ..............*. + ...............* + + 49 + hugeSlash2 + + + + *.........*..... + .....*.......... + ..*.........*... + .......*........ + ....*.........*. + .*.......*...... + ......*......... + ...*.......*.... + ........*....... + .....*.......*.. + *.........*..... + .......*........ + ..*.........*... + .........*...... + ....*.........*. + ...........*.... + + 50 + curve + + + + ....*....*....*. + ..*............. + *.......*....... + .............*.. + .......*........ + ............*... + .....*.......... + ...*.......*.... + *............... + ................ + .........*...... + ................ + ......*........* + ...*............ + *............*.. + ..........*..... + + 51 + curve2 + + + + ...........*.... + ..........*.*... + .........*...*.. + ........*.....*. + .........*...*.. + ..........*.*... + ...........*.... + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 52 + diams + + + + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ................ + ...*............ + ..*.*........... + .*...*.......... + *.....*......... + .*...*.......... + ..*.*........... + ...*............ + + 53 + sparsediam + + + + .......*.......* + ......*......... + .....*.......... + ................ + ................ + ................ + .*.............. + *............... + .......*.......* + ..............*. + .............*.. + ................ + ................ + ................ + .........*...... + ........*....... + + 54 + rain + + + + * + + 55 + + + + *** + 1 + solid + + + ****.. + 2 + dashed + + + *.. + 3 + dots + + + ***..*.. + 4 + dashDot + + + **.. + 5 + shortDash + + + ****..**.. + 6 + doubleDash + + + *... + 7 + hidden + + + + 8 + + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyt b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyt new file mode 100755 index 00000000..8e56918e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A.lyt @@ -0,0 +1,135 @@ + + + sky130A + SkyWater 130nm technology + + 0.005 + $(appdata_path)/tech/sky130A + /home/xrex/.klayout/tech/sky130A + sky130A.lyp + true + + + 1 + true + true + + + true + layer_map() + true + true + + + true + layer_map('areaid.analog : 81/79';'areaid.core : 81/2';'areaid.critCorner : 81/51';'areaid.critSid : 81/52';'areaid.deadZon : 81/50';'areaid.dieCut : 81/11';'areaid.diode : 81/23';'areaid.esd : 81/19';'areaid.etest : 81/101';'areaid.extendedDrain : 81/57';'areaid.frame : 81/3';'areaid.frameRect : 81/12';'areaid.hvnwell : 81/63';'areaid.injection : 81/17';'areaid.lowTapDensity : 81/14';'areaid.lvNative : 81/60';'areaid.moduleCut : 81/10';'areaid.notCritSide : 81/15';'areaid.opcDrop : 81/54';'areaid.photo : 81/81';'areaid.rdlprobepad : 81/27';'areaid.rfdiode : 81/125';'areaid.seal : 81/1';'areaid.sigPadDiff : 81/6';'areaid.sigPadMetNtr : 81/8';'areaid.sigPadWell : 81/7';'areaid.standardc : 81/4';'areaid.substrateCut : 81/53';'areaid.waffleWindow : 81/13';'blanking.drawing : 124/40';'bump.drawing : 127/22';'capacitor.drawing : 82/64';'cbump.mask : 101/0';'cctm1.drawing : 101/44';'cctm1.mask : 35/0';'cctm1.maskAdd : 101/43';'cctm1.maskDrop : 101/42';'ccu1m.mask : 93/0';'cdnm.drawing : 110/20';'cdnm.mask : 48/0';'cdnm.maskAdd : 110/21';'cdnm.maskDrop : 110/22';'cfom.drawing : 22/20';'cfom.mask : 23/0';'cfom.maskAdd : 22/21';'cfom.maskDrop : 22/22';'cfom.waffleDrop : 22/24';'chvntm.drawing : 38/20';'chvntm.mask : 39/0';'chvntm.maskAdd : 38/21';'chvntm.maskDrop : 38/22';'chvtpm.drawing : 88/44';'chvtpm.mask : 97/0';'chvtpm.maskAdd : 97/43';'chvtpm.maskDrop : 97/42';'chvtrm.drawing : 98/44';'chvtrm.mask : 98/0';'chvtrm.maskAdd : 98/43';'chvtrm.maskDrop : 98/42';'cldntm.drawing : 11/20';'cldntm.mask : 11/0';'cli1m.drawing : 115/44';'cli1m.mask : 56/0';'cli1m.maskAdd : 115/43';'cli1m.maskDrop : 115/42';'clicm1.drawing : 106/44';'clicm1.mask : 43/0';'clicm1.maskAdd : 106/43';'clicm1.maskDrop : 106/42';'clvom.drawing : 45/20';'clvom.mask : 46/0';'clvom.maskAdd : 45/21';'clvom.maskDrop : 45/22';'clvtnm.drawing : 25/44';'clvtnm.mask : 25/0';'clvtnm.maskAdd : 25/43';'clvtnm.maskDrop : 25/42';'cmm1.drawing : 62/20';'cmm1.mask : 36/0';'cmm1.maskAdd : 62/21';'cmm1.maskDrop : 62/22';'cmm1.waffleDrop : 62/24';'cmm2.drawing : 105/44';'cmm2.mask : 41/0';'cmm2.maskAdd : 105/43';'cmm2.maskDrop : 105/42';'cmm2.waffleDrop : 105/52';'cmm3.drawing : 107/20';'cmm3.mask : 34/0';'cmm3.maskAdd : 107/21';'cmm3.maskDrop : 107/22';'cmm3.waffleDrop : 107/24';'cmm4.mask : 51/0';'cmm4.maskAdd : 112/43';'cmm4.maskDrop : 112/42';'cmm4.waffleDrop : 112/4';'cmm5.mask : 59/0';'cmm5.waffleDrop : 117/4';'cncm.drawing : 96/44';'cncm.mask : 17/0';'cnpc.drawing : 44/20';'cnpc.mask : 49/0';'cnpc.maskAdd : 44/43';'cnpc.maskDrop : 44/42';'cnsdm.drawing : 29/20';'cnsdm.mask : 30/0';'cnsdm.maskAdd : 29/21';'cnsdm.maskDrop : 29/22';'cnsm.mask : 22/0';'cntm.drawing : 26/20';'cntm.mask : 27/0';'cntm.maskAdd : 26/21';'cntm.maskDrop : 26/22';'cnwm.drawing : 109/44';'cnwm.mask : 21/0';'cnwm.maskAdd : 109/43';'cnwm.maskDrop : 109/42';'conom.drawing : 87/44';'conom.mask : 88/0';'conom.maskAdd : 87/43';'conom.maskDrop : 87/42';'cp1m.drawing : 33/44';'cp1m.mask : 28/0';'cp1m.maskAdd : 33/43';'cp1m.maskDrop : 33/42';'cp1m.waffleDrop : 33/24';'cpbo.mask : 99/0';'cpdm.drawing : 104/44';'cpdm.mask : 37/0';'cpdm.maskAdd : 104/43';'cpdm.maskDrop : 104/42';'cpmm2.mask : 94/0';'cpmm.drawing : 91/44';'cpsdm.drawing : 31/20';'cpsdm.mask : 32/0';'cpsdm.maskAdd : 31/21';'cpsdm.maskDrop : 31/22';'crpm.drawing : 53/44';'crpm.mask : 96/0';'crpm.maskAdd : 53/43';'crpm.maskDrop : 53/42';'crrpm.mask : 102/0';'ctunm.drawing : 96/20';'ctunm.mask : 20/0';'ctunm.maskAdd : 96/21';'ctunm.maskDrop : 96/22';'cubm.mask : 100/0';'cviam2.drawing : 108/20';'cviam2.mask : 44/0';'cviam2.maskAdd : 108/21';'cviam2.maskDrop : 108/22';'cviam3.drawing : 112/20';'cviam3.mask : 50/0';'cviam3.maskAdd : 112/21';'cviam3.maskDrop : 112/22';'cviam4.drawing : 117/20';'cviam4.mask : 58/0';'cviam4.maskAdd : 117/21';'cviam4.maskDrop : 117/22';'cviam.drawing : 105/20';'cviam.mask : 40/0';'cviam.maskAdd : 105/21';'cviam.maskDrop : 105/22';'diff.boundary : 65/4';'diff.cut : 65/14';'diff.drawing : 65/20';'diff.hv : 65/8';'diff.label : 65/6';'diff.net : 65/23';'diff.pin : 65/16';'diff.res : 65/13';'dnwell.drawing : 64/18';'fom.dummy : 22/23';'hvi.drawing : 75/20';'hvntm.drawing : 125/20';'hvtp.drawing : 78/44';'hvtr.drawing : 18/20';'inductor.drawing : 82/24';'inductor.label : 82/25';'inductor.term1 : 82/26';'inductor.term2 : 82/27';'inductor.term3 : 82/28';'ldntm.drawing : 11/44';'li1.blockage : 67/10';'li1.boundary : 67/4';'li1.cut : 67/14';'li1.drawing : 67/20';'li1.label : 67/5';'li1.net : 67/23';'li1.pin : 67/16';'li1.probe : 67/25';'li1.res : 67/13';'li1.short : 67/15';'licon1.boundary : 66/60';'licon1.drawing : 66/44';'licon1.net : 66/41';'licon1.pin : 66/58';'lvtn.drawing : 125/44';'marker.error : 83/6';'marker.warning : 83/7';'mcon.boundary : 67/60';'mcon.drawing : 67/44';'mcon.blockage : 67/44';'mcon.net : 67/41';'mcon.pin : 67/48';'met1.blockage : 68/10';'met1.boundary : 68/4';'met1.cut : 68/14';'met1.drawing : 68/20';'met1.label : 68/5';'met1.net : 68/23';'met1.option1 : 68/32';'met1.option2 : 68/33';'met1.option3 : 68/34';'met1.option4 : 68/35';'met1.option5 : 68/36';'met1.option6 : 68/37';'met1.option7 : 68/38';'met1.option8 : 68/39';'met1.pin : 68/16';'met1.probe : 68/25';'met1.psa1 : 68/88';'met1.psa2 : 68/89';'met1.psa3 : 68/90';'met1.psa4 : 68/91';'met1.psa5 : 68/92';'met1.psa6 : 68/93';'met1.res : 68/13';'met1.short : 68/15';'met2.blockage : 69/10';'met2.boundary : 69/4';'met2.cut : 69/14';'met2.drawing : 69/20';'met2.label : 69/5';'met2.net : 69/23';'met2.option1 : 69/32';'met2.option2 : 69/33';'met2.option3 : 69/34';'met2.option4 : 69/35';'met2.option5 : 69/36';'met2.option6 : 69/37';'met2.option7 : 69/38';'met2.option8 : 69/39';'met2.pin : 69/16';'met2.probe : 69/25';'met2.psa1 : 69/88';'met2.psa2 : 69/89';'met2.psa3 : 69/90';'met2.psa4 : 69/91';'met2.psa5 : 69/92';'met2.psa6 : 69/93';'met2.res : 69/13';'met2.short : 69/15';'met3.blockage : 70/10';'met3.boundary : 70/4';'met3.cut : 70/14';'met3.drawing : 70/20';'met3.fuse : 70/17';'met3.label : 70/5';'met3.net : 70/23';'met3.option1 : 70/32';'met3.option2 : 70/33';'met3.option3 : 70/34';'met3.option4 : 70/35';'met3.option5 : 70/36';'met3.option6 : 70/37';'met3.option7 : 70/38';'met3.option8 : 70/39';'met3.pin : 70/16';'met3.probe : 70/25';'met3.psa1 : 70/88';'met3.psa2 : 70/89';'met3.psa3 : 70/90';'met3.psa4 : 70/91';'met3.psa5 : 70/92';'met3.psa6 : 70/93';'met3.res : 70/13';'met3.short : 70/15';'met4.blockage : 71/10';'met4.boundary : 71/4';'met4.cut : 71/14';'met4.drawing : 71/20';'met4.fuse : 71/17';'met4.label : 71/5';'met4.net : 71/23';'met4.option1 : 71/32';'met4.option2 : 71/33';'met4.option3 : 71/34';'met4.option4 : 71/35';'met4.option5 : 71/36';'met4.option6 : 71/37';'met4.option7 : 71/38';'met4.option8 : 71/39';'met4.pin : 71/16';'met4.probe : 71/25';'met4.psa1 : 71/88';'met4.psa2 : 71/89';'met4.psa3 : 71/90';'met4.psa4 : 71/91';'met4.psa5 : 71/92';'met4.psa6 : 71/93';'met4.res : 71/13';'met4.short : 71/15';'met5.blockage : 72/10';'met5.boundary : 72/4';'met5.cut : 72/14';'met5.drawing : 72/20';'met5.fuse : 72/17';'met5.label : 72/5';'met5.net : 72/23';'met5.option1 : 72/32';'met5.option2 : 72/33';'met5.option3 : 72/34';'met5.option4 : 72/35';'met5.option5 : 72/36';'met5.option6 : 72/37';'met5.option7 : 72/38';'met5.option8 : 72/39';'met5.pin : 72/16';'met5.probe : 72/25';'met5.psa1 : 72/88';'met5.psa2 : 72/89';'met5.psa3 : 72/90';'met5.psa4 : 72/91';'met5.psa5 : 72/92';'met5.psa6 : 72/93';'met5.res : 72/13';'met5.short : 72/15';'ncm.drawing : 92/44';'npc.drawing : 95/20';'npn.drawing : 82/20';'npn.label : 82/5';'nsdm.drawing : 93/44';'nsm.drawing : 61/20';'nwell.drawing : 64/20';'nwell.label : 64/5';'nwell.net : 84/23';'nwell.pin : 64/16';'overlap.boundary : 90/4';'overlap.drawing : 90/20';'pad.drawing : 76/20';'pad.label : 76/5';'pad.pin : 76/16';'padCenter.drawing : 81/20';'pmm2.drawing : 77/20';'pmm.drawing : 85/44';'pnp.drawing : 82/44';'pnp.label : 82/59';'poly.boundary : 66/4';'poly.cut : 66/14';'poly.drawing : 66/20';'poly.gate : 66/9';'poly.label : 66/5';'poly.model : 66/83';'poly.net : 66/23';'poly.pin : 66/16';'poly.probe : 66/25';'poly.res : 66/13';'poly.short : 66/15';'prBoundary.boundary : 235/4';'prBoundary.drawing : 235/0';'prune.drawing : 84/44';'psdm.drawing : 94/20';'pwell.cut : 64/14';'pwell.drawing : 64/44';'pwell.label : 64/59';'pwell.pin : 122/16';'pwell.res : 64/13';'pwelliso.label : 44/5';'pwelliso.pin : 44/16';'rdl.cut : 74/14';'rdl.drawing : 74/20';'rdl.label : 74/5';'rdl.option1 : 89/32';'rdl.option2 : 89/33';'rdl.option3 : 89/34';'rdl.option4 : 89/35';'rdl.option5 : 89/36';'rdl.option6 : 89/37';'rdl.option7 : 89/38';'rdl.option8 : 89/39';'rdl.pin : 74/16';'rdl.psa1 : 74/88';'rdl.psa2 : 74/89';'rdl.psa3 : 74/90';'rdl.psa4 : 74/91';'rdl.psa5 : 74/92';'rdl.psa6 : 74/93';'rdl.res : 74/13';'rdl.short : 74/15';'rpm.drawing : 86/20';'rrpm.drawing : 102/20';'tap.boundary : 65/60';'tap.drawing : 65/44';'tap.label : 65/5';'tap.net : 65/41';'tap.pin : 65/48';'target.drawing : 76/44';'text.drawing : 83/44';'tunm.drawing : 80/20';'ubm.drawing : 127/21';'vhvi.drawing : 74/21';'via2.boundary : 69/60';'via2.drawing : 69/44';'via2.net : 69/41';'via2.pin : 69/58';'via3.boundary : 70/60';'via3.drawing : 70/44';'via3.net : 70/41';'via3.pin : 70/48';'via4.boundary : 71/60';'via4.drawing : 71/44';'via4.net : 71/41';'via4.pin : 71/48';'via.boundary : 68/60';'via.drawing : 68/44';'via.net : 68/41';'via.pin : 68/58') + 0.005 + true + #1 + true + #1 + false + #1 + true + OUTLINE + true + PLACEMENT_BLK + true + REGIONS + true + .drawing + 0 + true + .pin + 2 + true + .blockage + 3 + true + .blockage + 4 + true + .label + 1 + true + .drawing + 0 + + + 0.005 + 1 + 100 + 100 + 0 + 0 + 0 + false + false + false + true + layer_map() + + + 0 + 0.005 + layer_map() + true + false + + + 1 + 0.005 + layer_map() + true + false + true + + + + + + + true + false + false + false + false + 8000 + 32000 + LIB + + + 2 + false + false + 1 + * + false + + + 0 + + + false + false + + + 0 + + true + + + + li1,67/44,met1 + met1,68/44,met2 + met2,69/44,met3 + met3,70/44,met4 + met4,71/44,met5 + li1='67/20+67/5+67/16' + met1='68/20+68/5+68/16' + met2='69/20+69/5+69/16' + met3='70/20+70/5+70/16' + met4='71/20+71/5+71/16' + met5='72/20-72/15+72/5+72/16' + + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.drc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.drc new file mode 100755 index 00000000..e9a03fc8 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.drc @@ -0,0 +1,580 @@ +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input, $top_cell) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +if $feol + FEOL = true # front-end-of-line checks +else + FEOL = false # front-end-of-line checks +end +if $beol + BEOL = true # back-end-of-line checks +else + BEOL = false # back-end-of-line checks +end +if $offgrid + OFFGRID = true # manufacturing grid/angle checks +else + OFFGRID = false # manufacturing grid/angle checks +end + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +# tiles(1000.um) +# use a tile border of 10 micron: +# tile_borders(1.um) +#no_borders + +# hierachical +deep + +if $thr + threads($thr) +else + threads(4) +end + +# if more inof is needed, set true +# verbose(true) +verbose(true) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/20" +mcon_wildcard = "67/44" + +m1_wildcard = "68/20" +via_wildcard = "68/44" + +m2_wildcard = "69/20" +via2_wildcard = "69/44" + +m3_wildcard = "70/20" +via3_wildcard = "70/44" + +m4_wildcard = "71/20" +via4_wildcard = "71/44" + +m5_wildcard = "72/20" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +log("DRC section") + +if FEOL +log("FEOL section") +gate = diff & poly + +# dnwell +log("dnwell") +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") + + +# nwell +log("nwell") +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") + +# hvtp +log("hvtp") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") + +# hvtr +log("htvr") +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") +hvtr.and(hvtp).output("hvtr.2_a", "hvtr.2_a : hvtr must not overlap hvtp") + +# lvtn +log("lvtn") +lvtn.width(0.38, euclidian).output("lvtn.1a", "lvtn.1a : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") + +# ncm +log("ncm") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +ncm.isolated(0.38, euclidian).output("ncm.2a", "ncm.2a : min. ncm spacing : 0.38um") + +# diff-tap +log("diff-tap") +difftap = diff.or(tap) +diff_width = diff.rectangles.width(0.15, euclidian).polygons +diff_cross_areaid_ce = diff_width.edges.outside_part(areaid_ce).not(diff_width.outside(areaid_ce).edges) +diff_cross_areaid_ce.output("difftap.1", "difftap.1 : min. diff width across areaid:ce : 0.15um") + +diff.outside(areaid_ce).width(0.15, euclidian).output("difftap.1_a", "difftap.1_a : min. diff width in periphery : 0.15um") + +tap_width = tap.rectangles.width(0.15, euclidian).polygons +tap_cross_areaid_ce = tap_width.edges.outside_part(areaid_ce).not(tap_width.outside(areaid_ce).edges) +tap_cross_areaid_ce.output("difftap.1_b", "difftap.1_b : min. tap width across areaid:ce : 0.15um") + +tap.outside(areaid_ce).width(0.15, euclidian).output("difftap.1_c", "difftap.1_c : min. tap width in periphery : 0.15um") + +difftap.space(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") + +# tunm +log("tunm") +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.space(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") + +# poly +log("poly") +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") + +# updated for sram - jeffdi +#poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.not(areaid_ce).space(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") + + +# rpm +log("rpm") +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") + +# urpm +log("urpm") +urpm.width(1.27, euclidian).output("urpm.1a", "urpm.1a : min. rpm width : 1.27um") +urpm.isolated(0.84, euclidian).output("urpm.2", "urpm.2 : min. rpm spacing : 0.84um") + +# npc +log("npc") +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.space(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") + +# licon +log("licon") +xfom = difftap.not(poly) +licon1ToXfom = licon.interacting(licon.and(xfom)) +licon1ToXfom_PERI = licon1ToXfom.not(areaid_ce) + +licon.non_rectangles.output("licon.1", "licon.1 : licon should be rectangle") +licon.not(rpm.or(urpm)).edges.without_length(0.17).output("licon.1_a/b", "licon.1_a/b : minimum/maximum width of licon : 0.17um") +#licon.and(poly.interacting(poly_rs).and(rpm.or(urpm))).not_interacting((licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +#licon.and(diff_or_tap).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon1ToXfom_PERI.separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +licon1ToXfom_PERI.and(npc).output("licon.13_a", "licon.13_a : licon of diffTap in periphery must not overlap npc") +licon.interacting(poly).and(licon.interacting(difftap)).output("licon.17", "licon.17 : Licons may not overlap both poly and (diff or tap)") + +# CAPM +log("capm") +m3_bot_plate = (capm.and(m3)).sized(0.14) +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.space(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m3.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m3_bot_plate.isolated(1.2, euclidian).output("capm.2b_a", "capm.2b_a : min. spacing of m3_bot_plate : 1.2um") +capm.and(m3).enclosing(m3, 0.14, euclidian).output("capm.3", "capm.3 : min. capm and m3 enclosure of m3 : 0.14um") +m3.enclosing(capm, 0.14, euclidian).output("capm.3_a", "capm.3_a : min. m3 enclosure of capm : 0.14um") +capm.enclosing(via3, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via3 : 0.14um") +capm.separation(via3, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via3 : 0.14um") + +# CAP2M +log("cap2m") +m4_bot_plate = (cap2m.and(m4)).sized(0.14) +cap2m.width(1.0, euclidian).output("cap2m.1", "cap2m.1 : min. cap2m width : 1.0um") +cap2m.isolated(0.84, euclidian).output("cap2m.2a", "cap2m.2a : min. cap2m spacing : 0.84um") +m4.interacting(cap2m).isolated(1.2, euclidian).output("cap2m.2b", "cap2m.2b : min. cap2m spacing : 1.2um") +# This rule has false positive errors +m4_bot_plate.isolated(1.2, euclidian).output("cap2m.2b_a", "cap2m.2b_a : min. spacing of m4_bot_plate : 1.2um") +cap2m.and(m4).enclosing(m4, 0.14, euclidian).output("cap2m.3", "cap2m.3 : min. m4 enclosure of cap2m : 0.14um") +cap2m.enclosing(via4, 0.2, euclidian).output("cap2m.4", "cap2m.4 : min. cap2m enclosure of via4 : 0.14um") +cap2m.separation(via4, 0.2, euclidian).output("cap2m.5", "cap2m.5 : min. cap2m spacing to via4 : 0.14um") + +end #FEOL + +if BEOL +log("BEOL section") + +# li +log("li") + +# currently-unused: + +# update for sram - jeffdi +linotace = li.not(areaid_ce) +linotace.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +# updated for sram - jeffdi +linotace.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") + +licon_peri = licon.not(areaid_ce) +li_edges_with_less_enclosure = li.enclosing(licon_peri, 0.08, not_opposite, projection).second_edges +error_corners = li_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) +li_interact = licon_peri.interacting(error_corners.polygons(1.dbu)) +li_interact.output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") + +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +log("mcon") +mconnotace = mcon.not(areaid_ce) + +mconnotace.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") + +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") + +#updated for sram - jeffdi +mconnotace.not(li).output("ct.4", "ct.4 : mcon should covered by li") + +# m1 +log("m1") +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5).snap(0.005) & m1 +non_huge_m1 = m1.edges - huge_m1 +huge_m1 = huge_m1.edges.outside_part(m1.merged) + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) + + + +#updated for sram - jeffdi +not_in_cell6_m1.enclosing(mconnotace, 0.03, euclidian).output("791_m1.4", "791_m1.4 : min. m1 enclosure of mcon : 0.03um") +mconnotace.not(m1).output("m1.4", "m1.4 : mcon periphery must be enclosed by m1") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") + +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") + +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 with holes area : 0.14um²") + +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") +end +# via +log("via") +if backend_flow = AL + ringVIA = via.drc(with_holes > 0) + rectVIA = via.not(ringVIA) + via_not_mt = rectVIA.not(areaid_mt) + + via_not_mt.non_rectangles.output("via.1a", "via.1a : via outside of moduleCut should be rectangular") + via_not_mt.width(0.15, euclidian).output("via.1a_a", "via.1a_a : min. width of via outside of moduleCut : 0.15um") + via_not_mt.edges.without_length(nil, 0.15 + 1.dbu).output("via.1a_b", "via.1a_b : maximum length of via : 0.15um") + + via.space(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + + ringVIA.width(0.2, euclidian).output("via.3", "via.3 : min. width of ring-shaped via : 0.2um") + ringVIA.drc(width >= 0.205).output("via.3", "via.3 : max. width of ring-shaped via : 0.205um") + + ringVIA.not(areaid_sl).output("via.3_b", "via.3_b: ring-shaped via must be enclosed by areaid_sl") + + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + via.squares.edges.with_length(0.15).not(m1).output("via.4a_a", "via.4a_a : via must be enclosed by met1") + + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via.5a", "via.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") +end + +# m2 +log("m2") +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5).snap(0.005) & m2 +non_huge_m2 = m2.edges - huge_m2 +huge_m2 = huge_m2.edges.outside_part(m2.merged) +via_outside_periphery = via.not(areaid_ce) + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") + +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + + via_outside_periphery.not(m2).output("m2.4_a", "m2.4_a : via in periphery must be enclosed by met2") + + + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + error_corners = via_edges_with_less_enclosure_m2.width(angle_limit(100.0), 1.dbu) + via_interact = via.interacting(error_corners.polygons(1.dbu)) + via_interact.output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + + #via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + #opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + #via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") +end + +# via2 +log("via2") +if backend_flow = AL + ringVIA2 = via2.drc(with_holes > 0) + rectVIA2 = via2.not(ringVIA2) + via2_not_mt = rectVIA2.not(areaid_mt) + via2_not_mt.non_rectangles.output("via2.1a", "via2.1a : via2 outside of moduleCut should be rectangular") + via2_not_mt.width(0.2, euclidian).output("via2.1a_a", "via2.1a_a : min. width of via2 outside of moduleCut : 0.2um") + via2_not_mt.edges.without_length(nil, 0.2 + 1.dbu).output("via2.1a_b", "via2.1a_b : maximum length of via2 : 0.2um") + #via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + via2.space(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + ringVIA2.width(0.2, euclidian).output("via2.3", "via2.3 : min. width of ring-shaped via2 : 0.2um") + ringVIA2.drc(width >= 0.205).output("via2.3", "via2.3 : max. width of ring-shaped via2 : 0.205um") + ringVIA2.not(areaid_sl).output("via2.3_b", "via2.3_b: ring-shaped via2 must be enclosed by areaid_sl") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + #m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2.not(m2).output("via2.4_a", "via2.4_a : via must be enclosed by met2") + + via2_edges_with_less_enclosure = m2.enclosing(via2, 0.085, projection).second_edges + error_corners = via2_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) + via2_interact = via2.interacting(error_corners.polygons(1.dbu)) + via2_interact.output("via2.5", "via2.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") +end + +# m3 +log("m3") +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5).snap(0.005) & m3 +non_huge_m3 = m3.edges - huge_m2 +huge_m3 = huge_m3.edges.outside_part(m3.merged) + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +(huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3cd", "m3.3cd : min. 3um.m3 spacing m3 : 0.4um") + +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2.not(m3).output("m3.4_a", "m3.4_a : via2 must be enclosed by met3") +end + +# via3 +log("via3") +if backend_flow = AL + + ringVIA3 = via3.drc(with_holes > 0) + rectVIA3 = via3.not(ringVIA3) + via3_not_mt = rectVIA3.not(areaid_mt) + via3_not_mt.non_rectangles.output("via3.1", "via3.1 : via3 outside of moduleCut should be rectangular") + via3_not_mt.width(0.2, euclidian).output("via3.1_a", "via3.1_a : min. width of via3 outside of moduleCut : 0.2um") + via3_not_mt.edges.without_length(nil, 0.2 + 1.dbu).output("via3.1_b", "via3.1_b : maximum length of via3 : 0.2um") + + #via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.space(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + rectVIA3.not(m3).output("via3.4_a", "via3.4_a : non-ring via3 must be enclosed by met3") + + via_edges_with_less_enclosure = m3.enclosing(via3, 0.09, projection).second_edges + error_corners = via_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) + via3_interact = via3.interacting(error_corners.polygons(1.dbu)) + via3_interact.output("via3.5", "via3.5 : min. m3 enclosure of via3 of 2 opposite edges : 0.09um") +end + +# m4 +log("m4") +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5).snap(0.005) & m4 +non_huge_m4 = m4.edges - huge_m4 +huge_m4 = huge_m4.edges.outside_part(m4.merged) + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +m4.with_area(0..0.240).output("m4.4a", "m4.4a : min. m4 area : 0.240um²") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + via3.not(m4).output("m4.3_a", "m4.3_a : via3 must be enclosed by met4") +end + +# via4 +log("via4") +ringVIA4 = via4.drc(with_holes > 0) +rectVIA4 = via4.not(ringVIA4) +via4_not_mt = rectVIA4.not(areaid_mt) +via4_not_mt.non_rectangles.output("via4.1", "via4.1 : via4 outside of moduleCut should be rectangular") +via4_not_mt.width(0.8, euclidian).output("via4.1_a", "via4.1_a : min. width of via4 outside of moduleCut : 0.8um") +via4_not_mt.edges.without_length(nil, 0.8 + 1.dbu).output("via4.1_b", "via4.1_b : maximum length of via4 : 0.8um") + +#via4.edges.without_length(0.8).output("via4.1", "via4.1 : minimum/maximum width of via4 : 0.8um") +via4.space(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +ringVIA4.width(0.2, euclidian).output("via4.3", "via4.3 : min. width of ring-shaped via4 : 0.2um") +ringVIA4.drc(width >= 0.205).output("via4.3", "via4.3 : max. width of ring-shaped via4 : 0.205um") +ringVIA4.not(areaid_sl).output("via4.3_b", "via4.3_b: ring-shaped via4 must be enclosed by areaid_sl") +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +rectVIA4.not(m4).output("via4.4_a", "via4.4_a : m4 must enclose all via4") + +# m5 +log("m5") +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +# via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m5.3 : min. m5 enclosure of via4 : 0.31um") +via4.not(m5).output("m5.3_a", "m5.3_a : min. m5 enclosure of via4 : 0.31um") + +m5.with_area(0..4.0).output("m5.4", "m5.4 : min. m5 area : 4.0um²") + +# pad +log("pad") +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +log("FEOL section") + +# hvi +log("hvi") +hvi_peri = hvi.not(areaid_ce) +hvi_peri.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +hvi_peri.isolated(0.7, euclidian).output("hvi.2a", "hvi.2a : min. hvi spacing : 0.7um") + +# hvntm +log("hvntm") +hvntm_peri = hvntm.not(areaid_ce) +hvntm_peri.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm_peri.space(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") + +end #FEOL diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.lydrc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.lydrc new file mode 100755 index 00000000..c24c65eb --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr.lydrc @@ -0,0 +1,995 @@ + + + + + drc + + + + false + false + + true + drc_scripts + tools_menu.drc.end + dsl + drc-dsl-xml + # +# DRC for SKY130 according to : +# https://skywater-pdk.readthedocs.io/en/latest/rules/periphery.html +# https://skywater-pdk.readthedocs.io/en/latest/rules/layers.html +# +# Distributed under GNU GPLv3: https://www.gnu.org/licenses/ +# +# History : +# 2020-10-04 : v1.0 : initial release +# +########################################################################################## + +# optionnal for a batch launch : klayout -b -rd input=my_layout.gds -rd report=sky130_drc.txt -r drc_sky130.drc +if $input + source($input, $top_cell) +end + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +if $feol + FEOL = true # front-end-of-line checks +else + FEOL = false # front-end-of-line checks +end +if $beol + BEOL = true # back-end-of-line checks +else + BEOL = false # back-end-of-line checks +end +if $offgrid + OFFGRID = true # manufacturing grid/angle checks +else + OFFGRID = false # manufacturing grid/angle checks +end + +# klayout setup +######################## +# use a tile size of 1mm - not used in deep mode- +tiles(1000.um) +# use a tile border of 10 micron: +tile_borders(1.um) +#no_borders + +# hierachical +deep + +if $thr + threads($thr) +else + threads(4) +end + +# if more inof is needed, set true +# verbose(true) +verbose(true) + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/20" +mcon_wildcard = "67/44" + +m1_wildcard = "68/20" +via_wildcard = "68/44" + +m2_wildcard = "69/20" +via2_wildcard = "69/44" + +m3_wildcard = "70/20" +via3_wildcard = "70/44" + +m4_wildcard = "71/20" +via4_wildcard = "71/44" + +m5_wildcard = "72/20" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +class DRC::DRCLayer + def with_holes(min, max) + new_data = RBA::Region::new + self.data.each do |p| + if p.holes >= (min || 0) && (!max || p.holes <= max) + new_data.insert(p) + end + end + DRC::DRCLayer::new(@engine, new_data) + end +end + +# DRC section +######################## +log("DRC section") + +if FEOL +log("FEOL section") +gate = diff & poly + +# dnwell +log("dnwell") +dnwell.width(3.0, euclidian).output("dnwell.2", "dnwell.2 : min. dnwell width : 3.0um") +# dnwell.not(uhvi).not(areaid_po).isolated(6.3, euclidian).output("dnwell.3", "dnwell.3 : min. dnwell spacing : 6.3um") +# dnwell.and(pnp).output("dnwell.4", "dnwell.4 : dnwell must not overlap pnp") +# dnwell.and(psdm).edges.not(psdm.edges).output("dnwell.5", "p+ must not straddle dnwell") +# # dnwell.6 rue not coded + +# nwell +log("nwell") +nwell.width(0.84, euclidian).output("nwell.1", "nwell.1 : min. nwell width : 0.84um") +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +# rule nwell.4 is suitable for digital cells +#nwell.not(uhvi).not(areaid_en20).not_interacting(tap.and(licon).and(li)).output("nwell.4", "nwell4 : all nwell exempt inside uhvi must contain a n+tap") +# nwell.enclosing(dnwell.not(uhvi).not(areaid_po), 0.4, euclidian).output("nwell.5", "nwell.5 : min. nwell enclosing dnwell exempt unside uhvi : 0.4um") +# dnwell.enclosing(nwell.not(uhvi), 1.03, euclidian).output("nwell.6", "nwell.6 : min. dnwell enclosing nwell exempt unside uhvi : 1.03um") +# dnwell.separation(nwell, 4.5, euclidian).output("nwell.7", "nwell.7 : min. dnwell separation nwell : 4.5um") + +# pwbm +# pwbm.not(uhvi).output("pwbm", "pwbm must be inside uhvi") +# dnwell.and(uhvi).edges.not(pwbm).output("pwbm.4", "pwbm.4 : dnwell inside uhvi must be enclosed by pwbm") + +# pwde +# pwde.not(pwbm).output("pwdem.3", "pwdem.3 : pwde must be inside pwbm") +# pwde.not(uhvi).output("pwdem.4", "pwdem.4 : pwde must be inside uhvi") +# pwde.not(dnwell).output("pwdem.5", "pwdem.5 : pwde must be inside dnwell") + +# hvtp +log("hvtp") +#hvtp.not(nwell).output("hvtp", "hvtp must inside nwell") +hvtp.width(0.38, euclidian).output("hvtp.1", "hvtp.1 : min. hvtp width : 0.38um") +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +# hvtp.enclosing(gate.and(psdm), 0.18, euclidian).output("hvtp.3", "hvtp.3 : min. hvtp enclosure of pfet gate : 0.18um") +# hvtp.separation(gate.and(psdm), 0.18, euclidian).output("hvtp.4", "hvtp.4 : min. hvtp spacing pfet gate: 0.18um") +# hvtp.with_area(0..0.265).output("hvtp.5", "hvtp.5 : min. hvtp area : 0.265um²") + +# hvtr +log("htvr") +hvtr.width(0.38, euclidian).output("hvtr.1", "hvtr.1 : min. hvtr width : 0.38um") +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") + +# lvtn +log("lvtn") +# lvtn.width(0.38, euclidian).output("lvtn.1", "lvtn.1 : min. lvtn width : 0.38um") +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +# lvtn.separation(diff.and(poly).not(uhvi), 0.18, euclidian).output("lvtn.3a", "lvtn.3a : min. lvtn spacing to gate : 0.18um") +# lvtn.separation(diff.and(nwell).not(poly), 0.235, projection).output("lvtn.3b", "lvtn.3b : min. lvtn spacing to pfet s/d : 0.18um") +# lvtn.enclosing(gate.not(uhvi), 0.18, euclidian).output("lvtn.4b", "lvtn.4b : min. lvtn enclosing to gate : 0.18um") +# lvtn.separation(hvtp, 0.38, euclidian).output("lvtn.9", "lvtn.9 : min. lvtn spacing hvtp : 0.38um") +# nwell.not_interacting(gate.and(nwell.not(hvi).not(areaid_ce))).enclosing(lvtn.not(uhvi), 0.18, euclidian).polygons.without_area(0).output("lvtn.4b", "lvtn.4b : min. lvtn enclosure of gate : 0.18um") +# lvtn.separation(nwell.inside(areaid_ce), 0.38, euclidian).output("lvtn.12", "lvtn.12 : min. lvtn spacing nwell inside areaid.ce : 0.38um") +# lvtn.with_area(0..0.265).output("lvtn.13", "lvtn.13 : min. lvtn area : 0.265um²") + +# ncm +log("ncm") +# ncm.and(tap.and(nwell).or(diff.not(nwell))).output("ncm.x.3", "ncm.x.3 : ncm must not overlap n+diff") +ncm.width(0.38, euclidian).output("ncm.1", "ncm.1 : min. ncm width : 0.38um") +# ncm.isolated(0.38, euclidian).output("ncm.2", "ncm.2 : min. ncm spacing manual merge if smaller : 0.38um") +# ncm.enclosing(diff.and(nwell), 0.18, euclidian).output("ncm.3", "ncm.3 : min. ncm enclosure of p+diff : 0.18um") +# ncm.separation(lvtn.and(diff), 0.23, euclidian).output("ncm.5", "ncm.5 : min. ncm spacing lvtn diff : 0.23um") +# ncm.separation(diff.not(nwell), 0.2, euclidian).output("ncm.6", "ncm.6 : min. ncm spacing nfet : 0.2um") +# ncm.with_area(0..0.265).output("ncm.7", "ncm.13 : min. ncm area : 0.265um²") + +# diff-tap +log("diff-tap") +difftap = diff + tap + +# TODO: this rule needs to be reviewed to address sram +# this rule appears to be incorrect - it is flagging errors not identified by the Calibre MR deck +# difftap.width(0.15, euclidian).output("difftap.1", "difftap.1 : min. difftap width : 0.15um") + +# not_in_cell1 = layout(source.cell_obj).select("s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fpls_rdrv4", "-s8fpls_rdrv4f", "-s8fpls_rdrv8") +# not_in_cell1_diff = not_in_cell1.input(65, 20) +# not_in_cell1_diff.not(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.42).output("difftap.2", "difftap.2: min. gate (exempt areaid.sc) width : 0.42um") +# diff.and(areaid_sc).not(poly).edges.and(gate.edges).with_length(0,0.36).output("difftap.2", "difftap.2: min. gate inside areaid.sc width : 0.36um") +difftap.isolated(0.27, euclidian).output("difftap.3", "difftap.3 : min. difftap spacing : 0.27um") +# tap.edges.and(diff.edges).with_length(0,0.29).output("difftap.4", "difftap.4 : min. tap bound by diffusion : 0.29um") +# tap.edges.and(diff.edges).space(0.4, projection).output("difftap.5", "difftap.5 : min. tap bound by 2 diffusions : 0.4um") +# (tap.edges.and(diff.edges)).extended(0.01, 0.01, 0, 0, false).not(tap.and(diff)).and(diff.or(tap)).output("difftap.6", "difftap.6 : diff and tap not allowed to extend beyong their abutting ege") +# tap.edges.not_interacting(diff.edges).separation(diff.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident diff edge : 0.13um") +# diff.edges.not_interacting(tap.edges).separation(tap.edges, 0.13, euclidian).output("difftap.7", "difftap.7 : min. diff/tap spacing to non-coincident tap edge : 0.13um") +# nwell.enclosing(diff.not(uhvi).and(psdm), 0.18, euclidian).output("difftap.8", "difftap.8 : min. p+diff enclosure by nwell : 0.18um") +# diff.not(uhvi).and(nsdm).separation(nwell, 0.34, euclidian).output("difftap.9", "difftap.9 : min. n+diff spacing to nwell : 0.34um") +# nwell.enclosing(tap.not(uhvi).and(nsdm), 0.18, euclidian).output("difftap.10", "difftap.10 : min. n+tap enclosure by nwell : 0.18um") +# tap.not(uhvi).and(psdm).separation(nwell, 0.13, euclidian).output("difftap.11", "difftap.11 : min. p+tap spacing to nwell : 0.13um") + +# tunm +log("tunm") +tunm.width(0.41, euclidian).output("tunm.1", "tunm.1 : min. tunm width : 0.41um") +tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") +# tunm.enclosing(gate, 0.095, euclidian).output("tunm.3", "tunm.3 : min. tunm beyond gate : 0.095um") +# tunm.separation(gate.not_interacting(tunm), 0.095, euclidian).output("tunm.4", "tunm.4 : min. tunm spacing to gate outside tunm: 0.095um") +# gate.and(tunm).edges.not(gate.edges).output("tunm.5", "tunm.5 : gate must not straddle tunm") +# tunm.not(dnwell).output("tunm.6a", "tunm.6a : tunm not allowed outside dnwell") +# tunm.with_area(0..0.672).output("tunm.7", "tunm.7 : min. tunm area : 0.672um²") + +# poly +log("poly") +poly.width(0.15, euclidian).output("poly.1a", "poly.1a : min. poly width : 0.15um") +# poly.not(diff).edges.and(gate.and(lvtn).edges).space(0.35, euclidian).output("poly.1b", "poly.1b: min. lvtn gate width : 0.35um") + +# updated for sram - jeffdi +#poly.isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +poly.not(areaid_ce).isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") + +# poly.and(rpm.or(urpm).or(poly_rs)).width(0.33, euclidian).output("poly.3", "poly.3 : min. poly resistor width : 0.33um") +# poly.not(gate).separation(diff, 0.075, projection).polygons.without_area(0).output("poly.4", "poly.4 : min. poly on field spacing to diff : 0.075um") +# poly.not(gate).separation(tap, 0.055, euclidian).output("poly.5", "poly.5 : min. poly on field spacing to tap : 0.055um") +# gate.separation(tap, 0.3, projection).polygons.and(diff).output("poly.6", "poly.6 : min. gate spacing to tap : 0.3um") +# diff.enclosing(gate, 0.25, projection).polygons.without_area(0).output("poly.7", "poly.7 : min. source/drain length : 0.25um") +# poly.enclosing(gate, 0.13, projection).polygons.without_area(0).output("poly.8", "poly.8 : min. poly extention gate (endcap) : 0.13um") +# poly.and(rpm.or(urpm).or(poly_rs)).separation(poly.or(difftap), 0.48, euclidian).polygons.without_area(0).output("poly.9", "poly.9 : min. poly resistor space to poly or diff/tap : 0.48um") +# diff.merged.edges.end_segments(0.01).and(poly).output("poly.10", "poly.10 : poly must not overlap diff corner") +# gate.with_angle(0 .. 90).output("poly.11", "poly.11 : non 90 degree angle gate") +# not_in_cell3 = layout(source.cell_obj).select("s8fgvr_n_fg2") +# not_in_cell3_poly = not_in_cell3.input(66, 20) +# not_in_cell3_poly.not(hvi).not(nwell.not(hvi)).and(tap).output("poly.12", "poly.12 : poly must not overlap tap") +# poly.and(diff_rs).output("poly.15", "poly.15 : poly must not overlap diff resistor") + +# rpm +log("rpm") +rpm.width(1.27, euclidian).output("rpm.1a", "rpm.1a : min. rpm width : 1.27um") +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +# rpm.enclosing(poly.and(poly_rs).and(psdm), 0.2, euclidian).output("rpm.3", "rpm.3 : min. rpm enclosure of poly resistor : 0.2um") +# psdm.enclosing(poly.and(poly_rs).and(rpm), 0.11, euclidian).output("rpm.4", "rpm.4 : min. psdm enclosure of poly resistor : 0.11um") +# npc.enclosing(poly.and(poly_rs).and(rpm), 0.095, euclidian).output("rpm.5", "rpm.5 : min. npc enclosure of poly resistor : 0.095um") +# rpm.separation(nsdm, 0.2, euclidian).output("rpm.6", "rpm.6 : min. rpm spacing nsdm: 0.2um") +# rpm.separation(poly, 0.2, euclidian).output("rpm.7", "rpm.7 : min. rpm spacing poly: 0.2um") +# rpm.and(poly).edges.not(poly.edges).output("rpm.8", "rpm.8 : poly must not straddle rpm") +# poly.and(poly_rs).and(rpm).separation(hvntm, 0.185, euclidian).output("rpm.9", "rpm.9 : min. poly resistor spacing hvntm: 0.185um") +# rpm.and(pwbm).output("rpm.10", "rpm.107 : min. rpm spacing pwbm: na") + +# varac +# varac = poly & tap & (nwell - hvi) - areaid_ce +# tap.not(poly).edges.and(varac.edges).space(0.18, euclidian).output("varac.1", "varac.1: min. varac channel length : 0.18um") +# tap.and(poly).edges.and(varac.edges).space(1.0, euclidian).output("varac.2", "varac.2: min. varac channel wdth : 1.0um") +# varac.separation(hvtp, 0.18, euclidian).output("varac.3", "varac.3: min. varac channel space to hvtp : 0.18um") +# varac.separation(licon.and(tap), 0.25, euclidian).output("varac.4", "varac.4: min. varac channel space to licon on tap : 0.25um") +# nwell.enclosing(poly.overlapping(varac), 0.15, euclidian).output("varac.5", "varac.5: min. nwell enclosure of poly overlapping varac channel : 0.15um") +# tap.overlapping(varac).separation(difftap, 0.27, euclidian).polygons.without_area(0).output("varac.6", "varac.6: min. varac channel tap space to difftap : 0.27um") +# nwell.overlapping(varac).and(diff.and(nwell)).output("varac.7", "varac.7: nwell overlapping varac channel must not overlap p+diff") + +# photo +# photodiode = dnwell & areaid_po +# photodiode.edges.without_length(3.0).output("photo.2", "photo.2 : minimum/maximum width of photodiode : 3.0um") +# photodiode.isolated(5.0, euclidian).output("photo.3", "photo.3 : mini. photodiode spacing : 5.0um") +# photodiode.separation(dnwell, 5.3, euclidian).output("photo.4", "photo.4 : mini. photodiode spacing to dnwell : 5.3um") +# areaid_po.not(dnwell).output("photo.5.6", "photo.5.6 : photodiode edges must coincide areaid.po and enclosed by dnwell") +# photodiode.not(tap.not(nwell).holes).output("photo.7", "photo.7 : photodiode must be enclosed by p+tap ring") +# photodiode.and(nwell).edges.without_length(0.84).output("photo.8", "photo.8 : minimum/maximum width of nwell inside photodiode : 0.84um") +# areaid_po.edges.and(photodiode.and(nwell).sized(1.08)).without_length(12.0).output("photo.9", "photo.9 : minimum/maximum enclosure of nwell by photodiode : 1.08um") +# photodiode.and(tap).edges.without_length(0.41).output("photo.10", "photo.10 : minimum/maximum width of tap inside photodiode : 0.41um") + +# npc +log("npc") +npc.width(0.27, euclidian).output("npc.1", "npc.1 : min. npc width : 0.27um") +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +# npc.separation(gate, 0.09, euclidian).output("npc.4", "npc.4 : min. npc spacing to gate : 0.09um") + +# nsdm/psdm +# npsdm = nsdm + psdm +# nsdm.width(0.38, euclidian).output("nsdm.1", "nsdm.1 : min. nsdm width : 0.38um") +# psdm.width(0.38, euclidian).output("psdm.1", "psdm.1 : min. psdm width : 0.38um") +# nsdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. nsdm spacing, should be mnually merge if less : 0.38um") +# psdm.isolated(0.38, euclidian).output("n/psdm.1", "n/psdm.1 : min. psdm spacing, should be mnually merge if less : 0.38um") +# npsdm.enclosing(diff, 0.125, euclidian).polygons.not(tap.sized(0.125)).output("n/psdm.5a", "n/psdm.5a : min. n/psdm enclosure diff except butting edge : 0.125um") +# npsdm.enclosing(tap, 0.125, euclidian).polygons.not(diff.sized(0.125)).output("n/psdm.5b", "n/psdm.5b : min. n/psdm enclosure tap except butting edge : 0.125um") +# tap.edges.and(diff.edges).not(npsdm).output("n/psdm.6", "n/psdm.6 : min. n/psdm enclosure of butting edge : 0.0um") +# nsdm.and(difftap).separation(psdm.and(difftap), 0.13, euclidian).polygons.without_area(0).output("n/psdm.7", "n/psdm.7 : min. nsdm diff spacing to psdm diff except butting edge : 0.13um") +# diff.and((nsdm.and(nwell)).or(psdm.not(nwell))).output("n/psdm.8", "n/psdm.8 : diff should be the opposite type of well/substrate underneath") +# tap.and((nsdm.not(nwell)).or(psdm.and(nwell))).output("n/psdm.8", "n/psdm.8 : tap should be the same type of well/substrate underneath") +# tap.and(diff).without_area(0).output("tap and diff", "tap and diff must not overlap") +# nsdm.with_area(0..0.265).output("n/psdm.10a", "n/psdm.10a : min. nsdm area : 0.265um²") +# psdm.with_area(0..0.265).output("n/psdm.10b", "n/psdm.10b : min. psdm area : 0.265um²") + +# licon +log("licon") +licon.not(poly.interacting(poly_rs).and(rpm)).edges.without_length(0.17).output("licon.1", "licon.1 : minimum/maximum width of licon : 0.17um") +licon.and(poly.interacting(poly_rs).and(rpm)).not_interacting((licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(0.19)).or(licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(2.0))).output("licon.1b/c", "licon.1b/c : minimum/maximum width/length of licon inside poly resistor : 2.0/0.19um") +# licon.isolated(0.17, euclidian).output("licon.2", "licon.2 : min. licon spacing : 0.17um") +# licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(0.19).space(0.35, euclidian).output("licon.2b", "licon.2b : min. licon 0.19um edge on resistor spacing : 0.35um") +# licon.interacting(licon.and(poly.interacting(poly_rs).and(rpm)).edges.with_length(2.0)).separation(licon.and(poly.interacting(poly_rs).and(rpm)), 0.51, euclidian).output("licon.2c", "licon.2c : min. licon 2.0um edge on resistor spacing : 0.51um") +# licon.and(poly.interacting(poly_rs).and(rpm)).separation(licon.not(poly.interacting(poly_rs).and(rpm)), 0.51, euclidian).output("licon.2d", "licon.2d : min. licon on resistor spacing other licon : 0.51um") +# rule licon.3 not coded +# licon.not(li).not(poly.or(diff).or(tap)).output("licon.4", "licon.4 : min. licon must overlap li and (poly or tap or diff)") +# diff.enclosing(licon, 0.04, euclidian).output("licon.5", "licon.5 : min. diff enclosure of licon : 0.04um") +# tap.edges.and(diff.edges).separation(licon.and(tap).edges, 0.06, euclidian).output("licon.6", "licon.6 : min. abutting edge spacing to licon tap : 0.06um") +# licon_edges_with_less_enclosure_tap = tap.enclosing(licon, 0.12, projection).second_edges +# opposite1 = (licon.edges - licon_edges_with_less_enclosure_tap).width(0.17 + 1.dbu, projection).polygons +# licon.not_interacting(opposite1).output("licon.7", "licon.7 : min. tap enclosure of licon by one of 2 opposite edges : 0.12um") +# poly.enclosing(licon, 0.05, euclidian).output("licon.8", "licon.8 : min. poly enclosure of licon : 0.05um") +# licon008 = licon.interacting(poly.enclosing(licon, 0.08, euclidian).polygons) +# licon_edges_with_less_enclosure_poly = poly.enclosing(licon, 0.08, projection).second_edges +# opposite2 = (licon.edges - licon_edges_with_less_enclosure_poly).width(0.17 + 1.dbu, projection).polygons +# licon008.not_interacting(opposite2).output("licon.8a", "licon.8a : min. poly enclosure of licon by one of 2 opposite edges : 0.08um") +# # rule licon.9 not coded +# licon.and(tap.and(nwell.not(hvi))).separation(varac, 0.25, euclidian).output("licon.10", "licon.10 : min. licon spacing to varac channel : 0.25um") +# not_in_cell4 = layout(source.cell_obj).select("-s8fs_gwdlvx4", "-s8fs_gwdlvx8", "-s8fs_hvrsw_x4", "-s8fs_hvrsw8", "-s8fs_hvrsw264", "-s8fs_hvrsw520", "-s8fs_rdecdrv", "-s8fs_rdec8”, “s8fs_rdec32", "-s8fs_rdec264", "-s8fs_rdec520") +# not_in_cell4_licon = not_in_cell4.input(66, 44) +# not_in_cell4_licon.and(diff.or(tap)).separation(gate.not(areaid_sc), 0.055, euclidian).output("licon.11", "licon.11 : min. licon spacing to gate : 0.055um") +# licon.and(diff.or(tap)).separation(gate.and(areaid_sc), 0.05, euclidian).output("licon.11a", "licon.11a : min. licon spacing to gate inside areaid.sc : 0.05um") +# in_cell4 = layout(source.cell_obj).select("+s8fs_gwdlvx4", "+s8fs_gwdlvx8", "+s8fs_hvrsw_x4", "+s8fs_hvrsw8", "+s8fs_hvrsw264", "+s8fs_hvrsw520") +# in_cell4_licon = in_cell4.input(66, 44) +# in_cell4_licon.and(diff.or(tap)).separation(gate, 0.04, euclidian).output("licon.11c", "licon.11c : min. licon spacing to gate for specific cells: 0.04um") +# # rules 11.b , 11.d not coded +# diff.interacting(gate).not(diff.interacting(gate).width(5.7, euclidian).polygons).output("licon.12", "licon.12 : max. sd width without licon : 5.7um") +licon.and(diff.or(tap)).separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +# licon.and(poly).separation(diff.or(tap), 0.19, euclidian).output("licon.14", "licon.14 : min. poly licon spacing to difftap : 0.19um") +# npc.enclosing(licon.and(poly), 0.1, euclidian).output("licon.15", "licon.15 : min. npc enclosure of poly-licon : 0.1um") +# rule licon.16 not applicable for the diff for the nmos of a nand gates or the pmos of a nor gates +#diff.not(gate).not_interacting(licon).output("licon.16", "licon.16 : diff must enclose one licon") +# tap.not(uhvi).not_interacting(licon).output("licon.16", "licon.16 : tap must enclose one licon") + +# this rule appears to be incorrect - it is flagging errors not identified by the Calibre MR deck +# poly.and(tap).edges.not(tap.edges).output("licon.17", "licon.17 : tap must not straddle poly") + +# npc.not_interacting(licon.and(poly)).output("licon.18", "licon.18 : npc mut enclosed one poly-licon") + +# vpp +log("vpp") +# vpp.width(1.43, euclidian).output("vpp.1", "vpp.1 : min. vpp width : 1.43um") +# # rules 1.b, 1.c not coded +# vpp.and(poly.or(difftap)).output("vpp.3", "vpp.3 : vpp must not overlapp poly or diff or tap") +# vpp.and(nwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle nwell") +# vpp.and(dnwell).edges.not(vpp.edges).output("vpp.4", "vpp.4 : vpp must not straddle dnwell") +# vpp.and(poly.or(li).or(m1).or(m2)).separation(poly.or(li).or(m1).or(m2), 1.5, euclidian).polygons.with_area(2.25,nil).output("vpp.5", "vpp.5 : min. vpp spacing to poly or li or m1 or m2 : 1.5um") +# vpp.with_area(0..area(vpp.and(m3))*0.25).output("vpp.5a", "vpp.5a : max. m3 density in vpp : 0.25") +# vpp.with_area(0..area(vpp.and(m4))*0.3).output("vpp.5b", "vpp.5b : max. m4 density in vpp : 0.3") +# vpp.with_area(0..area(vpp.and(m5))*0.4).output("vpp.5c", "vpp.5c : max. m5 density in vpp : 0.4") +# nwell.enclosing(vpp, 1.5, euclidian).output("vpp.8", "vpp.8 : nwell enclosure of vpp : 1.5") +# vpp.separation(nwell, 1.5, euclidian).polygons.without_area(0).output("vpp.9", "vpp.9 : vpp spacing to nwell : 1.5") +# # rule vpp.10 not coded +# # rule vpp.11 not coded because moscap is not defined properly by any gds layer +# # rules vpp.12a, 12b, 12c not coded because specific to one cell +# if backend_flow = CU +# m1.separation(vpp.and(m1), 0.16, euclidian).polygons.without_area(0).output("vpp.13", "vpp.13 : m1 spacing to m1inside vpp : 0.16") +# end + +# CAPM +log("capm") +capm.width(1.0, euclidian).output("capm.1", "capm.1 : min. capm width : 1.0um") +capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") +m2.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") +m2.enclosing(capm, 0.14, euclidian).output("capm.3", "capm.3 : min. m2 enclosure of capm : 0.14um") +capm.enclosing(via2, 0.14, euclidian).output("capm.4", "capm.4 : min. capm enclosure of via2 : 0.14um") +capm.separation(via2, 0.14, euclidian).output("capm.5", "capm.5 : min. capm spacing to via2 : 0.14um") +# capm.sized(-20.0).sized(20.0).output("capm.6", "capm.6 : max. capm lenght/width : 20um") +# capm.with_angle(0 .. 90).output("capm.7", "capm.7 : capm not rectangle") +# capm.separation(via, 0.14, euclidian).polygons.without_area(0).output("capm.8", "capm.8 : min. capm spacing to via : 0.14um") +# capm.and(nwell).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle nwell") +# capm.and(diff).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle diff") +# capm.and(tap).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle tap") +# capm.and(poly).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle poly") +# capm.and(li).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle li") +# capm.and(m1).edges.not(capm.edges).output("capm.10", "capm.10 : capm must not straddle m1") +# capm.separation(m2.not_interacting(capm), 0.14, euclidian).output("capm.11", "capm.11 : min. capm spacing to m2 not overlapping capm : 0.5um") + +end #FEOL + +if BEOL +log("BEOL section") + +# li +log("li") + +# currently-unused: +# not_in_cell5 = source.select("-s8rf2_xcmvpp_hd5_*") +# not_in_cell5_li = not_in_cell5.polygons(li_wildcard) + +# update for sram - jeffdi +# not_in_cell5_li.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") +linotace = li.not(areaid_ce) +linotace.width(0.17, euclidian).output("li.1", "li.1 : min. li width : 0.17um") + +# in_cell5_li = li - not_in_cell5_li +# in_cell5_li.width(0.14, euclidian).output("li.1a", "li.1a : min. li width for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# rule li.2 not coded + +# updated for sram - jeffdi +linotace.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") +#not_in_cell5_li.space(0.17, euclidian).output("li.3", "li.3 : min. li spacing : 0.17um") + +# in_cell5_li.space(0.14, euclidian).output("li.3a", "li.3a : min. li spacing for the cells s8rf2_xcmvpp_hd5_* : 0.14um") + +# TODO: this next rule is hanging - it also needs to me updated to support sram +# licon08 = licon.interacting(li.enclosing(licon, 0.08, euclidian).polygons) +licon_edges_with_less_enclosure_li = li.enclosing(licon, 0.08, projection).second_edges +opposite3 = (licon.edges - licon_edges_with_less_enclosure_li).width(0.17 + 1.dbu, projection).polygons +# licon08.not_interacting(opposite3).output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") + +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +log("mcon") +mcon.edges.without_length(0.17).output("ct.1", "ct.1 : minimum/maximum width of mcon : 0.17um") +mcon.space(0.19, euclidian).output("ct.2", "ct.2 : min. mcon spacing : 0.19um") +# rule ct.3 not coded + +#updated for sram - jeffdi +#mcon.not(li).output("ct.4", "ct.4 : mcon should covered by li") +mconnotace = mcon.not(areaid_ce) +mconnotace.not(li).output("ct.4", "ct.4 : mcon should covered by li") + +# if backend_flow = CU +# li.interacting(li.and(m1).not(mcon).with_holes(1,10)).enclosing(mcon, 0.2, euclidian).output("ct.irdrop.1", "ct.irdrop.1 : min. li enclsoure of 1..10 mcon : 0.2um") +# li.interacting(li.and(m1).not(mcon).with_holes(11,100)).enclosing(mcon, 0.3, euclidian).output("ct.irdrop.2", "ct.irdrop.2 : min. li enclsoure of 11..100 mcon : 0.3um") +# end +# + +# m1 +log("m1") +m1.width(0.14, euclidian).output("m1.1", "m1.1 : min. m1 width : 0.14um") + +huge_m1 = m1.sized(-1.5).sized(1.5) +non_huge_m1 = m1 - huge_m1 + +non_huge_m1.space(0.14, euclidian).output("m1.2", "m1.2 : min. m1 spacing : 0.14um") + +(huge_m1.separation(non_huge_m1, 0.28, euclidian) + huge_m1.space(0.28, euclidian)).output("m1.3ab", "m1.3ab : min. 3um.m1 spacing m1 : 0.28um") + +not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") +not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) + +#updated for sram - jeffdi +not_in_cell6_m1.enclosing(mconnotace, 0.03, euclidian).output("m1.4", "m1.4 : min. m1 enclosure of mcon : 0.03um") +in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") +in_cell6_m1 = in_cell6.input(m1_wildcard) +in_cell6_m1.enclosing(mcon, 0.005, euclidian).output("m1.4a", "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um") + +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") +if backend_flow = AL + mcon06 = mcon.interacting(poly.enclosing(m1, 0.06, euclidian).polygons) + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + # rule m1.pd.1, rule m1.pd.2a, rule m1.pd.2b not coded +end +#if bakend_flow = CU +# m1.sized(-2.0).sized(2.0).output("m1.11", "m1.11 : max. m1 width after slotting : 4.0um") +# # rule m1.12 not coded because inconsistent with m1.11 +# # rule m1.13, m1.14, m1.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +#end + +# via +log("via") +#rule via.3 not coded +# via.not(m1).output("via.4c.5c", "via.4c.5c : m1 must enclose all via") +if backend_flow = AL + via.not(areaid_mt).edges.without_length(0.15).output("via.1a", "via.1a : minimum/maximum width of via : 0.15um") + # via.and(areaid_mt).not_interacting((via.and(areaid_mt).edges.without_length(0.15)).or(via.and(areaid_mt).edges.without_length(0.23)).or(via.and(areaid_mt).edges.without_length(0.28))).output("via.1b", "via.1b : minimum/maximum width of via in areaid.mt: 0.15um or 0.23um or 0.28um") + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + # m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.03, euclidian).output("via.4b", "via.4b : min. m1 enclosure of 0.23um via : 0.03um") + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via1.5a", "via1.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") + via2_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.23)), 0.06, projection).second_edges + opposite6 = (via.not_interacting(via.edges.without_length(0.23)).edges - via2_edges_with_less_enclosure_m1).width(0.23 + 1.dbu, projection).polygons + # via.not_interacting(via.edges.without_length(0.23)).not_interacting(opposite6).output("via1.5b", "via1.5b : min. m1 enclosure of 0.23um via of 2 opposite edges : 0.06um") +end +# if backend_flow = CU + # via.not(areaid_mt).edges.without_length(0.18).output("via.11", "via.11 : minimum/maximum width of via : 0.18um") + # via.isolated(0.13, euclidian).output("via.12", "via.12 : min. via spacing : 0.13um") + # rule via.13 not coded because not understandable + # via1_edges_with_less_enclosure_m1 = m1.enclosing(via, 0.04, projection).second_edges + # opposite5 = (via.edges - via1_edges_with_less_enclosure_m1).width(0.18 + 1.dbu, projection).polygons + # via.not_interacting(opposite5).output("via1.14", "via1.14 : min. m1 enclosure of 0.04um via of 2 opposite edges : 0.04um") + # rules via.irdrop.1, via.irdrop.2, via.irdrop.3, via.irdrop.4 not coded because not understandable +# end + +# m2 +log("m2") +m2.width(0.14, euclidian).output("m2.1", "m2.1 : min. m2 width : 0.14um") + +huge_m2 = m2.sized(-1.5).sized(1.5) +non_huge_m2 = m2 - huge_m2 + +non_huge_m2.space(0.14, euclidian).output("m2.2", "m2.2 : min. m2 spacing : 0.14um") + +(huge_m2.separation(non_huge_m2, 0.28, euclidian) + huge_m2.space(0.28, euclidian)).output("m2.3ab", "m2.3ab : min. 3um.m2 spacing m2 : 0.28um") + +# rule m2.3c not coded +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") +# via.not(m2).output("m2.via", "m2.via : m2 must enclose via") +if backend_flow = AL + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + # rule m2.pd.1, rule m2.pd.2a, rule m2.pd.2b not coded +end +# if bakend_flow = CU + # m2.sized(-2.0).sized(2.0).output("m2.11", "m2.11 : max. m2 width after slotting : 4.0um") + # rule m2.12 not coded because inconsistent with m2.11 + # rule m2.13, m2.14, m2.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +# end + +# via2 +log("via2") +#rule via233 not coded +# via2.not(m2).output("via2", "via2 : m2 must enclose all via2") +if backend_flow = AL + via2.not(areaid_mt).edges.without_length(0.2).output("via2.1a", "via2.1a : minimum/maximum width of via2 : 0.2um") + # via2.and(areaid_mt).not_interacting((via2.and(areaid_mt).edges.without_length(0.2)).or(via2.and(areaid_mt).edges.without_length(1.2)).or(via2.and(areaid_mt).edges.without_length(1.5))).output("via2.1b", "via2.1b : minimum/maximum width of via2 in areaid.mt: 0.2um or 1.2um or 1.5um") + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + m2.enclosing(via2.not_interacting(via2.edges.without_length(1.5)), 0.14, euclidian).output("via2.4a", "via2.4a : min. m2 enclosure of 1.5um via2 : 0.14um") + via2_edges_with_less_enclosure_m2 = m2.enclosing(via2, 0.085, projection).second_edges + opposite8 = (via2.edges - via2_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + via2.not_interacting(opposite8).output("via2.5", "via2.5 : min. m2 enclosure of via2 of 2 opposite edges : 0.085um") +end +# if backend_flow = CU + # via2.edges.without_length(0.21).output("via2.11", "via2.11 : minimum/maximum width of via2 : 0.21um") + # via2.isolated(0.18, euclidian).output("via2.12", "via2.12 : min. via2 spacing : 0.18um") + # rule via2.13 not coded because not understandable, or not clear + # m2.enclosing(via2, 0.035, euclidian).output("via2.14", "via2.14 : min. m2 enclosure of via2 : 0.035um") + # rules via2.irdrop.1, via2.irdrop.2, via2.irdrop.3, via2.irdrop.4 not coded because not understandable +# end + +# m3 +log("m3") +m3.width(0.3, euclidian).output("m3.1", "m3.1 : min. m3 width : 0.3um") + +huge_m3 = m3.sized(-1.5).sized(1.5) +non_huge_m3 = m3 - huge_m3 + +non_huge_m3.space(0.3, euclidian).output("m3.2", "m3.2 : min. m3 spacing : 0.3um") + +# (huge_m3.separation(non_huge_m3, 0.4, euclidian) + huge_m3.space(0.4, euclidian)).output("m3.3ab", "m3.3ab : min. 3um.m3 spacing m3 : 0.4um") + +# rule m3.3c not coded +# m3.with_area(0..0.24).output("m3.6", "m3.6 : min. m2 area : 0.24um²") +# via2.not(m3).output("m3.via2", "m3.via2 : m3 must enclose via2") +if backend_flow = AL + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + # via2_edges_with_less_enclosure_m3 = m3.enclosing(via2, 0.085, projection).second_edges + # m3.5 N/A + # opposite9 = (via2.edges - via2_edges_with_less_enclosure_m3).width(0.3 + 1.dbu, projection).polygons + # via2.not_interacting(opposite9).output("m3.5", "m3.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + # rule m3.pd.1, rule m3.pd.2a, rule m3.pd.2b not coded +end +# if bakend_flow = CU + # m3.holes.with_area(0..0.2).output("m3.7", "m3.7 : min. m2 holes area : 0.2um²") + # m3.sized(-2.0).sized(2.0).output("m3.11", "m3.11 : max. m3 width after slotting : 4.0um") + # rule m3.12 not coded because inconsistent with m3.11 + # rule m3.13, m3.14, m3.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 +# end + +# via3 +log("via3") +#rule via3.3 not coded +# via3.not(m3).output("via3", "via3 : m3 must enclose all via3") +if backend_flow = AL + via3.not(areaid_mt).edges.without_length(0.2).output("via3.1a", "via3.1a : minimum/maximum width of via3 : 0.2um") + via3.and(areaid_mt).not_interacting((via3.and(areaid_mt).edges.without_length(0.2)).or(via3.and(areaid_mt).edges.without_length(0.8))).output("via3.1a", "via3.1a : minimum/maximum width of via3 in areaid.mt: 0.2um or 0.8um") + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + via3_edges_with_less_enclosure_m3 = m3.enclosing(via3, 0.09, projection).second_edges + opposite10 = (via3.edges - via3_edges_with_less_enclosure_m3).width(0.2 + 1.dbu, projection).polygons + via3.not_interacting(opposite10).output("via3.5", "via3.5 : min. m2 enclosure of via3 of 2 opposite edges : 0.09um") +end +# if backend_flow = CU + # via3.edges.without_length(0.21).output("via3.11", "via3.11 : minimum/maximum width of via3 : 0.21um") + # via3.isolated(0.18, euclidian).output("via3.12", "via3.12 : min. via3 spacing : 0.18um") + # m3.enclosing(via3, 0.055, euclidian).output("via3.13", "via3.13 : min. m3 enclosure of via3 : 0.055um") + # rule via3.14 not coded because not understandable, or not clear + # rules via3.irdrop.1, via3.irdrop.2, via3.irdrop.3, via3.irdrop.4 not coded because not understandable +# end + +# m4 +log("m4") +m4.width(0.3, euclidian).output("m4.1", "m4.1 : min. m4 width : 0.3um") + +huge_m4 = m4.sized(-1.5).sized(1.5) +non_huge_m4 = m4 - huge_m4 + +non_huge_m4.space(0.3, euclidian).output("m4.2", "m4.2 : min. m4 spacing : 0.3um") + +(huge_m4.separation(non_huge_m4, 0.4, euclidian) + huge_m4.space(0.4, euclidian)).output("m4.5ab", "m4.5ab : min. 3um.m4 spacing m4 : 0.4um") + +# m4.with_area(0..0.24).output("m4.4", "m4.4 : min. m2 area : 0.24um²") +# via3.not(m4).output("m4.via3", "m4.via3 : m4 must enclose via3") +if backend_flow = AL + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + # m4.5 doesn't exist + # via3_edges_with_less_enclosure_m4 = m4.enclosing(via2, 0.085, projection).second_edges + # opposite9 = (via3.edges - via3_edges_with_less_enclosure_m4).width(0.3 + 1.dbu, projection).polygons + # via3.not_interacting(opposite9).output("m4.5", "m4.5 : min. m4 enclosure of via3 of 2 opposite edges : 0.085um") + # rule m4.pd.1, rule m4.pd.2a, rule m4.pd.2b not coded +end +if bakend_flow = CU + # m4.holes.with_area(0..0.2).output("m4.7", "m4.7 : min. m2 holes area : 0.2um²") + # m4.sized(-5.0).sized(5.0).output("m4.11", "m4.11 : max. m4 width after slotting : 10.0um") + # rule m4.12 not coded because inconsistent with m4.11 + # rule m4.13, m4.14, m4.14a not coded : see : https://www.klayout.de/forum/discussion/comment/6759 + # m4.enclosing(via3, 0.06, euclidian).output("m4.15", "m4.15 : min. m4 enclosure of via3 : 0.06um") +end + +# via4 +log("via4") +via4.edges.without_length(0.8).output("via4.1a", "via4.1a : minimum/maximum width of via4 : 0.8um") +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") +#rule via4.3 not coded +m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") +via4.not(m4).output("via4", "via4 : m4 must enclose all via4") +if backend_flow = CU + # rules via4.irdrop.1, via4.irdrop.2, via4.irdrop.3, via4.irdrop.4 not coded because not understandable +end + +# m5 +log("m5") +m5.width(1.6, euclidian).output("m5.1", "m5.1 : min. m5 width : 1.6um") + +m5.space(1.6, euclidian).output("m5.2", "m5.2 : min. m5 spacing : 1.6um") + +# via4.not(m5).output("m5.via4", "m5.via4 : m5 must enclose via4") +m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m4.3 : min. m5 enclosure of via4 : 0.31um") + +# nsm +# nsm.width(3.0, euclidian).output("nsm.1", "nsm.1 : min. nsm width : 3.0um") +# nsm.isolated(4.0, euclidian).output("nsm.2", "nsm.2 : min. nsm spacing : 4.0um") +# nsm.enclosing(diff, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of diff : 3.0um") +# nsm.enclosing(tap, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of tap : 3.0um") +# nsm.enclosing(poly, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of poly : 3.0um") +# nsm.enclosing(li, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of li : 3.0um") +# nsm.enclosing(m1, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m1 : 3.0um") +# nsm.enclosing(m2, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m2 : 3.0um") +# nsm.enclosing(m3, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m3 : 3.0um") +# nsm.enclosing(m4, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m4 : 3.0um") +# nsm.enclosing(m5, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of m5 : 3.0um") +# nsm.enclosing(cfom, 3.0, euclidian).output("nsm.4", "nsm.4 : min. nsm enclosure of cfom : 3.0um") +# if backend_flow = AL +# nsm.separation(diff, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to diff : 1.0um") +# nsm.separation(tap, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to tap : 1.0um") +# nsm.separation(poly, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to poly : 1.0um") +# nsm.separation(li, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to li : 1.0um") +# nsm.separation(m1, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m1 : 1.0um") +# nsm.separation(m2, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m2 : 1.0um") +# nsm.separation(m3, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m3 : 1.0um") +# nsm.separation(m4, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m4 : 1.0um") +# nsm.separation(m5, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to m5 : 1.0um") +# nsm.separation(cfom, 1.0, euclidian).output("nsm.3", "nsm.3 : min. nsm spacing to cfom : 1.0um") +# end + +# pad +log("pad") +pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") + +end #BEOL + +if FEOL +log("FEOL section") + +# mf +#mf.not_interacting(mf.edges.without_length(0.8)).output("mf.1", "mf.1 : minimum/maximum width of fuse : 0.8um") +#mf.not_interacting(mf.edges.without_length(7.2)).output("mf.2", "mf.2 : minimum/maximum length of fuse : 7.2um") +#mf.isolated(1.96, euclidian).output("mf.3", "mf.3 : min. fuse center spacing : 2.76um") +# fuses need more clarification on fuse_shield, fuse layers ... + +# hvi +log("hvi") +hvi.width(0.6, euclidian).output("hvi.1", "hvi.1 : min. hvi width : 0.6um") +# hvi.isolated(0.7, euclidian).output("hvi.2", "hvi.2 : min. hvi spacing, merge if less : 0.7um") +# hvi.and(tunm).output("hvi.4", "hvi.4 : hvi must not overlapp tunm") +# hvi.and(nwell).separation(nwell, 2.0, euclidian).output("hvnwell.8", "hvnwelli.8 : min. hvnwel spacing to nwell : 2.0") +# areaid_hl.not(hvi).output("hvnwel.9", "hvnwell.9 : hvi must overlapp hvnwell") +# rule hvnell.10 not coded +# diff.not(psdm.and(diff_rs)).and(hvi).width(0.29, euclidian).output("hvdifftap.14", "hvdifftap.14 : min. diff inside hvi width : 0.29um") +# diff.and(psdm.and(diff_rs)).and(hvi).width(0.15, euclidian).output("hvdifftap.14a", "hvdifftap.14a : min. p+diff resistor inside hvi width : 0.15um") +# diff.and(hvi).isolated(0.3, euclidian).output("hvdifftap.15a", "hvdifftap.15a : min. diff inside hvi spacing : 0.3um") +# diff.and(hvi).and(nsdm).separation(diff.and(hvi).and(psdm), 0.37, euclidian).polygons.without_area(0).output("hvdifftap.15b", "hvdifftap.15b : min. n+diff inside hvi spacing to p+diff inside hvi except abutting: 0.37um") +# tap.and(hvi).edges.and(diff).without_length(0.7).output("hvdifftap.16", "hvdifftap.16 : min. tap inside hvi abuttng diff : 0.7um") +# hvi.and(nwell).enclosing(diff, 0.33, euclidian).output("hvdifftap.17", "hvdifftap.17 : min. hvnwell enclosure of p+diff : 0.33um") +# hvi.and(nwell).separation(diff, 0.43, euclidian).output("hvdifftap.18", "hvdifftap.18 : min. hvnwell spacing to n+diff : 0.43um") +# hvi.and(nwell).enclosing(tap, 0.33, euclidian).output("hvdifftap.19", "hvdifftap.19 : min. hvnwell enclosure of n+tap : 0.33um") +# hvi.and(nwell).separation(tap, 0.43, euclidian).output("hvdifftap.20", "hvdifftap.20 : min. hvnwell spacing to p+tap : 0.43um") +# hvi.and(diff).edges.not(diff.edges).output("hvdifftap.21", "hvdifftap.21 : diff must not straddle hvi") +# hvi.and(tap).edges.not(tap.edges).output("hvdifftap.21", "hvdifftap.21 : tap must not straddle hvi") +# hvi.enclosing(difftap, 0.18, euclidian).output("hvdifftap.22", "hvdifftap.22 : min. hvi enclosure of diff or tap : 0.18um") +# hvi.separation(difftap, 0.18, euclidian).output("hvdifftap.23", "hvdifftap.23 : min. hvi spacing to diff or tap : 0.18um") +# hvi.and(diff).not(nwell).separation(nwell, 0.43, euclidian).output("hvdifftap.24", "hvdifftap.24 : min. hv n+diff spacing to nwell : 0.43um") +# diff.and(hvi).not(nwell).isolated(1.07, euclidian).polygons.and(tap).output("hvdifftap.25", "hvdifftap.25 : min. n+diff inside hvi spacing accros p+tap : 1.07um") +# diff.not(poly).edges.and(gate.and(hvi).edges).space(0.35, euclidian).output("hvpoly.13", "hvpoly.13: min. hvi gate length : 0.5um") +# hvi.and(poly).edges.not(poly.edges).output("hvpoly.14", "hvpoly.14 : poly must not straddle hvi") + +# hvntm +log("hvntm") +hvntm.width(0.7, euclidian).output("hvntm.1", "hvntm.1 : min. hvntm width : 0.7um") +hvntm.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +# hvntm.enclosing(diff.and(nwell).and(hvi), 0.185, euclidian).output("hvntm.3", "hvntm.3 : min. hvntm enclosure of hv n+diff : 0.185um") +# hvntm.separation(diff.not(nwell).not(hvi), 0.185, euclidian).output("hvntm.4", "hvntm.4 : min. hvntm spacing to n+diff : 0.185um") +# hvntm.separation(diff.and(nwell).not(hvi), 0.185, euclidian).output("hvntm.5", "hvntm.5 : min. hvntm spacing to p+diff : 0.185um") +# hvntm.separation(tap.not(nwell).not(hvi), 0.185, euclidian).polygons.without_area(0).output("hvntm.6a", "hvntm.6a : min. hvntm spacing to p+tap : 0.185um") +# hvntm.and(areaid_ce).output("hvntm.9", "hvntm.9 : hvntm must not overlapp areaid.ce") + +# denmos +# poly.not_interacting(pwde).interacting(areaid_en).width(1.055, projection).output("denmos.1", "denmos.1 : min. de_nfet gate width : 1.055um") +# diff.not_interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("denmos.2", "denmos.2 : min. de_nfet source ouside poly width : 0.28um") +# diff.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.925, projection).output("denmos.3", "denmos.3 : min. de_nfet source inside poly width : 0.925um") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("denmos.4", "denmos.4 : min. de_nfet drain width : 0.17um") +# nwell.not_interacting(pwde).and(poly.interacting(areaid_en)).width(0.225, projection).polygons.or(nwell.and(poly.interacting(areaid_en)).sized(-0.1125).sized(0.1125)).output("denmos.5", "denmos.5 : min. de_nfet source inside nwell width : 0.225m") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.585, projection).output("denmos.6", "denmos.6 : min. de_nfet source spacing to drain : 1.585um") +# nwell.not_interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("denmos.7", "denmos.7 : min. de_nfet channel width : 5.0um") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.8", "denmos.8 : 90deg. not allowed for de_nfet drain") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("denmos.9a", "denmos.9a : 90deg. not allowed for de_nfet nwell") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +# nwell.not_interacting(pwde).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("denmos.9a", "denmos.9a : 45deg. bevels of de_nfet nwell should be 0.43um from corners") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +# diff.not_interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("denmos.9b", "denmos.9b : 45deg. bevels of de_nfet drain should be 0.05um from corners") +# nwell.not_interacting(pwde).enclosing(diff.interacting(areaid_en).not_interacting(poly), 0.66, euclidian).output("denmos.10", "denmos.10 : min. nwell enclosure of de_nfet drain : 0.66um") +# nwell.not_interacting(pwde).interacting(areaid_en).separation(tap.not(nwell), 0.86, euclidian).output("denmos.11", "denmos.11 : min. de_nfet nwell spacing to tap : 0.86um") +# nwell.not_interacting(pwde).interacting(areaid_en).isolated(2.4, euclidian).output("denmos.12", "denmos.12 : min. de_nfet nwell : 2.4um") +# nsdm.not_interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("denmos.13", "denmos.13 : min. nsdm enclosure of de_nfet source : 0.13um") + +# depmos +# poly.interacting(pwde).interacting(areaid_en).width(1.05, projection).output("depmos.1", "depmos.1 : min. de_pfet gate width : 1.05um") +# diff.interacting(pwde).enclosing(poly.interacting(areaid_en), 0.28, projection).polygons.without_area(0).output("depmos.2", "depmos.2 : min. de_pfet source ouside poly width : 0.28um") +# diff.interacting(pwde).and(poly.interacting(areaid_en)).width(0.92, projection).output("depmos.3", "depmos.3 : min. de_pfet source inside poly width : 0.92um") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).width(0.17, euclidian).output("depmos.4", "depmos.4 : min. de_pfet drain width : 0.17um") +# pwde.not(nwell).and(poly.interacting(areaid_en)).width(0.26, projection).polygons.or(pwde.not(nwell).and(poly.interacting(areaid_en)).sized(-0.13).sized(0.13)).output("depmos.5", "depmos.5 : min. de_pfet source inside nwell width : 0.26m") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).separation(diff.interacting(poly.interacting(areaid_en)), 1.19, projection).output("depmos.6", "depmos.6 : min. de_pfet source spacing to drain : 1.19um") +# nwell.interacting(pwde).and(poly.and(diff).interacting(areaid_en)).edges.without_length(5.0, nil).output("depmos.7", "depmos.7 : min. de_pfet channel width : 5.0um") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.8", "depmos.8 : 90deg. not allowed for de_pfet drain") +# pwde.not(nwell).interacting(areaid_en).edges.without_angle(45).without_angle(135).without_angle(225).without_angle(315).output("depmos.9a", "depmos.9a : 90deg. not allowed for de_pfet pwell") +# pwde.not(nwell).interacting(areaid_en).edges.with_angle(45).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +# pwde.not(nwell).interacting(areaid_en).edges.with_angle(135).without_length(0.607..0.609).output("depmos.9a", "depmos.9a : 45deg. bevels of de_pfet pwell should be 0.43um from corners") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(45).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +# diff.interacting(pwde).interacting(areaid_en).not_interacting(poly).edges.with_angle(135).without_length(0.7..0.71).output("depmos.9b", "depmos.9b : 45deg. bevels of de_pfet drain should be 0.05um from corners") +# nwell.interacting(pwde).separation(diff.interacting(areaid_en).not_interacting(poly), 0.86, euclidian).output("depmos.10", "depmos.10 : min. pwell enclosure of de_pfet drain : 0.86um") +# pwde.not(nwell).interacting(areaid_en).separation(tap.and(nwell), 0.66, euclidian).output("depmos.11", "depmos.11 : min. de_pfet pwell spacing to tap : 0.66um") +# psdm.interacting(pwde).enclosing(diff.interacting(areaid_en).interacting(poly), 0.13, euclidian).output("depmos.12", "depmos.12 : min. psdm enclosure of de_pfet source : 0.13um") + +# extd +# areaid_en.and(difftap).edges.not(difftap.edges).output("extd.1", "extd.1 : difftap must not straddle areaid.en") +# difftap.interacting(areaid_en).not(poly).with_area(0).output("extd.2", "extd.2 : poly must not overlapp entirely difftap in areaid.en") +# rules extd.4, extd.5, extd.6, extd.7 not coded because specific to some cells + +# vhvi +# rules vhvi.vhv.1, vhvi.vhv.2, vhvi.vhv.3, vhvi.vhv.4, vhvi.vhv.5, vhvi.vhv.6 not coded +# vhvi.width(0.02, euclidian).output("vhvi.1", "vhvi.1 : min. vhvi width : 0.02um") +# vhvi.and(areaid_ce).output("vhvi.2", "vhvi.2 : vhvi must not overlap areaid.ce") +# vhvi.and(hvi).output("vhvi.3", "vhvi.3 : vhvi must not overlap hvi") +# # rules vhvi.4, vhvi.6 not coded +# vhvi.and(diff).edges.not(diff.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle diff") +# vhvi.and(tap).edges.not(tap.edges).output("vhvi.5", "vhvi.5 : vhvi must not straddle tap") +# vhvi.and(poly).edges.not(poly.edges).output("vhvi.7", "vhvi.7 : vhvi must not straddle poly") + +# nwell.and(vhvi).separation(nwell, 2.5, euclidian).output("hv.nwell.1", "hv.nwell.1 : min. vhvi nwell spacing to nwell : 2.5um") +# diff.and(vhvi).isolated(0.3, euclidian).output("hv.diff.1", "hv.diff.1 : min. vhvi diff spacing : 0.3um") +# nwell.interacting(diff.and(vhvi)).separation(diff.not(nwell), 0.43, euclidian).output("hv.diff.2", "hv.diff.2 : min. vhvi nwell spacing n+diff : 0.43um") +# diff.and(vhvi).not(nwell).separation(nwell, 0.55, euclidian).output("hv.diff.3a", "hv.diff.3a : min. vhvi n+diff spacing nwell : 0.55um") +# # rule hv.diff.3b not coded +# poly.and(vhvi).not(diff).separation(diff, 0.3, euclidian).polygons.without_area(0).output("hv.poly.2", "hv.poly.2 : min. vhvi poly spacing to diff : 0.3um") +# poly.and(vhvi).not(diff).separation(nwell, 0.55, euclidian).polygons.without_area(0).output("hv.poly.3", "hv.poly.3 : min. vhvi poly spacing to nwell : 0.55um") +# nwell.enclosing(poly.and(vhvi).not(diff), 0.3, euclidian).polygons.without_area(0).output("hv.poly.4", "hv.poly.4 : min. nwell enclosure of vhvi poly : 0.3um") +# poly.and(vhvi).enclosing(diff.interacting(areaid_en), 0.16, projection).polygons.without_area(0).output("hv.poly.6", "hv.poly.6 : min. poly enclosure of hvfet gate : 0.16um") +# rule hv.poly.7 not coded + +# uhvi +# uhvi.and(diff).edges.not(diff.edges).output("uhvi.1", "uhvi.1 : diff must not straddle uhvi") +# uhvi.and(tap).edges.not(tap.edges).output("uhvi.1", "uhvi.1 : tap must not straddle uhvi") +# uhvi.and(poly).edges.not(poly.edges).output("uhvi.2", "uhvi.2 : poly must not straddle uhvi") +# pwbm.not(uhvi).output("uhvi.3", "uhvi.3 : uhvi must not enclose pwbm") +# uhvi.and(dnwell).edges.not(dnwell.edges).output("uhvi.4", "uhvi.4 : dnwell must not straddle uhvi") +# areaid_en20.not(uhvi).output("uhvi.5", "uhvi.5 : uhvi must not enclose areaid.en20") +# #dnwell.not(uhvi).output("uhvi.6", "uhvi.6 : uhvi must not enclose dnwell") +# natfet.not(uhvi).output("uhvi.7", "uhvi.7 : uhvi must not enclose natfet") + +# pwell_res +# pwell_rs.width(2.65).output("pwres.2", "pwres.2 : min. pwell resistor width : 2.65um") +# pwell_rs.sized(-2.65).sized(2.65).output("pwres.2", "pwres.2 : max. pwell resistor width : 2.65um") +# pwell_rs.interacting(pwell_rs.edges.with_length(2.651,26.499)).output("pwres.3", "pwres.3 : min. pwell resistor length : 26.5um") +# pwell_rs.interacting(pwell_rs.edges.with_length(265.0, nil)).output("pwres.4", "pwres.4 : max. pwell resistor length : 265um") +# tap.interacting(pwell_rs).separation(nwell, 0.22, euclidian).output("pwres.5", "pwres.5 : min. pwell resistor tap spacing to nwell : 0.22um") +# tap.interacting(pwell_rs).and(tap.sized(0.22).and(nwell)).output("pwres.5", "pwres.5 : max. pwell resistor tap spacing to nwell : 0.22um") +# tap.interacting(pwell_rs).width(0.53).output("pwres.6", "pwres.6 : min. width of tap inside pwell resistor : 0.53um") +# tap.interacting(pwell_rs).sized(-0.265).sized(0.265).output("pwres.6", "pwres.6 : max. width of tap inside pwell resistor : 0.53um") +# # rules pwres.7a, pwres.7b not coded +# pwell_rs.and(diff).output("pwres.8", "pwres.8 : diff not allowed inside pwell resistor") +# pwell_rs.and(poly).output("pwres.8", "pwres.8 : poly not allowed inside pwell resistor") +# rules pwres.9, pwres.10 not coded + +# rf_diode +# areaid_re.with_angle(0 .. 90).output("rfdiode.1", "rfdiode.1 : non 90 degree angle areaid.re") +# areaid_re.not(nwell).or(nwell.interacting(areaid_re).not(areaid_re)).output("rfdiode.2", "rfdiode.2 : areaid.re must coincide rf nwell diode") +# rule rfdiode.3 not coded + +end #FEOL + +if OFFGRID +log("OFFGRID-ANGLES section") + +dnwell.ongrid(0.005).output("dnwell_OFFGRID", "x.1b : OFFGRID vertex on dnwell") +dnwell.with_angle(0 .. 45).output("dnwell_angle", "x.3a : non 45 degree angle dnwell") +nwell.ongrid(0.005).output("nwell_OFFGRID", "x.1b : OFFGRID vertex on nwell") +nwell.with_angle(0 .. 45).output("nwell_angle", "x.3a : non 45 degree angle nwell") +pwbm.ongrid(0.005).output("pwbm_OFFGRID", "x.1b : OFFGRID vertex on pwbm") +pwbm.with_angle(0 .. 45).output("pwbm_angle", "x.3a : non 45 degree angle pwbm") +pwde.ongrid(0.005).output("pwde_OFFGRID", "x.1b : OFFGRID vertex on pwde") +pwde.with_angle(0 .. 45).output("pwde_angle", "x.3a : non 45 degree angle pwde") +hvtp.ongrid(0.005).output("hvtp_OFFGRID", "x.1b : OFFGRID vertex on hvtp") +hvtp.with_angle(0 .. 45).output("hvtp_angle", "x.3a : non 45 degree angle hvtp") +hvtr.ongrid(0.005).output("hvtr_OFFGRID", "x.1b : OFFGRID vertex on hvtr") +hvtr.with_angle(0 .. 45).output("hvtr_angle", "x.3a : non 45 degree angle hvtr") +lvtn.ongrid(0.005).output("lvtn_OFFGRID", "x.1b : OFFGRID vertex on lvtn") +lvtn.with_angle(0 .. 45).output("lvtn_angle", "x.3a : non 45 degree angle lvtn") +ncm.ongrid(0.005).output("ncm_OFFGRID", "x.1b : OFFGRID vertex on ncm") +ncm.with_angle(0 .. 45).output("ncm_angle", "x.3a : non 45 degree angle ncm") +diff.ongrid(0.005).output("diff_OFFGRID", "x.1b : OFFGRID vertex on diff") +tap.ongrid(0.005).output("tap_OFFGRID", "x.1b : OFFGRID vertex on tap") +diff.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("diff_angle", "x.2 : non 90 degree angle diff") +diff.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("diff_angle", "x.2c : non 45 degree angle diff") +tap.not(areaid_en.and(uhvi)).with_angle(0 .. 90).output("tap_angle", "x.2 : non 90 degree angle tap") +tap.and(areaid_en.and(uhvi)).with_angle(0 .. 45).output("tap_angle", "x.2c : non 45 degree angle tap") +tunm.ongrid(0.005).output("tunm_OFFGRID", "x.1b : OFFGRID vertex on tunm") +tunm.with_angle(0 .. 45).output("tunm_angle", "x.3a : non 45 degree angle tunm") +poly.ongrid(0.005).output("poly_OFFGRID", "x.1b : OFFGRID vertex on poly") +poly.with_angle(0 .. 90).output("poly_angle", "x.2 : non 90 degree angle poly") +rpm.ongrid(0.005).output("rpm_OFFGRID", "x.1b : OFFGRID vertex on rpm") +rpm.with_angle(0 .. 45).output("rpm_angle", "x.3a : non 45 degree angle rpm") +npc.ongrid(0.005).output("npc_OFFGRID", "x.1b : OFFGRID vertex on npc") +npc.with_angle(0 .. 45).output("npc_angle", "x.3a : non 45 degree angle npc") +nsdm.ongrid(0.005).output("nsdm_OFFGRID", "x.1b : OFFGRID vertex on nsdm") +nsdm.with_angle(0 .. 45).output("nsdm_angle", "x.3a : non 45 degree angle nsdm") +psdm.ongrid(0.005).output("psdm_OFFGRID", "x.1b : OFFGRID vertex on psdm") +psdm.with_angle(0 .. 45).output("psdm_angle", "x.3a : non 45 degree angle psdm") +licon.ongrid(0.005).output("licon_OFFGRID", "x.1b : OFFGRID vertex on licon") +licon.with_angle(0 .. 90).output("licon_angle", "x.2 : non 90 degree angle licon") +li.ongrid(0.005).output("li_OFFGRID", "x.1b : OFFGRID vertex on li") +li.with_angle(0 .. 45).output("li_angle", "x.3a : non 45 degree angle li") +mcon.ongrid(0.005).output("ct_OFFGRID", "x.1b : OFFGRID vertex on mcon") +mcon.with_angle(0 .. 90).output("ct_angle", "x.2 : non 90 degree angle mcon") +vpp.ongrid(0.005).output("vpp_OFFGRID", "x.1b : OFFGRID vertex on vpp") +vpp.with_angle(0 .. 45).output("vpp_angle", "x.3a : non 45 degree angle vpp") +m1.ongrid(0.005).output("m1_OFFGRID", "x.1b : OFFGRID vertex on m1") +m1.with_angle(0 .. 45).output("m1_angle", "x.3a : non 45 degree angle m1") +via.ongrid(0.005).output("via_OFFGRID", "x.1b : OFFGRID vertex on via") +via.with_angle(0 .. 90).output("via_angle", "x.2 : non 90 degree angle via") +m2.ongrid(0.005).output("m2_OFFGRID", "x.1b : OFFGRID vertex on m2") +m2.with_angle(0 .. 45).output("m2_angle", "x.3a : non 45 degree angle m2") +via2.ongrid(0.005).output("via2_OFFGRID", "x.1b : OFFGRID vertex on via2") +via2.with_angle(0 .. 90).output("via2_angle", "x.2 : non 90 degree angle via2") +m3.ongrid(0.005).output("m3_OFFGRID", "x.1b : OFFGRID vertex on m3") +m3.with_angle(0 .. 45).output("m3_angle", "x.3a : non 45 degree angle m3") +via3.ongrid(0.005).output("via3_OFFGRID", "x.1b : OFFGRID vertex on via3") +via3.with_angle(0 .. 90).output("via3_angle", "x.2 : non 90 degree angle via3") +nsm.ongrid(0.005).output("nsm_OFFGRID", "x.1b : OFFGRID vertex on nsm") +nsm.with_angle(0 .. 45).output("nsm_angle", "x.3a : non 45 degree angle nsm") +m4.ongrid(0.005).output("m4_OFFGRID", "x.1b : OFFGRID vertex on m4") +m4.with_angle(0 .. 45).output("m4_angle", "x.3a : non 45 degree angle m4") +via4.ongrid(0.005).output("via4_OFFGRID", "x.1b : OFFGRID vertex on via4") +via4.with_angle(0 .. 90).output("via4_angle", "x.2 : non 90 degree angle via4") +m5.ongrid(0.005).output("m5_OFFGRID", "x.1b : OFFGRID vertex on m5") +m5.with_angle(0 .. 45).output("m5_angle", "x.3a : non 45 degree angle m5") +pad.ongrid(0.005).output("pad_OFFGRID", "x.1b : OFFGRID vertex on pad") +pad.with_angle(0 .. 45).output("pad_angle", "x.3a : non 45 degree angle pad") +mf.ongrid(0.005).output("mf_OFFGRID", "x.1b : OFFGRID vertex on mf") +mf.with_angle(0 .. 90).output("mf_angle", "x.2 : non 90 degree angle mf") +hvi.ongrid(0.005).output("hvi_OFFGRID", "x.1b : OFFGRID vertex on hvi") +hvi.with_angle(0 .. 45).output("hvi_angle", "x.3a : non 45 degree angle hvi") +hvntm.ongrid(0.005).output("hvntm_OFFGRID", "x.1b : OFFGRID vertex on hvntm") +hvntm.with_angle(0 .. 45).output("hvntm_angle", "x.3a : non 45 degree angle hvntm") +vhvi.ongrid(0.005).output("vhvi_OFFGRID", "x.1b : OFFGRID vertex on vhvi") +vhvi.with_angle(0 .. 45).output("vhvi_angle", "x.3a : non 45 degree angle vhvi") +uhvi.ongrid(0.005).output("uhvi_OFFGRID", "x.1b : OFFGRID vertex on uhvi") +uhvi.with_angle(0 .. 45).output("uhvi_angle", "x.3a : non 45 degree angle uhvi") +pwell_rs.ongrid(0.005).output("pwell_rs_OFFGRID", "x.1b : OFFGRID vertex on pwell_rs") +pwell_rs.with_angle(0 .. 45).output("pwell_rs_angle", "x.3a : non 45 degree angle pwell_rs") +areaid_re.ongrid(0.005).output("areaid_re_OFFGRID", "x.1b : OFFGRID vertex on areaid.re") + +end #OFFGRID + diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr_opt.drc b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr_opt.drc new file mode 100755 index 00000000..c4e8faf5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/sky130A_mr_opt.drc @@ -0,0 +1,808 @@ +# Run script : klayout -rd input= -rd report= -rd summary_file= -rd thr= -rd tiles= -rd feol=1 -rd beol=1 -z -r sky130A_mr_opt.drc + +if $input + inp = source($input, $top_cell) +end + +lay = inp.layout + +if $report + report("SKY130 DRC runset", $report) +else + report("SKY130 DRC runset", File.join(File.dirname(RBA::CellView::active.filename), "sky130_drc.txt")) +end + +AL = true # do not change +CU = false # do not change +# choose betwen only one of AL or CU back-end flow here : +backend_flow = AL + +# enable / disable rule groups +if $feol == "0" + FEOL = false # front-end-of-line checks +else + FEOL = true # front-end-of-line checks +end +if $beol == "0" + BEOL = false # back-end-of-line checks +else + BEOL = true # back-end-of-line checks +end +if $offgrid == "0" + OFFGRID = false # manufacturing grid/angle checks +else + OFFGRID = true # manufacturing grid/angle checks +end + + +# klayout setup +######################## +def log_modes() + deepP = is_deep? + tiledP = is_tiled? + log("... deep:#{deepP} tiled:#{tiledP}") +end + +# if going back & forth between deep <=> tiles() need to reset tile-size & borders +def Tiled() + if $tiles + tiles($tiles.to_f) + else + tiles(200.um) + end + tile_borders(3.um) +end + +# Note: deep: should be used very selectively. +# In deep-mode: plain cmds outside (typically before) TP.execute, don't participate +# in ordinary multithreaded tiling (but do participate in, the lesser, hier-based multithreading). +# And... even for flat tiling (in or out of TP.execute), we still must avoid certain operations, +# like interacting. +# BUT: believe enclosing() is not one of those cmds. +# Expensive part of li.5 are two enclosing stmts: Make sure those are done in flat tiling mode! +# +# Cannot just change to flat/tiling (for all pre-TP commands) since: some of those are interacting, +# i.e. of the variety that cannot be tiled. + +if $thr + threads($thr) +else + threads(8) +end + +# if more inof is needed, set true +verbose(true) + +inputs = Array.new +outputs = Array.new + + +$tp = RBA::TilingProcessor::new +if $tiles + $tp.tile_size($tiles.to_f, $tiles.to_f) + tiles($tiles.to_f) +else + $tp.tile_size(200, 200) + tiles(200.um) +end +if $thr + $tp.threads = $thr.to_i +else + $tp.threads = 8 +end +$tp.dbu = lay.dbu +$tp.tile_border(3,3) + tile_borders(3.um) +$count = 0 + +# hierachical. Note: using tiles() just to set tile-size also turns-off deep mode. So set deep *after* tiles(). +#Tiled(); log_modes() + +def drc_check(output, inputs, script) + + $tp.output("output_#{$count}", output.last[:data].data) + inputs.each do |inp| + $tp.input(inp[:name], inp[:layer].data) + end + $tp.queue("_output(output_#{$count}, #{script})") + $count = $count + 1 + +end + +# layers definitions +######################## + +# all except purpose (datatype) 5 -- label and 44 -- via +li_wildcard = "67/20" +mcon_wildcard = "67/44" + +m1_wildcard = "68/20" +via_wildcard = "68/44" + +m2_wildcard = "69/20" +via2_wildcard = "69/44" + +m3_wildcard = "70/20" +via3_wildcard = "70/44" + +m4_wildcard = "71/20" +via4_wildcard = "71/44" + +m5_wildcard = "72/20" + +diff = input(65, 20) +tap = polygons(65, 44) +nwell = polygons(64, 20) +dnwell = polygons(64, 18) +pwbm = polygons(19, 44) +pwde = polygons(124, 20) +natfet = polygons(124, 21) +hvtr = polygons(18, 20) +hvtp = polygons(78, 44) +ldntm = polygons(11, 44) +hvi = polygons(75, 20) +tunm = polygons(80, 20) +lvtn = polygons(125, 44) +poly = polygons(66, 20) +hvntm = polygons(125, 20) +nsdm = polygons(93, 44) +psdm = polygons(94, 20) +rpm = polygons(86, 20) +urpm = polygons(79, 20) +npc = polygons(95, 20) +licon = polygons(66, 44) + +li = polygons(li_wildcard) +mcon = polygons(mcon_wildcard) + +m1 = polygons(m1_wildcard) +via = polygons(via_wildcard) + +m2 = polygons(m2_wildcard) +via2 = polygons(via2_wildcard) + +m3 = polygons(m3_wildcard) +via3 = polygons(via3_wildcard) + +m4 = polygons(m4_wildcard) +via4 = polygons(via4_wildcard) + +m5 = polygons(m5_wildcard) + +pad = polygons(76, 20) +nsm = polygons(61, 20) +capm = polygons(89, 44) +cap2m = polygons(97, 44) +vhvi = polygons(74, 21) +uhvi = polygons(74, 22) +npn = polygons(82, 20) +inductor = polygons(82, 24) +vpp = polygons(82, 64) +pnp = polygons(82, 44) +lvs_prune = polygons(84, 44) +ncm = polygons(92, 44) +padcenter = polygons(81, 20) +mf = polygons(76, 44) +areaid_sl = polygons(81, 1) +areaid_ce = polygons(81, 2) +areaid_fe = polygons(81, 3) +areaid_sc = polygons(81, 4) +areaid_sf = polygons(81, 6) +areaid_sw = polygons(81, 7) +areaid_sr = polygons(81, 8) +areaid_mt = polygons(81, 10) +areaid_dt = polygons(81, 11) +areaid_ft = polygons(81, 12) +areaid_ww = polygons(81, 13) +areaid_ld = polygons(81, 14) +areaid_ns = polygons(81, 15) +areaid_ij = polygons(81, 17) +areaid_zr = polygons(81, 18) +areaid_ed = polygons(81, 19) +areaid_de = polygons(81, 23) +areaid_rd = polygons(81, 24) +areaid_dn = polygons(81, 50) +areaid_cr = polygons(81, 51) +areaid_cd = polygons(81, 52) +areaid_st = polygons(81, 53) +areaid_op = polygons(81, 54) +areaid_en = polygons(81, 57) +areaid_en20 = polygons(81, 58) +areaid_le = polygons(81, 60) +areaid_hl = polygons(81, 63) +areaid_sd = polygons(81, 70) +areaid_po = polygons(81, 81) +areaid_it = polygons(81, 84) +areaid_et = polygons(81, 101) +areaid_lvt = polygons(81, 108) +areaid_re = polygons(81, 125) +areaid_ag = polygons(81, 79) +poly_rs = polygons(66, 13) +diff_rs = polygons(65, 13) +pwell_rs = polygons(64, 13) +li_rs = polygons(67, 13) +cfom = polygons(22, 20) + +# Define a new custom function that selects polygons by their number of holes: +# It will return a new layer containing those polygons with min to max holes. +# max can be nil to omit the upper limit. +#class DRC::DRCLayer +# def with_holes(min, max) +# new_data = RBA::Region::new +# self.data.each do |p| +# if p.holes >= (min || 0) && (!max || p.holes <= max) +# new_data.insert(p) +# end +# end +# DRC::DRCLayer::new(@engine, new_data) +# end +#end + +# DRC section +######################## +log("DRC section") +out = polygon_layer +out_edge = polygon_layer + +#/////////////////////////////////////////// +# FRONT-END checks +#/////////////////////////////////////////// +if FEOL +log("FEOL section") + +deep; log_modes() +m2_interact_capm = m2.interacting(capm) +Tiled(); log_modes() + +# dnwell +drc_check(outputs.push({category: "dnwell.2", description: "dnwell.2 : min. dnwell width : 3.0um", data: out}), Array.new.push({name: "dnwell", layer: dnwell}), "dnwell.width_check(3/#{lay.dbu})") + +# nwell +out = polygon_layer +drc_check(outputs.push({category: "nwell.1", description: "nwell.1 : min. nwell width : 0.84um", data: out}), Array.new.push({name: "nwell", layer: nwell}), "nwell.width_check(0.84/#{lay.dbu})") + +deep; log_modes() +nwell.isolated(1.27, euclidian).output("nwell.2a", "nwell.2a : min. nwell spacing (merged if less) : 1.27um") +Tiled(); log_modes() + +# hvtp +out = polygon_layer +drc_check(outputs.push({category: "hvtp.1", description: "hvtp.1 : min. hvtp width : 0.38um", data: out}), Array.new.push({name: "hvtp", layer: hvtp}), "hvtp.width_check(0.38/#{lay.dbu})") + +deep; log_modes() +hvtp.isolated(0.38, euclidian).output("hvtp.2", "hvtp.2 : min. hvtp spacing : 0.38um") +Tiled(); log_modes() + +# hvtr +out = polygon_layer +drc_check(outputs.push({category: "hvtr.1", description: "hvtr.1 : min. hvtr width : 0.38um", data: out}), Array.new.push({name: "hvtr", layer: hvtr}), "hvtr.width_check(0.38/#{lay.dbu})") + +deep; log_modes() +hvtr.isolated(0.38, euclidian).output("hvtr.2", "hvtr.2 : min. hvtr spacing : 0.38um") +Tiled(); log_modes() + +# lvtn +out = polygon_layer +drc_check(outputs.push({category: "lvtn.1a", description: "lvtn.1a : min. lvtn width : 0.38um", data: out}), Array.new.push({name: "lvtn", layer: lvtn}), "lvtn.width_check(0.38/#{lay.dbu})") + +deep; log_modes() +lvtn.isolated(0.38, euclidian).output("lvtn.2", "lvtn.2 : min. lvtn spacing : 0.38um") +Tiled(); log_modes() + +# ncm +out = polygon_layer +drc_check(outputs.push({category: "ncm.1", description: "ncm.1 : min. ncm width : 0.38um", data: out}), Array.new.push({name: "ncm", layer: ncm}), " ncm.width_check(0.38/#{lay.dbu})") + +deep; log_modes() +ncm.isolated(0.38, euclidian).output("ncm.2a", "ncm.2a : min. ncm spacing : 0.38um") +Tiled(); log_modes() + +# diff-tap +deep; log_modes() + diff_width = diff.rectangles.width(0.15, euclidian).polygons + diff_cross_areaid_ce = diff_width.edges.outside_part(areaid_ce).not(diff_width.outside(areaid_ce).edges) + diff_cross_areaid_ce.output("difftap.1", "difftap.1 : min. diff width across areaid:ce : 0.15um") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "difftap.1_a", description: "difftap.1_a : min. diff width across areaid:ce : 0.15um", data: out}), Array.new.push({name: "diff", layer: diff}, {name: "areaid_ce", layer: areaid_ce}), "diff.outside(areaid_ce).width_check(0.15/#{lay.dbu})") + +deep; log_modes() + tap_width = tap.rectangles.width(0.15, euclidian).polygons + tap_cross_areaid_ce = tap_width.edges.outside_part(areaid_ce).not(tap_width.outside(areaid_ce).edges) + tap_cross_areaid_ce.output("difftap.1_a", "difftap.1_a : min. tap width across areaid:ce : 0.15um") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "difftap.1_c", description: "difftap.1_c : min. diff width across areaid:ce : 0.15um", data: out}), Array.new.push({name: "tap", layer: tap}, {name: "areaid_ce", layer: areaid_ce}), "tap.outside(areaid_ce).width_check(0.15/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "difftap.1_c", description: "difftap.1_c : min. diff width across areaid:ce : 0.15um", data: out}), Array.new.push({name: "tap", layer: tap}, {name: "diff", layer: diff}), "(diff + tap).space_check(0.27/#{lay.dbu})") + +# tunm +out = polygon_layer +drc_check(outputs.push({category: "tunm.1", description: "tunm.1 : min. tunm width : 0.41um", data: out}), Array.new.push({name: "tunm", layer: tunm}), "tunm.width_check(0.41/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "tunm.2", description: "tunm.2 : min. tunm spacing : 0.5um", data: out}), Array.new.push({name: "tunm", layer: tunm}), "tunm.space_check(0.5/#{lay.dbu})") + +#tunm.isolated(0.5, euclidian).output("tunm.2", "tunm.2 : min. tunm spacing : 0.5um") + +# poly +out = polygon_layer +drc_check(outputs.push({category: "poly.1a", description: "poly.1a : min. poly width : 0.15um", data: out}), Array.new.push({name: "poly", layer: poly}), "poly.width_check(0.15/#{lay.dbu})") + +deep; log_modes() +poly.not(areaid_ce).isolated(0.21, euclidian).output("poly.2", "poly.2 : min. poly spacing : 0.21um") +Tiled(); log_modes() + +# rpm +out = polygon_layer +drc_check(outputs.push({category: "rpm.1a", description: "rpm.1a : min. rpm width : 1.27um", data: out}), Array.new.push({name: "rpm", layer: rpm}), "rpm.width_check(1.27/#{lay.dbu})") + +deep; log_modes() +rpm.isolated(0.84, euclidian).output("rpm.2", "rpm.2 : min. rpm spacing : 0.84um") +Tiled(); log_modes() + +# npc +out = polygon_layer +drc_check(outputs.push({category: "npc.1", description: "npc.1 : min. npc width : 0.27um", data: out}), Array.new.push({name: "npc", layer: npc}), "npc.width_check(0.27/#{lay.dbu})") + +deep; log_modes() +npc.isolated(0.27, euclidian).output("npc.2", "npc.2 : min. npc spacing, should be mnually merge if less : 0.27um") +Tiled(); log_modes() + +# licon +difftap = diff.or(tap) +xfom = difftap.not(poly) +licon1ToXfom = licon.interacting(licon.and(xfom)) +licon1ToXfom_PERI = licon1ToXfom.not(areaid_ce) + +out = polygon_layer +drc_check(outputs.push({category: "licon.1", description: "licon.1 : licon should be rectangle", data: out}), Array.new.push({name: "licon", layer: licon}), "licon.non_rectangles") + +out = polygon_layer +drc_check(outputs.push({category: "licon.1_a/b", description: "licon.1_a/b : minimum/maximum width of licon : 0.17um", data: out}), Array.new.push({name: "licon", layer: licon}, {name: "rpm", layer: rpm}, {name: "urpm", layer: urpm}), "(licon - (rpm | urpm)).edges.with_length(0.17/#{lay.dbu}, true)") + +deep; log_modes() + licon1ToXfom_PERI.separation(npc, 0.09, euclidian).output("licon.13", "licon.13 : min. difftap licon spacing to npc : 0.09um") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "licon.13_a", description: "licon.13_a : licon.13 : licon of diffTap in periphery must not overlap npc", data: out}), Array.new.push({name: "licon1ToXfom_PERI", layer: licon1ToXfom_PERI}, {name: "npc", layer: npc}), "licon1ToXfom_PERI & npc") + +deep; log_modes() + licon.interacting(poly).and(licon.interacting(difftap)).output("licon.17", "licon.17 : Licons may not overlap both poly and (diff or tap)") +Tiled(); log_modes() + +# CAPM +deep; log_modes() + m3_bot_plate = (capm.and(m3)).sized(0.14) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "capm.1", description: "capm.1 : min. capm width : 1.0um", data: out}), Array.new.push({name: "capm", layer: capm}), "capm.width_check(1.0/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "capm.2a", description: "capm.2a : min. capm spacing : 0.84um", data: out}), Array.new.push({name: "capm", layer: capm}), "capm.space_check(0.84/#{lay.dbu})") + +#capm.isolated(0.84, euclidian).output("capm.2a", "capm.2a : min. capm spacing : 0.84um") + +m3.interacting(capm).isolated(1.2, euclidian).output("capm.2b", "capm.2b : min. capm spacing : 1.2um") + +m3_bot_plate.isolated(1.2, euclidian).output("capm.2b_a", "capm.2b_a : min. spacing of m3_bot_plate : 1.2um") + +deep; log_modes() + capm.and(m3).enclosing(m3, 0.14, euclidian).output("capm.3", "capm.3 : min. capm and m3 enclosure of m3 : 0.14um") + m3.enclosing(capm, 0.14, euclidian).output("capm.3_a", "capm.3_a : min. m3 enclosure of capm : 0.14um") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "capm.4", description: "capm.4 : min. capm enclosure of via3 : 0.14um", data: out}), Array.new.push({name: "capm", layer: capm}, {name: "via3", layer: via3}), "capm.enclosing_check(via3, 0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "capm.5", description: "capm.5 : min. capm spacing to via3 : 0.14um", data: out}), Array.new.push({name: "capm", layer: capm}, {name: "via3", layer: via3}), "capm.separation_check(via3, 0.14/#{lay.dbu})") + +# CAP2M +deep; log_modes() + m4_bot_plate = (cap2m.and(m4)).sized(0.14) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "cap2m.1", description: "cap2m.1 : min. cap2m width : 1.0um", data: out}), Array.new.push({name: "cap2m", layer: cap2m}), "cap2m.width_check(1.0/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "cap2m.2a", description: "cap2m.2a : min. cap2m spacing : 0.84um", data: out}), Array.new.push({name: "cap2m", layer: cap2m}), "cap2m.space_check(0.84/#{lay.dbu})") + +#cap2m.isolated(0.84, euclidian).output("cap2m.2a", "cap2m.2a : min. cap2m spacing : 0.84um") + +deep; log_modes() + m4.interacting(cap2m).isolated(1.2, euclidian).output("cap2m.2b", "cap2m.2b : min. cap2m spacing : 1.2um") + m4_bot_plate.space(1.2, euclidian).output("cap2m.2b_a", "cap2m.2b_a : min. spacing of m4_bot_plate : 1.2um") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "cap2m.3", description: "cap2m.3 : min. cap2m and m4 enclosure of m4 : 0.14um", data: out}), Array.new.push({name: "m4", layer: m4}, {name: "cap2m", layer: cap2m}), "(cap2m & m4).enclosing_check(cap2m, 0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "cap2m.4", description: "cap2m.4 : min. cap2m enclosure of via4 : 0.14um", data: out}), Array.new.push({name: "cap2m", layer: cap2m}, {name: "via4", layer: via4}), "cap2m.enclosing_check(via4, 0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "cap2m.5", description: "cap2m.5 : min. cap2m spacing to via4 : 0.14um", data: out}), Array.new.push({name: "cap2m", layer: cap2m}, {name: "via4", layer: via4}), "cap2m.separation_check(via4, 0.14/#{lay.dbu})") + + +# hvi +hvi_peri = hvi.not(areaid_ce) + +out = polygon_layer +drc_check(outputs.push({category: "hvi.1", description: "hvi.1 : min. hvi width : 0.6um", data: out}), Array.new.push({name: "hvi_peri", layer: hvi_peri}), "hvi_peri.width_check(0.6/#{lay.dbu})") + +deep; log_modes() + hvi_peri.isolated(0.7, euclidian).output("hvi.2a", "hvi.2a : min. hvi spacing : 0.7um") +Tiled(); log_modes() + +# hvntm +hvntm_peri = hvntm.not(areaid_ce) +out = polygon_layer +drc_check(outputs.push({category: "hvntm.1", description: "hvntm.1 : min. hvntm width : 0.7um", data: out}), Array.new.push({name: "hvntm_peri", layer: hvntm_peri}), "hvntm_peri.width_check(0.7/#{lay.dbu})") + +deep; log_modes() + hvntm_peri.isolated(0.7, euclidian).output("hvntm.2", "hvntm.2 : min. hvntm spacing : 0.7um") +Tiled(); log_modes() + +log("FEOL queued, executing the rules...") + +$tp.execute("DRC") + +log("FEOL rule execution done") + +end #FEOL + +#/////////////////////////////////////////// +# BACK-END checks +#/////////////////////////////////////////// + +if BEOL +log("BEOL section") + +Tiled(); log_modes() + +# li +linotace = li.not(areaid_ce) +out = polygon_layer +drc_check(outputs.push({category: "li.1", description: "li.1 : min. li width : 0.17um", data: out}), Array.new.push({name: "linotace", layer: linotace}), "linotace.width_check(0.17/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "li.3", description: "li.3 : min. li spacing : 0.17um", data: out}), Array.new.push({name: "linotace", layer: linotace}), "linotace.space_check(0.17/#{lay.dbu})") + +deep; log_modes() + licon_peri = licon.not(areaid_ce) + li_edges_with_less_enclosure = li.enclosing(licon_peri, 0.08, not_opposite, projection).second_edges + error_corners = li_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) + li_interact = licon_peri.interacting(error_corners.polygons(1.dbu)) + li_interact.output("li.5", "li.5 : min. li enclosure of licon of 2 opposite edges : 0.08um") +Tiled(); log_modes() + +li.with_area(0..0.0561).output("li.6", "li.6 : min. li area : 0.0561um²") + +# ct +mconnotace = mcon.not(areaid_ce) + +out = polygon_layer +drc_check(outputs.push({category: "ct.1", description: "ct.1 : minimum/maximum width of mcon : 0.17um", data: out}), Array.new.push({name: "mconnotace", layer: mconnotace}), "mconnotace.edges.with_length(0.17/#{lay.dbu}, true)") + +out = polygon_layer +drc_check(outputs.push({category: "ct.2", description: "ct.2 : min. mcon spacing : 0.19um", data: out}), Array.new.push({name: "mcon", layer: mcon}), "mcon.space_check(0.19/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "ct.4", description: "ct.4 : mcon should covered by li", data: out}), Array.new.push({name: "mconnotace", layer: mconnotace}, {name: "li", layer: li}), "mconnotace - li") + +# m1 +out = polygon_layer +drc_check(outputs.push({category: "m1.1", description: "m1.1 : min. m1 width : 0.14um", data: out}), Array.new.push({name: "m1", layer: m1}), "m1.width_check(0.14/#{lay.dbu})") + +deep; log_modes() + huge_m1 = m1.sized(-1.5).sized(1.5).snap(0.005) & m1 + non_huge_m1 = m1.edges - huge_m1 + huge_m1 = huge_m1.edges.outside_part(m1.merged) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m1.2", description: "m1.2 : min. m1 spacing : 0.14um", data: out}), Array.new.push({name: "non_huge_m1", layer: non_huge_m1}), "non_huge_m1.space_check(0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m1.3ab", description: "m1.3ab : min. 3um.m1 spacing m1 : 0.28um", data: out}), Array.new.push({name: "non_huge_m1", layer: non_huge_m1}, {name: "huge_m1", layer: huge_m1}), "huge_m1.separation_check(non_huge_m1, 0.28/#{lay.dbu}) + huge_m1.space_check(0.28/#{lay.dbu})") + +deep; log_modes() + not_in_cell6 = layout(source.cell_obj).select("-s8cell_ee_plus_sseln_a", "-s8cell_ee_plus_sseln_b", "-s8cell_ee_plus_sselp_a", "-s8cell_ee_plus_sselp_b", "-s8fpls_pl8", "-s8fs_cmux4_fm") + not_in_cell6_m1 = not_in_cell6.input(m1_wildcard) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "791_m1.4", description: "791_m1.4 : min. m1 enclosure of mcon : 0.03um", data: out}), Array.new.push({name: "not_in_cell6_m1", layer: not_in_cell6_m1}, {name: "mconnotace", layer: mconnotace}), "not_in_cell6_m1.enclosing_check(mconnotace, 0.03/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m1.4", description: "m1.4 : mcon periphery must be enclosed by m1", data: out}), Array.new.push({name: "mconnotace", layer: mconnotace}, {name: "m1", layer: m1}), "mconnotace - m1") + +deep; log_modes() + in_cell6 = layout(source.cell_obj).select("+s8cell_ee_plus_sseln_a", "+s8cell_ee_plus_sseln_b", "+s8cell_ee_plus_sselp_a", "+s8cell_ee_plus_sselp_b", "+s8fpls_pl8", "+s8fs_cmux4_fm") + in_cell6_m1 = in_cell6.input(m1_wildcard) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m1.4a", description: "m1.4a : min. m1 enclosure of mcon for specific cells : 0.005um", data: out}), Array.new.push({name: "mcon", layer: mcon}, {name: "in_cell6_m1", layer: in_cell6_m1}), "in_cell6_m1.enclosing_check(mcon, 0.005/#{lay.dbu})") + +m1.with_area(0..0.083).output("m1.6", "m1.6 : min. m1 area : 0.083um²") +m1.holes.with_area(0..0.14).output("m1.7", "m1.7 : min. m1 holes area : 0.14um²") + + +if backend_flow = AL + + + poly_inclosing_m1 = poly.enclosing(m1, 0.06, euclidian).polygons + mcon_edges_with_less_enclosure_m1 = m1.enclosing(mcon, 0.06, projection).second_edges + opposite4 = (mcon.edges - mcon_edges_with_less_enclosure_m1).width(0.17 + 1.dbu, projection).polygons + + deep; log_modes() # say if we are is_deep? and is_tiled? + mcon06 = mcon.interacting(poly_inclosing_m1) + mcon06.not_interacting(opposite4).output("m1.5", "m1.5 : min. m1 enclosure of mcon of 2 opposite edges : 0.06um") + Tiled(); log_modes() # say if we are is_deep? and is_tiled? + +end + +# areaid_mt +#drc_check(outputs.push({category: "areaid_mt", description: "areaid_mt rules not supported", data: out}), Array.new.push({name: "areaid_mt", layer: areaid_mt}), "areaid_mt") + + +# via +out = polygon_layer +drc_check(outputs.push({category: "via.3", description: "via.3 : Only min. square vias are allowed", data: out}), Array.new.push({name: "via", layer: via}), "via.non_squares") + +if backend_flow = AL + ringVIA = via.drc(with_holes > 0) + rectVIA = via.not(ringVIA) + via_not_mt = rectVIA.not(areaid_mt) + + out = polygon_layer + drc_check(outputs.push({category: "via.1a", description: "via.1a : via outside of moduleCut should be rectangular", data: out}), Array.new.push({name: "via_not_mt", layer: via_not_mt}), "via_not_mt.non_rectangles") + + out = polygon_layer + drc_check(outputs.push({category: "via.1a_a", description: "via.1a_a : minimum width of via : 0.15um", data: out}), Array.new.push({name: "via_not_mt", layer: via_not_mt}), "via_not_mt.width_check(0.15/#{lay.dbu})") + + out = polygon_layer + drc_check(outputs.push({category: "via.1a_b", description: "via.1a_b : maximum length of via : 0.15um", data: out}), Array.new.push({name: "via_not_mt", layer: via_not_mt}), "via_not_mt.edges.with_length(0.15/#{lay.dbu}, true)") + + via.isolated(0.17, euclidian).output("via.2", "via.2 : min. via spacing : 0.17um") + + ringVIA.drc(0.2.um < width <= 0.205.um).output("via.3/_a", "via.3/_a : min./max width of ring-shaped via : 0.2um/0.205um") + out = polygon_layer + drc_check(outputs.push({category: "via.3_b", description: "via.3_b : ring-shaped via must be enclosed by areaid_sl", data: out}), Array.new.push({name: "ringVIA", layer: ringVIA}, {name: "areaid_sl", layer: areaid_sl}), "ringVIA - areaid_sl") + + deep; log_modes() + m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.055, euclidian).output("via.4a", "via.4a : min. m1 enclosure of 0.15um via : 0.055um") + Tiled(); log_modes() + out = polygon_layer + drc_check(outputs.push({category: "via.4a_a", description: "via.4a_a : via must be enclosed by met1", data: out}), Array.new.push({name: "via", layer: via}, {name: "m1", layer: m1}), "(via.squares.edges.with_length(0.15/#{lay.dbu}, false)) - m1") + + + via_not_interacting_via = via.not_interacting(via.edges.without_length(0.15)) + via1_edges_with_less_enclosure_m1 = m1.enclosing(via_not_interacting_via, 0.085, projection).second_edges + opposite5 = (via_not_interacting_via.edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via_without_length = via.edges.without_length(0.15) + + via1_edges_with_less_enclosure_m1 = m1.enclosing(via.not_interacting(via.edges.without_length(0.15)), 0.085, projection).second_edges + opposite5 = (via.not_interacting(via.edges.without_length(0.15)).edges - via1_edges_with_less_enclosure_m1).width(0.15 + 1.dbu, projection).polygons + via.not_interacting(via.edges.without_length(0.15)).not_interacting(opposite5).output("via.5a", "via.5a : min. m1 enclosure of 0.15um via of 2 opposite edges : 0.085um") +end + +# m2 +deep; log_modes() + huge_m2 = m2.sized(-1.5).sized(1.5).snap(0.005) & m2 + non_huge_m2 = m2.edges - huge_m2 + huge_m2 = huge_m2.edges.outside_part(m2.merged) + via_outside_periphery = via.not(areaid_ce) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m2.1", description: "m2.1 : min. m2 width : 0.14um", data: out}), Array.new.push({name: "m2", layer: m2}), "m2.width_check(0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m2.2", description: "m2.2 : min. m2 spacing : 0.14um", data: out}), Array.new.push({name: "non_huge_m2", layer: non_huge_m2}), "non_huge_m2.space_check(0.14/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m2.3ab", description: "m2.3ab : min. 3um.m2 spacing m2 : 0.28um", data: out}), Array.new.push({name: "huge_m2", layer: huge_m2}, {name: "non_huge_m2", layer: non_huge_m2}), "(huge_m2.separation_check(non_huge_m2, 0.28/#{lay.dbu}) + huge_m2.space_check(0.28/#{lay.dbu}))") + +m2.with_area(0..0.0676).output("m2.6", "m2.6 : min. m2 area : 0.0676um²") +m2.holes.with_area(0..0.14).output("m2.7", "m2.7 : min. m2 holes area : 0.14um²") + + +if backend_flow = AL + deep; log_modes() + m2.enclosing(via, 0.055, euclidian).output("m2.4", "m2.4 : min. m2 enclosure of via : 0.055um") + via_outside_periphery.not(m2).output("m2.4_a", "m2.4_a : via in periphery must be enclosed by met2") + Tiled(); log_modes() + + via_edges_with_less_enclosure_m2 = m2.enclosing(via, 0.085, projection).second_edges + opposite7 = (via.edges - via_edges_with_less_enclosure_m2).width(0.2 + 1.dbu, projection).polygons + + deep; log_modes() + via.not_interacting(opposite7).output("m2.5", "m2.5 : min. m2 enclosure of via of 2 opposite edges : 0.085um") + Tiled(); log_modes() + +end + +# via2 +out = polygon_layer +drc_check(outputs.push({category: "via2.3", description: "via2.3 : Only min. square vias are allowed", data: out}), Array.new.push({name: "via2", layer: via2}), "via2.non_squares") + +if backend_flow = AL + ringVIA2 = via2.drc(with_holes > 0) + rectVIA2 = via2.not(ringVIA2) + via2_not_mt = rectVIA2.not(areaid_mt) + out = polygon_layer + drc_check(outputs.push({category: "via2.1a", description: "via2.1a : via2 outside of moduleCut should be rectangular", data: out}), Array.new.push({name: "via2_not_mt", layer: via2_not_mt}), "via2_not_mt.non_rectangles") + + out = polygon_layer + drc_check(outputs.push({category: "via2.1a_a", description: "via2.1a_a : minimum width of via2 : 0.2um", data: out}), Array.new.push({name: "via2_not_mt", layer: via2_not_mt}), "via2_not_mt.width_check(0.2/#{lay.dbu})") + + out = polygon_layer + drc_check(outputs.push({category: "via2.1a_b", description: "via2.1a_b : minimum/maximum width of via2 : 0.2um", data: out}), Array.new.push({name: "via2_not_mt", layer: via2_not_mt}), "via2_not_mt.edges.with_length(0.2/#{lay.dbu}, true)") + + via2.isolated(0.2, euclidian).output("via2.2", "via2.2 : min. via2 spacing : 0.2um") + + ringVIA2.drc(0.2.um < width <= 0.205.um).output("via2.3/_a", "via2.3/_a : min./max width of ring-shaped via2 : 0.2um/0.205um") + out = polygon_layer + drc_check(outputs.push({category: "via2.3_b", description: "via2.3_b : ring-shaped via2 must be enclosed by areaid_sl", data: out}), Array.new.push({name: "ringVIA2", layer: ringVIA2}, {name: "areaid_sl", layer: areaid_sl}), "ringVIA2 - areaid_sl") + + deep; log_modes() + m2.enclosing(via2, 0.04, euclidian).output("via2.4", "via2.4 : min. m2 enclosure of via2 : 0.04um") + Tiled(); log_modes() + out = polygon_layer + drc_check(outputs.push({category: "via.4_a", description: "via.4_a : via must be enclosed by met2", data: out}), Array.new.push({name: "via2", layer: via2}, {name: "m2", layer: m2}), "via2 - m1") + + deep; log_modes() + via2_edges_with_less_enclosure = m2.enclosing(via2, 0.085, projection).second_edges + error_corners = via2_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) + via2_interact = via2.interacting(error_corners.polygons(1.dbu)) + via2_interact.output("via2.5", "via2.5 : min. m3 enclosure of via2 of 2 opposite edges : 0.085um") + Tiled(); log_modes() +end + +# m3 +deep; log_modes() + huge_m3 = m3.sized(-1.5).sized(1.5).snap(0.005) & m3 + non_huge_m3 = m3.edges - huge_m2 + huge_m3 = huge_m3.edges.outside_part(m3.merged) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m3.1", description: "m3.1 : min. m3 width : 0.3um", data: out}), Array.new.push({name: "m3", layer: m3}), "m3.width_check(0.3/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m3.2", description: "m3.2 : min. m3 spacing : 0.3um", data: out}), Array.new.push({name: "m3", layer: m3}), "non_huge_m3.space_check(0.3/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m3.3cd", description: "m3.3cd : min. 4um.m3 spacing m3 : 0.4um", data: out}), Array.new.push({name: "huge_m3", layer: huge_m3}, {name: "non_huge_m3", layer: non_huge_m3}), "(huge_m3.separation_check(non_huge_m3, 0.4/#{lay.dbu}) + huge_m3.space_check(0.4/#{lay.dbu}))") + +if backend_flow = AL + deep; log_modes() + m3.enclosing(via2, 0.065, euclidian).output("m3.4", "m3.4 : min. m3 enclosure of via2 : 0.065um") + via2.not(m3).output("m3.4_a", "m3.4_a : via2 must be enclosed by met3") + Tiled(); log_modes() +end + +# via3 +if backend_flow = AL + ringVIA3 = via3.drc(with_holes > 0) + rectVIA3 = via3.not(ringVIA3) + via3_not_mt = rectVIA3.not(areaid_mt) + + out = polygon_layer + drc_check(outputs.push({category: "via3.1", description: "via3.1 : via3 outside of moduleCut should be rectangular", data: out}), Array.new.push({name: "via3_not_mt", layer: via3_not_mt}), "via3_not_mt.non_rectangles") + + out = polygon_layer + drc_check(outputs.push({category: "via3.1_a", description: "via3.1_a : minimum width of via3 : 0.2um", data: out}), Array.new.push({name: "via3_not_mt", layer: via3_not_mt}), "via3_not_mt.width_check(0.2/#{lay.dbu})") + + out = polygon_layer + drc_check(outputs.push({category: "via3.1_b", description: "via3.1_b : minimum/maximum width of via3 : 0.2um", data: out}), Array.new.push({name: "via3_not_mt", layer: via3_not_mt}), "via3_not_mt.edges.with_length(0.2/#{lay.dbu}, true)") + + via3.isolated(0.2, euclidian).output("via3.2", "via3.2 : min. via3 spacing : 0.2um") + + deep; log_modes() + m3.enclosing(via3, 0.06, euclidian).output("via3.4", "via3.4 : min. m3 enclosure of via3 : 0.06um") + Tiled(); log_modes() + + out = polygon_layer + drc_check(outputs.push({category: "via3.4_a", description: "via3.4_a : non-ring via3 must be enclosed by met3", data: out}), Array.new.push({name: "rectVIA3", layer: rectVIA3}, {name: "m3", layer: m3}), "rectVIA3 - m3") + + deep; log_modes() + via_edges_with_less_enclosure = m3.enclosing(via3, 0.09, projection).second_edges + error_corners = via_edges_with_less_enclosure.width(angle_limit(100.0), 1.dbu) + via3_interact = via3.interacting(error_corners.polygons(1.dbu)) + via3_interact.output("via3.5", "via3.5 : min. m3 enclosure of via3 of 2 opposite edges : 0.09um") + Tiled(); log_modes() + +end + +# m4 +deep; log_modes() + huge_m4 = m4.sized(-1.5).sized(1.5).snap(0.005) & m4 + non_huge_m4 = m4.edges - huge_m4 + huge_m4 = huge_m4.edges.outside_part(m4.merged) +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m4.1", description: "m4.1 : min. m4 width : 0.3um", data: out}), Array.new.push({name: "m4", layer: m4}), "m4.width_check(0.3/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m4.2", description: "m4.2 : min. m4 spacing : 0.3um", data: out}), Array.new.push({name: "m4", layer: m4}), "non_huge_m4.space_check(0.3/#{lay.dbu})") + +deep; log_modes() + m4.with_area(0..0.240).output("m4.4a", "m4.4a : min. m4 area : 0.240um²") +Tiled(); log_modes() + +out = polygon_layer +drc_check(outputs.push({category: "m4.5ab", description: "m4.5ab : min. 3um.m4 spacing m4 : 0.4um", data: out}), Array.new.push({name: "huge_m4", layer: huge_m4}, {name: "non_huge_m4", layer: non_huge_m4}), "huge_m4.separation_check(non_huge_m4, 0.4/#{lay.dbu}) + huge_m4.space_check(0.4/#{lay.dbu})") + +if backend_flow = AL + deep; log_modes() + m4.enclosing(via3, 0.065, euclidian).output("m4.3", "m4.3 : min. m4 enclosure of via3 : 0.065um") + via3.not(m4).output("m4.3_a", "m4.3_a : via3 must be enclosed by met4") + Tiled(); log_modes() +end + +# via4 +ringVIA4 = via4.drc(with_holes > 0) +rectVIA4 = via4.not(ringVIA4) +via4_not_mt = rectVIA4.not(areaid_mt) + +out = polygon_layer +drc_check(outputs.push({category: "via4.1", description: "via4.1 : via4 outside of moduleCut should be rectangular", data: out}), Array.new.push({name: "via4_not_mt", layer: via4_not_mt}), "via4_not_mt.non_rectangles") + +out = polygon_layer +drc_check(outputs.push({category: "via4.1_a", description: "via4.1_a : min. width of via4 outside of moduleCut : 0.8um", data: out}), Array.new.push({name: "via4_not_mt", layer: via4_not_mt}), "via4_not_mt.width_check(0.8/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "via4.1_b", description: "via4.1_b : maximum length of via4 : 0.8um", data: out}), Array.new.push({name: "via4_not_mt", layer: via4_not_mt}), "via4_not_mt.edges.with_length(0.8/#{lay.dbu}, true)") + +via4.isolated(0.8, euclidian).output("via4.2", "via4.2 : min. via4 spacing : 0.8um") + +ringVIA4.drc(0.2.um < width <= 0.205.um).output("via4.3", "via4.3 : min./max width of ring-shaped via4 : 0.2um/0.205um") +out = polygon_layer +drc_check(outputs.push({category: "via4.3_b", description: "via4.3_b : ring-shaped via4 must be enclosed by areaid_sl", data: out}), Array.new.push({name: "ringVIA4", layer: ringVIA4}), "ringVIA4 - areaid_sl") + +deep; log_modes() + m4.enclosing(via4, 0.19, euclidian).output("via4.4", "via4.4 : min. m4 enclosure of via4 : 0.19um") + via4.not(m4).output("via4.4_a", "via4.4_a : m4 must enclose all via4") +Tiled(); log_modes() + +# m5 +out = polygon_layer +drc_check(outputs.push({category: "m5.1", description: "m5.1 : min. m5 width : 1.6um", data: out}), Array.new.push({name: "m5", layer: m5}), "m5.width_check(1.6/#{lay.dbu})") + +out = polygon_layer +drc_check(outputs.push({category: "m5.2", description: "m5.2 : min. m5 spacing : 1.6um", data: out}), Array.new.push({name: "m5", layer: m5}), "m5.space_check(1.6/#{lay.dbu})") + +deep; log_modes() + m5.enclosing(via4, 0.31, euclidian).output("m5.3", "m5.3 : min. m5 enclosure of via4 : 0.31um") + via4.not(m5).output("m5.3_a", "m5.3_a : min. m5 enclosure of via4 : 0.31um") +Tiled(); log_modes() + +m5.with_area(0..4.0).output("m5.4", "m5.4 : min. m5 area : 4.0um²") + +# pad +deep; log_modes() + pad.isolated(1.27, euclidian).output("pad.2", "pad.2 : min. pad spacing : 1.27um") +Tiled(); log_modes() + +log("BEOL queued, executing the rules...") + +$tp.execute("DRC") + +log("BEOL execution done") + +end #BEOL + +outputs.each do |outs| + outs[:data].output(outs[:category], outs[:description]) +end diff --git a/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/test_suite.sh b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/test_suite.sh new file mode 100755 index 00000000..329546ea --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/tech/sky130A/test_suite.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +: ${1?"Usage: $0 gds input file"} +: ${2?"Usage: $0 report name"} + +threads=(200 150 100 50 25 20 15 10 8 4 2 1) +tiles=(1000 800 600 400 200 100 50 10) + +echo "design, report, start_date, end_date, threads, tiles" >> test_suite.csv + +for thr in ${threads[@]}; do + for tile in ${tiles[@]}; do + start=$(date +"%r") + /ciic/tools/bin/klayout -rd input=$1 -rd report=$2.$thr.$tile -rd thr=$thr -rd tiles=$tile -rd beol=1 -rd feol=1 -zz -r sky130A_mr_opt.drc + end=$(date +"%r") + echo "start: $start \nend: $end" + + echo "$1, $2.$thr.$tile, $start, $end, $thr, $tile" >> test_suite.csv + done +done diff --git a/images/foss-asic-tools/addons/sak/klayout/xor.drc b/images/foss-asic-tools/addons/sak/klayout/xor.drc new file mode 100755 index 00000000..1c451bea --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/xor.drc @@ -0,0 +1,42 @@ +# A general XOR script +# (https://www.klayout.de/forum/discussion/100/xor-vs-diff-tool) +# This script uses KLayout's DRC language to implement a generic +# XOR between two layouts. The name of the layouts is given +# in $a and $b. + +# For layout-to-layout XOR with multiple cores, run this script with +# ./klayout -r xor.drc -rd thr=NUM_CORES -rd top_cell=TOP_CELL_NAME -rd a=a.gds -rd b=b.gds -rd ol=xor.gds -zz +# (replace NUM_CORES by the desired number of cores to utilize + +# enable timing output +verbose + +# set up input a +a = source($a, $top_cell) + +# set up input b +b = source($b, $top_cell) + +$o && $ext != "gds" && report("XOR #{$a} vs. #{$b}", $o) +$ol && $ext == "gds" && target($ol, $co || "XOR") + +$thr && threads($thr) || threads(8) + +# collect all common layers +layers = {} +[ a.layout, b.layout ].each do |ly| + ly.layer_indices.each do |li| + i = ly.get_info(li) + layers[i.to_s] = i + end +end + +# perform the XOR's +layers.keys.sort.each do |l| + i = layers[l] + info("--- Running XOR for #{l} ---") + x = a.input(l) ^ b.input(l) + info("XOR differences: #{x.data.size}") + $o && $ext != "gds" && x.output(l, "XOR results for layer #{l} #{i.name}") + $ol && $ext == "gds" && x.output(i.layer, i.datatype, i.name) +end diff --git a/images/foss-asic-tools/addons/sak/klayout/xor.sh b/images/foss-asic-tools/addons/sak/klayout/xor.sh new file mode 100755 index 00000000..b58d0dd6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/xor.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +: ${1?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${2?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${3?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} +: ${4?"Usage: $0 file1.gds file2.gds output.gds|markers.xml"} + + +echo "First Layout: $1" +echo "Second Layout: $2" +echo "Design Name: $3" +echo "Output GDS will be: $4" + +start=$(date +"%r") +xvfb-run -a klayout -r $(dirname $0)/xor_opt.drc \ + -rd top_cell=$3 \ + -rd a=$1 \ + -rd b=$2 \ + -rd output=$4 \ + -rd thr=8 + # -rd ol=$4 \ + # -rd o=$4 \ + # -rd ext=${4##*.} \ + # -zz +end=$(date +"%r") +echo "start: $start \nend:$end" diff --git a/images/foss-asic-tools/addons/sak/klayout/xor_opt.drc b/images/foss-asic-tools/addons/sak/klayout/xor_opt.drc new file mode 100755 index 00000000..f1e7aa1c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout/xor_opt.drc @@ -0,0 +1,65 @@ +# A general XOR script +# (https://www.klayout.de/forum/discussion/100/xor-vs-diff-tool) +# This script uses KLayout's DRC language to implement a generic +# XOR between two layouts. The name of the layouts is given +# in $a and $b. + +# For layout-to-layout XOR with multiple cores, run this script with +# ./klayout -r xor.drc -rd thr=NUM_CORES -rd top_cell=TOP_CELL_NAME -rd a=a.gds -rd b=b.gds -rd ol=xor.gds -zz +# (replace NUM_CORES by the desired number of cores to utilize + +# enable timing output +verbose + +# set up input a +a = source($a, $top_cell) +$lay_a = a.layout +#$lay_a.flatten($lay_a.top_cell().cell_index, 1, false) + +# set up input b +b = source($b, $top_cell) +$lay_b = b.layout +#$lay_b.flatten($lay_b.top_cell().cell_index, 1, false) + +outputs = Array.new + +$tp = RBA::TilingProcessor::new +$tp.tile_size(500, 500) +$tp.threads = $thr.to_i +$tp.dbu = $lay_a.dbu + +$count = 0 + +o = RBA::Layout::new +cell = o.create_cell($top_cell.to_s) +cell_ind = cell.cell_index() + +def xor(output, layer_i) + + $tp.output("output_#{$count}", output[$count][:data].data) + $tp.input("a1", $lay_a, $lay_a.top_cell().cell_index, layer_i ) + $tp.input("a2", $lay_b, $lay_b.top_cell().cell_index, layer_i ) + $tp.queue("_output(output_#{$count}, a1 ^ a2)") + $count = $count + 1 + +end + +# collect all common layers +layers = {} +[ a.layout, b.layout ].each do |ly| + ly.layer_indices.each do |li| + i = ly.get_info(li) + out = polygon_layer + xor(outputs.push({"layer": i, "data": out}), i) + end +end + + +$tp.execute("XOR") + +puts "Writing gds output file" + +outputs.each do |outs| + cell.shapes(o.layer(outs[:layer])).insert(outs[:data].data) +end +o.write($output) \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_cell_freshness.py b/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_cell_freshness.py new file mode 100755 index 00000000..94034f63 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_cell_freshness.py @@ -0,0 +1,128 @@ +#!/bin/python3.8 +import os +import gc +import argparse +import re +import logging +import sys +from pathlib import Path + +import coloredlogs +import klayout.db as pya +import klayout.rdb as rdb +from termcolor import colored + +# Needed for script wide deep mode analysis +global_dss = None + + +def cell_xor(cella, cellb, flat): + violation_region = pya.Region() + # To have all possible layers between the two cells + for layer_info in set([*cella.layout().layer_infos(), *cellb.layout().layer_infos()]): + cella_layer = cella.begin_shapes_rec(cella.layout().layer(layer_info.layer, layer_info.datatype)) + cellb_layer = cellb.begin_shapes_rec(cellb.layout().layer(layer_info.layer, layer_info.datatype)) + if not flat: + violation_region.insert(pya.Region(cella_layer, global_dss) ^ pya.Region(cellb_layer, global_dss)) + else: + violation_region.insert(pya.Region(cella_layer) ^ pya.Region(cellb_layer)) + del cella_layer + del cellb_layer + gc.collect() + return violation_region + +def cell_freshness_check(layout_path, pdk_root, break_on_single_rotten_cell, flat, check_sram_cells, close_matching, markers_output_file): + report = rdb.ReportDatabase("Cell Freshness Check") + layout_ut = pya.Layout() + layout_ut.read(str(layout_path)) + sky130A_pdk_layouts_list = [] + for path in list((pdk_root / 'sky130A/libs.ref/').rglob('*.gds')): + if not check_sram_cells and 'sram' in path.name: + continue + else: + sky130A_pdk_cells_layout = pya.Layout() + sky130A_pdk_cells_layout.read(str(path)) + sky130A_pdk_layouts_list.append(sky130A_pdk_cells_layout) + + sky130A_pdk_cells = {} + for asky130A_pdk_layout in sky130A_pdk_layouts_list: + for sky130A_pdk_cell in asky130A_pdk_layout.top_cells(): + sky130A_pdk_cells[sky130A_pdk_cell.name] = sky130A_pdk_cell + layout_ut_cells = {layout_ut_cell.name: layout_ut_cell for layout_ut_cell in layout_ut.each_cell()} + + test_matches = {} + # This is needed because some tools add some prefixes to the cell name while writing gds (example: magic) + if close_matching: + for layout_ut_cell in layout_ut_cells.values(): + for sky130A_pdk_cell in sky130A_pdk_cells.values(): + # This workaround exists specifically for magic to adhere to some prefix addition to cell name + # TODO: might need removal later on + if sky130A_pdk_cell.name == layout_ut_cell.name or re.match(layout_ut_cell.name, rf".*_{sky130A_pdk_cell.name}$"): + test_matches[layout_ut_cell] = sky130A_pdk_cell + else: + for layout_ut_cell in layout_ut_cells.values(): + if layout_ut_cell.name in sky130A_pdk_cells: + test_matches[layout_ut_cell] = sky130A_pdk_cells[layout_ut_cell.name] + + #TODO:remove all prints in favor of logging + rotten_cells = {} + fresh_cells = {} + logging.info(f"{'sky130 pdk':<50}{layout_path.stem:<70}EQUIVALENT") + logging.info(f"{'':_<130}") + for layout_ut_cell, sky130A_pdk_cell in test_matches.items(): + logging.root.handlers[0].terminator = "" + logging.info(f"{sky130A_pdk_cell.name:<50}{layout_ut_cell.name:<70}") + logging.root.handlers[0].terminator ="\n" + difference = cell_xor(cella=sky130A_pdk_cell, cellb=layout_ut_cell, flat=flat) + if difference.is_empty(): + logging.info(colored("YES", "green")) + fresh_cells[layout_ut_cell.name] = layout_ut_cell + else: + logging.error(colored("NO", "red")) + rotten_cells[layout_ut_cell.name] = layout_ut_cell + category_inst = report.create_category(f"PDK {sky130A_pdk_cell.name} compared to {layout_path.name} {layout_ut_cell.name}") + report.create_items(report.create_cell(layout_ut_cell.name).rdb_id(), category_inst.rdb_id(), + pya.CplxTrans(layout_ut_cell.layout().dbu), difference) + if break_on_single_rotten_cell: + break + # delete cell to free memory + del layout_ut_cell + del sky130A_pdk_cell + gc.collect() + logging.info( f"""\n{'Summary':_^130}\n + sky130A_pdk + {len(sky130A_pdk_cells):^30} sky130 cells + {len([sky130A_pdk_cell for sky130A_pdk_cell in sky130A_pdk_cells.values() if sky130A_pdk_cell.is_ghost_cell()]):^30} sky130 ghost cells + {layout_path.stem} + {len(layout_ut_cells):^30} cells + {len(rotten_cells):^30} Rotten sky130 Cells + {len(fresh_cells):^30} Fresh sky130 Cells + {len(layout_ut_cells) - len(fresh_cells) - len(rotten_cells):^30} Not-Tested Cells + {len([layout_ut_cell for layout_ut_cell in layout_ut_cells.values() if layout_ut_cell.is_ghost_cell()]):^30} ghost cells""") + if markers_output_file: + report.save(str(markers_output_file)) + return len(rotten_cells) == 0 + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-l", "--layout_path", required=True, type=Path, help="Layout path") + parser.add_argument("-p", "--pdk_root", required=True, type=Path, help="PDK root directory") + parser.add_argument("-b", "--break_on_single_rotten_cell", action="store_true", default=False, required=False, + help="if specified the check exits on a single violation instead of running the check on all cells") + parser.add_argument("-f", "--flat", action="store_true", default=False, required=False, + help="enable flat mode analysis (instead of hierarchical)") + parser.add_argument("-s", "--check_sram_cells", action="store_true", default=False, required=False, + help="Run cell equivalency on ram cells, which are huge(very slow)") + parser.add_argument("-c", "--close_matching", action="store_true", default=False, required=False, + help="Comparison done between cells with names the resemble each other (as opposed to exactly matching which is default) ") + parser.add_argument("-m", "--markers_output_file", required=False, type=Path, help="violating shapes markers file path") + args = parser.parse_args() + + logging.basicConfig(level=logging.DEBUG, format=f"%(message)s", stream=sys.stdout) + if not args.flat: + # To enable faster analysis + global_dss = pya.DeepShapeStore() + # global_dss.threads = 4 + # global_dss.threads = os.cpu_count() + cell_freshness_check(Path(args.layout_path).absolute(), Path(args.pdk_root).absolute(), args.break_on_single_rotten_cell, + args.flat, args.check_sram_cells, args.close_matching, args.markers_output_file) diff --git a/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_nonoverlapping.py b/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_nonoverlapping.py new file mode 100755 index 00000000..8aaac36f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/klayout_pip_drc_checks/klayout_pypi_nonoverlapping.py @@ -0,0 +1,83 @@ +#!/bin/python3.8 +import klayout.db as pya +import klayout.rdb as rdb +import argparse +import time +import gc +from termcolor import colored +from pprint import pprint +from pathlib import Path + +class Material: + def __init__(self, name, bottom, list_of_tops): + self.name = name + self.bottom = bottom + self.list_of_tops = list_of_tops + +def mark_metal_purpose_not_overlapping_drawing(layout_path, markers_output_file, flat): + layout_ut = pya.Layout() + layout_ut.read(str(layout_path)) + report = rdb.ReportDatabase(str(markers_output_file)) + rdb_top_cell = report.create_cell(layout_ut.top_cell().name) + + if not flat: + dss = pya.DeepShapeStore() + materials = [ + Material("nwell", bottom=pya.LayerInfo(64,20), list_of_tops=[pya.LayerInfo(64,16),pya.LayerInfo(64,5)]), + Material("diff", bottom=pya.LayerInfo(65,20), list_of_tops=[pya.LayerInfo(65,16),pya.LayerInfo(65,6)]), + Material("tap", bottom=pya.LayerInfo(65,44), list_of_tops=[pya.LayerInfo(65,48),pya.LayerInfo(65,5)]), + Material("poly", bottom=pya.LayerInfo(66,20), list_of_tops=[pya.LayerInfo(66,16),pya.LayerInfo(66,5)]), + Material("licon1", bottom=pya.LayerInfo(66,44), list_of_tops=[pya.LayerInfo(66,58)]), + Material("li1", bottom=pya.LayerInfo(67,20), list_of_tops=[pya.LayerInfo(67,16),pya.LayerInfo(67,5)]), + Material("mcon", bottom=pya.LayerInfo(67,44), list_of_tops=[pya.LayerInfo(67,48)]), + Material("met1", bottom=pya.LayerInfo(68,20), list_of_tops=[pya.LayerInfo(68,16),pya.LayerInfo(68,5)]), + Material("via", bottom=pya.LayerInfo(68,44), list_of_tops=[pya.LayerInfo(68,58)]), + Material("met2", bottom=pya.LayerInfo(69,20), list_of_tops=[pya.LayerInfo(69,16),pya.LayerInfo(69,5)]), + Material("via2", bottom=pya.LayerInfo(69,44), list_of_tops=[pya.LayerInfo(69,58)]), + Material("met3", bottom=pya.LayerInfo(70,20), list_of_tops=[pya.LayerInfo(70,16),pya.LayerInfo(70,5)]), + Material("via3", bottom=pya.LayerInfo(70,44), list_of_tops=[pya.LayerInfo(70,48)]), + Material("met4", bottom=pya.LayerInfo(71,20), list_of_tops=[pya.LayerInfo(71,16),pya.LayerInfo(71,5)]), + Material("via4", bottom=pya.LayerInfo(71,44), list_of_tops=[pya.LayerInfo(71,48)]), + Material("met5", bottom=pya.LayerInfo(72,20), list_of_tops=[pya.LayerInfo(72,16),pya.LayerInfo(72,5)]), + Material("pad", bottom=pya.LayerInfo(76,20), list_of_tops=[pya.LayerInfo(76,5),pya.LayerInfo(76,16)]), + Material("pnp", bottom=pya.LayerInfo(82,44), list_of_tops=[pya.LayerInfo(82,59)]), + Material("npn", bottom=pya.LayerInfo(82,20), list_of_tops=[pya.LayerInfo(82,5)]), + Material("rdl", bottom=pya.LayerInfo(74,20), list_of_tops=[pya.LayerInfo(74,16),pya.LayerInfo(74,5)]), + Material("inductor", bottom=pya.LayerInfo(82,24), list_of_tops=[pya.LayerInfo(82,25)])] + + for amaterial in materials: + print(f"{amaterial.name}") + for atop in amaterial.list_of_tops: + if not flat: + layer_top = pya.Region(layout_ut.top_cell().begin_shapes_rec(layout_ut.layer(atop.layer, atop.datatype)), dss) + layer_bot = pya.Region(layout_ut.top_cell().begin_shapes_rec(layout_ut.layer(amaterial.bottom.layer, amaterial.bottom.datatype)), dss) + else: + layer_top = pya.Region(layout_ut.top_cell().begin_shapes_rec(layout_ut.layer(atop.layer, atop.datatype))) + layer_bot = pya.Region(layout_ut.top_cell().begin_shapes_rec(layout_ut.layer(amaterial.bottom.layer, amaterial.bottom.datatype))) + + msg = f"{atop.layer}/{atop.datatype} over {amaterial.bottom.layer}/{amaterial.bottom.datatype}" + print(f"{msg:>40} ", end="") + violating_region = layer_top - layer_bot + + if violating_region.is_empty(): + print(colored(f"{'SUCCESS':^50}", "green")) + else: + print(colored(f"{'FAILURE':^50}", "red")) + category_inst = report.create_category(f"{atop.layer}/{atop.datatype}") + report.create_items(rdb_top_cell.rdb_id(), category_inst.rdb_id(), pya.CplxTrans(layout_ut.dbu), violating_region) + del violating_region + del layer_top + gc.collect() + del layer_bot + gc.collect() + report.save(str(markers_output_file)) + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-l", "--layout_path", required=True, type=Path, help="Layout path") + parser.add_argument("-m", "--markers_output_file", required=True, type=Path, help="Violating shapes markers file path") + parser.add_argument("-f", "--flat", required=False, action="store_true", help="Specify flat mode analysis (versus deep), default: False") + args = parser.parse_args() + layout_path = Path(args.layout_path).absolute() + markers_output_file = Path(args.markers_output_file).absolute() + mark_metal_purpose_not_overlapping_drawing(layout_path, markers_output_file, args.flat) diff --git a/images/foss-asic-tools/addons/sak/magic/README.md b/images/foss-asic-tools/addons/sak/magic/README.md new file mode 100755 index 00000000..daa5515d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/README.md @@ -0,0 +1,3 @@ +# What is this? + +Core scripts are doing the actual work, scripts under ../scripts are the ones that should be used. \ No newline at end of file diff --git a/images/foss-asic-tools/addons/sak/magic/antenna-check-gds.sh b/images/foss-asic-tools/addons/sak/magic/antenna-check-gds.sh new file mode 100755 index 00000000..2d1a5ec6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/antenna-check-gds.sh @@ -0,0 +1,30 @@ +#!/bin/sh +export MAGIC=/ef/apps/ocd/magic/8.3.179-202106141345/bin/magic +export MAGTYPE=maglef; +export PDKPATH=$PDK_ROOT/sky130A ; + +$MAGIC -dnull -noconsole -rcfile $PDKPATH/libs.tech/magic/sky130A.magicrc < [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} + + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi +bash $SAK/magic/magic-drc.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "def" "sky130A" $OUT_DIR $SAK/magic/tcl diff --git a/images/foss-asic-tools/addons/sak/magic/drc-gds-full-EFS8A.sh b/images/foss-asic-tools/addons/sak/magic/drc-gds-full-EFS8A.sh new file mode 100755 index 00000000..ecbb774c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/drc-gds-full-EFS8A.sh @@ -0,0 +1,94 @@ +#!/bin/bash +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +export GDS_FILE_PATH=$1 +export CELL_NAME=$2 +export PDK_ROOT=/ef/tech/SW/ +export PDKPATH=/ef/tech/SW/EFS8A/ +export VERSION="current" +export OUT_DIR=./results.drc.$2 + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi + +cd $OUT_DIR + +# magicGdrc -T $PDKPATH/libs.tech/magic/$VERSION/EFS8A.tech -I vendorimport -S 'drc(full)' -l $OUT_DIR/$2.drc.out -km $OUT_DIR/$2.drc.km ../$GDS_FILE_PATH $CELL_NAME + +magicGdrc -T $PDKPATH/libs.tech/magic/$VERSION/EFS8A.tech -I vendorimport -S 'drc(fast)' -l $2.drc.out -km $2.drc.km $GDS_FILE_PATH $CELL_NAME + +cd .. + +echo "#############################################" +echo "Check the results in" "$OUT_DIR" +echo "#############################################" + +<< COMMENT + +usage: [ -T techfilePath ] [-S ] [-I ] [-km FILE_NAME] [-l FILE_NAME] [-L FILE_NAME] gdsFileName [topCellName] + -T if given, must be very first + -S if given, changes from techfile's default/1st drc style (perhaps "drc(fast)") to named style, for example: -S "drc(full)" + -I if given, changes from techfile's default/1st cifinput style (perhaps "vendorimport" or "import(exact)") to named style, for example: -I "import(magic)" + -path-sub do 'gds path subcell yes' (default:no). Make unique subcell for each path: cut #tiles cost of angles. + -poly-sub do 'gds polygon subcell yes' (default:no). Make unique subcell for each polygon: cut #tiles cost of angles. + -pps Short hand, equivalent to giving both: -path-sub -poly-sub + + Error tabulation: By default (slowest, most detail): Report table of counts-by-errorString for all cells. + Stdout logs a pareto of error-type by count unless disabled for some/all cells by below; topcell last. + -tt Table of counts-by-errorString for ONLY topcell; and just lumped total error count per subcell. + -tc Just lumped error counts per cell including topcell (fastest, least detail). + Cells NOT tabulating count-by-errorString can't appear in other output error files: feedback(*.drtcl), -l, -km. + For lumped error counts, overlapped error shapes from unique error-types are merged further reducing count. + + cell-type +-- (default) --+-- option -tt --+-- option -tc + subcell | count-by-errorString | lumped-error-count | lumped-error-count + topcell | count-by-errorString | count-by-errorString | lumped-error-count + + -km if given, write to FILE_NAME EVERY individual error bbox (MICRONS) in klayout Marker database(XML) format (suggest *.lyrdb) + -l if given, enumerates EVERY individual error bbox (MICRONS) to FILE_NAME, emulates /ef/efabless/lib/magic/tcl/drc.tcl + -L same as -l above, but outputs bbox-es in LAMBDA coordinates, not microns + -nf Do NOT write *.drtcl per-cell feedback files. Can be source-ed in magic and step thru: feedback find. + + NOTES: Without explicit tech-file option: the ./.magicrc or ./magic_setup and ~/.magicrc may load a default tech-file. + Therefore the tech-file used CAN depend on whether your CWD is ~/design//mag when running this script. + Since no *.mag are loaded by this script: the cell search path defined by any init files has no impact. + Since about 8.3.68, magic may generate error-type "See error definition in the subcell". There typically are + redundancies of errors across the hierarchy anyway (but with tech-file err-strings), this seems another form. + +example, just list all styles: by causing an error which provokes usage report: + magicGdrc -T /ef/tech/XFAB/EFXH035B/libs.tech/magic/current/EFXH035B.tech +example, same but run in a ~/design/*/mag/ dir, so techfile set by ./.magicrc (else magic's builtin minimum.tech): + magicGdrc +example, run GDS drc, explicit: tech, cif-istyle, drc-style: + magicGdrc -T /ef/tech/SW/EFS8A/libs.tech/magic/current/EFS8A.tech -I vendorimport -S 'drc(full)' /tmp/mytop.gds mytopcell +example, run GDS drc, default tech & styles, write klayout marker database, no per-cell *.drtcl feedback files: + magicGdrc -km /tmp/mytop.lyrdb -nf /tmp/mytop.gds mytopcell +example, same but make subcells for paths & polygons + magicGdrc -km /tmp/mytop.lyrdb -nf -pps /tmp/mytop.gds mytopcell +example, run GDS drc, no feedback (*.drtcl), only lumped/merged err-count for all cells + magicGdrc -tc /tmp/mytop.gds mytopcell +example, run GDS drc, no feedback (*.drtcl), lumped/merged err-count for subcells, detail errors for topcell + magicGdrc -nf -tt /tmp/mytop.gds mytopcell + +magicGdrc: tech-name: minimum -version: 0.0 {Minimum technology file structure} -filename: /ef/efabless/lib/magic/sys/minimum.tech -lambda 1 1 +info: magicGdrc: drc styles available: default + +ERROR: magicGdrc: Insufficient number of arguments, need gdsFileName [topCellName] + +COMMENT + + diff --git a/images/foss-asic-tools/addons/sak/magic/drc-gds-sky130A.sh b/images/foss-asic-tools/addons/sak/magic/drc-gds-sky130A.sh new file mode 100755 index 00000000..ace943d6 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/drc-gds-sky130A.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + + +export MAGTYPE=mag ; +export PDKPATH=$PDK_ROOT=~/foss/pdks ; + +magic -dnull -noconsole -rcfile $PDKPATH/libs.tech/magic/current/sky130A.magicrc < [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} +export TCL_CALL_PATH=$(pwd)/core_scripts + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi + +bash $SAK/magic/magic-drc.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "gds" "sky130A" $OUT_DIR $SAK/magic/tcl diff --git a/images/foss-asic-tools/addons/sak/magic/drc-mag-full-EFS8A.sh b/images/foss-asic-tools/addons/sak/magic/drc-mag-full-EFS8A.sh new file mode 100755 index 00000000..5859f4c5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/drc-mag-full-EFS8A.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +export MAG_FILE_PATH=$1 +export PDK_ROOT=/ef/tech/SW/ +export PDKPATH=/ef/tech/SW/EFS8A/ +export VERSION="current" +export OUT_DIR=./results.drc.$2 + +#if ! [[ -d "$OUT_DIR" ]] +#then +# mkdir $OUT_DIR +#fi + +#cd $OUT_DIR + +# magicDrc -T $PDKPATH/libs.tech/magic/$VERSION/EFS8A.tech -I vendorimport -S 'drc(full)' -l $OUT_DIR/$2.drc.out -km $OUT_DIR/$2.drc.km ../$MAG_FILE_PATH $CELL_NAME + +# magicDrc -T $PDKPATH/libs.tech/magic/$VERSION/EFS8A.tech -I vendorimport -S 'drc(fast)' -l $2.drc.out -km $2.drc.km ../$MAG_FILE_PATH $CELL_NAME + +magicDrc -T $PDKPATH/libs.tech/magic/$VERSION/EFS8A.tech -S 'drc(fast)' -l $2.drc.out $MAG_FILE_PATH + +#cd .. + +#echo "#############################################" +#echo "Check the results in" "$OUT_DIR" +#echo "#############################################" + +<< COMMENT + +usage: [ -T techfilePath ] [-S ] [-I ] [-km FILE_NAME] [-l FILE_NAME] [-L FILE_NAME] gdsFileName [topCellName] + -T if given, must be very first + -S if given, changes from techfile's default/1st drc style (perhaps "drc(fast)") to named style, for example: -S "drc(full)" + -I if given, changes from techfile's default/1st cifinput style (perhaps "vendorimport" or "import(exact)") to named style, for example: -I "import(magic)" + -path-sub do 'gds path subcell yes' (default:no). Make unique subcell for each path: cut #tiles cost of angles. + -poly-sub do 'gds polygon subcell yes' (default:no). Make unique subcell for each polygon: cut #tiles cost of angles. + -pps Short hand, equivalent to giving both: -path-sub -poly-sub + + Error tabulation: By default (slowest, most detail): Report table of counts-by-errorString for all cells. + Stdout logs a pareto of error-type by count unless disabled for some/all cells by below; topcell last. + -tt Table of counts-by-errorString for ONLY topcell; and just lumped total error count per subcell. + -tc Just lumped error counts per cell including topcell (fastest, least detail). + Cells NOT tabulating count-by-errorString can't appear in other output error files: feedback(*.drtcl), -l, -km. + For lumped error counts, overlapped error shapes from unique error-types are merged further reducing count. + + cell-type +-- (default) --+-- option -tt --+-- option -tc + subcell | count-by-errorString | lumped-error-count | lumped-error-count + topcell | count-by-errorString | count-by-errorString | lumped-error-count + + -km if given, write to FILE_NAME EVERY individual error bbox (MICRONS) in klayout Marker database(XML) format (suggest *.lyrdb) + -l if given, enumerates EVERY individual error bbox (MICRONS) to FILE_NAME, emulates /ef/efabless/lib/magic/tcl/drc.tcl + -L same as -l above, but outputs bbox-es in LAMBDA coordinates, not microns + -nf Do NOT write *.drtcl per-cell feedback files. Can be source-ed in magic and step thru: feedback find. + + NOTES: Without explicit tech-file option: the ./.magicrc or ./magic_setup and ~/.magicrc may load a default tech-file. + Therefore the tech-file used CAN depend on whether your CWD is ~/design//mag when running this script. + Since no *.mag are loaded by this script: the cell search path defined by any init files has no impact. + Since about 8.3.68, magic may generate error-type "See error definition in the subcell". There typically are + redundancies of errors across the hierarchy anyway (but with tech-file err-strings), this seems another form. + +example, just list all styles: by causing an error which provokes usage report: + magicGdrc -T /ef/tech/XFAB/EFXH035B/libs.tech/magic/current/EFXH035B.tech +example, same but run in a ~/design/*/mag/ dir, so techfile set by ./.magicrc (else magic's builtin minimum.tech): + magicGdrc +example, run GDS drc, explicit: tech, cif-istyle, drc-style: + magicGdrc -T /ef/tech/SW/EFS8A/libs.tech/magic/current/EFS8A.tech -I vendorimport -S 'drc(full)' /tmp/mytop.gds mytopcell +example, run GDS drc, default tech & styles, write klayout marker database, no per-cell *.drtcl feedback files: + magicGdrc -km /tmp/mytop.lyrdb -nf /tmp/mytop.gds mytopcell +example, same but make subcells for paths & polygons + magicGdrc -km /tmp/mytop.lyrdb -nf -pps /tmp/mytop.gds mytopcell +example, run GDS drc, no feedback (*.drtcl), only lumped/merged err-count for all cells + magicGdrc -tc /tmp/mytop.gds mytopcell +example, run GDS drc, no feedback (*.drtcl), lumped/merged err-count for subcells, detail errors for topcell + magicGdrc -nf -tt /tmp/mytop.gds mytopcell + +magicGdrc: tech-name: minimum -version: 0.0 {Minimum technology file structure} -filename: /ef/efabless/lib/magic/sys/minimum.tech -lambda 1 1 +info: magicGdrc: drc styles available: default + +ERROR: magicGdrc: Insufficient number of arguments, need gdsFileName [topCellName] + +COMMENT + + diff --git a/images/foss-asic-tools/addons/sak/magic/drc-mag-sky130A.sh b/images/foss-asic-tools/addons/sak/magic/drc-mag-sky130A.sh new file mode 100755 index 00000000..5790ca5f --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/drc-mag-sky130A.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + +# To call: ./drc-mag-sky130A.sh [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} + + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi +bash $SAK/magic/magic-drc.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "mag" "sky130A" $OUT_DIR $SAK/magic/tcl diff --git a/images/foss-asic-tools/addons/sak/magic/erase_box.sh b/images/foss-asic-tools/addons/sak/magic/erase_box.sh new file mode 100755 index 00000000..41ceb651 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/erase_box.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +: ${1?"Usage: $0 file.gds llx lly urx ury"} +: ${2?"Usage: $0 file.gds llx lly urx ury"} +: ${3?"Usage: $0 file.gds llx lly urx ury"} +: ${4?"Usage: $0 file.gds llx lly urx ury"} +: ${5?"Usage: $0 file.gds llx lly urx ury"} +: ${PDK_ROOT?"You need to export PDK_ROOT"} + + +export PDK=sky130A + +export MAGIC_MAGICRC=$PDK_ROOT/$PDK/libs.tech/magic/$PDK.magicrc + +MAGTYPE=mag magic -rcfile $MAGIC_MAGICRC -dnull -noconsole < [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} +export TCL_CALL_PATH=$(pwd)/core_scripts + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi + +bash $SAK/magic/magic-ext.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "def" "sky130A" $OUT_DIR $SAK/magic diff --git a/images/foss-asic-tools/addons/sak/magic/ext-gds-sky130A.sh b/images/foss-asic-tools/addons/sak/magic/ext-gds-sky130A.sh new file mode 100755 index 00000000..edda60b3 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/ext-gds-sky130A.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + +# To call: ./ext-gds-sky130A.sh [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} + + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi + +bash $SAK/magic/magic-ext.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "gds" "sky130A" $OUT_DIR $SAK/magic/tcl diff --git a/images/foss-asic-tools/addons/sak/magic/ext-mag-sky130A.sh b/images/foss-asic-tools/addons/sak/magic/ext-mag-sky130A.sh new file mode 100755 index 00000000..f40e2111 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/ext-mag-sky130A.sh @@ -0,0 +1,30 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + +# To call: ./ext-mag-sky130A.sh [ default is /results/] + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export OUT_DIR=${4:-$TARGET_DIR/results/} + + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi + +bash $SAK/magic/magic-ext.sh $TARGET_DIR $DESIGN_NAME $PDK_ROOT "mag" "sky130A" $OUT_DIR $SAK/magic/tcl diff --git a/images/foss-asic-tools/addons/sak/magic/gds2mag-te.sh b/images/foss-asic-tools/addons/sak/magic/gds2mag-te.sh new file mode 100755 index 00000000..2c50ae8e --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/gds2mag-te.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + +export MAGTYPE=mag ; +export PDKPATH=$PDK_ROOT/sky130A ; +export MAGIC=magic + + +$MAGIC -rcfile $PDKPATH/libs.tech/magic/current/sky130A.magicrc -dnull -noconsole << EOF +drc off +box 0 0 0 0 +load vtop.mag -force +drc off +gds readonly true +gds rescale false +gds read ${cellname}.gds +cellname rename ${cellname} vtmp +load vtmp +select top cell +set pname [lindex [cellname list children] 0] +cellname rename \\\$pname ${cellname} +select cell \\\${pname}_0 +identify ${cellname}_0 +writeall force ${cellname} +quit -noprompt +EOF diff --git a/images/foss-asic-tools/addons/sak/magic/gds2mag.sh b/images/foss-asic-tools/addons/sak/magic/gds2mag.sh new file mode 100755 index 00000000..64a76eae --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/gds2mag.sh @@ -0,0 +1,36 @@ +#!/bin/sh +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + +export MAGTYPE=mag ; +export PDKPATH=$PDK_ROOT/sky130A ; +export MAGIC=magic + + +$MAGIC -rcfile $PDKPATH/libs.tech/magic/current/sky130A.magicrc -dnull -noconsole << EOF +#------------------------------------------------------ +drc off +#---------------------------------gds polygon subcell true +gds warning default +gds readonly true +gds rescale false +#---------------------------------tech unlock * +gds read $1 +load ${1%.gds} +#---------------------------------readspice ${1%.gds}.sp +cellname delete "(UNNAMED)" +writeall force +quit -noprompt +EOF diff --git a/images/foss-asic-tools/addons/sak/magic/gdsMergeall.drc b/images/foss-asic-tools/addons/sak/magic/gdsMergeall.drc new file mode 100755 index 00000000..e8520db5 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/gdsMergeall.drc @@ -0,0 +1,193 @@ +#!/bin/bash +# usage: gdsMergeall.drc [-f] [-t ] [-T ] +# +# For each layer: merge shapes. To eliminate/drop zero-area boundarys (fatal to some tools). +# Usually input & output file-size are close, perhaps output a little smaller. +# +# WARNING: output has ALL TEXT STRIPPED/REMOVED (i.e. text not propagated from in to out). +# WARNING: paths are converted to polygons. +# +# Intent is (default) deep-mode retains hier. as much as possible, just +# merging each layer of each cell "in-place". +# +# Exit status (does not work in klayout 0.23.11; does in 0.24 and later): +# 1 : I/O error or other internal error (uncaught exceptions). +# 2...127 : means 1... rules did flag error(s). If over 126 rules had errors, status is 127 max. +# That is this # is the how many rule-types had non-zero errors, NOT total errors count. +# 0 : no rules flagged errors. +# If process dies thru signal, exit status is 128+SIGNUM, so that range is reserved. +# i.e. if kernel oom-killer sends kill -9: status=137. +# +# Runs klayout (in batch). +# (klayout requirement is this script-name *must* end in .drc). +# +# Shebang for: no outer ruby interpreter; generalize arg passing to script. +# for-bash: re-quote args, to import from an env-var +x=%{ + [[ "$1" == "--version" || "$1" == "-v" ]] && exec klayout -b -v # pass-thru -v + + export _M0= + for i in "$@" ; do _M0="$_M0${_M0:+,}\"${i//\"/\\\"}\""; done + exec klayout -b -r "$0" -rd tag="$_M0" + # tag= is NOT USED, cosmetic: So process-listing shows the arguments, and a + # user can distinguish one process from another, despite running same klayout-script. +} +# for-ruby: + +argv=eval("[ #{ENV["_M0"]} ]") # re-parse args from env-var +# puts "argv.size=#{argv.size}" +# argv.each{ |v| puts v } + + thisScript = $0 + prog="gdsMergeall.drc" + usage = "Usage: #{prog} [options] " + usage += "\n WARNING: output has ALL TEXT STRIPPED/REMOVED (i.e. text not propagated from in to out)." + usage += "\n WARNING: output has paths converted to polygons." + require 'optparse' + + argSum = argv.join(' ') + if argv.empty? + argv << '--help' + end + + o = {:flat=>false, :thread=>4, :tile=>0} + OptionParser.new do |opts| + opts.banner = usage + opts.on("-f", "flat mode, default is deep (in absence of tiling). Not recommended.") do + o[:flat] = true + end + opts.on("-T TILE_SIZE", "enable tiling (disables deep) AND sets tile-size in um; default 0 (no tiling). Not recommended.") do |tile| + o[:flat] = true + o[:tile] = tile.to_f + end + opts.on("-t THREADS", "threads for deep or tiled (not flat), default 4. Give 0 to get from cmd: nproc") do |thr| + o[:thread] = thr.to_i + end + + opts.on("-v", "--version", "version: pass-thru, JUST show klayout version") do + exec "klayout -b -v" + end + opts.on("--help", "show usage") do + puts opts + exit 1 + end + opts.on("--usage", "show usage") do + puts opts + exit 1 + end + end.parse!(argv) # default constant ARGV? Doesn't work here: not true ruby. + # "!" on end of parse: argv parameter is MODIFIED by OptionParser to delete the processed options. + + if argv.length != 2 + puts "ERROR, not 2 arguments. #{usage}" + exit 1 + end +f = argv[0] +# c = argv[1] +fout = argv[1] + +# if f == "" || fout == "" || c == "" +if f == "" || fout == "" + puts "ERROR: insufficient arguments. #{usage}" + exit 1 +end + +# include RBA +begin + +if o[:flat] + flat # flat, with or without tiling +else + deep +end + +if o[:thread] == 0 + o[:thread]=`nproc` +end + +if o[:tile] > 0 + tiles(o[:tile]) + # no border + # tile_borders(0) + no_borders +end + +threads(o[:thread]) +deepP = is_deep? +tiledP = is_tiled? + +# title = "Sky130Apin1.drc, input=#{f}, topcell=#{c}" +title = "gdsMergeall.drc, input=#{f}" +# puts "Running Sky130Apin1.drc on file=#{f}, topcell=#{c}, output to #{fout}" +puts "Running Sky130Apin1.drc on file=#{f}, output to #{fout}" +puts " args: #{ENV["_M0"]}" +puts " deep:#{deepP} tiled:#{tiledP} threads:#{o[:thread]}" + +STDOUT.flush + +# source(f, c) +s = source(f) +layout = s.layout +target(fout) + +$errs = 0 +$totals = 0 +$rules = 0 +layers = 0 + +# verbose input(), flag if its empty. description is a string. +def inputVerb(layn, typen, desc) + ly = input(layn, typen) + isEmpty(ly, desc) + return ly +end + +def isEmpty(layer, desc) + if layer.is_empty? + puts "--EMPTY : #{desc}" + else + puts "data : #{desc}" + end +end + +# loop over all layer-purpose-pairs found in input-layout: +# Merge it and write merged results to output. + +STDERR.flush +layout.layer_indices.each { |layer_id| + layers += 1 + layer_info = layout.get_info(layer_id) + lpp = layer_info.to_s + # puts "checking #{lpp} ..." + input(lpp).merged.output(lpp) +} + +puts "#{$errs} errors, #{layers} layers processed." + +# if we roll-over to 256, exit-status seen by shell is zero. +# uncaught I/O errors will yield (built-in) exit status of 1. +if $errs > 0 + $errs = $errs + 1 +end +if $errs > 127 + $errs = 127 +end + +# experimental: report own peak process-stats. BUT: output-file isn't really written +# until we exit (during exit). So these results are not 100% accurate. +# VmHWM: max-resident-size, VmPeak: max virtual-size. +# don't need: pid=Process.pid +if File.readable?("/proc/self/status") + puts File.foreach("/proc/self/status").grep(/^(VmPeak|VmHWM)/) +end + +end # end begin + +# does not work (to set exit-status) in 0.23.11. Does work in 0.24.2, 0.27. +exit $errs + +# +# emacs syntax-mode: +# Local Variables: +# mode:ruby +# End: diff --git a/images/foss-asic-tools/addons/sak/magic/gdsSky130Apin1.drc b/images/foss-asic-tools/addons/sak/magic/gdsSky130Apin1.drc new file mode 100755 index 00000000..db75251c --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/gdsSky130Apin1.drc @@ -0,0 +1,356 @@ +#!/bin/bash +# usage: gdsSky130Apin1.drc [-p] [-f] [-T ] +# +# Flag pin.not(drawing) for all known pin/label layers in sky130A. +# WARNING: if markerFile is RELATIVE-PATH it is written in SAME-DIR as input-GDS. +# +# pwell & pwelliso not checked by default. Believe labelling pwell without drawn pwell is legal. +# +# TODO?: are results correct if deep mode, for pin & drawing in different hier. levels? +# +# Exit status (does not work in klayout 0.23.11; does in 0.24 and later): +# 1 : I/O error or other internal error (uncaught exceptions). +# 2...127 : means 1... rules did flag error(s). If over 126 rules had errors, status is 127 max. +# That is this # is the how many rule-types had non-zero errors, NOT total errors count. +# 0 : no rules flagged errors. +# If process dies thru signal, exit status is 128+SIGNUM, so that range is reserved. +# i.e. if kernel oom-killer sends kill -9: status=137. +# +# Runs klayout (in batch) to do partial/crude layer grid checks; output to a MarkerDB (*.lyrdb) +# Crude because no partitioning is done, to enforce unique grid requirements by areaid. +# +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .drc). +# +# Known reasons why mult. klayout-versions produce non-identical output: +# 1. In some earlier versions (than 0.27), markerReport may state "wrong" generator: +# :/built-in-macros/drc.lym +# the "better" generator would look like: +# drc: script='/gdsSky130Apin1.drc' +# 2. When errors are flagged, the ordering of errors may differ between klayout versions. +# +# Shebang for: no outer ruby interpreter; generalize arg passing to script. +# for-bash: re-quote args, to import from an env-var +x=%{ + [[ "$1" == "--version" || "$1" == "-v" ]] && exec klayout -b -v # pass-thru -v + + export _M0= + for i in "$@" ; do _M0="$_M0${_M0:+,}\"${i//\"/\\\"}\""; done + exec klayout -b -r "$0" -rd tag="$_M0" + # tag= is NOT USED, cosmetic: So process-listing shows the arguments, and a + # user can distinguish one process from another, despite running same klayout-script. +} +# for-ruby: + +argv=eval("[ #{ENV["_M0"]} ]") # re-parse args from env-var +# puts "argv.size=#{argv.size}" +# argv.each{ |v| puts v } + + thisScript = $0 + prog="gdsSky130Apin1.drc" + usage = "Usage: #{prog} [options] " + usage += "\n WARNING: relative-path markerFile is written relative to input gdsFile." + usage += "\n pwell & pwelliso NOT-checked by default: Substrate without nwell is a pwell" + usage += "\n and can be labelled (*without* pwell:drawing)." + require 'optparse' + + argSum = argv.join(' ') + if argv.empty? + argv << '--help' + end + + o = {:flat=>false, :thread=>4, :tile=>0, :pwell=>false} + OptionParser.new do |opts| + opts.banner = usage + opts.on("-f", "flat mode, default is deep (in absence of tiling)") do + o[:flat] = true + end + opts.on("-p", "check pwell & pwelliso; not recommended") do + o[:pwell] = true + end + opts.on("-T TILE_SIZE", "enable tiling (disables deep) AND sets tile-size in um; default 0 (no tiling)") do |tile| + o[:flat] = true + o[:tile] = tile.to_f + end + opts.on("-t THREADS", "threads for deep or tiled (not flat), default 4. Give 0 to get from cmd: nproc") do |thr| + o[:thread] = thr.to_i + end + + opts.on("-v", "--version", "version: pass-thru, JUST show klayout version") do + exec "klayout -b -v" + end + opts.on("--help", "show usage") do + puts opts + exit 1 + end + opts.on("--usage", "show usage") do + puts opts + exit 1 + end + end.parse!(argv) # default constant ARGV? Doesn't work here: not true ruby. + # "!" on end of parse: argv parameter is MODIFIED by OptionParser to delete the processed options. + + if argv.length != 3 + puts "ERROR, not 3 arguments. #{usage}" + puts " To list available top-cells: gdsTopcells " + exit 1 + end +f = argv[0] +c = argv[1] +fout = argv[2] + +if f == "" || fout == "" || c == "" + puts "ERROR: insufficient arguments. #{usage}" + puts " To list available top-cells: gdsTopcells " + exit 1 +end + +# include RBA +begin + +if o[:flat] + flat # flat, with or without tiling +else + deep +end + +if o[:thread] == 0 + o[:thread]=`nproc` +end + +if o[:tile] > 0 + tiles(o[:tile]) + # no border + # tile_borders(0) + no_borders +end + + +threads(o[:thread]) +deepP = is_deep? +tiledP = is_tiled? + +title = "Sky130Apin1.drc, input=#{f}, topcell=#{c}" +puts "Running Sky130Apin1.drc on file=#{f}, topcell=#{c}, output to #{fout}" +puts " args: #{ENV["_M0"]}" +puts " deep:#{deepP} tiled:#{tiledP} threads:#{o[:thread]}" + +STDOUT.flush + +source(f, c) +report(title, fout) + +# $ruleHeader = "Checks with errors:" +$ruleHeader = "--- #err|description, table for cell: %s" % [c] +$didHeader = false +$errs = 0 +$totals = 0 +$rules = 0 + +# +# Direct rule checks like: +# m2.width(1.5).output("m2 width < 1.5") +# write to report() but don't give opportunity to count/print which rules did flag. +# Instead: +# rule(m2.width(1.5), "m2 width < 1.5") +# +# Wish to use direct-form, and just tabulate/post-process report after the fact. +# This form (empty or not) still does not nicely report/summarize error-count per-rule. + +# Return value not meaningful if the is_empty? fails (in 0.26.9 or earlier). +# +def rule(marker, msg) + $rules = $rules + 1 + empty = false + size = -1 + emptyFails = false + + # test if marker is empty. + # marker.is_empty? : works in 0.27, not 0.26 and earlier. + # marker.size : does not work in any so far. + # marker.bbox appears universal, works in klayout versions 0.23.11 ... 0.27. + # In case it fails, catch exception and revert to less information in our stdout. + begin + size = marker.data.size + empty = (size == 0) + # works all versions: size = marker.data.size + # works all versions: empty = marker.bbox.to_s == "()" + # fails pre 0.27: empty = marker.is_empty? + rescue StandardError => e + # when can't determine which rules flagged errors, signal not to summarize. + emptyFails = true + empty = false + size = -1 + if $errs >= 0 + $errs = -8 + end + if ($errs & 1) == 0 + puts "turned off marker empty detect..." + end + $errs = $errs | 1 + end + if ! empty + marker.output(msg) + if ! emptyFails + if $errs == 0 && ! $didHeader + puts $ruleHeader + $didHeader = true + end + $errs = $errs + 1 + $totals = $totals + size + puts "%8d %s" % [size, msg] + return 1 + end + end + return 0 +end + +# call like: +# +# pinCheck( "met1", 68,20, 68,16, 68, 5 ) +# +# where 68,20 is met1/drawing, and purposes 16 & 5 are pin,label +# +# It is an error if called: +# ... with less than 5 args, i.e. MUST have at least one non-drawing layer-purpose-pair. +# e.g.: pinCheck( "met1", 68,20 ) +# ... with an odd number of arguments after the first three. +# e.g.: pinCheck( "met1", 68,20, 68 ) +# e.g.: pinCheck( "met1", 68,20, 68,16, 68 ) +# +# Variations: +# pinCheck: do the regular AndNot pin check +# pinSkip: do not do the check, but still report on which lpps have data vs empty. +def pinCheck(name, layn, typen, *nonMaskLpps) + pinCheckIf(true, name, layn, typen, *nonMaskLpps) +end +def pinSkip(name, layn, typen, *nonMaskLpps) + pinCheckIf(false, name, layn, typen, *nonMaskLpps) +end +def pinCheckIf(checkp, name, layn, typen, *nonMaskLpps) + if nonMaskLpps.length == 0 || nonMaskLpps.length % 2 != 0 + STDERR.puts "pinCheck called with empty or odd-number of args for non-drawing layer-purpose-pairs." + exit 1 + end + + lyfmt = "%22s" + lyfmt2 = "%12s" + + ly = polygons(layn, typen) # get main drawing + drpair = "#{layn}/#{typen}" + # isEmpty(ly, name) + lye = (ly.is_empty?) ? "EMP" : "dat" + sumry = [ lyfmt % "#{name}:#{drpair}/#{lye}" ] + + nonMaskLpps.each_slice(2) {|lay, typ| + l2 = polygons(lay, typ) + l2e = (l2.is_empty?) ? "EMP" : "dat" + sumry += [ lyfmt2 % "#{lay}/#{typ}/#{l2e}" ] + + msg = "#{lay}/#{typ}: #{name}, pin/label not-over drawing:#{drpair}" + if checkp + rule( l2.not(ly), msg ) + end + } + if checkp + mode = " " + else + mode = "NO-Check" + end + # force header output (if not yet done) + if ! $didHeader + puts $ruleHeader + $didHeader = true + end + puts ("%8s ---- " % mode) + sumry.join(" ") + +end + +# verbose input(), flag if its empty. description is a string. +def inputVerb(layn, typen, desc) + ly = input(layn, typen) + isEmpty(ly, desc) + return ly +end + +def isEmpty(layer, desc) + if layer.is_empty? + puts "--EMPTY : #{desc}" + else + puts "data : #{desc}" + end +end + +# check all layer-purpose-pairs found in input-layout: +# Report ALL that are pin-purpose. + +#? should these be checked against pwell/drawing: pwelliso_pin - 44/16 pwelliso_label - 44/5 + pinCheckIf(o[:pwell], + "pwell", 64,44, 122,16, 64,59, 44,16, 44,5) + pinCheck( "nwell", 64,20, 64,16, 64,5) + pinCheck( "diff", 65,20, 65,16, 65,6) + pinCheck( "tap", 65,44, 65,48, 65,5) + pinCheck( "poly", 66,20, 66,16, 66,5) + pinCheck( "licon1", 66,44, 66,58) + pinCheck( "li1", 67,20, 67,16, 67,5) + pinCheck( "mcon", 67,44, 67,48) + pinCheck( "met1", 68,20, 68,16, 68,5) + pinCheck( "via", 68,44, 68,58) + pinCheck( "met2", 69,20, 69,16, 69,5) + pinCheck( "via2", 69,44, 69,58) + pinCheck( "met3", 70,20, 70,16, 70,5) + pinCheck( "via3", 70,44, 70,48) + pinCheck( "met4", 71,20, 71,16, 71,5) + pinCheck( "via4", 71,44, 71,48) + pinCheck( "met5", 72,20, 72,16, 72,5) + pinCheck( "pad", 76,20, 76,5, 76,16) + pinCheck( "pnp", 82,44, 82,59) + pinCheck( "npn", 82,20, 82,5) + pinCheck( "rdl", 74,20, 74,16, 74,5) + pinCheck( "inductor", 82,24, 82,25) + +end +# How to tabulate as-if-flat "error-counts by error-message" from current report()? +# In old versions, we can't seem to determine here if a check flagged errors ($errs == -1). +if $errs >= 0 + puts "%8d total error(s) among %d error type(s), %d checks, cell: %s" % [$totals, $errs, $rules, c] + # puts "#{$errs} of #{$rules} checks have errors" +else + puts "#{$rules} checks" + $errs = 0 # so exit status == 0. +end +puts "Writing report..." + +# if we roll-over to 256, exit-status seen by shell is zero. +# uncaught I/O errors will yield (built-in) exit status of 1. +if $errs > 0 + $errs = $errs + 1 +end +if $errs > 127 + $errs = 127 +end + +# experimental: report own peak process-stats. BUT: report-file isn't really written +# until we exit (during exit). So these results are not 100% accurate. +# VmHWM: max-resident-size, VmPeak: max virtual-size. +# don't need: pid=Process.pid +if File.readable?("/proc/self/status") + puts File.foreach("/proc/self/status").grep(/^(VmPeak|VmHWM)/) +end + +# does not work (to set exit-status) in 0.23.11. +# Does work in 0.24.2, 0.27! +exit $errs + +# For 0.23.11 we could set exit-status as below, but: +# if we do: the report() does not get written! +# +# for exit! we'd lose buffered output unless we flush: +# STDOUT.flush +# STDERR.flush +# Kernel.exit!($errs) +# +# emacs syntax-mode: +# Local Variables: +# mode:ruby +# End: diff --git a/images/foss-asic-tools/addons/sak/magic/gdsSky130Asub1.drc b/images/foss-asic-tools/addons/sak/magic/gdsSky130Asub1.drc new file mode 100755 index 00000000..e30aa78a --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/gdsSky130Asub1.drc @@ -0,0 +1,413 @@ +#!/bin/bash +# usage: gdsSky130Asub1.drc +# +# totals are reported twice: 1st for just the (subset of) MR-rules, +# and lastly again for the grand-total: including BOTH MR-rules & non-MR-rules. +# +# Exit status (does not work in klayout 0.23.11; does in 0.24 and later): +# 1 : I/O error or other internal error (uncaught exceptions). +# 2...127 : means 1... rules did flag error(s). If over 126 rules had errors, status is 127 max. +# That is this # is the how many rule-types had non-zero errors, NOT total errors count. +# 0 : no rules flagged errors. +# If process dies thru signal, exit status is 128+SIGNUM, so that range is reserved. +# i.e. if kernel oom-killer sends kill -9: status=137. +# +# Runs klayout (in batch) to do partial/crude layer grid checks; output to a MarkerDB (*.lyrdb) +# Crude because no partitioning is done, to enforce unique grid requirements by areaid. +# +# Script starts as regular ruby, then exec's via klayout passing self to it. +# (klayout requirement is this script-name *must* end in .drc). +# +# Known reasons why mult. klayout-versions produce non-identical output: +# 1. In some earlier versions (than 0.27), markerReport may state "wrong" generator: +# :/built-in-macros/drc.lym +# the "better" generator would look like: +# drc: script='/gdsSky130Asub1.drc' +# 2. When errors are flagged, the ordering of errors may differ between klayout versions. +# +# Shebang for: no outer ruby interpreter; generalize arg passing to script. +# for-bash: re-quote args, to import from an env-var +x=%{ + [[ "$1" == "--version" || "$1" == "-v" ]] && exec klayout -b -v # pass-thru -v + + export _M0= + for i in "$@" ; do _M0="$_M0${_M0:+,}\"${i//\"/\\\"}\""; done + exec klayout -b -r "$0" +} +# for-ruby: + +argv=eval("[ #{ENV["_M0"]} ]") # re-parse args from env-var +# puts "argv.size=#{argv.size}" +# argv.each{ |v| puts v } + + thisScript = $0 + prog="gdsSky130Asub1.drc" + usage = "Usage: #{prog} [options] " + require 'optparse' + + argSum = argv.join(' ') + if argv.empty? + argv << '--help' + end + + o = {:flat=>false, :thread=>4} + OptionParser.new do |opts| + opts.banner = usage + opts.on("-f", "flat mode, default is deep") do + o[:flat] = true + end + opts.on("-t THREADS", "threads for deep (not flat) mode, default 4. Give 0 to get from cmd: nproc") do |thr| + o[:thread] = thr.to_i + end + + opts.on("-v", "--version", "version: pass-thru, JUST show klayout version") do + exec "klayout -b -v" + end + opts.on("--help", "show usage") do + puts opts + exit 1 + end + opts.on("--usage", "show usage") do + puts opts + exit 1 + end + end.parse!(argv) # default constant ARGV? Doesn't work here: not true ruby. + # "!" on end of parse: argv parameter is MODIFIED by OptionParser to delete the processed options. + + if argv.length != 3 + puts "ERROR, not 3 arguments. #{usage}" + puts " To list available top-cells: gdsTopcells " + exit 1 + end +f = argv[0] +c = argv[1] +fout = argv[2] + +if f == "" || fout == "" || c == "" + puts "ERROR: insufficient arguments. #{usage}" + puts " To list available top-cells: gdsTopcells " + exit 1 +end + +# include RBA +begin + +if o[:flat] + flat +else + deep +end + +if o[:thread] == 0 + o[:thread]=`nproc` +end + +threads(o[:thread]) +deepP = is_deep? +tiledP = is_tiled? + +title = "Sky130Asub1.drc, input=#{f}, topcell=#{c}" +puts "Running Sky130Asub1.drc on file=#{f}, topcell=#{c}, output to #{fout}" +puts " deep:#{deepP} tiled:#{tiledP} threads:#{o[:thread]}" +STDOUT.flush + +source(f, c) +report(title, fout) + +# $ruleHeader = "Checks with errors:" +$ruleHeader = "--- #err|description, table for cell: %s" % [c] +$errs = 0 +$totals = 0 +$rules = 0 +$errs_mr = 0 +$totals_mr = 0 +$rules_mr = 0 + +# +# Direct rule checks like: +# m2.width(1.5).output("m2 width < 1.5") +# write to report() but don't give opportunity to count/print which rules did flag. +# Instead: +# rule(m2.width(1.5), "m2 width < 1.5") +# +# Wish to use direct-form, and just tabulate/post-process report after the fact. +# This form (empty or not) still does not nicely report/summarize error-count per-rule. + +# Return value not meaningful if the is_empty? fails (in 0.26.9 or earlier). +# +def rule_mr(marker, msg) + rule_work(true, marker, msg) +end +def rule(marker, msg) + rule_work(false, marker, msg) +end +def rule_work(isMR, marker, msg) + $rules += 1 + if isMR + $rules_mr += 1 + end + empty = false + size = -1 + emptyFails = false + + # test if marker is empty. + # marker.is_empty? : works in 0.27, not 0.26 and earlier. + # marker.size : does not work in any so far. + # marker.bbox appears universal, works in klayout versions 0.23.11 ... 0.27. + # In case it fails, catch exception and revert to less information in our stdout. + begin + size = marker.data.size + empty = (size == 0) + # works all versions: size = marker.data.size + # works all versions: empty = marker.bbox.to_s == "()" + # fails pre 0.27: empty = marker.is_empty? + rescue StandardError => e + # when can't determine which rules flagged errors, signal not to summarize. + emptyFails = true + empty = false + size = -1 + if $errs >= 0 + $errs = -8 + end + if ($errs & 1) == 0 + puts "turned off marker empty detect..." + end + $errs = $errs | 1 + end + if ! empty + marker.output(msg) + if ! emptyFails + if $errs == 0 + puts $ruleHeader + end + $errs += 1 + $totals += size + if isMR + $errs_mr += 1 + $totals_mr += size + end + + puts "%8d %s" % [size, msg] + return 1 + end + end + return 0 +end + +# verbose input(), flag if its empty. description is a string. +def inputVerb(layn, typen, desc) + ly = input(layn, typen) + isEmpty(ly, desc) + return ly +end + +def isEmpty(layer, desc) + if layer.is_empty? + puts "--EMPTY : #{desc}" + else + puts "data : #{desc}" + end +end + +# 1a +# g1 = 0.001 +# were 1a: 0.001, but that's not so per error reports back from skywater +# p1 = input(66, 20) +# m1 = input(68, 20) +# v1 = input(68, 44) +# m2 = inputVerb(69, 20, "m2 - 69/20") + +# 1b +g5 = 0.005 +# v2 = input(69, 44) +# m3 = input(70, 20) +# v3 = input(70, 44) +# m4 = input(71, 20) +# v4 = input(71, 44) +# m5 = input(72, 20) + +# were 1a: 0.001, but that's not so per error reports back from skywater +# p1.ongrid(g5).output("p1-grid5", "poly off-grid #{g5}") +# m1.ongrid(g5).output("m1-grid5", "met1 off-grid #{g5}") +# v1.ongrid(g5).output("v1-grid5", "via1 off-grid #{g5}") +# m2.ongrid(g5).output("m2-grid5", "met2 off-grid #{g5}") + +# v2.ongrid(g5).output("v2-grid5", "via2 off-grid #{g5}") +# m3.ongrid(g5).output("m3-grid5", "met3 off-grid #{g5}") +# v3.ongrid(g5).output("v3-grid5", "via3 off-grid #{g5}") +# m4.ongrid(g5).output("m4-grid5", "met4 off-grid #{g5}") +# v4.ongrid(g5).output("v4-grid5", "via4 off-grid #{g5}") +# m5.ongrid(g5).output("m5-grid5", "met5 off-grid #{g5}") + +# dnwell = input( 64, 18) +# pwres = input( 64, 13) +# nwell = input( 64, 20) +# diff = input( 65, 20) +# tap = input( 65, 44) +psdm = input( 94, 20) +isEmpty(psdm, "psdm - 94/20") +cpsdm = input( 32, 0) # MASK +isEmpty(cpsdm, "cpsdm - 32/0 [NOT CHECKED]") +nsdm = input( 93, 44) +isEmpty(nsdm, "nsdm - 93/20") +cnsdm = input( 30, 0) # MASK +isEmpty(cnsdm, "cnsdm - 30/0 [NOT CHECKED]") +# lvtn = input( 125, 44) +hvtp = input( 78, 44) +isEmpty(hvtp, "hvtp - 78/44") +chvtp = input( 97, 0) # MASK +isEmpty(chvtp, "chvtp - 97/0 [NOT CHECKED]") +# sonos = input( 80, 20) +# coreid = input( 81, 2) +# stdcel = input( 81, 4) +# npnid = input( 82, 20) +# rpm = input( 86, 20) +# urpm = input( 79, 20) +# ldntm = input( 11, 44) +# hvntm = input( 125, 20) +thkox = input( 75, 20) # hvi +isEmpty(thkox, "thkox(hvi) - 75/20") +# licon = input( 66, 44) +npc = inputVerb( 95, 20, "npc - 95/20") +cnpc = inputVerb( 49, 0, "cnpc.mask - 49/0 [NOT CHECKED]") + +# li = input( 67, 20) +# mcon = input( 67, 44) +# rdl = input( 74, 20) +# glass = input( 76, 20) +# bound = input( 235, 4) +# capm = input( 89, 44) +# capm2 = input( 97, 44) +# lowtapd = input( 81, 14) +# fillobsm1 = input( 62, 24) +# fillobsm2 = input( 105, 52) +# fillobsm3 = input( 107, 24) +# fillobsm4 = input( 112, 4) + +# dnwell.ongrid(g5).output("dnwell-grid5","dnwell off-grid #{g5}") +# pwres.ongrid(g5).output("pwres-grid5","pwres off-grid #{g5}") +# nwell.ongrid(g5).output("nwell-grid5","nwell off-grid #{g5}") +# diff.ongrid(g5).output("diff-grid5","diff off-grid #{g5}") +# tap.ongrid(g5).output("tap-grid5","tap off-grid #{g5}") +# psdm.ongrid(g5).output("psdm-grid5","psdm off-grid #{g5}") +# nsdm.ongrid(g5).output("nsdm-grid5","nsdm off-grid #{g5}") +# lvtn.ongrid(g5).output("lvtn-grid5","lvtn off-grid #{g5}") +# hvtp.ongrid(g5).output("hvtp-grid5","hvtp off-grid #{g5}") +# sonos.ongrid(g5).output("sonos-grid5","sonos off-grid #{g5}") +# coreid.ongrid(g5).output("coreid-grid5","coreid off-grid #{g5}") +# stdcel.ongrid(g5).output("stdcel-grid5","stdcel off-grid #{g5}") +# npnid.ongrid(g5).output("npnid-grid5","npnid off-grid #{g5}") +# rpm.ongrid(g5).output("rpm-grid5","rpm off-grid #{g5}") +# urpm.ongrid(g5).output("urpm-grid5","urpm off-grid #{g5}") +# ldntm.ongrid(g5).output("ldntm-grid5","ldntm off-grid #{g5}") +# hvntm.ongrid(g5).output("hvntm-grid5","hvntm off-grid #{g5}") +# thkox.ongrid(g5).output("thkox-grid5","thkox off-grid #{g5}") +# licon.ongrid(g5).output("licon-grid5","licon off-grid #{g5}") +# npc.ongrid(g5).output("npc-grid5","npc off-grid #{g5}") +# li.ongrid(g5).output("li-grid5","li off-grid #{g5}") +# mcon.ongrid(g5).output("mcon-grid5","mcon off-grid #{g5}") +# rdl.ongrid(g5).output("rdl-grid5","rdl off-grid #{g5}") +# glass.ongrid(g5).output("glass-grid5","glass off-grid #{g5}") +# bound.ongrid(g5).output("bound-grid5","bound off-grid #{g5}") +# capm.ongrid(g5).output("capm-grid5","capm off-grid #{g5}") +# capm2.ongrid(g5).output("capm2-grid5","capm2 off-grid #{g5}") +# lowtapd.ongrid(g5).output("lowtapd-grid5","lowtapd off-grid #{g5}") +# fillobsm1.ongrid(g5).output("fillobsm1-grid5","fillobsm1 off-grid #{g5}") +# fillobsm2.ongrid(g5).output("fillobsm2-grid5","fillobsm2 off-grid #{g5}") +# fillobsm3.ongrid(g5).output("fillobsm3-grid5","fillobsm3 off-grid #{g5}") +# fillobsm4.ongrid(g5).output("fillobsm4-grid5","fillobsm4 off-grid #{g5}") + +# (HVI) THKOX*: should be thkox (hvi) in periphery +# thkox.space(0.7).output("THKOX*(hvi) space < 0.7") +# thkox.notch(0.7).output("THKOX*(hvi) notch < 0.7") +# thkox.width(0.6).output("THKOX*(hvi) width < 0.6") +rule_mr(thkox.space(0.7), "mr:THKOX*(hvi) space < 0.7") +# rule_mr(thkox.notch(0.7), "THKOX*(hvi) notch < 0.7") +rule_mr(thkox.width(0.6), "mr:THKOX*(hvi) width < 0.6") + +# NPC: +rule_mr(npc.space(0.27), "mr:NPC space < 0.27") +# rule_mr(npc.notch(0.27), "NPC notch < 0.27") +rule_mr(npc.width(0.27), "mr:NPC width < 0.27") + +# NSDM: +# nsdm.space(0.38).output("NSDM.2 space < 0.38") +# nsdm.notch(0.38).output("NSDM.2 notch < 0.38") +# nsdm.width(0.38).output("NSDM.1 width < 0.38") +rule(nsdm.space(0.38), "NSDM.2 space < 0.38") +# rule(nsdm.notch(0.38), "NSDM.2 notch < 0.38") +rule(nsdm.width(0.38), "NSDM.1 width < 0.38") + +# PSDM: +# psdm.space(0.38).output("PSDM.2 space < 0.38") +# psdm.notch(0.38).output("PSDM.2 notch < 0.38") +# psdm.width(0.38).output("PSDM.1 width < 0.38") +rule(psdm.space(0.38), "PSDM.2 space < 0.38") +# rule(psdm.notch(0.38), "PSDM.2 notch < 0.38") +rule(psdm.width(0.38), "PSDM.1 width < 0.38") + +# DNWELL*: should be dnwell-not-... (Photo, UHVI) +# dnwell.space(6.3).output("DNWELL* space < 6.3") +# dnwell.notch(6.3).output("DNWELL* notch < 6.3") +# dnwell.width(3.0).output("DNWELL width < 3.0") +# dnwell.separation(nwell, 4.5).output("DNWELL to NWELL space < 4.5") + +# nwell.space(1.27).output("NWELL space < 1.27") +# nwell.notch(1.27).output("NWELL notch < 1.27") +# nwell.width(0.84).output("NWELL width < 0.84") + +# hvtp.space(0.38).output("HVTP.2 space < 0.38") +# hvtp.notch(0.38).output("HVTP.2 notch < 0.38") +# hvtp.width(0.38).output("HVTP.1 width < 0.38") +rule_mr(hvtp.space(0.38), "mr:HVTP.2 space < 0.38") +# rule_mr(hvtp.notch(0.38), "HVTP.2 notch < 0.38") +rule_mr(hvtp.width(0.38), "mr:HVTP.1 width < 0.38") + +# hvntm.space(0.7).output("HVNTM.2 space < 0.7") +# hvntm.notch(0.7).output("HVNTM.2 notch < 0.7") +# hvntm.width(0.7).output("HVNTM.1 width < 0.7") + +# report(myTitle, markerOut) +# m2 = inputVerb(69, 20, "m2 - 69/20") +# rule(m2.width(2.5), "m2 width < 2.5 (fake: provoke errors)") +# How to get error-count (as-if-flat at top-cell) from this statement?: +# m2.width(2.5).output("m2 width < 2.5") + +end +# How to tabulate as-if-flat "error-counts by error-message" from current report()? +# In old versions, we can't seem to determine here if a check flagged errors ($errs == -1). +if $errs >= 0 + puts "%8d total-MR error(s) among %d error type(s), %d checks, cell: %s (subset)" % [$totals_mr, $errs_mr, $rules_mr, c] + puts "%8d total error(s) among %d error type(s), %d checks, cell: %s" % [$totals, $errs, $rules, c] + # puts "#{$errs} of #{$rules} checks have errors" +else + puts "#{$rules} checks" + $errs = 0 # so exit status == 0. +end +puts "Writing report..." + +# if we roll-over to 256, exit-status seen by shell is zero. +# uncaught I/O errors will yield (built-in) exit status of 1. +if $errs > 0 + $errs = $errs + 1 +end +if $errs > 127 + $errs = 127 +end + +# does not work (to set exit-status) in 0.23.11. +# Does work in 0.24.2, 0.27! +exit $errs + +# For 0.23.11 we could set exit-status as below, but: +# if we do: the report() does not get written! +# +# for exit! we'd lose buffered output unless we flush: +# STDOUT.flush +# STDERR.flush +# +# Kernel.exit!($errs) +# emacs syntax-mode: +# Local Variables: +# mode:ruby +# End: diff --git a/images/foss-asic-tools/addons/sak/magic/lef2maglef.sh b/images/foss-asic-tools/addons/sak/magic/lef2maglef.sh new file mode 100755 index 00000000..d9407cdb --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/lef2maglef.sh @@ -0,0 +1,60 @@ +#!/bin/bash +# SPDX-FileCopyrightText: 2020 Efabless Corporation +# +# 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 +# +# http://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. +# SPDX-License-Identifier: Apache-2.0 + + +export PDK_ROOT=~/foss/pdks; +export MAGTYPE=mag ; +export PDKPATH=$PDK_ROOT/sky130A ; +export MAGIC=magic + + +$MAGIC -rcfile $PDKPATH/libs.tech/magic/sky130A.magicrc -dnull -noconsole << EOX +drc off +lef read $1.lef +load $1 +save $1.lef.mag +#writeall force $1.lef.mag + + # copy GDS properties from the MAG view into the MAGLEF view + set gds_properties [list] + set fp [open $1.mag r] + set mag_lines [split [read \$fp] "\n"] + foreach line \$mag_lines { + if { [string first "string GDS_" \$line] != -1 } { + lappend gds_properties \$line + } + } + close \$fp + set fp [open $1.lef.mag r] + set mag_lines [split [read \$fp] "\n"] + set new_mag_lines [list] + foreach line \$mag_lines { + if { [string first "<< end >>" \$line] != -1 } { + lappend new_mag_lines [join \$gds_properties "\n"] + } + lappend new_mag_lines \$line + } + close \$fp + set fp [open $1.lef.mag w] + puts \$fp [join \$new_mag_lines "\n"] + close \$fp + + +quit +EOX + +#mv -f $1.lef.mag ../maglef/$1.mag +#rm -f $1.lef diff --git a/images/foss-asic-tools/addons/sak/magic/list_macros.py b/images/foss-asic-tools/addons/sak/magic/list_macros.py new file mode 100755 index 00000000..476373b7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/list_macros.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. +import os +import argparse + +def list_macros(directory, output): + neededfile = [os.path.join(directory, f) for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f)) and str(f).endswith(".magic.typelist") and os.path.basename(f).split(".",1)[0] != "caravel"][0] + + macro_list=[] + printArr=[] + if(os.path.exists(neededfile)): + print(neededfile) + FileOpener = open(neededfile, "r") + if FileOpener.mode == 'r': + Content = FileOpener.read() + FileOpener.close() + for cell in Content.split(" "): + if not cell.startswith("sky130_fd_sc_"): + macro_list.append(cell) + printArr.append("Macros Count: "+ str(len(macro_list))) + printArr.append("Macros: " + " ".join(macro_list)) + for line in printArr: + print(line) + outputFileOpener = open(output,"w") + outputFileOpener.write("\n".join(printArr)) + outputFileOpener.close() + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description='The script takes a checks output directory from running the fuzzy checks in the Precheck, \ + and lists the number of macros in the user_project_wrapper.') + + parser.add_argument('--directory', '-d',required=True, + help='The checks directory.') + + parser.add_argument('--output', '-o',default=None, + help="outputs the list of macros") + + + args = parser.parse_args() + directory = args.directory + output = args.output + if output is None: + output = str(directory+"/macro_list.txt") + list_macros(directory,output) diff --git a/images/foss-asic-tools/addons/sak/magic/mag2gds.sh b/images/foss-asic-tools/addons/sak/magic/mag2gds.sh new file mode 100755 index 00000000..793a5be7 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/mag2gds.sh @@ -0,0 +1,23 @@ +#!/bin/sh +export MAGIC=/ef/apps/ocd/magic/8.3.179-202106141345/bin/magic +#export MAGIC=/ef/apps/ocd/magic/8.3.165-202105171922/bin/magic + +export MAGTYPE=mag; + +$MAGIC -dnull -noconsole -rcfile $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc < with subckts, ngspice(orig) --> explicit M for transistors, ngspice(si) <<- DO NOT USE si + +## ext2spice lvs ;# = all the steps commented below +#########ext2spice blackbox on ;# detects MAGTYPE=maglef files and netlists them as blackbox +#########ext2spice global off +# ext2spice -o ${1%.mag}.maglef.lay.spice diff --git a/images/foss-asic-tools/addons/sak/magic/magic-drc.sh b/images/foss-asic-tools/addons/sak/magic/magic-drc.sh new file mode 100755 index 00000000..cda5d7fa --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/magic-drc.sh @@ -0,0 +1,56 @@ +#!/bin/bash +# Copyright 2020 Efabless Corporation +# +# 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 +# +# http://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. + +# To call: ./magic-drc.sh + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export TARGET_TYPE=$4 +export PDK=$5 +export OUT_DIR=$6 +export TCL_CALL_PATH=${7:-$(pwd)} +#export UTILS=~/foss/tools/sak +echo $PDK_ROOT + +echo "Running Magic..." +export MAGIC_MAGICRC=$PDK_ROOT/$PDK/libs.tech/magic/current/$PDK.magicrc +echo $MAGIC_MAGICRC + +$MAGIC \ + -noconsole \ + -dnull \ + -rcfile $MAGIC_MAGICRC \ + $SAK/magic/tcl/magic-drc.tcl \ + + +export TARGET_DIR=$1 +export DESIGN_NAME=$2 +export PDK_ROOT=$3 +export TARGET_TYPE=$4 +export PDK=$5 +export OUT_DIR=$6 + + +echo "Running Magic..." +export MAGIC_MAGICRC=$PDK_ROOT/$PDK/libs.tech/magic/sky130A.magicrc + +magic \ + -noconsole \ + -dnull \ + -rcfile $MAGIC_MAGICRC \ + $SAK/magic/tcl/magic-ext.tcl \ + . Pass rest via env-var, requoted. +# for-bash\ + export _M0= ;\ + for i in "$@" ; do _M0="$_M0${_M0:+ }\"${i//\"/\\\"}\""; done ;\ + case "$1" in -T) tch="$2"; shift; shift; _MARGS="$*" exec magic -dnull -noconsole -T "$tch" <"$0" ;; esac +# hide next line from magic(tclsh):\ +_MARGS="$*" exec magic -dnull -noconsole <"$0" + +# magicDrc: run magic-DRC in batch on a .mag file, tabulate/pareto the error counts. +set Prog "magicDrc" +set argv [eval "list $env(_M0)"] ;# orig. mix of native plus custom args, for logging all args to script + +proc usage {args} { + if {[llength $args] > 0} { + puts "ERROR: ${::Prog}: [join $args]" + } + puts {usage: [ -T ] [-S ] [-n] [-N] [-l FILE_NAME] [-km FILE_NAME] } + puts " : names a .mag file, the toplevel of the hier. to DRC/pareto" + puts "" + puts " -T name specific techfile, passed to magic itself only, overrides tech implied by magFileName" + puts " -S if given, changes from techfile's default drc style (perhaps \"drc(fast)\") to named style, for example: -S \"drc(full)\"" + puts " -l if given, enumerates EVERY individual error bbox to the FILE_NAME (all cells reported in one file)" + puts " -N if given, do not use -dereference option of load for topcell (not available in older magics)" + puts " -n Do NOT write *.drtcl per-cell feedback files. Can be source-ed in magic and step thru: feedback find." + puts "" + puts " Error tabulation: By default (slowest, most detail): Report table of counts-by-errorString for all cells." + puts " Stdout logs a pareto of error-type by count unless disabled for some/all cells by below; topcell last." + puts " -tt Table of counts-by-errorString for ONLY topcell; and just lumped total error count per subcell." + puts " -tc Just lumped error counts per cell including topcell (fastest, least detail)." + puts " Cells NOT tabulating count-by-errorString can't appear in other output error files: feedback(*.drtcl), -l, -km." + puts " For lumped error counts, overlapped error shapes from unique error-types are merged further reducing count." + puts "" + puts " cell-type +-- (default) --+-- option -tt --+-- option -tc" + puts " subcell | count-by-errorString | lumped-error-count | lumped-error-count" + puts " topcell | count-by-errorString | count-by-errorString | lumped-error-count" + puts "" + puts " -km if given, write to FILE_NAME EVERY individual error bbox (MICRONS) in klayout Marker database(XML) format (suggest *.km or *.lyrdb)" + puts " WARNING: .mag cells, shapes & hierarchy change once output to .gds. Mag-based -km cellnames might no longer exist in gds." + puts " Feedback files (*.drtcl) are written PER-CELL. Can be source-ed in magic and step thru: feedback find." + puts "" + puts " Recommend to run in dir with a ./.magicrc (or ./magic_setup) to configure magic's" + puts " cell search path, thru addpath statements, to locate all cells." + puts " Since about 8.3.68, magic may generate error-type \"See error definition in the subcell\". There typically are" + puts " redundancies of errors across the hierarchy anyway (but with tech-file err-strings), this seems another form." + puts "" + puts "example, just list all styles: by causing an error which provokes usage report:" + puts " magicDrc -T /ef/tech/XFAB/EFXH035B/libs.tech/magic/current/EFXH035B.tech" + puts "example, same but run in a ~/design/*/mag/ dir, so techfile set by ./.magicrc (else magic's builtin minimum.tech):" + puts " magicDrc" + puts "example, run drc, explicit: tech, drc-style:" + puts " magicDrc -T /ef/tech/SW/EFS8A/libs.tech/magic/current/EFS8A.tech -S 'drc(full)' mytopcell" + puts "example, run drc, default tech & styles, write klayout marker database, no per-cell *.drtcl feedback files:" + puts " magicDrc -km /tmp/mytop.km -n mytopcell" + puts "example, run drc, no feedback (*.drtcl), only lumped/merged err-count for all cells" + puts " magicDrc -tc mytopcell" + puts "example, run drc, no feedback (*.drtcl), lumped/merged err-count for subcells, detail errors for topcell" + puts " magicDrc -n -tt mytopcell" + puts "" + + reportTechFile + reportAllStyles + puts "" + + if {[llength $args] > 0} { + puts "ERROR: ${::Prog}: [join $args]" + } +} + +# rb@ef 2015-06-30 author +# rb 2020-03-11 embed some library functions, to standalone from efabless-opengalaxy env, test via magic-8.2.194 +# +# -F flatten top cell in-memory only, not saved (experimental) +# -P do crude drc performance measurement. At top-cell, do 'drc find' times and report time per call. +# +# Normal magic init. files are STILL sourced: ~/.magicrc and either $CWD/.magicrc or $CWD/magic_setup. +# (Would NOT happen if -rcfile magic cmd-line option used; this script does not support same). +# +# WARNING: Before 8.1.70, *.mag on cmd-line that was only found in cell search path set by .magicrc inits, +# would FAIL to determine the default tech-file. +# +# magic itself outputs following usage message though -rcfile doesn't appear to work (in some versions): +# Usage: magic [-g gPort] [-d devType] [-m monType] [-i tabletPort] [-D] [-F objFile saveFile] +# [-T technology] [-rcfile startupFile | -norcfile][-noconsole] [-nowindow] [-wrapper] [file] +# +# optionally hardcode library proc-s (part of site-wide extensions - always available - in context of efabless/open-galaxy) +# This is to make the script more standalone from efabless environment; but these capabilities should be native to magic. + +proc reportTechFile {} { + puts "${::Prog}: tech-name: [tech name] -version: [tech version] -filename: [tech filename] -lambda [tech lambda]" +} + +# query currently loaded tech-file for styles the user might need for -I -S options +# Suggest a bad tech-file if none are found or errors thrown. +# Used after finding error in -I -S options, and probably should add it to the usage. +proc reportAllStyles {} { + set errs {} + if {[catch {set allstyle [cif listall istyle]} msg]} { + lappend errs "ERROR: ${::Prog}: bad tech-file? failed to 'cif listall istyle', $msg" + } elseif {$allstyle == {}} { + lappend errs "ERROR: ${::Prog}: bad tech-file? no cifinput styles found by 'cif listall istyle'" + } else { + puts "info: ${::Prog}: cifinput styles available: $allstyle" + } + if {[catch {set allstyle [drc listall style]} msg]} { + lappend errs "ERROR: ${::Prog}: bad tech-file? failed to 'drc listall style', $msg" + } elseif {$allstyle == {}} { + lappend errs "ERROR: ${::Prog}: bad tech-file? no drc styles found by 'drc listall style'" + } else { + puts "info: ${::Prog}: drc styles available: $allstyle" + } + if {$errs != {}} { + + } + return [llength $errs] +} + +if {[info command scratchWritable] == {}} { + puts "${::Prog}: hardcoding library proc-s..." +# Replacement for 'cellname list exists CELLNAME', to fix ambiguity for cell "0". +# For cell "0" test for membership in 'cellname list allcells'. +# +# Instead of returning 0 for (non-existent) and cellname for exists, +# returns regular 0/1 instead for non-existent/exists. +# +# Therefore NOT direct replacement for uses of 'cellname list exists CELL'. +# Requires code changes. +proc cellnameExists {cell} { + expr {$cell ne "0" && [cellname list exists $cell] eq $cell || + $cell eq "0" && [lsearch -exact [cellname list allcells] $cell] > -1} +} + +# +# scratchWritable [-cleanup] [cellname1 ...] -- +# +# Turn readonly cells writable in-memory, via redirect to scratch dir. +# No cellname args: default is to process just all non-writable cells. +# Explicit cellname arguments: ARE scatchified EVEN if ALREADY writable. +# Limitation: Explicit named cell created in-mem, never saved, won't scratchify. +# If just -cleanup: default is to only do cleanup: don't scratchify +# any cells. +# +# -cleanup: Last scratch-dir, if any, and contents are deleted first. +# No restoring old filepath of cells, save after cleanup will fail. +# +# Caller strongly recommended to first do: 'select top cell; expand' +# to force whole hier. of a topcell to be loaded from disk into memory. +# +# This proc does not force expand cells. Before expanded, cells cannot be +# checked whether writable, and cannot have filepath changed. +# +# For batch DRC, for 'drc listall count', every cell in-memory must +# appear writable. This is the work-around (caller to 1st ensure +# hier. is loaded): Reset filepath of readonly cells to a scratch dir, +# make a dummy/empty .mag in scratch dir for each cell. Change cell's +# writeable flag. +# +# Skipped cells: +# In all cases, cells are skipped if +# 'cellname filepath' matches ::scratchWritableDir (already scratchified), +# This proc does NOT try and force expand; it presumes caller forced an expand +# thus cells are skipped if: +# 'cellname filepath' is "default" (can mean not expanded yet, or created never saved), +# 'cellname filepath' is .mag, indicates failed expand (unbound). +# Note: when filepath gives "default" or .mag, the writeable check not meaningful. +# +# How to scratchify all in-memory cells (still subject to internal skipping): +# scratchWritable {*}[cellname list allcells] +# +# TODO: use a combo of filepath & flags likely can detect created in-mem, +# and could redirect those too scratch dir if named explicitly. +# +# Side-effects: +# Runs zero or one subprocess, '/bin/mktemp -d' to make a scratch dir. +# Redirects where newly modified cells would be saved, if they ever are saved. +# Make's a scratch dir that needs to be cleaned-up. +# Leaves empty *.mag files in that scratch dir. +# +# Uses/requires proc cellnameExists. +# +# Same scratch-dir is reused if called multiple times, until next -cleanup. +# +# return value: list of cells not processed (skipped) for reasons cited above. +# Non-existent cells are also skipped but not included in the return list. +# +if {![info exists ::scratchWritableDir]} {set ::scratchWritableDir {}} +if {![info exists ::scratchWritableVerb]} {set ::scratchWritableVerb 0} +proc scratchWritable {args} { + # parse -cleanup option + set clean [expr {[lindex $args 0] eq {-cleanup}}] + if {$clean} { + set args [lrange $args 1 end] + } + + # If explicit cells given: don't limit to processing just readOnly cells. + set onlyReadonly [expr {$args == {}}] + + # only if no -cleanup, does empty cell list imply all cells + set allcell [cellname list allcells] + if {!$clean && $args == {}} { + set args $allcell + } + + # do cleanup + if {$clean} { + if {$::scratchWritableDir != {} && [file isdir $::scratchWritableDir]} { + set files [glob -dir $::scratchWritableDir -- {*.ext} {*.mag}] + lappend files $::scratchWritableDir + if {$::scratchWritableVerb} { + puts "scratchWritable: running, file delete $files" + } + eval {file delete} $files + set ::scratchWritableDir {} + } + } + + # Filter out non-existent or unbound cells. + # Optionally filter already writable cells. + # + # Unbounds result from placements of cells that now don't exist: + # fail to expand. This proc does not try and force expand; it + # presumes a forced expand was already done by caller (if caller + # wished). + # + # Referenced/used cells are initially unexpanded, not yet even located + # located in the search path, 'cellname filepath' returns "default". + # If expand fails (not found in search path), then 'cellname filepath' + # returns .mag, if expand worked, the directory containing + # the cell. + # + # If cell was 'cellname create' made, but never saved also "default". + # Such a cell is writable. So filter "default" and .mag. + set skipped {} + set ercell1 {} + set docells {} + foreach cell $args { + # filter (without recording as skipped) non-existent cells. + if {![cellnameExists $cell]} { continue } + + # filepath = "default": unexpanded (not loaded from disk), + # or created in-mem and never saved (is writable already + # though flags won't say so): skip both. + # TODO: use a combo of filepath & flags likely can detect created in-mem, + # and might be able to redirect them too to scratch dir if named explicitly. + set tmppath [cellname list filepath $cell] + if {$tmppath eq "default"} { + lappend skipped $cell + continue + } + + # flags not meaningful, until expanded or expand attempted. + # After expand attempt (filepath != "default"), and flags + # can now be used to determine cell unbound: not available. + set flags [cellname list flags $cell] + if {[lsearch -exact $flags available] < 0} { + lappend ercell1 $cell + continue + } + + if {$onlyReadonly && + [cellname list writeable $cell] eq "writeable"} { + lappend skipped $cell + continue + } + lappend docells $cell + } + + if {$::scratchWritableVerb} { + puts "scratchWritable: skipped cells: $skipped" + } + + # don't make a scratch dir if no work to do + if {$docells == {}} { + if {$::scratchWritableVerb} { + puts "scratchWritable: scratch-directed 0 cells" + } + # throw if any errors + if {$ercell1 != {}} { + set pre "ERROR: scratchWritable, " + set msg "$pre unbound cell(s): $ercell1" + error $msg + } + return $skipped + } + + # make a scratch dir if needed + if {$::scratchWritableDir == {}} { + if {[catch {set dir [string trimright [exec /bin/mktemp -d]]} msg]} { + error "ERROR: scratchWritable, '/bin/mktemp -d' failed, $msg" + } + if {![file isdir $dir] || ![file writable $dir]} { + error "ERROR: scratchWritable, mktemp gave $dir, not a writable dir" + } + set ::scratchWritableDir $dir + } + + set ercell2 {} + set okcell {} + set madef 0 + foreach cell $docells { + # Relocate if needed: filepath doesn't already point to the scratch dir). + # 'cellname list filepath ' -> appears to omit .mag extension, + # but disk-file needs the .mag in the path. + set trgr [file join $::scratchWritableDir "$cell"] ;# expected "lookup" path + set trgw [file join $::scratchWritableDir "$cell.mag"] ;# true "write" disk path + set src [cellname list filepath $cell] + if {[cellname list filepath $cell] ne $trgr && [cellname list filepath $cell] ne $trgw} { + + # make empty .mag for the cell + if {[catch {set outmag [open $trgw w]} msg]} { + lappend ercell2 $cell + continue + } + incr madef + close $outmag + + # relocate cell to new file + cellname list filepath $cell $::scratchWritableDir + } + + # make cell writable + cellname list writeable $cell true + lappend okcell $cell + } + + if {$::scratchWritableVerb} { + puts "scratchWritable: scratch-directed $madef cells" + } + if {$ercell1 != {} || $ercell2 != {}} { + set pre "ERROR: scratchWritable, " + set msg {} + if {$ercell1 != {}} { + lappend msg "$pre unbound cell(s): $ercell1" + } + if {$ercell2 != {}} { + lappend msg "$pre failed to make .mag for cell(s): $ercell2" + } + error [join $msg "\n"] + } + set skipped +} ;# end proc scratchWritable +} + +# without top-level proc around bulk of script, intermediate error statements don't abort script. +proc main {argv} { + +# (magic renames the TCL clock command) +set clockp clock +if {[info command $clockp] == {} && [info command orig_clock] != {}} { + set clockp orig_clock +} +set nowSec [$clockp seconds] +set timestamp [$clockp format $nowSec -format "%Y-%m-%d.%T.%Z"] + +# process name-value pair options, if any +set nbrErr 0 +set ndx 0 +set max [llength $argv] +set extTechOpt {} ;# -T ... +set enumFilel {} ;# -l ... enum output file +set enumFileKm {} ;# -km ... enum output file +set doFeedback 1 ;# -n: to turn off feedback +set variant {} ;# -S ... non-default drc style +set subcellTab 1 ;# -tt, -tc both turn OFF subcell count-by-error report +set topcellTab 1 ;# -tc turns OFF topcell count-by-error report +set flatten 0 +set perfN 0 ;# -P do crude DRC perf. test +set noderef 0 ;# -N disable dereference option of: 'load ... -dereference' + +while {$ndx < $max && [string match "-*" [lindex $argv $ndx]]} { + set opt [lindex $argv $ndx] + incr ndx + switch -exact -- $opt { + -T { + if {$ndx == $max} { + usage "missing tech-file argument for -T option" + exit 1 + } + set extTechOpt [lindex $argv $ndx] + incr ndx + } + -S { + if {$ndx == $max} { + usage "missing drcStyle argument for -S option" + exit 1 + } + set variant [lindex $argv $ndx] + incr ndx + } + -P { + if {$ndx == $max} { + usage "missing count argument for -P option" + exit 1 + } + set perfN [lindex $argv $ndx] + incr ndx + } + -F { + set flatten 1 + } + -N { + set noderef 1 + } + -n { + set doFeedback 0 + } + -tt { set subcellTab 0 ; set topcellTab 1} + -tc { set subcellTab 0 ; set topcellTab 0 } + -km { + if {$ndx == $max} { + usage "missing outputFile argument for -km option" + exit 1 + } + set enumFileKm [lindex $argv $ndx] + incr ndx + } + -l { + if {$ndx == $max} { + usage "missing outputFile argument for -l option" + exit 1 + } + set enumFilel [lindex $argv $ndx] + incr ndx + if {[catch {set enumOut [open $enumFilel w]} msg]} { + error "ERROR: ${::Prog}: failed to open-for-write '$enumFilel' threw error, $msg" + } + puts "${::Prog}: enumerating each error bbox to: $enumFilel" + } + default { + usage "unknown option: $opt" + exit 1 + } + } +} + +if {$ndx == $max} { + usage "missing magFileName argument, the topcell" + exit 1 +} + +# get cmd-line topcell, minus dir-path; and minus extension IFF ext is .mag +set topcfull [lindex $argv $ndx] ; incr ndx +set topc [file tail $topcfull] +if {[file extension $topc] eq ".mag"} { + set topc [file rootname $topc] +} +set topcStr $topc + +# abort if user supplies extra args. +if {$ndx != $max} { + usage "extra/unspported arg past magFileName, '[lindex $argv $ndx]'" + exit 1 +} + +# load the techfile +if {$extTechOpt != ""} { + if {![file readable $extTechOpt]} { + error "ERROR: ${::Prog}: tech-file \"$extTechOpt\" is not readable." + } + + tech load $extTechOpt + + # Verify the cmd-line -T option (if any) is still the current 'tech filename'. If we didn't + # explicitly 'tech load' ourselves, the .magicrc or magic.setup might 'tech load' something else. + # The 'file join [pwd] ...' makes relative path absolute, but without resolving + # all symlinks (which 'file normalize' would do). + set techf2 [file join [pwd] [tech filename]] + set techf1 [file join [pwd] $extTechOpt] + if {$techf1 != $techf2} { + error "ERROR: ${::Prog}: failed tech-load \"$techf1\" (tech-filename=\"$techf2\" not a match)" + } +} + +# write a line with timestamp and all arguments to stdout (log) +# Show quoted logged argv here so it's machine readable for replay purposes. +puts "${::Prog}: timestamp: $timestamp, arguments: $::env(_M0)" + +puts "${::Prog}: running drc on topcell: $topcStr" +reportTechFile + +# log the cell search path for this run. Emulates format output by plain "path" (but which prints more than one the cell search path). +puts "Search path for cells is \"[path search]\"" + +# BEFORE LOAD cell: turn off background checker. We'll invoke checks explicitly. +drc off + +# warning on combo of -tc & -km. If -km ok, open its output file. +if {$enumFileKm ne {}} { + if {! $topcellTab} { + puts "WARNING: ${::Prog}: with -tc cannot (-km) write klayout-marker-db" + } else { + if {[catch {set enumOutKm [open $enumFileKm w]} msg]} { + error "ERROR: ${::Prog}: failed to open-for-write '$enumFileKm' threw error, $msg" + } + puts "${::Prog}: enumerating each error bbox to: $enumFileKm" + } +} + +# if mag-cell were passed natively on magic cmd-line, this is too late: +if {$noderef} { + load $topcfull +} else { + load $topcfull -dereference +} + +# error checks: ensure (1st) cmd-line cellname now in-memory, and is now the current cell + +set topcells [cellname list top] +# filter (UNNAMED) +set topcells [lsearch -exact -not -all -inline $topcells "(UNNAMED)"] +# puts "cellname-list-top is: $topcells" + +# could use [cellname list flags $topc] and ensure non-null result (list with available), +# but if it fails (cell not found), it generates unwanted stdout. +if {[lsearch -exact [cellname list allcells] $topc] < 0} { + error "ERROR: ${::Prog}: cmd-line topcell \"$topc\" not in magic's list of allcells." +} + +if {[lsearch -exact $topcells $topc] < 0} { + puts "WARNING: ${::Prog}: cmd-line topcell \"$topc\" not in magic's list of topcells: $topcells" +} + +# crude way even in batch to determine the "current" cell; perhaps not yet the "Edit" cell +# WARNING, if topcell locked elsewhere or not writable, it can't become the "Edit" cell. +set topcw [cellname list window] +if {$topcw ne $topc} { + error "ERROR: ${::Prog}: cmd-line topcell, $topc, is not the current cell, 'cellname list window'=$topcw" +} + +# for topcell, filepath==default doesn't change by expand, +# indicates unknown cell created in-memory by magic's startup sequence. +if {[cellnameExists $topc] && + [cellname list filepath $topc] eq "default"} { + puts "Search path for cells is \"[path search]\"" + error "ERROR: ${::Prog}: cmd-line topcell, $topc, auto-created in-memory: not found in cell search path" +} + +if {$flatten} { + # delete (UNNAMED) if any. + set trg "(UNNAMED)" + if {[cellnameExists $trg]} {cellname delete $trg} + + # rename top cell to (UNNAMED) + cellname rename $topc $trg + + # now Edit Cell contents are original top cell, but under name (UNNAMED) + # flatten Edit-Cell into original top cell name + puts "${::Prog}: flattening..." + flatten $topc + + # load and edit new version of top cell. This is from in-memory, just making it current-cell. + # (So with or without -dereference is expected would have discernable effect by now; + # and since it's flattened there are no subcell instances either). + if {$noderef} { + load $topc + } else { + load $topc -dereference + } + + # crude way even in batch to determine the "current" cell; perhaps not yet the "Edit" cell + # WARNING, if topcell locked elsewhere or not writable, it can't become the "Edit" cell. + set topcw [cellname list window] + if {$topcw ne $topc} { + error "ERROR: ${::Prog}: assertion failed, post-flatten, $topc, is not the current cell, 'cellname list window'=$topcw" + } + + # should not be necessary: + select top cell + edit + + # crude way even in batch to determine the "current" cell; perhaps not yet the "Edit" cell + # WARNING, if topcell locked elsewhere or not writable, it can't become the "Edit" cell. + set topcw [cellname list window] + if {$topcw ne $topc} { + error "ERROR: ${::Prog}: assertion-2 failed, post-flatten, $topc, is not the current cell, 'cellname list window'=$topcw" + } +} + +# todo: Need a check for non-existent topcell (though magic reported not-found and auto-created it). +# todo: We should locate fullpath to topcell on disk to record this in the log. +# +# WARNING, magic junkCell, or magic junkDir/junkCell (passing paths to cells that don't exist), +# generate startup error messages (could not open cell), but magic creates the new cell in memory. +# No simple way to detect this after the fact. Can walk the cell search path to verify it's on disk. +# For the non-existent cell, magic also discards the dirpath from the cmd-line arg. +# If it did exist at that path, magic opens it successfully, despite that dir not in search path. +# A proper check for implicit create of non-existent cell should account for this effect too. + +set res {} +if {$variant != {}} { + if {[catch {set res [drc list style $variant]} msg]} { + puts "ERROR: ${::Prog}: but CONTINUING, 'drc style $variant' threw error, $msg" + } +} else { + if {[catch {set res [drc list style]} msg]} { + puts "ERROR: ${::Prog}: but CONTINUING, 'drc list style' threw error, $msg" + } +} +if {$res != {}} { + puts "drc style reports:\n$res" +} + +# just Manhattan is default, turn on euclidean, and log new mode +drc euclidean on +drc euclidean + +# 1st "select top cell": without it drc-list-count is blank, and error count reduced. +# May be unnecessary in some cases. +# WARNING: if topcell locked by another process, default box is NOT set to full top cell without this (as of 8.1.70 or earlier) +select top cell +# expand cell cells: scratchify step requires this up front else can't force all cells writable. +expand + +# The expand triggered load of all subcells. Till then allcells may be incomplete. +set allcells [cellname list allcells] +# filter (UNNAMED) +set allcells [lsearch -exact -not -all -inline $allcells "(UNNAMED)"] +set nbrAllCells [llength $allcells] +# puts "DEBUG: cellname-list-allcells are: $allcells" + +# TODO: do explicit separate unbound check here (don't rely on scratchWritable for this) + +# make allcells writable. Can error out: +# if are unbounds, or couldn't make scratch dir or .mag files. +set scratch [expr {!$flatten}] +if {$scratch && [catch {scratchWritable} msg]} { + puts stderr "ERROR: ${::Prog}: aborting at scratchWritable due error(s):" + error $msg +} + +# Erase all preexisting *.drtcl first. Else when cell transitions from +# dirty in previous run (leaving *.drtcl), to clean, the old *.drtcl +# remains. +# TODO: only delete *.drtcl of cells in 'cellname list allcells'? +# TODO: move this up, before scratchWritable? +if {$doFeedback} { + set files [glob -nocomplain -types {f} -- ./*.drtcl] + if {$files != {}} { + # TODO: detect/report failure details better here? + puts "${::Prog}: deleting preexisting *.drtcl" + set msg {} + set delfail [catch {eval {file delete} $files} msg] + set files [glob -nocomplain -types {f} -- ./*.drtcl] + if {$delfail || $files != {}} { + puts "ERROR: ${::Prog}: failed to clean old ./*.drtcl files. $msg" + incr nbrErr + } + } +} + +edit ;# Fails if topcell not writable, should not be not needed post scratchWritable + +set outScale [cif scale out] + +# "select top cell" and box [view bbox] should be equivalent in +# placing a box around whole cell extent. +# The box cmd ALSO prints lambda and micron user-friendly box data, +# but it prints microns with not enough resolution, +# (and no option to disable that flawed print out). +# +# todo: emulate box output in full, except for higher resolution, +# here we only scale/print the overall bbox in microns. +# select top cell ;# paranoid, reset the box to data extents post-expand +# set bbox [view bbox] +# set bbs {} +# foreach oord $bbox { +# lappend bbs [format "%.3f" [expr {$outScale * $oord}]] +# } +# puts "outScale: $outScale, view-bbox: $bbox" +# puts "Root cell box2: ([lindex $bbs 0] [lindex $bbs 1]), ([lindex $bbs 2] [lindex $bbs 3])" + +# shouldn't need: +# drc on + +# Want to use 'drc list count' to tell us which cells have errors, so we can +# run 'drc listall why' on just those cells to enumerate details (which reruns +# drc again unfortunately). + +# For accurate DRC (as of 8.1.70), specifically 'drc list count', need: +# all-writable cells, then run: 'drc check' & 'drc catchup'. +# Now we have all writable cells. +set timeRepeat 1 +if {$perfN > 0} { + set timeRepeat $perfN +} +set timeres [time { + set drcCheckTime1 [time {drc check}] + set drcCheckTime2 [time {drc catchup}] } $timeRepeat] + +if {$perfN > 0} { + puts "perf: ${perfN}X 'drc check','drc catchup': $timeres" + puts "perf: last 'drc check' time: $drcCheckTime1" + puts "perf: last 'drc catchup' time: $drcCheckTime2" + drc statistics + drc rulestats +} + +# todo: this 2nd select was in GDS version, test if needed in mag version: +# 2nd select top cell needed else error count may be reduced (why? bbox does not change due to DRC) +select top cell +set outScale [cif scale out] +set bbox [view bbox] +set bbs {} +foreach oord $bbox { + lappend bbs [format "%.3f" [expr {$outScale * $oord}]] +} +puts "outScale(ostyle=[cif list ostyle]): $outScale, view-bbox: $bbox" +puts "Root cell box: ([lindex $bbs 0] [lindex $bbs 1]), ([lindex $bbs 2] [lindex $bbs 3])" +# print several native bbox representations: +box + +# listall vs list appear same as of 8.1.70 or earlier. +# warning: celllist order is not stable, not repeatable; run to run on same data. +# puts "DEBUG: (drc listall count total) is $drcListCountTot" +set celllist [drc listall count] +set celllist [lsearch -not -all -inline -index 0 -exact $celllist "(UNNAMED)"] +# puts "DEBUG: (drc listall count) is [drc listall count]" +set drcListCountTot [drc list count total] +set nbrErrCells [llength $celllist] + +# TODO: major problem: 'drc listall why' repeated an every cell, will do subcells +# multiple times, as many times as their depth in the hier. + +# canonicalize order of celllist, move topc to last (if present whatsoever). +# force our own artificial entry for topc (zero errors) if not present (was clean) +# puts "DEBUG: celllist before: $celllist" +set topcPair [lsearch -inline -index 0 -exact $celllist $topc] +set celllist [lsearch -not -all -inline -index 0 -exact $celllist $topc] +set celllist [lsort -index 0 -dictionary $celllist] +if {$topcPair == {}} { + # puts "DEBUG: $topc clean, forcing celllist entry for it" + set topcPair [list $topc 0] +} +lappend celllist $topcPair +# puts "DEBUG: celllist after: $celllist" +# puts "DEBUG: adjusted celllist(drc list count) is $celllist" + +array set cell2why [list $topc {}] ;# default at least empty topcell why list + +# If topc has non-zero errors, get its 'drc listall why' immediately. +# Does this save time? Experience says no, that 'drc why' is ALWAYS an expensive +# rerun of the DRCs. +# At topcell, can you get both the drc-listall-count and drc-listall-why +# in either order, *without* paying the price of running DRC-twice? Don't believe so. +# In case this changes one day, we still try to get topcell why enumeration soonest. +if {[lindex $topcPair 1] != 0} { + set cell2why($topc) [drc listall why] +} + +# Now we are ABSOLUTELY DONE with the topcell magic-layout. +# So free it to reclaim memory. (Reduce peak process size somewhat). +# TODO: we should order all cells top-down (for the 'drc-why' pass) +# so we can free every cell's data after collecting its drc-why. +cellname delete $topc + +array set kmErr2catNm {} +array set kmErr2catDesc {} +array set kmCell2item {} +if {$celllist != {} && [info exists enumOutKm]} { + # Header example of .lyrdb klayout Marker format + # + # + # Diff of 'x.gds, Cell RINGO' vs. 'x.gds[1], Cell INV2' + # + # + # RINGO + # + # + # red + # Red flag + # + # ... + # + + puts $enumOutKm {} + puts $enumOutKm "$topc DRC timestamp: $timestamp, arguments: $::env(_M0)" + puts $enumOutKm {} + puts $enumOutKm "$topc" + puts $enumOutKm {} + puts $enumOutKm {} + + # multiple ... sections do accumulate, but cells and categories need + # to be defined before use in an item (specific error), and we know cell names here, + # so declare all cells to klayout here. + # + # Cell-specific header of klayout marker file + # + # CELLNAME1 + # 1 (don't need) + # + # + foreach pair $celllist { + set acell [lindex $pair 0] + + # for -tt, no subcell error-detail: don't write subcells in ... section. + if {$acell ne $topc && ! $subcellTab} { continue } + + puts $enumOutKm " $acell" + set kmCell2item($acell) {} + } + puts $enumOutKm {} +} + +# drc-why pass: loop over celllist +# collect 'drc listall why' for the cells in 'cell list count' with non-zero errors +# If 'drc listall why' does report zero (shouldn't since we're only processing cells +# with non-zero counts), it unavoidably writes to console a No drc errors found message. +# We don't want such polluting our list of per-cell pareto's, so don't risk running +# drc why in-line, in-between per-cell paretos. +# +foreach pair $celllist { + if {[lindex $pair 1] < 1} {continue} ;# only happens for topcell if topcell clean + set acell [lindex $pair 0] + + # if we already have drc-why data for this cell (i.e. it's the topcell), + # no need to rerun (the expensive) drc-why. + if {[info exists cell2why($acell)]} { + continue + } + + # TODO: magic needs a useful error checkable load command. + # The 'load' writes errors to console/stdout, but never throws an error, + # nor gives a useful return value. i.e. These catch never catch. + if {$noderef} { + if {[catch {set res [load $acell]} msg]} { + puts "ERROR: ${::Prog}: 'load $acell' threw error, $msg" + exit 1 + } + } else { + if {[catch {set res [load $acell -dereference]} msg]} { + puts "ERROR: ${::Prog}: 'load $acell -dereference' threw error, $msg" + exit 1 + } + } + select top cell ;# paranoid, that without it, drc's are reduced + + # optionally do crude DRC perf. analysis here. Only for top-cell, only if -P option given. + set timeRepeat 1 + if {$perfN > 0 && $topc eq $acell} { + set timeRepeat $perfN + } + set timeres [time {set cell2why($acell) [drc listall why]} $timeRepeat] + if {$perfN > 0 && $topc eq $acell} { + puts "perf: ${::Prog}: for '$acell', ${perfN}X 'drc listall why': $timeres" + } +} + +# done with all magic-specifics here. Shouldn't need scratch dir any longer. +# If this prints something (generally does), don't want it after the pareto table. + +# clean/remove the tmp scratch dir and contents +# TODO: all fatal errors need to call a cleanup proc that includes this before abort +if {$scratch && [catch {scratchWritable -cleanup} msg]} { + puts "ERROR: ${::Prog}: 'scratchWritable -cleanup' threw error, $msg" + incr nbrErr +} + +set gtotal 0 +set gcells 0 +set lumpedHeader 0 +foreach pair $celllist { + set acell [lindex $pair 0] + set acount [lindex $pair 1] + + if {$acell ne $topc && ! $subcellTab} { + if {! $lumpedHeader} { + puts "--- #err|cell, lumped total counts" + set lumpedHeader 1 + } + puts "[format {%8d} $acount] $acell" + incr gcells + incr gtotal $acount + continue + } + if {$acell eq $topc && ! $topcellTab} { + if {! $lumpedHeader} { + puts "--- #err|cell, lumped total counts" + set lumpedHeader 1 + } + puts "[format {%8d} $acount] $acell" + incr gcells + incr gtotal $acount + continue + } + puts "" + if {![info exists cell2why($acell)]} { + puts "ERROR: ${::Prog}: cell: $acell, assertion failed, no drc-why list for 'drc list count' pair: $pair" + # exit 1 + continue + } + set whys $cell2why($acell) + + # enumerate errors under box, plain "drc why" only reports unique types, no quantities + # as-yet-undocumented "drc listall why" gives: {errStr1 {errBox1 ...} errStr2 {errBox1 ...} ... } + set pareto {} + set total 0 + set enumTotal 0 + set types 0 + set typeDup 0 + set dups 0 + + set fbOut {} + # file path for feedback, keep in CWD + if {$doFeedback && $fbOut == {}} { + set fbOut "./$acell.drtcl" + if {![file writable $fbOut] && + ([file exists $fbOut] || ![file writable [file dir $fbOut]])} { + puts stderr "ERROR: ${::Prog}: feedback output not writable, $fbOut" + incr nbrErr + set fbOut {} + } elseif {[catch {set outfb [open $fbOut w]} msg]} { + puts stderr "ERROR: ${::Prog}: failed to truncate previous feedback output, $fbOut : $msg" + incr nbrErr + set fbOut {} + } + } + foreach {str boxes} $whys { + # sort errors + set boxes [lsort -dictionary $boxes] + + # for our pareto, gather data + set this [llength $boxes] + incr total $this + incr types + lappend pareto [list $this $str] + + # for enumOut, emulate formatting of $CAD_ROOT/magic/tcl/drc.tcl, which is + # not tk pure: fails with complaint about winfo + # note: we walk these errors also in order to count/report stats on duplicates, even if not outputing enumerations + if {[info exists enumOut]} { + if {$types == 1} { + puts $enumOut "[join $pair]\n----------------------------------------" + } + puts $enumOut "${str}\n----------------------------------------" + } + if {[info exists enumOutKm]} { + # category names must be declared all together up front before use in items + # so we only store their names (error strings) and error detail (items) + # to dump after all cells and errors are processed. + # TODO: Only quote catName in item if embeds dot, instead of full-time + # TODO: test klayout handles literal (non-entity) single-quote in double-quoted name + set strKmNm $str + set strKmDesc $str + regsub -all -- {&} $strKmDesc {\&} strKmDesc ;# perhaps not needed; just in case + regsub -all -- {<} $strKmDesc {\<} strKmDesc ;# description does not have such bug, so use correct entity + regsub -all -- {>} $strKmDesc {\>} strKmDesc ;# perhaps not needed; just in case + regsub -all -- {&} $strKmNm {-and-} strKmNm ;# perhaps not needed; just in case + regsub -all -- {>} $strKmNm {-gt-} strKmNm ;# perhaps not needed; just in case + regsub -all -- {<} $strKmNm {-lt-} strKmNm ;# catName klayout bug: info win truncates at '<' as < entity + regsub -all -- "\"" $strKmNm {'} strKmNm ;# we dqoute each catNm in item, so change embedded double to single + set kmErr2catNm($str) $strKmNm + set kmErr2catDesc($str) $strKmDesc + # + # example klayout Marker format, header of one item (one error instance) + # + # (don't need?) + # (don't need?) + # 'DRC-MSG-STR' (cat1.cat2 path delimit by dot: names with dot need single|double quotes) + # RINGO:1 (don't need :N variant suffix) + # false (optional? start with false?) + # 1 (not boolean, if error "represents" more that are NOT enumerated) + # ... + # + + set itemStr "\"$strKmNm\"$acell" + } + set lastq {} + set thisDup 0 + foreach quad $boxes { + set quadUM {} + set kmBoxUM {} + foreach coord $quad { + set valum [expr {$coord * $outScale}] + set valumf [format "%.3f" $valum] + lappend quadUM "${valumf}um" + lappend kmBoxUM ${valumf} + } + set dup [expr {$quad == $lastq}] + incr thisDup $dup + set line $quadUM + if {[info exists enumOut]} { + if {$dup} { + puts $enumOut "[join $line] #dup" + } else { + puts $enumOut [join $line] + } + } + if {[info exists enumOutKm]} { + # text: 'item: polygon' (text is optional? Repeat the box coordinates here in um?) + # polygon: (1.4,1.8;-1.4,1.8;-1.4,3.8;1.4,3.8) + # box: (1.4,1.8;-1.4,3.8) + # + set kmItem $itemStr + append kmItem " box: ([lindex $kmBoxUM 0],[lindex $kmBoxUM 1];[lindex $kmBoxUM 2],[lindex $kmBoxUM 3])" + if {$dup} { + append kmItem " text: 'dup'" + } + append kmItem " " + lappend kmCell2item($acell) $kmItem + } + if {$fbOut != {}} { + set line [join $quadUM] + regsub -all -- "(\[\[\"\$\\\\])" $str {\\\1} strdq + puts $outfb "[concat box $line]" nonewline + puts $outfb " ; feedback add \"$strdq\" medium" nonewline + if {$dup} { + puts $outfb " ;#dup" + } else { + puts $outfb "" + } + } + + incr enumTotal + set lastq $quad + } + if {$thisDup} { + incr typeDup + incr dups $thisDup + } + if {[info exists enumOut]} { + puts $enumOut "----------------------------------------\n" + } + } + + if {$fbOut != {}} { + close $outfb + set outfb {} + } + + set pareto [lsort -integer -decreasing -index 0 $pareto] + if {$total > 0} { + puts "--- #err|description, table for cell: $acell" + } + foreach pair $pareto { + puts "[format {%8d} [lindex $pair 0]] [lindex $pair 1]" + } + if {$typeDup} { + puts "[format {%8d} $dups] total duplicate error(s) among $typeDup error type(s), cell: $acell" + } + puts "[format {%8d} $total] total error(s) among $types error type(s), cell: $acell" + # add to grand-totals + incr gcells + incr gtotal $total + + # always compare the total from the enum to the pareto as error check + if {$total != $enumTotal} { + puts "ERROR: ${::Prog}: cell: $acell, internal error, pareto vs enum count mismatch: $total != $enumTotal" + incr nbrErr + } +} + +# TODO: in the summary echo also techfile-full-path and drc-style name? +# grand totals +puts "[format {%8d} $nbrErrCells] of $nbrAllCells cell(s) report error(s)" +puts "[format {%8d} $gtotal] grand-total error(s) across $gcells cell(s)" + +# wish to compare the drc-list-count-total to the pareto total. +# Per te 2014-08-27 : it is not an error. +# if {$total != $drcListCountTot} { +# puts "info: ${::Prog}: drc-list-count-total vs drc-listall-why mismatch {drc list count total} gave $drcListCountTot, but {drc listall why} gave $total" +# } + +if {[info exists enumOut]} { + close $enumOut +} +if {[info exists enumOutKm]} { + # declare all category names and descriptions, note '<' in name vs description are represented differently + # + # layerN width -lt- 1.0um + # layerN width < 1.0um + # ... + # + puts $enumOutKm "" + foreach errStr [array names kmErr2catNm] { + set nm $kmErr2catNm($errStr) + set desc $kmErr2catDesc($errStr) + puts $enumOutKm " $nm$desc" + } + puts $enumOutKm "" + + # dump all items (after all cells and all categories have been defined up front) + puts $enumOutKm "" + foreach {acell items} [array get kmCell2item] { + foreach item $items { + puts $enumOutKm $item + } + } + puts $enumOutKm "" + + # footer example .lyrdb klayout Marker file + # + puts $enumOutKm {} + close $enumOutKm +} + +# set celllist4 [drc list count] +# puts "DEBUG: drc list count0: $celllist0" +# puts "DEBUG: drc list count1: $celllist1" +# puts "DEBUG: drc list count2: $celllist2" +# puts "DEBUG: drc list count3: $celllist3" +# puts "DEBUG: native (drc list count) is $celllistn" +# puts "DEBUG: drc list count4: $celllist4" + +# todo: implement super-pareto, ranked table of SUM of all DRC errs/counts from ALL cells. +# (It still would not reflect as-if-flat hierarchical expansion due to repetition of instances). + +set nbrErr +} + +# non-zero exit-status on errors, either if thrown by main, or counted and returned by main +set nbrErr 0 +if {[catch {set nbrErr [main $argv]} msg]} { + puts stderr $msg + set nbrErr 1 +} elseif {$nbrErr > 0} { + puts "ERROR: ${::Prog}: script terminated with errors reported above." +} +exit $nbrErr + +# for emacs syntax-mode: +# Local Variables: +# mode:tcl +# End: diff --git a/images/foss-asic-tools/addons/sak/magic/magicGdrc b/images/foss-asic-tools/addons/sak/magic/magicGdrc new file mode 100755 index 00000000..4344443d --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/magicGdrc @@ -0,0 +1,896 @@ +#!/bin/sh +# Copyright (C) 2014, 2015, 2020 efabless Corporation. All Rights Reserved. +# send a very-first -T FILE to magic's startup, hide all other args from magic-startup +# for-bash\ + export _M0= ;\ + for i in "$@" ; do _M0="$_M0${_M0:+ }\"${i//\"/\\\"}\""; done ;\ + case "$1" in -T) tch="$2"; shift; shift; _MARGS="$*" exec magic -dnull -noconsole -T "$tch" <"$0" ;; esac +# hide next line from magic(tclsh):\ +_MARGS="$*" exec magic -dnull -noconsole <"$0" +# +# magicDRC: run magic-DRC in batch on a GDS file, tabulate/pareto the error counts. +# +# rb@ef 2014-08-28 author +# rb 2020-02-19 embed some library functions, to standalone from efabless-opengalaxy env, test via magic-8.2.188 +# +# todo: support "-" as GDS file arg, to mean GDS from stdin +# + +set ::Prog "magicGdrc" +set argv [eval "list $env(_M0)"] ;# orig. mix of native plus custom args, for logging all args to script +# set argv [split $env(_MARGS)] ;# (currently unused) + +proc usage {args} { + if {[llength $args] > 0} { + puts "ERROR: ${::Prog}: [join $args]" + } + puts {usage: [ -T techfilePath ] [-S ] [-I ] [-km FILE_NAME] [-l FILE_NAME] [-L FILE_NAME] gdsFileName [topCellName]} + puts " -T if given, must be very first" + puts " -S if given, changes from techfile's default/1st drc style (perhaps \"drc(fast)\") to named style, for example: -S \"drc(full)\"" + puts " -I if given, changes from techfile's default/1st cifinput style (perhaps \"vendorimport\" or \"import(exact)\") to named style, for example: -I \"import(magic)\"" + puts " -path-sub do 'gds path subcell yes' (default:no). Make unique subcell for each path: cut #tiles cost of angles." + puts " -poly-sub do 'gds polygon subcell yes' (default:no). Make unique subcell for each polygon: cut #tiles cost of angles." +# gds polygon subcell [yes|no] + puts " -pps Short hand, equivalent to giving both: -path-sub -poly-sub" + puts "" + puts " Error tabulation: By default (slowest, most detail): Report table of counts-by-errorString for all cells." + puts " Stdout logs a pareto of error-type by count unless disabled for some/all cells by below; topcell last." + puts " -tt Table of counts-by-errorString for ONLY topcell; and just lumped total error count per subcell." + puts " -tc Just lumped error counts per cell including topcell (fastest, least detail)." + puts " Cells NOT tabulating count-by-errorString can't appear in other output error files: feedback(*.drtcl), -l, -km." + puts " For lumped error counts, overlapped error shapes from unique error-types are merged further reducing count." + puts "" + puts " cell-type +-- (default) --+-- option -tt --+-- option -tc" + puts " subcell | count-by-errorString | lumped-error-count | lumped-error-count" + puts " topcell | count-by-errorString | count-by-errorString | lumped-error-count" + puts "" + puts " -km if given, write to FILE_NAME EVERY individual error bbox (MICRONS) in klayout Marker database(XML) format (suggest *.lyrdb)" + puts " -l if given, enumerates EVERY individual error bbox (MICRONS) to FILE_NAME, emulates $::CAD_ROOT/magic/tcl/drc.tcl" + puts " -L same as -l above, but outputs bbox-es in LAMBDA coordinates, not microns" + puts " -nf Do NOT write *.drtcl per-cell feedback files. Can be source-ed in magic and step thru: feedback find." + puts "" + puts " NOTES: Without explicit tech-file option: the ./.magicrc or ./magic_setup and ~/.magicrc may load a default tech-file." + puts " Therefore the tech-file used CAN depend on whether your CWD is ~/design//mag when running this script." + puts " Since no *.mag are loaded by this script: the cell search path defined by any init files has no impact." + puts " Since about 8.3.68, magic may generate error-type \"See error definition in the subcell\". There typically are" + puts " redundancies of errors across the hierarchy anyway (but with tech-file err-strings), this seems another form." + puts "" + puts "example, just list all styles: by causing an error which provokes usage report:" + puts " magicGdrc -T /ef/tech/XFAB/EFXH035B/libs.tech/magic/current/EFXH035B.tech" + puts "example, same but run in a ~/design/*/mag/ dir, so techfile set by ./.magicrc (else magic's builtin minimum.tech):" + puts " magicGdrc" + puts "example, run GDS drc, explicit: tech, cif-istyle, drc-style:" + puts " magicGdrc -T /ef/tech/SW/EFS8A/libs.tech/magic/current/EFS8A.tech -I vendorimport -S 'drc(full)' /tmp/mytop.gds mytopcell" + puts "example, run GDS drc, default tech & styles, write klayout marker database, no per-cell *.drtcl feedback files:" + puts " magicGdrc -km /tmp/mytop.lyrdb -nf /tmp/mytop.gds mytopcell" + puts "example, same but make subcells for paths & polygons" + puts " magicGdrc -km /tmp/mytop.lyrdb -nf -pps /tmp/mytop.gds mytopcell" + puts "example, run GDS drc, no feedback (*.drtcl), only lumped/merged err-count for all cells" + puts " magicGdrc -tc /tmp/mytop.gds mytopcell" + puts "example, run GDS drc, no feedback (*.drtcl), lumped/merged err-count for subcells, detail errors for topcell" + puts " magicGdrc -nf -tt /tmp/mytop.gds mytopcell" + puts "" + + reportTechFile + reportAllStyles + puts "" + + if {[llength $args] > 0} { + puts "ERROR: ${::Prog}: [join $args]" + } +} +proc gdsChk {file} { + foreach suffix {"" ".gds" ".gds2" ".strm"} { + if {[file readable "${file}${suffix}"]} {return 1} + } + puts "ERROR: ${::Prog}: Cannot open (as-is or with .gds, .gds2, or .strm) to read GDS-II stream from: $file" + exit 1 +} + +proc reportTechFile {} { + puts "${::Prog}: tech-name: [tech name] -version: [tech version] -filename: [tech filename] -lambda [tech lambda]" +} + +# query currently loaded tech-file for styles the user might need for -I -S options +# Suggest a bad tech-file if none are found or errors thrown. +# Used after finding error in -I -S options, and probably should add it to the usage. +proc reportAllStyles {} { + set errs {} + if {[catch {set allstyle [cif listall istyle]} msg]} { + lappend errs "ERROR: ${::Prog}: bad tech-file? failed to 'cif listall istyle', $msg" + } elseif {$allstyle == {}} { + lappend errs "ERROR: ${::Prog}: bad tech-file? no cifinput styles found by 'cif listall istyle'" + } else { + puts "info: ${::Prog}: cifinput styles available: $allstyle" + } + if {[catch {set allstyle [drc listall style]} msg]} { + lappend errs "ERROR: ${::Prog}: bad tech-file? failed to 'drc listall style', $msg" + } elseif {$allstyle == {}} { + lappend errs "ERROR: ${::Prog}: bad tech-file? no drc styles found by 'drc listall style'" + } else { + puts "info: ${::Prog}: drc styles available: $allstyle" + } + if {$errs != {}} { + + } + return [llength $errs] +} + +# optionally hardcode library proc-s (part of site-wide extensions - always available - in context of efabless/open-galaxy) +# This is to make the script more standalone from efabless environment; but these capabilities should be native to magic. + +if {[info command unbounds] == {}} { + puts "${::Prog}: hardcoding library proc-s..." +# Replacement for 'cellname list exists CELLNAME', to fix ambiguity for cell "0". +# For cell "0" test for membership in 'cellname list allcells'. +# +# Instead of returning 0 for (non-existent) and cellname for exists, +# returns regular 0/1 instead for non-existent/exists. +# +# Therefore NOT direct replacement for uses of 'cellname list exists CELL'. +# Requires code changes. +proc cellnameExists {cell} { + expr {$cell ne "0" && [cellname list exists $cell] eq $cell || + $cell eq "0" && [lsearch -exact [cellname list allcells] $cell] > -1} +} + +# Walk allcells to get/return list of cellNames that are unbound. +# Only use this after: 'select top cell; expand' to expand whole hierarchy. +# +# foreach CELL in 'cellname list allcells': +# if flags says available : it's Bound, goto next cell. +# if filepath is "default", try to expand the cell. +# if still "default"**: cell made by "cellname create", never saved, goto next. +# if filepath is CELL.mag, check for "available" flags, if none: Unbound. +# else cell is bound. +# **: should never get there +proc unbounds {} { + set allcells [cellname list allcells] + # filter (UNNAMED) + set allcells [lsearch -exact -not -all -inline $allcells "(UNNAMED)"] + # set nbrAllCells [llength $allcells] + set ercell {} + foreach cell $allcells { + # filter (without recording as skipped) non-existent cells. + if {![cellnameExists $cell]} { continue } + + # filepath = "default": unexpanded (not loaded from disk), + # or created in-mem and never saved (is writable already + # though flags won't say so): skip both. + # TODO: use a combo of filepath & flags likely can detect created in-mem + set tmppath [cellname list filepath $cell] + if {$tmppath eq "default"} { + lappend skipped $cell + continue + } + + # flags not meaningful, until expanded or expand attempted. + # After expand attempt (filepath != "default"), and flags + # can now be used to determine cell unbound: not available. + set flags [cellname list flags $cell] + if {[lsearch -exact $flags available] < 0} { + lappend ercell $cell + continue + } + } + set ercell ;# return list of unbound cells, if any +} +} + +# without top-level proc around bulk of script, intermediate error statements don't abort script. +proc main {argv} { + +set mlen [llength $argv] + +# process name-value pair options, if any +set nbrErr 0 +set ndx 0 +set max [llength $argv] +set extTechOpt {} ;# -T ... but not used here +set enumFilel {} ;# -l ... enum output file +set enumFileL {} ;# -L ... enum output file +set enumFileKm {} ;# -km ... enum output file +set variant {} ;# -S ... non-default drc style +set istyle {} ;# -I ... non-default cifinput style +set doFeedback 1 ;# -nf sets to 0: Do not write *.drtcl per-cell feedback files. +set pathSub 0 ;# -path-sub ... do 'gds path subcell yes' +set polySub 0 ;# -poly-sub ... do 'gds polygon subcell yes' +set subcellTab 1 ;# -tt, -tc both turn OFF subcell count-by-error report +set topcellTab 1 ;# -tc turns OFF topcell count-by-error report +set flatten 0 +while {$ndx < $max && [string match "-*" [lindex $argv $ndx]]} { + set opt [lindex $argv $ndx] + incr ndx + switch -exact -- $opt { + -T { + if {$ndx != 1} { + usage "-T option must very 1st (here was #$ndx)" + exit 1 + } + if {$ndx == $max} { + usage "missing tech-file argument for -T option" + exit 1 + } + set extTechOpt [lindex $argv $ndx] ;# unused + incr ndx + } + -S { + if {$ndx == $max} { + usage "missing drcStyle argument for -S option" + exit 1 + } + set variant [lindex $argv $ndx] + incr ndx + } + -I { + if {$ndx == $max} { + usage "missing cifinput-style argument for -I option" + exit 1 + } + set istyle [lindex $argv $ndx] + incr ndx + } + -F { set flatten 1} + -nf { set doFeedback 0 } + -path-sub { set pathSub 1} + -poly-sub { set polySub 1} + -pps { set pathSub 1; set polySub 1} + -tt { set subcellTab 0 ; set topcellTab 1} + -tc { set subcellTab 0 ; set topcellTab 0 } + -km { + if {$ndx == $max} { + usage "missing outputFile argument for -km option" + exit 1 + } + set enumFileKm [lindex $argv $ndx] + incr ndx + } + -l { + if {$ndx == $max} { + usage "missing outputFile argument for -l option" + exit 1 + } + set enumFilel [lindex $argv $ndx] + incr ndx + if {[catch {set enumOut [open $enumFilel w]} msg]} { + error "ERROR: ${::Prog}: failed to open-for-write '$enumFilel' threw error, $msg" + } + puts "${::Prog}: enumerating each error bbox to: $enumFilel" + } + -L { + if {$ndx == $max} { + usage "missing outputFile argument for -L option" + exit 1 + } + set enumFileL [lindex $argv $ndx] + incr ndx + if {[catch {set enumOutL [open $enumFileL w]} msg]} { + error "ERROR: ${::Prog}: failed to open-for-write '$enumFileL' threw error, $msg" + } + puts "${::Prog}: enumerating each error bbox to: $enumFileL" + } + default { + usage "unknown option: $opt" + exit 1 + } + } +} + +if {$ndx == $max} { + usage {Insufficient number of arguments, need gdsFileName [topCellName]} + exit 1 +} + +set gdsf [lindex $argv $ndx] ; incr ndx +set topc {} +set topcStr "(AUTO)" +if {$ndx < $max} { + set topc [lindex $argv $ndx] ; incr ndx + set topcStr $topc +} +# error if extra options (not understood, something is wrong): +if {$ndx < $max} { + error "ERROR: ${::Prog}: after gdsFile=\"$gdsf\", topcell=\"$topc\" found unsupported extra arguments: [lrange $argv $ndx end]" +} +# ndx no longer used for argv position from here + +gdsChk $gdsf + +# warning on combo of -tc & -km. If -km ok, open its output file. +if {$enumFileKm ne {}} { + if {! $topcellTab} { + puts "WARNING: ${::Prog}: with -tc cannot (-km) write klayout-marker-db" + } else { + if {[catch {set enumOutKm [open $enumFileKm w]} msg]} { + error "ERROR: ${::Prog}: failed to open-for-write '$enumFileKm' threw error, $msg" + } + puts "${::Prog}: enumerating each error bbox to: $enumFileKm" + } +} + +# write a line with timestamp and all arguments to stdout (log) +# (magic renames the TCL clock command) +set clockp clock +if {[info command $clockp] == {} && [info command orig_clock] != {}} { + set clockp orig_clock +} +set nowSec [$clockp seconds] +set timestamp [$clockp format $nowSec -format "%Y-%m-%d.%T.%Z"] +# TODO: quote logged argv here as needed so it's machine readable for replay purposes. +puts "${::Prog}: timestamp: $timestamp, arguments: $::env(_M0)" + +# just Manhattan is default, turn on euclidean, and log new mode +drc euclidean on +drc euclidean + +# 8.1.83 this worked: +# drc off; gds drccheck no; gds read ... ; load topcell; select top cell; expand; drc check; drc update; drc listall count +# By 8.2.64, that fails, the 'drc listall count' reports errors only in the top-cell, no subcells. +# 8.1.83 & 8.2.193 this works (gds drccheck defaults to on anyway): +# drc off; gds drccheck yes; gds read ... ; load topcell; select top cell; expand; drc check; drc update; drc listall count +# +# But are we properly avoiding redundant drc runs? +# +# turn off background checker. We'll invoke checks explicitly. +drc off +gds drccheck yes +puts "drc status (whether background checking enabled) is: [drc status]" +puts "gds drccheck (whether gds-read marks new cells as need-drc) is: [gds drccheck]" + +# set user's drc style; set user's cifinput istyle +# These are back-to-back without intervening status messages. +# If both wrong their errors are back-to-back. +set res {} +set res [drc list style] +if {$variant != {}} { + set allstyle [drc listall style] + set ndx [lsearch -exact $allstyle $variant] + if {$ndx < 0} { + puts "ERROR: ${::Prog}: drc style '$variant' not one of those available: $allstyle" + incr nbrErr + } else { + set res [drc list style $variant] + } +} +set res2 [cif list istyle] +if {$istyle != {}} { + set allstyle [cif listall istyle] + set ndx [lsearch -exact $allstyle $istyle] + if {$ndx < 0} { + puts "ERROR: ${::Prog}: istyle '$istyle' not one of those available: $allstyle" + incr nbrErr + } else { + set res2 [cif istyle $istyle] + } +} +if {$res != {}} { + puts "drc style reports:\n$res" +} +if {$res2 != {}} { + puts "cif istyle reports:\n$res2" +} + +# gds {path,polygon} subcell yes +if {$pathSub != 0} { gds path subcells yes } +puts "gds path subcells: [gds path subcells]" +if {$polySub != 0} { gds polygon subcells yes } +puts "gds polygon subcells: [gds polygon subcells]" + +# todo: this catch never happens. Need nicer error check of 'gds read' somehow. Can check for zero-sized file? +# if use /dev/null for example, it prints its own error message, but no throw, no useful return value. +puts "doing: gds read $gdsf ..." +if {[catch {set res [gds read $gdsf]} msg]} { + puts "ERROR: ${::Prog}: 'gds read $gdsf' threw error, $msg" + incr nbrErr +} +# nothing useful: +# puts "gds-read res: $res" + +set topcells [cellname list top] +set allcells [cellname list allcells] +# puts "cellname-list-top from GDS is: $topcells" +# puts "cellname-list-allcells from GDS are: $allcells" +# filter (UNNAMED) +set topcells [lsearch -exact -not -all -inline $topcells "(UNNAMED)"] +set allcells [lsearch -exact -not -all -inline $allcells "(UNNAMED)"] +set nbrAllCells [llength $allcells] + +if {$topcells == {}} { + puts "ERROR: ${::Prog}: GDS-read did not report any useful cell name(s) found." + incr nbrErr +} + +if {$nbrErr > 0} { + return $nbrErr ;# outside of main, we print termination with errors message +} + +if {$topc == {}} { + # try and infer topcell from cellname-list-top. + # presume its list of cells not placed anywhere else. + # todo: test with "library" GDS having more than one topcell + # here we just take the last entry + set topc [lindex $topcells end] + set topcStr $topc + puts "WARNING: auto-picked top-cell \"$topc\"; the topcells inferred from GDS are: $topcells" +} else { + # verify input topc argument exists in GDS read result + set ndx [lsearch -exact $allcells $topc] + if {$ndx < 0} { + puts "ERROR: ${::Prog}: top-cell name: $topc, not found in GDS" + puts "info: top cells inferred from GDS are: $topcells" + puts "info: all cells inferred from GDS are: $allcells" + return [incr nbrErr] ;# outside of main, we print termination with errors message + } +} + +puts "${::Prog}: running drc on -gds: $gdsf -topcell: $topcStr" +reportTechFile + +# todo: need to error check load command somehow (no useful return value). +# it can fail with error message (in log) like: +# File dne.mag couldn't be found +# Creating new cell +if {[catch {set res [load $topc]} msg]} { + puts "ERROR: ${::Prog}: 'load $topc' threw error (maybe cellName not found in GDS?), $msg" + return [incr nbrErr] ;# outside of main, we print termination with errors message +} +# nothing useful: +# puts "load $topc res: $res" + +if {$flatten} { + # delete (UNNAMED) if any. + set trg "(UNNAMED)" + if {[cellnameExists $trg]} {cellname delete $trg} + + # rename top cell to (UNNAMED) + cellname rename $topc $trg + + # now Edit Cell contents are original top cell, but under name (UNNAMED) + # flatten Edit-Cell into original top cell name + puts "${::Prog}: flattening..." + flatten $topc + + # load and edit new version of top cell + load $topc + + # crude way even in batch to determine the "current" cell; perhaps not yet the "Edit" cell + # WARNING, if topcell locked elsewhere or not writable, it can't become the "Edit" cell. + set topcw [cellname list window] + if {$topcw ne $topc} { + puts "ERROR: ${::Prog}: assertion failed, post-flatten, $topc, is not the current cell, 'cellname list window'=$topcw" + return [incr nbrErr] ;# outside of main, we print termination with errors message + } + + # should not be necessary: + select top cell + edit + + # crude way even in batch to determine the "current" cell; perhaps not yet the "Edit" cell + # WARNING, if topcell locked elsewhere or not writable, it can't become the "Edit" cell. + set topcw [cellname list window] + if {$topcw ne $topc} { + puts "ERROR: ${::Prog}: assertion-2 failed, post-flatten, $topc, is not the current cell, 'cellname list window'=$topcw" + return [incr nbrErr] ;# outside of main, we print termination with errors message + } +} + +# Erase all preexisting *.drtcl first. Else when cell transitions from +# dirty in previous run (leaving *.drtcl), to clean, the old *.drtcl +# remains. +# TODO: only delete *.drtcl of cells in 'cellname list allcells'? +if {$doFeedback} { + set files [glob -nocomplain -types {f} -- ./*.drtcl] + if {$flatten} { + # only delete topcell's .drtcl in flatten mode, if there is one + set files [lsearch -all -inline -exact $files ./$topc.drtcl] + } + if {$files != {}} { + # TODO: detect/report failure details better here? + puts "${::Prog}: deleting preexisting *.drtcl" + set msg {} + set delfail [catch {eval {file delete} $files} msg] + set files [glob -nocomplain -types {f} -- ./*.drtcl] + if {$delfail || $files != {}} { + puts "ERROR: ${::Prog}: failed to clean old ./*.drtcl files. $msg" + incr nbrErr + } + } +} + +# 1st "select top cell": without it drc-list-count is blank, and error count reduced. +select top cell + +set bbox0 [view bbox] +set outScale [cif scale out] + +# set bbox1 [view bbox] + +# "select top cell" and box [view bbox] should be equivalent in +# placing a box around whole cell extent. +# The box cmd ALSO prints lambda and micron user-friendly box data, +# but it prints microns with not enough resolution, +# (and no option to disable that flawed print out). +# +# todo: emulate box output in full, except for higher resolution, +# here we only scale/print the overall bbox in microns. +set bbs {} +foreach oord $bbox0 { + lappend bbs [format "%.3f" [expr {$outScale * $oord}]] +} +puts "info: outScale: [format "%.6f" $outScale], view-bbox: $bbox0" +puts "info: Root cell box: ([lindex $bbs 0] [lindex $bbs 1]), ([lindex $bbs 2] [lindex $bbs 3])" + +drc check +drc catchup +drc statistics +drc rulestats +# puts "doing plain: drc count" +drc count + +# 2nd select top cell needed else error count may be reduced (why? bbox does not change due to DRC) +select top cell + +set celllist [drc listall count] +set drcListCountTot [drc list count total] +# puts stdout "(drc listall count) is << " nonewline; puts stdout [list $celllist] nonewline; puts " >>" +# puts stdout "(drc list count) is << " nonewline; puts stdout [list [drc list count]] nonewline; puts " >>" +# puts stdout "(drc list count total) is << " nonewline; puts stdout [list $drcListCountTot] nonewline; puts " >>" +# puts stdout "(drc listall count total) is << " nonewline; puts stdout [list [drc listall count total]] nonewline; puts " >>" +# puts stdout "(drc list why) is << " nonewline; puts stdout [list [drc list why]] nonewline; puts " >>" +# puts stdout "(drc listall why) is << " nonewline; puts stdout [list [drc listall why]] nonewline; puts " >>" + +set bbox2 [view bbox] +if {$bbox2 != $bbox0} { + set bbs {} + foreach oord $bbox2 { + lappend bbs [format "%.3f" [expr {$outScale * $oord}]] + } + puts "info: outScale: [format "%.6f" $outScale], view-bbox: $bbox2" + puts "info: Root cell box2: ([lindex $bbs 0] [lindex $bbs 1]), ([lindex $bbs 2] [lindex $bbs 3])" +} + + +# canonicalize order of celllist, move topc to last (if present whatsoever). +# force our own artificial entry for topc (zero errors) if not present (was clean) +# puts "celllist before: $celllist" +set nbrErrCells [llength $celllist] +set topcPair [lsearch -inline -index 0 -exact $celllist $topc] +set celllist [lsearch -not -all -inline -index 0 -exact $celllist $topc] +set celllist [lsort -index 0 -dictionary $celllist] +if {$topcPair == {}} { + # puts "info: ${::Prog}: $topc clean, forcing celllist entry for it" + set topcPair [list $topc 0] +} +lappend celllist $topcPair +# puts stdout "adjusted celllist(drc list count) is << " nonewline; puts stdout $celllist nonewline; puts " >>" + +array set kmErr2catNm {} +array set kmErr2catDesc {} +array set kmCell2item {} +if {$celllist != {} && [info exists enumOutKm]} { + # Header example of .lyrdb klayout Marker format + # + # + # Diff of 'x.gds, Cell RINGO' vs. 'x.gds[1], Cell INV2' + # + # + # RINGO + # + # + # red + # Red flag + # + # ... + # + + puts $enumOutKm {} + puts $enumOutKm "$topc DRC timestamp: $timestamp, arguments: $::env(_M0)" + puts $enumOutKm {} + puts $enumOutKm "$topc" + puts $enumOutKm {} + puts $enumOutKm {} + + # multiple ... sections do accumulate, but cells and categories need + # to be defined before use in an item (specific error), and we know cell names here, + # so declare all cells to klayout here. + # + # Cell-specific header of klayout marker file + # + # CELLNAME1 + # 1 (don't need) + # + # + foreach pair $celllist { + set acell [lindex $pair 0] + + # for -tt, no subcell error-detail: don't write subcells in ... section. + if {$acell ne $topc && ! $subcellTab} { continue } + + puts $enumOutKm " $acell" + set kmCell2item($acell) {} + } + puts $enumOutKm {} +} + +# loop over celllist +set gtotal 0 +set gcells 0 +set lumpedHeader 0 +foreach pair $celllist { + set acell [lindex $pair 0] + set acount [lindex $pair 1] + + if {$acell ne $topc && ! $subcellTab} { + if {! $lumpedHeader} { + puts "--- #err|cell, lumped total counts" + set lumpedHeader 1 + } + puts "[format {%8d} $acount] $acell" + incr gcells + incr gtotal $acount + continue + } + if {$acell eq $topc && ! $topcellTab} { + if {! $lumpedHeader} { + puts "--- #err|cell, lumped total counts" + set lumpedHeader 1 + } + puts "[format {%8d} $acount] $acell" + incr gcells + incr gtotal $acount + continue + } + puts "" + + # todo: need useful error check of load command + if {[catch {set res [load $acell]} msg]} { + puts "ERROR: ${::Prog}: 'load $acell' threw error, $msg" + return [incr nbrErr] ;# outside of main, we print termination with errors message + } + + # instead use quiet version for per-cell selects + select top cell + + set drcListCountTot [drc listall count total] + + # enumerate errors under box, plain "drc why" only reports unique types, no quantities + # as-yet-undocumented "drc listall why" will give: {errStr1 {errBox1 ...} errStr2 {errBox1 ...} ... } + set pareto {} + set total 0 + set enumTotal 0 + set types 0 + set typeDup 0 + set dups 0 + + set fbOut {} + if {$acount != 0} { + # file path for feedback, keep in CWD + if {$doFeedback && $fbOut == {}} { + set fbOut "./$acell.drtcl" + if {![file writable $fbOut] && + ([file exists $fbOut] || ![file writable [file dir $fbOut]])} { + puts stderr "ERROR: ${::Prog}: feedback output not writable, $fbOut" + incr nbrErr + set fbOut {} + } elseif {[catch {set outfb [open $fbOut w]} msg]} { + puts stderr "ERROR: ${::Prog}: failed to truncate previous feedback output, $fbOut : $msg" + incr nbrErr + set fbOut {} + } + } + + foreach {str boxes} [drc listall why] { + # sort errors + set boxes [lsort -dictionary $boxes] + # for our pareto, gather data + set this [llength $boxes] + incr total $this + incr types + lappend pareto [list $this $str] + + # for enumOut, emulate formatting of $CAD_ROOT/magic/tcl/drc.tcl, which is + # not tk pure: fails with complaint about winfo + # note: we walk these errors also in order to count/report stats on duplicates, even if not outputing enumerations + if {[info exists enumOut]} { + if {$types == 1} { + puts $enumOut "[join $pair]\n----------------------------------------" + } + puts $enumOut "${str}\n----------------------------------------" + } + if {[info exists enumOutL]} { + if {$types == 1} { + puts $enumOutL "[join $pair]\n----------------------------------------" + } + puts $enumOutL "${str}\n----------------------------------------" + } + if {[info exists enumOutKm]} { + # category names must be declared all together up front before use in items + # so we only store their names (error strings) and error detail (items) + # to dump after all cells and errors are processed. + # TODO: Only quote catName in item if embeds dot, instead of full-time + # TODO: test klayout handles literal (non-entity) single-quote in double-quoted name + set strKmNm $str + set strKmDesc $str + regsub -all -- {&} $strKmDesc {\&} strKmDesc ;# perhaps not needed; just in case + regsub -all -- {<} $strKmDesc {\<} strKmDesc ;# description does not have such bug, so use correct entity + regsub -all -- {>} $strKmDesc {\>} strKmDesc ;# perhaps not needed; just in case + regsub -all -- {&} $strKmNm {-and-} strKmNm ;# perhaps not needed; just in case + regsub -all -- {>} $strKmNm {-gt-} strKmNm ;# perhaps not needed; just in case + regsub -all -- {<} $strKmNm {-lt-} strKmNm ;# catName klayout bug: info win truncates at '<' as < entity + regsub -all -- "\"" $strKmNm {'} strKmNm ;# we dqoute each catNm in item, so change embedded double to single + set kmErr2catNm($str) $strKmNm + set kmErr2catDesc($str) $strKmDesc + # + # example klayout Marker format, header of one item (one error instance) + # + # (don't need?) + # (don't need?) + # 'DRC-MSG-STR' (cat1.cat2 path delimit by dot: names with dot need single|double quotes) + # RINGO:1 (don't need :N variant suffix) + # false (optional? start with false?) + # 1 (not boolean, if error "represents" more that are NOT enumerated) + # ... + # + + set itemStr "\"$strKmNm\"$acell" + } + set lastq {} + set thisDup 0 + foreach quad $boxes { + set quadUM {} + set kmBoxUM {} + foreach coord $quad { + set valum [expr {$coord * $outScale}] + set valumf [format "%.3f" $valum] + lappend quadUM "${valumf}um" + lappend kmBoxUM ${valumf} + } + set dup [expr {$quad == $lastq}] + incr thisDup $dup + set line $quadUM + if {[info exists enumOut]} { + if {$dup} { + puts $enumOut "[join $line] #dup" + } else { + puts $enumOut [join $line] + } + } + if {[info exists enumOutL]} { + if {$dup} { + puts $enumOutL "$quad #dup" + } else { + puts $enumOutL $quad + } + } + if {[info exists enumOutKm]} { + # text: 'item: polygon' (text is optional? Repeat the box coordinates here in um?) + # polygon: (1.4,1.8;-1.4,1.8;-1.4,3.8;1.4,3.8) + # box: (1.4,1.8;-1.4,3.8) + # + set kmItem $itemStr + append kmItem " box: ([lindex $kmBoxUM 0],[lindex $kmBoxUM 1];[lindex $kmBoxUM 2],[lindex $kmBoxUM 3])" + if {$dup} { + append kmItem " text: 'dup'" + } + append kmItem " " + lappend kmCell2item($acell) $kmItem + } + if {$fbOut != {}} { + set line [join $quadUM] + regsub -all -- "(\[\[\"\$\\\\])" $str {\\\1} strdq + puts $outfb "[concat box $line]" nonewline + puts $outfb " ; feedback add \"$strdq\" medium" nonewline + if {$dup} { + puts $outfb " ;#dup" + } else { + puts $outfb "" + } + } + + incr enumTotal + set lastq $quad + } + if {$thisDup} { + incr typeDup + incr dups $thisDup + } + if {[info exists enumOut]} { + puts $enumOut "----------------------------------------\n" + } + if {[info exists enumOutL]} { + puts $enumOutL "----------------------------------------\n" + } + } + } + + if {$fbOut != {}} { + close $outfb + set outfb {} + } + + set pareto [lsort -integer -decreasing -index 0 $pareto] + if {$total > 0} { + puts "--- #err|description, table for cell: $acell" + } + foreach pair $pareto { + puts "[format {%8d} [lindex $pair 0]] [lindex $pair 1]" + } + if {$typeDup} { + puts "[format {%8d} $dups] total duplicate error(s) among $typeDup error type(s), cell: $acell" + } + puts "[format {%8d} $total] total error(s) among $types error type(s), cell: $acell" + # add to grand-totals + incr gcells + incr gtotal $total + + # always compare the total from the enum to the pareto as error check + if {$total != $enumTotal} { + puts "ERROR: ${::Prog}: cell: $acell, internal error, pareto vs enum count mismatch: $total != $enumTotal" + incr nbrErr + } + # wish to compare the drc-list-count-total to the pareto total. + # Per te 2014-08-27 : it is not an error. + if {$total != $drcListCountTot} { + # puts "info: ${::Prog}: cell: $acell, drc-list-count-total vs drc-listall-why mismatch {drc list count total} gave $drcListCountTot, but {drc listall why} gave $total" + } +} + +# grand totals +puts "[format {%8d} $nbrErrCells] of $nbrAllCells cell(s) report error(s)" +puts "[format {%8d} $gtotal] grand-total error(s) across $gcells cell(s)" + +if {[info exists enumOut]} { + close $enumOut +} +if {[info exists enumOutL]} { + close $enumOutL +} +if {[info exists enumOutKm]} { + # declare all category names and descriptions, note '<' in name vs description are represented differently + # + # layerN width -lt- 1.0um + # layerN width < 1.0um + # ... + # + puts $enumOutKm "" + foreach errStr [array names kmErr2catNm] { + set nm $kmErr2catNm($errStr) + set desc $kmErr2catDesc($errStr) + puts $enumOutKm " $nm$desc" + } + puts $enumOutKm "" + + # dump all items (after all cells and all categories have been defined up front) + puts $enumOutKm "" + foreach {acell items} [array get kmCell2item] { + foreach item $items { + puts $enumOutKm $item + } + } + puts $enumOutKm "" + + # footer example .lyrdb klayout Marker file + # + puts $enumOutKm {} + close $enumOutKm +} +# todo: implement super-pareto, ranked table of SUM of all DRC errs/counts from ALL cells. +# (It still would not reflect as-if-flat hierarchical expansion due to repetition of instances). + +set nbrErr ;# return value +} ;# end main + +# non-zero exit-status on errors, either if thrown by main, or counted and returned by main +set nbrErr 0 +if {[catch {set nbrErr [main $argv]} msg]} { + puts stderr $msg + set nbrErr 1 +} elseif {$nbrErr > 0} { + puts "ERROR: ${::Prog}: script terminated with errors reported above." +} +exit $nbrErr + +# for emacs syntax-mode: +# Local Variables: +# mode:tcl +# End: diff --git a/images/foss-asic-tools/addons/sak/magic/maglef2gds.sh b/images/foss-asic-tools/addons/sak/magic/maglef2gds.sh new file mode 100755 index 00000000..f98f0076 --- /dev/null +++ b/images/foss-asic-tools/addons/sak/magic/maglef2gds.sh @@ -0,0 +1,20 @@ +#!/bin/sh +#export MAGIC=/ef/apps/ocd/magic/8.3.179-202106141345/bin/magic +export MAGIC=/ef/apps/ocd/magic/8.3.165-202105171922/bin/magic + +export MAGTYPE=maglef; + +$MAGIC -dnull -noconsole -rcfile $PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc < + +: ${1?"Usage: $0 "} + +export TARGET_DIR=$1 +if ![[-z "$PDK_ROOT"]] +then + echo "PDK_ROOT is not defined. Please define it before running" + exit 1 +fi +export DESIGN_NAME=${2:-"user_project_wrapper"} +export OUT_DIR=${3:-$TARGET_DIR/signoff/macro_listing_check} +export SCRIPTS_ROOT=${4:-$(dirname $0)} + +if ! [[ -d "$OUT_DIR" ]] +then + mkdir $OUT_DIR +fi +echo "Running Magic..." +export MAGIC_MAGICRC=$PDK_ROOT/sky130A/libs.tech/magic/sky130A.magicrc + +ulimit -c unlimited +magic \ + -noconsole \ + -dnull \ + -rcfile $MAGIC_MAGICRC \ + $SCRIPTS_ROOT/magic_list_instances.tcl \ + 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�Dlee#}o}-7{qQa_Du%8@&1y;_IiGZ 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 literal 0 HcmV?d00001 diff --git a/images/foss-asic-tools/addons/xfce/.config/Logo_globe_transparentBG-199.png b/images/foss-asic-tools/addons/xfce/.config/Logo_globe_transparentBG-199.png new file mode 100755 index 0000000000000000000000000000000000000000..9be6455b8dd69e952acb076539e4299cb90b973e GIT binary patch literal 39303 zcmeFZ^OK~_@;*GaZJRx|XUDc}+vbjK+uFg7ZSL6K@s90x_I%@Wp64%ke>xG>5gm0$ z<(-+8m33v+)g7TACk_vT0|NvE1TQHessscCQVj$I+yVvh)zfaipa28}BWfukq97?E zLZskiZ)Ry@3IrqppOfmYg0_q~vOQ_T*rc0EVtUf`6TFzAOCp5=X5s=wT64)1vz|i~ zoFwu)lo}b8QLhCR3T>eV6colEU}zF4I5A}Ol*wVd`$rzi=Xbd+LU;aK-^X0{qpjCz zY#=INVh}@wY9PTD1(MjiN3-D}O2Bm&5QJy|C_9itYg^$jsve7gT0wnw7EIT~YkgRd zoqPHKEudO$un?9E|C7&4kpx;4X`q1qSs)$)fwU+m;&IJqlmwYP(Tve?AsrqybI!~jo;Izk{mI|ac_%#k`s`Uqi(?7e3I?+tMkaGF!J9Z zOug9il3;-F>Mqw zxaQ^hBi{YxnHpGWs` zS$SO_*d|@?zpt71W^#q1a~aptRv5M9=z*%Ko7lCxEvR{bEwm8>PB$4dKlp)u!vb5J zzn*$y{qU4blMrQ4Q+s}XP6gp#R#N*lbLP+O^YG^VbjmBe>X~Ofa<^ONRIG_oT3x=8 zU5!_fov=e_%*3CVvq1EPPjvNO609c^cHkR9|%f3q)R?TQvd+~0;3m$6Igu*+D8Zp3Uro; zfDS|_9^pqI*6-j019&PBas${EgvvfW1xOr0R8EMsUP%W89WeDiHV4!VP!R((UeKf+ zw)8+EC`3hKoMH$|5r}wf6W9hK_fbrkK#~FvDr~9Xka#pLgqmQfe5Z1pHAFVSZ4t_R z=U=Afgzcd4BKyBCfAL@iQUmapLf{Q))4{#_`W#q0k>r9g2c&m}Jy>+Wm;1$c)SmEs z(7T}#`(}2i!H7&k0*{F>pkNJ24JAMlBflr4NH8fyERe`bK+eVJh=;{P|E7lsFEC8U zf{mu70Ae8=7@`}l9!xf>WC{n=q%%yqP6EtOZjq&jtPG~=8CC>s@YvzA;^_O;jLsV9 zS72ANRuunO;~|XnV((@<0JnPRK-gi|qW#2Oj^>Fv8;RK|z4GY9*@C+aLmY6vLh(WN zqx^vSfb#0TU1g5t7i5E+@mI$fkfp8iryK1uq1i4aE}sjhu!w@!fS0 z!HCc?nNviG3_D>%VzwA=4o3;SBElumCGRd#hT<$SXAIc{*psa-(kIy`f>*{*TCp%) zX(d@SGWkb_Q@m5EQ}|7yR0)m}Uj?)Zv@1(c7w`w{hsL% zrIZJ`2)RCau2R7qaLKI{DQifnxbb{zlWPT@$)=#WU6;{2nKncgtv&7Yn>~Tm?hFZWhLWRsQ0xVXKv$cU#7=P`AjN^&3|)^I~dDSDj=yERGG6 z3y4)Q?~$vUj;>9(@Y!r`pK3?ElklSJQt5)}lIxQ6wS8B3KX{3Gafkm7K^N>2j1RF1 zF&`!t))0mZw+@$wRe=MJL(gW#+HNny_5jec(XsX!05k7r9%Eg#b(%tBcLm6D)G(d1 z1W(~jfthtoy-YP6P9F;2YTXLKMuw(+%l%d~R8Ky@Jm^$onswkz>stj@Rin14Mp%Pi z-B^8AeYr}t3btC^d{Y0sxwMdKt!?Z*5Nma0{&T!`^CGk>gKyg}?%ftLQ>1(VB3v#U zF;*_tXoO~hS0%eL)k&Pnc{?it@vk&)ni#k1>C<(Z@-%}cIB)4h~k*TJ*4pUpp4 zI)=P6&-?ZI_|Jl$o?g*j?_Ox0rypw`e2>e{(hir8IZiHjdL}<@fY^yR4Xk?&^38}i z>WLkgN2x8oDX0U;IcZwCpA^4ae&;MEMMHpx*~IYj&+X&g?Q8)cVPLh;{}F0ceA>Gr zBy~XEMP@^eBef+-6L%AzEley#5buh8h-HZC=GgY=cJVWh_K`7?5t($UmbdZzqmZq- z5!qUGeR>`A^Z@1~EF-wgErf>Wsyh_YLWjMM4{{)RcPydJoH_T@0+QCvxTNopCtq_gyTDtqolf?ftc zu>ou)I3qI%^Mjd;d6+4|WcF0#l+`qa38i@+5)Cv^6J8f~iA)RTrjJR&%SJ(^hS@a%uiN6|t7EW?p`4TJo}eUQ<6aT6RUV!l-4y z)4c5IZjh*z&|z)ua~;@B{=Ue!g+nkgo1iGT2`HiGasxj=vQCu@(i}m-#=cpt>LX{5qA)N z<9p~}Dlfm&pRI>^-M=KhAVP*hh9i6zUpyaLW(aR8SAV=+1wtM5}(wp{ANL0vhyIVVfwj|f1q0PjEwBWJ(@R~n|}gc>5(RoEa^TMTJ;j=prKKu78k#-e@1qq?sELnmAKPPr#GaB{7g?)68J}zU zZ?-Nb?fq^uR#&&*4mF5Nnmpoxp#N!t8qh0-s?lBv|LzPR5e!bb4*-++ZzEa&v#1Yi z_bA8v*H|EUwIyH_qW`u)1=RdLoYTDmCo(~h|29?)O~`))1%L_520&PsM}?37`<1^8 zO!5B_1dIa328>f(z(7DF{*NHCFQr`ntI^k&|0(t5vj2JNE4cm_Qz%6LTYdja3I8vJ z{x2o`FD3kETmD~4`2Qg#hZl!m}si5CM8MGP+vyJ53T2hB3^5)wcfX17cD2+ zcqlAvd!$53H4GvLn2g5rD@FPwRlpESM@B}fWyp|D{^)x$0`LzM#|{nMUI3``en|dR zTo>w>foxi$l<>^$G!NrkiFBHMTdgYw-26u>`3sMn7{`PYI6*7Mv?`vGluzADf}j^v z4?>?sJw-1KxX=sHR7BXkF7WfzlEIL#3)78%lHssBR;v84qY&gb z7B`LjJ|u9%wwZM!uu=4fX2$pjSnyx4lkT?Rvz=b4VFR1Mty)$#u| zB5Dv;jii3e+Rd!6*OEKGjkYBIB7o_`G4W*&ztlSPzcV!BD?+BM- zq7nHA;Yp(8_hpjx0z|_bD%C=I;B>h|g$Pgog(bP69SGHOSe1#akAD^58&vZL7h6`B z1_&gP{T~Pg$Ok}Fc@B#y_o}HX#|z3AMJRCoV@z>85d0EazdZX%UvRiDEOQtcZTR)S z?3nzEa@$;RW~W*X!XC;p3K$>JaWddw2}@CZ==`?WeZr}R|W_8;&ok^Ut)L@|^$ zAL*jp!BX_!hQoasZq^Dxq^g4|NFo#Te_jg!QdsvwCUE}} zD)8mk`MOEE_1N6BFe_!#e;!?Z`?8bKrXrT?r9=y~RQ?|)3L$@ia5T%9lbtEG5lb|2 z#eZx-vig!IqRV@olB7g{`Ux|W_+Qj7I8TaX>7{A4#)ZRXrP6|=_6p>L9ZdO1+?j0< zxX*bhPLkluiO@`Umj1(l|uh`ED-6-V^C%k!vA!U?WBEGH$A_x;{KT}2_mE~4M6)Q zMgIxv0I;{O*Pf=~?f<))0Tce3SEBR`sDC0aK0yC#@Oz>$?>}=$6e#$$!r{SKP>KI9 ze7~G?B~7%)VHAI@he0w|s{A-DCu$<8-qe_F5f(3JT@vha;72^f&q4Ai{^z*1`n|>- zuhDg}mgwGC>qLl%k&%&wmbS{66=y1Ph(r?`yVlEEqx5Wzp4J&@(|rBmLxZkG043tj zS~IQnNZ~icMh0xUE!x`FT3I!x_6F}wWnR&dut1J8av6t$kPXOcMoHT&smjho*zJP+``o4 zV?7y4CX;pSV<#9f)=k$D#A>L)qTHL%1pc-BUi8WgPO+dGd$b#Rk3zcJ)YGoWo~Ng!nb>_t)`_HfLJ6 z+`9c6Z5pV28ADPo%Dr4}O({o|i4tv8cFLn!z*cRE?%j9i8Rn7Puem&&CVo zimR^=DFed}Rk_GF77l+RqJzs8k$D@@z*e4BXQ0@SbjO+!DQTL>X-;hyZw>k6R0Igs z^0QM@Q_Z?$%^}Mz_(emJ%QYwnUh;F=WdiE^zpjY;@sG6)>D+lEfKT~E9NBF^P-wR{_Mch&_Wdg^0G zhYiMrRlSNB|1re}Ct4rac*Fd}zg#g}?dvoba%KuPAxrsM5uxGxZgz!Uzmg9I>E_S~ z!MeAlMlO8Vt*wfW6x`B*Zabm5q&J*hKgjRe##uae1|OCnItTo-gb&=M%3QPY*q|W8 z<@^NhPGaz10e#+7-P;Q3zw5?&U<`Za)A4w#-7zp{-mQ&yUG&1;Wzo>kvV-;h0P5RO ze(;e3u}5;aNy}d+E2} ztP@kXh#eX~+5v{mvvCl2X4XhixBC3J>9g>!6?t{Wpemb-SIg;7yUqx9@<%)9#@(KO zDQ8w<6d!Si5<{L2r>v8WWN8Am)r5}p6q6jwPUgpacMvSAq~{)c_7H;;esxALF?mTS zVwygxcQ@N*DQa!?s1a+Ml2XZsIJ;rs+XZ*FAHn+gW>_4J@#HGQ*jl$;Do-dMx{N*m z%NPucRWj9pK#)%$WDy0?1s*meR)E}vd~y#>GG#I+NZJOHyDiWQs*wnTXiy2i^!8Rj z3aAz!?}faa(~ybQs5iLq9!t(jYn|#d2rXFaZfcU*bRJLIn1#&?=&!6GW&u#Xe}Kc9 zRTy40ajTR~I~H z<(!Jos%>JMXfLKGhK7dL7&G7a7KqW7ETV5JvLW_QA~)9d?1nLY-jZ%KX?F^jNySw@ z@%b4*QK#VFh9UQb`*TO1gibiO*VQ|9d=_t)x_(-4LeynaLX2xY= zK;k@iTd*E|!8&&2;dOZwY;O6eX#8T6rdV_7lr&rMi(t~X!|`W5$Zvq>qMrTH60DL| z1iep^Bxp9s)uSADJup{w?8=_Oqj;pFHhPy==;&@-fWYlc!uR(qm-OvwIMwyocRW|M zm{ik{bVeVJB~J&|oN(_mE|-4)@6UsTVY2$Bd`v`grJ{A+oY1h-OFH!HO52 z9t^yH+7ARqp!$|nXt-TZ@9d>^dBZA*bP)_#BIRFlTg;~;#h~fX%S`Al=l12W0%@;M zhppD|()UU9LM|G&&z9&XV_esO?u))qpvbEc$Xk|$55XX%ZS&&hS(fMfA0qp1W4&n=(+}9dQm4<&M)_0Os(kEBDUh=m<^I$`%lpp{xtTEOG_s$(zFzj!)#eF)TD)1&*wvpC=YGXGjpwQw ze|kWo6&{JsYUt*0x_dS>AJo!F<*PX07%eFCaYR@n1%&sZj2DGx+NkkvI#vpHa=rj- z?lziJ(M^1cY8#uPtKY9D{(wu7O8>G`M&9d3L#YsE2oDdU{0kne*PpxH%C~j$cSvk9 zLJbhTemG*ggd@?|sFg=@ejoM9>&<8R*&OaWNvB*XeiL-Ci@!gA@iU5zlm_b)bMN(u zc(Sc!Kkn)%>7Bap0pLX$M16CzBVQt8ko*uG&gZ~$k%RAR82F~0=?bD_K2AUif%!T* z=H8EfWD}@!Acdu|A`8ZGq4FJaS)hFaB?QW7&K7%-7;zg(=N-**8tzKH5K+f%k^)R4cB z&ThL_;E+_7q^|WjxQ4FVj@Zv%IRom|4o6O|Bmmejq1Q>6H?|-N#2zLDHmxokdBZv+ zVl$ntOnO4<1l@mAgpsA=@_zWkCzbW~hCDJL_~vZETBQQ^${y7Q(Aw?WnMDHLa6i{- zUc1NZhqI&7Y1b9W@KOry@Z5 zOH*#KiL?uwTVpLWeeOnBLCm_1cHsir($(U=o`#W(0EL_gsj>h|mfXm=c4X3&i%+C& zAh49TR3>`uZrhQh@zpfz9Vt_>?6>aI#Z-G}k%>_8talAWHWx?53K z!tJkys^G0snDpfCz}@kpGyg&>Z@=mFSUB#5<1@Xm09N0{_mmtgrRWk`cF%>CIQ+A$ znprJRbb79B)27-$E_n8(eB9a?IH?Qa(rOvZf>i*GThG^zxL9g?kxfYk&I zZ%9gC!6H;_mFuaTnSqA+N2Ewc&YJtg%deVb8T{1W%6iRK_qwgbwNiRYYZ3uTy_s2Q z9G%-i;LiL~xHUa$E*&qKNzN-^zl$!H%LeY@w_cF1fZnlbvldB62-u)h&cUvz~_Oh&4{YfiupT+*;;{e zBwSpoaVJa30PjQ>Za}mKgPQ~q-~D3<_`K>g@jE4#jdZ$m){7_~x;;Q7Ilj$U*%qD` zpQBabBU$P1*!zP4Y`lSuJ~s6KG{t^-xWhTwo$K9+*u7%c4XY}tzm`Yu`X#IWEFI?E z$*H|Ed@r;@f(P941L^+$NB-P5Er%Tyn*%JBL~1#4xZ}B!GyKxzUOa=zILzhDL_*;< zRGCYHfR@*Zwdb&9*EG@%`#3^@!?t?tDyijS!sKy>C`}`NlM%3xEyvH>X3QxGj+xGR0*#`j0zbGubx?pfw`lMTl{Yh zHU<5p*dPfKhcie5S1F}q$2LS4x*qW@0HWo52~RkgK2~NA(RN0sd9~DX>vVgnGHcXy z{vap70{3iFJH6H)WlI;9966{1p7a^5a__;>mYj-FYc;4_Yps&lS&Kh<$`PYCH=lxT zLkqR1tOoUAFI>sVeJ^gyq;Y*6x>@@QwKUrp4du5Jr$LAMmtZQF$Xz#to^h+cja>Sy z4h=0+t6~9OO6@OexQyQMH$I+G^Q0j<9@OQyGIm2?@_rmL;1Wf#*_bZS zp?v4>kLpL{Xv~3vD;*EQY>-@m`LfJVH~h?u_A8DQ%TM@k*E(|7?;ITuRwiweoXtbsxfG6yoKL%S<|GhZW|D?< ztNev}c0@!l0A0m{&U;`ul`P-!SbCMKilpS&h%8@G#f1J40~%r(!#kkZ=93*xt5^wg zaaWs|j64?4c(5aYwIytq`OKSHnrT%)!2+aj^I_*`8 zNRP~N+j{`MNPVbdVTEfOqRN!Iig4BPA^eRWBlo?s=Pj=r#1=vZpYqITfq38hu>@0! zhw#PeTStR%(ze>AlmB6cIRI_x4WU{`0M_=QZHn>8)oFtUB?4|}wVzu(k+Z>Ge^rq8 zj!88PGAwg({VkDMgNe|M)8yA^0P+cE1F`{dmh|VW<%IgX4)F|xRauzJ&^wrizPv(} zS~J0%FW5~Gi$nf%ERC!ahQQ!Soi}kie>^9#^3ceKI!&_@M zKrH4$BA7#1`Q*$%KdSJNjI*laue^@72)xw&B}N$Pl@;0cS{ckH=}!IOxz@CAORN{f zmlnzEIUUQ0Se5)>f$Tq^IRit6RIq?@gUkwmZRBb8J7`Uzoj8rUb(+atwS8zU+wnb5 zuOw25`(6Lif69B=euFbw)R#%50yk1HlJ2M()aMGOEaLC1z?dr*e0%!00N$Egh&S*k za?`ijpu4(WbNEte$S56*tN83u0za`xgc#CT3k7rOc4!WYsxw zh%>|5EXanv5H_{>4tjcck)PjEyq#Vxc)548mi5&^UHabDG1CZMqu1VGgx!7UX^+Jv z*prbs;w#NYl2uu>-QqIb=ai_p3DR8pE+u|bPmY4W+&wBs1m{HW&8`LO{>fLZ;EN+4 zYn9jF?l==bir71phA~_@-fSMMdfs7mBw>1v zE3gCOtu$PH{rxcTn(W2ev#UzcpADH_Y{?j>E-uI-dK=xgw)+yUg z-U7McgnA?}QN#L zLYogp9QuysGoR+d!osOvb_FjxeQqFnX+MFsU$K^2Rpq94w*_(RvE@dJpEydQ(OKCs zG3_5;fTYULJ3sIuOk}=wAr#9Bb@5M`91hUnu8+VEfwF&>TUMupydbi#iV}*&ZUc<+Mr)@B-C-#bv>+Yr=$$+ zl%!Se+rIU(C|~=Cs0%BX$(_dnTd`H9v4@+BOi!2 zZtL{;5t6){Y0Axf7A)VPbypFiD2tb&=Xhs-$7m5UZfqEI9FVc3gToPnD;W@E_bAt+ zfNPjgPB}iag{yB3J6HAD4z2IOX*yPbRipz=g_5QOr(-ppA|u z?{NRweOFOddKojqw8gcU&^zGHsb^f#xit=Iawlj#M|fh$!S8<_sdxYfBW{=SbK;7a zW6)?iz(kKtM~T^d^&lCM&dKu3PC#Y=9KA^+*(7*^HdFID`YYj=1*4$hQ(?#}I=V}pw2 zGOO!7;!7+y#62XAsXT$1#s)3r#=SkyxShv5t6Y}5u7T6VD)~EVp6_l*^l`qj%&uz9 zx+4VMleXpGgk)H_i>xSN@+1&r!y*Y6zW4S)Q(jLv=P9f$flC&rNh~-~qTuf@H{vh` zB69dw@}^x5b(EgrMH|f{g6UR<2_b~N%Mjc|?CrJPx|Siuh)EMQs{GstJ{W7V7ES)R zdU-QAoXl89oR;3}`9(|>+~;Mz$MhCH$TEB>vfy7x9gQ8+KAvRpl3wZTm!nl3jIcKY zPrGS(wbLhlDgg>14TWFES zZPkXbtI2vfmBPhdin+n)9`KuTT_^Xq_SG~NuGa8?e+AbjEg7MeMz`CwhJCp$Edy`t zqAf`V z>5Q{bBRo6Iq*vNcM`Zb|heD>VJG@KnBkyJY(Rqm7sN<{HdPg^{x8ee5eW>9H*@rD^ zsJ44CYd9*Ox`>Y$nx4;`E{L7UYUYeaWbv;BU0$kxvR^H?7-djm#jh8O7K(3gnuHnf z@>whKoA_I(b=w%Lb-SHd1F9b)`70g-?#3b+p%G{GuIpI48a3!vK;B*Q^lAq^@{_K8 zjEK9!gZ>mBT2sUqVg#d~45CQTRuHwE*GftW){GvnRJGXX*37s2zu+W<))a8lLLjyw zlbXG{P{ilt6o_TWa1YgECv>;X3E=U#k>9E2fkGy4`|XHB^?0yo(C=2=kZ0O+mZ`Hg z%~%yWox(ysPn>p??swAb7KvnVyT~-d$vDlhRe-jvDQU-I@$4i#Z=_$bqD4d8De4X+ z)4X~=nq@v1kfP6mezHc9val#)AGr>{yOTx@X0F%0J5-bUrKhR!AHDL# z?TXX7Q~^|qXiwlEv3=!}S&SuQWtg&0jVK3DVG;sU9DJ!@q2~;7UtVzWqMJ5Ff8T>D zL%x%R4Uqj!m~%yh;U8V*@=@|J(BTHeM(4YxY^h)bM5VY^Iqe;qn$uO>;A-P2XV+AG zGCdohD2?LLShG^}yj%{Y5q^rWlW<#hk(sIW(aI?=&xaRp?7#J)Eb(n^afVz z?IypCP0WK0r#%XMWMt1*;-hmN_i$)CPMb&)zB6m6VtaAPxNGqk?tjKwF{(03v0-4$ zgvm4Q{nDs6seNVoIFqfbcX$~(MSs-rxd#H-{4S5d-;<}qNiVPQfMQ}=)Kuc-T+niq zXxugvLnyGd{GM9h7YY6?$A)&`N=l-kM(+m>L#yz`pc*_5*&=2CpSQ^uCE2oDfSN3W z997-TFKm$@h%t*Y_?R3?`$Rj2Dp@Sw%Kgaj&y)6)8tS?x6}P_2IICRi$Zf}-d)Dka z+Yk1z$Kpk~5O&jgEsxvWn;$P;0e(5Kflp%a=xjdz1atGeBicTeT9+D=4>l$R@GBN` z4F%)y_7zIJgsR)F_!d2V^T!D#jg9A8H|7AfnVK4=>6}O}N2}1b5UZH&=HRD~7)$=h zj=ER+U20&tHd_}e^@A;pCG~D@XYPa&0yJCOEIBuwmNCx+k&)FGq-pZtaZ>e30pZYuGw^;lpulIcE7eAfMJOQ{| z(Hij#HA^%%q`(k(wOz4jZw)3yixHu5$?uMcvQwVlm*McZZmpLq z%_K&OxoUB?^w-_~!i)!o@cDLQ;j};fZfj13kPF=V*%yV7`QE+{8BLX(SBj7uwx*|B z``rJCQCD1?1$4=A*17+&b&56fn*Cm6%c|u^iShoxdL1!DLOCp{G*R*P=F@C=TcZ`i zhD?klw_!v=d-alj-YRSv9mbmWy3iE9D2fiHLcy)qjt5@{mhS=iXYv{?nvNd#j3@S) z!=)m$Qm@SbSqIMX@8X#)`UFr^r{z<#8y2*`+8 zP|M<)vTahVmg^XxU~&DZuO*bhXgE7XA468Q?LAH2NHz(7kY zy*99+P+E_9l^a&e;c#xM^C}0r+^i$44H$J~CSQBr_24IGE6&Tw@nlSH*N-x~hdP-p z5^ro~TuEP4ruNB;)y(xy>Yg_e-3Pl;I1ULPFd|zR@i00`3n&Ov_SBd{XfYs`U^($A zKS2+x`Mj(8+043RTrWnl)N|$MWqJk1Wa5nj_j~!~R$NC@iFy6eXQpy_+pZ3r3{Ajx z-3w!$?E*#&I|EYQnqlpg*9CWqhKg8pFe{5&Avj}&)PO@QsDt6Y$m99u!(3WwdVuNLS)!m_$l?X%Ju=Sm-*i+f@x-%S9ilyG<>U5=Kbe&QH5dVOgyW||d zH1~BVADb=UzZDf|${Gs&m9}0|&?qjsPC}0Ay;3)1NDZtRaH=i!9<0vN-`OGh0D#KJu19hFzJM3FE{3b3XaR1HO?VQBnXs+!v!_&F( zprG9}N_sj`kU~Xohy^Ad0V+Q~e+@0I?&|#fo#dx9Pj>V#7R71l#mg$0=1-L5qfj6? zGA5VfUr{hHVRVXJ)`NVr(r<@27|I|`e8*X|B8NP1V0Sgi>QQdLvZ+XE(MJkad`*$p z8pIcbXH}^3d8WQ9<*&KTPj(78(4K*X&aV5&h4a zp7gJx6PWchBi%&6=4yx7-q7jO8H=0%sR`jECwGDQk+BO~!5gJqwpX=k5MDN|B1f%r zdr!+ld%Lgn33Iq3)9$Fg^$!R2f~M;@<;6zZt1F!Y4}Yi^z!C{6C0rEddGKa~;1Gra z=vK!-S-=@P-vl3QNA?^6)Rh(I{tPh7KXQj5#qEMn1UGqYiz?Ptt{e|GD0wAVVl=8| zOmTmKRnU?Nl0>a=RfdytM^lM=IM0t*)cnhJ!VhNV(yk7qAEmq4gaIQJK3GIZFIzb0 z#V{~S3+&-cqxy~iO67HsebxAMp#oob{eqsZ1Ctw$t6#~s3*J0?kQu)Ue~A%K1C%I4 zH`4cIaT@BNwHv+T#6E=9SftdphtKQoxVS~P3Z7F1!rJ!WDGSU6Ii1xqvCHfJG^*iz zQUj}eJ56>_h3-~_`qESk3myxI02@y-P!2g9@nQ_4#ikW zwA<@QtZ@z^bw!irf}821(aciS&K*{)E*!rMgZggd`w=!vEYg7!Z)uay3`&CDVx1!j zy7KoFU#(Tfnx~&(X^_KKG0{X#Fp=-Z<2shI)Y;uAas|)G>p9$Z8?AL#V0ZT^h_?DG zSk$^udqU)-$$68A?C7(&SU9my!U-4 zJ;4cHh)T?D_0_>>d$VJq^C<(Pk3zwV9Nc1XxWH_G;@+X^0tzAv7`?IYa3kUpYSQ{s z-A}(5a7YXw=|_~L$gkWM_un*FgJ-?qN} z8^@j_&dsiKKlk-y zvW_bvf3d{Pqz$ICxo{1MXhs^+=e%)Ga}HkQFu{+Kn3hMNag@x;-*1?Uh=~QO1S!ci}>nA}ciXsdrF3RPq=I zI8GoJ9EIEzF)fvQMtbOtQx+C#>FZq3L>9aLC=0A z1vG>q44X<7i1QR*1ggL=sN`g{P0(O7GZ8~27kX5P!A*~jZU1^o*F3b79j?{Q4(+N6 zjL&PlSqHFWM{l3Qy#x5TD)64LBx$KmTl31c$?i>7uz{y8FRK36FC4aBs(LKLSF%X~UamB5?eCyYBR>_{rbx_cCGy9R z6>c?mhw$JB0GJsaWFgqR@Y>e3y$hA=uXkK8ff1;bVU{o=_&V}@Y`%cW087TKi}bb5GOKmHpG6FTBB&EeJ( zcgX!x2(%<_l|F2%_mEBw+L)iaL^n8QGv=;fy`t4uegbvT2v%6Bk{{8eOy zTp>7feVDrZ%w?RVeY%l|-Njmwkx<_Qp6I0-Vh$};Y{WjD-ISG&@y88W7W8jRx;2b7 zQ{3}TCMIceo~#X9L5sNTeeZq93UQCSkPfUTu$1KREO=~TjkhZt}zL8KQIAML~W!E=hn#7sw z?WA(Uao?S%A1l)9xu0Y4C`sU#I2Al-?!m&o;H2btVE#dYaN7+JlMxroOC-H{&|0Zyt+8wod`0=L0dNNW zE@ohN*5Tm^+WCi?KV*eKJeYqaOLcu3xZf3WNYYq8+Zj4%udpfvz@!il2GGAZ@?gOv znre5p2~q*86A^QIY_eTH z(55to@5=zd)TtBf0ca}j`kjrDI{V#)1voKZ(qKcE;C~e2#}T z2N{cB(exI%SDiM^@x}ex^`YcpuYMHU(3bdOk)RvME`R65*2X;25iUD6l!ZbC1^)&V zvu7}=?px`^a+t3alQoU2#Qh!>b+jpD%*H^N`$fe4B?x3YiPz+5F0`NpzXul?4_>2n z{$ii5|E)4w;A$}U=blx-iX~DQ!femr1O$d5YeNl!p`K}zO~$jp;3^@d9&9yc+tiOC z6q}n*$3b-KP9LNrdaSA$VLM)9Rq~&_a+%OMg?*Vw6c8{$K+%g;4n=6h^huYjc4V}| z_jC3UL*p}a)EW3oi)Ast1Jl0Py>k(Ql4Bbjvxj%#)AHfk_Kqkm7e1=8t1ykZLqpDa z--rHuTp89uHRfLF=wn2+eM${=E+vqPrv^ipr5#i{liW6D(n0S6zL32Wdc z6js)x)E6Xm=RK_4isLe4s=+P>{3Ui;1OTmNGct+#a79<+BGcs_RRyjH=_R%`q`y(} z)|5eJR4zAR(52tbPUq<70GFK+b`Ha{cXC4CYJCRF_3rkS!U{B@J(5fT<+&PdrseQ3 z+-1$E;6VDhnsri$0bT0zgG6O4_}Nz6R97x076Fo7c7wnhmsy!QClS7qZ6=a}$l8j9 zAIu?V*e1_+UG40&`mLRHL$TLMmYF}|lslB^MsC1(B)G!W*7hD+`UA0WT|o=T-n9(D zX^)t|C7O1t7mt((IKRDjomSw~*fO-S5l>zd=G+azR4j#4qP@bK_eE38@8i*^A?mDt z;{wzOB^6&}Qo-gjfJ&=M9KGQ;cW2=?bwTuc7h9g{eBn;jKZ$z`)=q4rRfSAFw9U7{N2W*HMM7 zjPS-k3&4J47{1++D739D3`b7)#`zB$O;fSG#f?1&Qci>Yht;nLq7i?; z_8pn@B{gltFOG8`B?i-=HTDXQKl}uErK;URJK*F+3Pvt6bRZnjzoc`+7b@&bP+u5M zEU3>z$I@~&$#^)rjc63#YB-Lt2YR(#+4l=E&(^YHoE@|la&VKiDYc&O%G!hK#d?)g zCD$s)2tswB!B$8))=at%sY$oy8IxAS&ssc0X4w-|a6_*l;8d?ED8;LTlpjCt98Nyq zFh*QiIX&0?-KnG9Xn7#pw`1!Iv{>OUFPl0$k@;{ZM4a2?f}7itUB2H$7}g*t zh_kf}BVtt{iWVJU<|k}dQZn%<$Kgr+hu{4P2Ec3tyVW=cymAFIKmWXGMy1aZ9ZSYp_L${xT0I8cNKdM@LDA!r_I zj(P)r-#T}ljHY@WDB}Djnm>`&8}wDf*PAl*(ejV%UHYzAv%;M#bF5Ey!g9S7^yri@ zV3g`qf3ezjD$dsloiKT81;Qu{9ZqvXbKu2#-NYm^nzxcg;l zHH=AYHC^^s8tez9-{k#Yl%t}nQy+bNWeqrh+$p!D>S<0n?YDTn?uP5?$RFtqgBQ{5 z(5eO!rDGZ-fxsM4;e;8N?yjZiFl2`iz)EkwJ^%eZfJA z$nM?=Zh|wkQhE)*V;5S*4v*&j4`9)5czgXfTsTHkvWFXb8EsKd#?B=NFh&V4>v9ho zY7y7REhW?ZZ4>Q6XME+E8jm4conY1P2oC(`Jtx*}mE8Sm$^DU{C2R+MC!Y-^u8&XG z#<{QD(LMIij|4V`xWEVUw!>2DAgw1_MV@>k^&cqkhZ<~?#+>+(lz$NjpQ10Nd2FJkPr#;XGf@3Iw7gNlGO_qv;CO4Wn$&F_qy$3OJm z;P;1iKHS#wf?C^7^k=JMh;pB(CX@&FGAjm)xzI2+sbByV7Yb%O7Xm7{y|TqDBRF7$ z^#{tZACe7!0fw01c|cHCNm=F3$3Aw6wW1W0kGj4V#m&Uzgt=n}uRpXjnNex$tsZSL zKC~(0y$&D54`x%pDh9sT_4pIi-gvL&56jdXxpXott)4dv*a8vm^s~;a8mQz$4q8yX zx6iWlK{!Z8>rQH*X-Qqh&3zJT*u#{8VbI@o;q{LeOC^AuwFN?Vy`arteF$MAlvE+> z+d6%1m3N}>%|4b}Y_pUNS+^qIipSU2OqXkQG0%RtnXaoZ_Z?ubprP=7Qu1B(ig5Ye z#$Vy7^+1PEZ&hu!H(NCD7`ZgaZ`UnZ_%@29KUvO|$l!t$Sv0V<~ONHU|-L_k>zupSd`q;P6hM za*LY{nHSTz7T}@97c`CD($)@Q`5~*`juq3XnN|&U&{R))0TrS;Psd9Lja#kZ(2Qwk zJoBZPu$t#@f(&wN83gwH9HiLL$5ib24HZ!Wb52tGtju&f4g0T1Km`+St}9-KtJP{g zh4MIA@`yQNdLs+z88FTc4mvu}^$yuj#>Q<3F}MG@y_{=gcg9_f&pG1A`~g)$iC5hE zO!&S4Xh~C#-m}$A*x1+@kgZJ3$?3w+LDQcmzxtLWH1>c01>gh9`x<6nl@k?oa2TIU{b<2vLQOzFq_R|1tJfL2(9K*luu_KyV8XTn2Xu z4#C~s-Q7Zf;1Jy185{<8cV}>Scelg->-=Z$%X2puQ}uOEcYW2p*84nTA9Gh_qa4$m z=Nr@D%P_hSH8r=CGmZ81B;u7aUhK0{?gPv;eEKF2xeRY05q*YbJp_^}$nk(Cq(aQc z54`w`ihTBgl~;8`N1W*~@7N3hkb8!&o!d^%iH;=Vb<3GG^v$sNqub)b4V%@M820x8 z)9y3jt&M)+C+Mh3c=?JUeq!2?$&B)_c;~n05o7*vPfX>9tSfS#TB4&zHc_)bq|vj156$s_&mKML?;Q(_u$5PAh%G86C<>`1j{W${?CwaV&13M?Qws!;9e>tD91u zMluKdFxR{(lC0QuJgNV*l_`mtysh5t$~NY2=4{r3rp3z5Tm`@LF9lmd$Rs&~-1v-Y zY6%?Ba4QKCeWoet(5!plB5%HA&3?6g@ZXDowPDvKkM3pJvY{em!oC@(gXnfW{??Fn z{O}3qe9m!;T0NrAilpOAvWkCnT(a5wY!38>-E;V!aT!36?Z4>$vYff>!Nx3fX_7^-h$q9J)U-^t?e`st^X zsdMU?7OV)-%X3WhRl%7F3GuI7z)UAw8COs~vak1?%#qoOosy}Zc2!&)_vq#GTrqRD z>RGtKt-?c4G_*m6UGHcKsz8vdq|9=aJWYmQ=bo0mD7g~>1|5K5+^)KPY=Y4ihORy@ z|7+Ot67CTnER271ecw zJA4U58(4iz+9q(_t)kA$-{@SqSuc#ekUJ!mqsh7m`~3p)Z{a%>QF^{C0gcA@d{apU z|MR~2=w%UPeI|lJcTtgcgvVAG*)T#w^ zDBL?K(8}JPoD!_PNK0y)ni7jP9_ousQLagE*ENr=Nuy4JRg2vJSOJ z2-@P`VM(6bse2&$#x1-IA=chD7ZoPYUg?y9txw!Pm5l(MUf2M9D>hGu01*+F;OZ#O zQ;#k@R*mUP;thrOv@H;(%q|}6Ne$&LI02z5|H7~|&8g?z_XK=*lADiUKNC>iT4`Od zlZVlDd9VeC!Ey^jbX0&`P)>j3EvJ{K2??i+6q_)OQP%5fyMshFy;NDZNv#QgwhU6v z6ao2aXb}d&qJ-yGWa5|9&OEcw8BJcL7jXuvj)43ye^F&&{&Y7Hchm;1x^`K!tW=C_Q>#5BeqB{&< zQ=VKaJ-D`p4aT|ZK~|3{F>7;%yqY!ksp#j+5Pa~31>MU(w+toue-nKR`WhoMnq+!F zYApw~WSx}ERPR?h5xLXNr%>GXSSzXo`^zVFiyx_o4%ym08sX^}D>LPrLm9#nyGha~ zHEC0RwQ{k5;zv%2E6)%#?U%!9>}F1E5&5)@Qngr`2pk(5o3zfHdB^0c80$3f=>TN22K`&m5Dj`>}5~>fbX5 zf`}TOOqZ@Ri0#Rh2l!-}tQbRxC)tW37EXi_=OdWBQnGifRo=b_!7&f z6|+j8qi4>f{VSJFeDIvk3*q-v+}d9iZ1tX_Kt1*-xqv08 z6};z50i^!fly1Z&^GJMlT5Y_+7N_iN!Pg%y$XDe|z6sBpsZDa2l&?Rd3V`y5sI8wI zm&EN#eFMKh@#YP1fUm;h^uv@3hp2A!?8LQ5(XJKqJ6crPwDH5SY<5|Cq(mTe9~c&3 z-4yyHWy}`J{T&kRC3{B#9Dw=igbs1ptjqt3%5!uzSRfTY_x6MtGwlNt(vfQu>1#?E zAUSdq23M*`PL$P|J~t!|dHmxWbi@VE_s!5CNUE>!UI1CL=YSFizYf>UkX*px$(=Wk zSfdrloO%~DMZ=m!Uwzevi+4BAHd+4m^5D;z)!{eU&GZql(L}s$+bvC!fK#VQoE61I zHS6`YVEdc{7?YFIRBx@$z@J!{>Fv_}dvg5Q1t<~sZ4_>6E&onu?+6Nd6%EaY{T3!_ z%`^}W?Ij8I%G0wqIxvI4Wyq?BrKR4k{iV|6y3uOh%0+3fW_U=F&#qh(uRI*7!S306 z+s7yP6kMqrvf|SpiHQ(#;TJVK(0+EG_mA|Y5l3)s&|)xTcO&`)pKcM?PjYki=2f5#spWqjKpmVvIpZnu1`ms zCbZE*7tucoVk2%Xe&xoTZCrj#j?)s2B`QMR@DLa`i#b3^}D0jb+XZGSt zN{>?DYIGDaaYf(QGa#~2iz5F_PrOwDT%HonIYXY6Cw&cotqFR}GY^$dvaS0yPU-)&nzkRW<7qvB1P zY^m(^Uc}>A(!^Xm@}f9}*?-A1>+x_yp{FjLiAqNSKOZJ+yB%HmH3V+ ze)9T>i~2+KW_UnYWr?KN=hvtcSFW>961)@lO;v2sd*D=Yun+difmVuQ)JmWx%Xt1J zyPtgxqbzbu>-sasd!->n#hfyM)YjxLtg4+oHE)1U+$M?kzTZ0!qDT; ziQ=3Qim!y)r%^GtA={%&n^l%zc&?wI={>jbk<+oCFYu!+8FsO8Vv@wkT3lR)pUQ`z zP0txSEL6R1!1C9YFG};n%Jb0yos&0TKJv&HgWKOnTB~%$FC@taZvKc>4?gpW8b1w2 ziN5l-j51Er1LF5=31b}#zMa!d9eswY&7pJD$A4t?AjL-!T(V=zEL==m+^XWzFdt?+ z!2K9*Gt&C)gKqf_t6j(!7IIJbc^lgUe=lsUInc-E=u}sRd(PS7fuo!63<<_1+F#{HldxJH4D?J5LL&PK zD`5BU&sMSr_|}Pr0zM-r2lwqv0`@`EDu2wk{h45_pw26zmX?-Uzje>d%p~EeU6iZ~ z|E=Ys<9uMEuc`Kl;-K*qh?(K{Uha80yy%Mi*L9GY5QmwEDF~iC@Q% zMNnhQ3WdLu1g$R2>utr*IpiX`#DhaCsYgk61YR5|^a=i2-9b9F=Gpe%sSr=9w8M-g zqk81_T3xD~nAX$h*y@CZi)Fj3)Tx}Q-gXhcabPp%fz>W$@aCSP4stC+6i~vec6P_J z8O8e^e8lX8W2da&zN`ei0TE1TLd)5-^K+S-JW^gds0iZ6Pr#k7ZJXaSxqCcbeR)o* zTPx25gM3Hh~eP6AE<#uY!aDXsXwhX0r08 zdP9Oerd_ZjB4SWF)bWGJ+;Rz zkyW23J!zf1cmLR5%gBGB5xa8ZMjs0B0NyA{z!fSf!2+-8jqqonsaNRvBXQd^Jyu5& z=i~qWp{*;5n;@5^Aosc<)jmu#m(fa-eaDG0?Cy~>W}A_8aJ*WT*c!I4jF?nwv|Twi zjPDPQx}GOMD^8Ok->qFRK0k2L<@v;A1f!o@M3dWG;`7hvKVu?*V&RKI-54Gt&tzhM zjjY)>XXz$7gKPdjcx~=TG*rK&-?5AIV^8`7y2xH*KHtBOdjugQ>(d2U!+7OW$a-M) z;Ce(^T0FU>>!?rsA`?q)t)~jhYaC5@bmr0;U%j{0QLO@&!?Aw$DO?&8kv262I)5Fb zZX>~G&8a5*8Lh>%sIJXoP7NtAZOyMfCHhtb)SrA*8__?Kn0%)^dlaPH(WH9t-oO<1 zBeH>c$ht)U5Jy9KTE4v+7x_idabDn_N%*3{xCU)2`t_>`Tazp)Uy=mbm@eM*5Y=eQ zZ4<;zRb;u0^s<2})4l0{U4Qn&{DYZO0(Vjys{GlpY32BjmFHRnKp%&sw`g{s!H;eQ z?db;F6W&-Y0%aPvPbeKov(&P?Jkn> zBiQTG2i;SxHTSo@z>JlhG8A@qV3jXB@5q_RWgBy7Es`dFCk;(%JBwuII$yo{`Ma&R zUclEf9^F*pSvw@S{oOroer$%%`()u@QxxoiQMI4*+p}*ad8N2jQJY+p*^i+wGZ=#W zje}(b1@aauLd934)W$9zd~B)x8BZGYUdsQTe_sHZY9Sw@VNwUREPcZ{wpz3f z>fdb4?yy#OJ2`Eib)xoR+^CJ&jYie~-Ioqi&;sg=@c_phS|EOx7kiDmktB|Lo%)gZ zQHw)koa{DBl*Z*L1(}reTW(lXzX~Ch?_>s#Ix*tTSRAn&$C@EK@1Z|g5=_XBv5Gyu z19Mx@Nt`I}NqkxR5Q|jUk#%DR`4{I7;Lej~I`H)-yNGBl0F=f*y`6p`ai{dT8@Ke& z*O`q!_n0`T-hsHsI`slk)v}_4t;3Q+(qPeRDvHtHOGJ0rFwWB((wSRhnX(wISv6G4 zsBGVNFBVa~&^tJ!^064NDQuTbBCkbL0tkNm9)22ml!#$G4QVSbFwqN}skQP;V$R2c z?Q=9NR;(Z)9-7>G$p-p|oK!6)q^3G*H@P4tbCisl#)dlM)qAn)q*>0wRuy1*e!ia9 zXDFxhbDnMvXeQ6uVy0(k9tB)E+`yui`EGfxI3Pn+NvVAQW{$66;WhV$m#>-XFu`04yNx)dm+{@2 zhbZQ{hA5i1r+#oSUoIE9l5fxZzFvUjj`819CWP?soxToO;(K!_nL0Tot7!!(sjqxX z+v_|yvmbqOxWMGRoo6KlO-1|3aPiSjq@ClioEc=MOji%n%P;JMd|hk|Ac8N1PF4&` z`5~E!rl!058f4@%7K`CugkR4;3Ag%Fzx*`=RmA(1rh84~ZXZnj1r_Ry{SSlY6->Jy zUQ!<@1ZhcMiQ}9Um7x^$83TBDMe>wn*~6LGoHM-+=lH@dtgYX`_n7N}^`Cx{h0jBG z2jUk2Ff6H*5Ornt7U{EaoKc#riz#$dB@1M^AbYHg@uR-ZpR?a{=;kA6^M0S{q;?|l z6G`e>6}49X$VNcs*Mb@?-G3I&_qn=i`ON_nSLJdWefsq;AAhd=e@%U|dl6>?exZUW zjMY|eA%~dedKhgk+Jq9wKY!71Y8eu|lJIGDa%P_tCH^Tp_;kwo1q~+SlOoOf9)7LY z342N?HUd2h@`{#8ew=cb2-WMjEp{l6r`v=pI;E>8^ zpA4yon;0Zaw?OIb*!Mo7y>}>UD@a*ehkgrbyD9=!eS zJl=h|!PdFV$~b4LLxDQ63B$^}6zLP((`~hw?rp`0F=PBuq>q=OV2Zp}zR z9;Y8Wa};4dUhtg7F0NET>hhG!FW)!0ieHTSy!;$FTi$!|ibb!Y;pm9UE|&8$_fk=Q zF45QQwK<3PdDWWT?*e4&N8*>y^W3d9xjC8@g9o?SD>=7yLJw%wEXx1J*?odP#~yb| zLC1WT_Ds;1IZx10F)Ugay%PMt{|HPekA{u+{$)T)zo3P>DdDX!$ovRH zhVD4#y3_R&TFWJIQU?GOY-N5Jk-&&p^Em0A0}cZEwL%gG4AKjC6gc(Z>F1#_g;VWA zws;`!RPpq4tE#3P@m$&o@9s`>9yBW=*xZ!Xob|JZ->ziu@PYHWr`QbTB2)S z(q7}POA(EDbt*-P4ErQeuZqodcT9o*PV_IvG=ccwz^V&Q%4Zs)nzm(U z%mw*>!V0)r#>O?0@?3QnLf(zTRrF9-D(R0H=UaTZW$g-RX3)*!aoMjq9UZ`9y0#>$ z-v|0rS7^aFO|$?9ham}7-{9!CT%eOz!7F;+yKkqM_}}^GF;%%XN#L z%b(Q>99kyB&NXa>T3^Eg0WRI0pebe3Oscf*NU{BX3Y9e4 zp+BSHiS3_+yXmGMJ28<}u1TvGRC?qOVN%F<{25izN=zP{de?w?MDC)(%>EwZYw@xf zi!HyE<@vb*fZs9Ye^i+2daXl*&t*XIu4xY*DnZc?YU2)s#Ou6!d2hd|F7Rs!Ve=iheq&)`RDn5+zMx~dW zE;eFTYE2tqo4Bk@US zryGw<6H=8Zru$z$ao>nXMMnFD?4?%18(ABQ4F{jqXq%X+MJ9AL)70?L&>>00u(Kj1 zwR~;{D*xq`w>-Fb-Au;=1+6XFP_#X#&EgKm=GVceKqtP&_vO5?DZC7P*KntNva?j5< zDvu6`EQiS8htK-Ni>+|@M*lo|Di=a4Z4S5Pd=%)^qVE{m21%$vrkHNL!OyqybC7ik!(6O2T0CS6gobvg{tC z&lIrcezOkdK){*ds%B?ozGB(5ZO~Ums4$GM3}U%+z{u2EE7IK3_-bE*D4%pE=S?zJ%i^b>bgcrm;)HlF zokN=hjcDm#P1*f`H;tyTYN1RZh|xdmzk>+a7y22Viel<=ApKFl&ild(PC7!$ z$kX?+Jo7%#wVw5T(7woa?f}{Ed83FmGO^bQJ)wwKI>stPT6Jxz|93DJa?olnhf8{9 zQXqkxzyP1l2pp!&&@-8N!p#CyuTKT+;Lv|a>a`%ix!{NGg3s8vn1qvw$YxjDc2f;wBFD zZmTA9$^NGJ6S4+s!J>ezFkYqqEAAXm==#lW{j26}jsmwQI}sYv2GL+`&Hbk3_Cvux=oOA=)58=Y&ww74~o-8g6Op<$e{;rc9>i=YbCA(qzx<9njP0dpb8?1zb#Io;g|pIQlkIw z{QvzXhSYH>3?VQ4|9+Cs54fNI(=d;&5l-0&JD+^^D@TF7*MR?bf^4pk!oNx>Vn#Gp+Z%7q;Sey5W>IzqWOxrVib#$FI!s5C zH)?H8AWgPhLixXDXL$AXYG46_DUzF$e3*M1vhaA_PLsTPtho6L9bh$@mh^%UEbWtp zlX4Y0Tx^@c45J#(v$6~J_hh~Di!^9*B-T=?CscOEj#`al9qzkBv4v5=zzZ)^s)Adm zg$97wQ>LZVNr_iaOHws>^BK6=*i>$_k*96fY^u+1NWjnE?653psL5{yE5iX`H=TbM zFdY%$58grTd-LEpw(=j1qdoh}lR%KOVWqBR|GiVXfZqRUfWUrLU%N7UL%C?|(0Iwt zudT_h@BIW#BIccKoxSRSQt)vTPdGfn`V*Nu7{1!^ug=?VE_!eO50`6^JaHK(PYTTg zFp9Bl)(&zISnu?I7%@5a9u%&;)L-ok+W%5nPk=Mmv6O1G&)ZVv zqB-NwD`tB9i;oF)>H2e+ITFmP|_BWp7Ir(pX zoHU<}!-DAF0dY`J6tTTRtZwvwi0SB=*^afQX@Y07VIMcvxa?M~!{9H8#ov*GS0<$S zaDiCepXE>wBQ88M_9l|Azxc(3 zH}P1_OcKQQWWQf4^JVaMQ(Maf>6(ra!}#@*X)-i^Qc(9RfCjs)NI2E{njuhCFD@Yh z0Lp;nLMkwCj)#L=V$BqGbiMxp^mP)BQQ)G0&NhFZbjz>j!T?gr^;( zJ-cft;^bGZ?NVfyRd!K}Bua2jI8}TmIrrj`ia(I<4A*foQB#x0ETF{cuN6P4F7xEK z4Oz297iAGb+}G%0r>!wjV}6H6@Tl-2vOR9p@VHH^@q-+m)4$)N;f}}Tzjx?=l{^r{ z8nAkOpdd=mk_a4R?&0Z@O7Se9+v-m zaYb2gXVGq}EY3(xI5#mbJH3HdWol@e+|Z~~<@(JX#g0OQ0_#^#joDJ_OQLNpetWO_ z^p`gV)>%L7d_V8EJ+dneOV$u9See$+;926IJ2%YuC)%<7&uyh)yLx!X>X5I%-|vgN z!>qhi7&KyrEqO{lXyPlqN}?QcsXVrNhFkj2MUu%s<5V*-aDi2%H5)tFN4r$hBOco^ zL}=r_pW-9Skmp!Kmgs9E*VX4eiO<-(5RbWqB#?oJd&j}Q{Ez!bjQ{g&wwA>|P4%F9 zIVV$-_0QJpOwn0MdKjfAC6wzsuZPDg)}57VaATE}*{pk!R&OLfTFhFjV@z9!+Xwq< zpyxkW8@@F7fQ}`Gd#oB;#B#Qn%0rpu?dj{1)gbRGEER231I~m3Jchk9@Y*wjM)9ZC#OErsHrBLVof*CMA6_ ztAfzqrX+19ki&qCcAp>1e{j5>yw79rc{X#tv?x#2CbN?$q30g;%EI)lHUwZqEx{g- z&xM<#2x0TJ8D5{c>MqA)rq-v;pe6N9a3>0E#!#w z+|SaS*M&1~p zjf3JP6re9(Z3FA=gv}k0#X0-uPPXLN8=xg*MEb>~DN6%|G|c2fezrOxz5N2F9 zqSVwUgtv03q#Aso#hXPvb*nM*<-lDiQ=Km=ZT zx|4Tx$#``MGp3#RRo`1ixgW1GTuwbR0sH24oq^-OWwAr~?d2(Ggj*l*EDcxNEml^L z#+m$L+y9r*%GTPIq26^>#-AckDv43IB?PiTULm+up{Jkdj5C#~Ntwee9S0sO>?K>{)=PnQ}HSdYz5wNX4zPJCb zT4b^w=&>@w4QVd29?p*aNUsFxKo!5sJ8nMg9n|UjL#Cg-!08UZRp_j?`$Yd~()F?M z1N0_*uRkw*#CuZ(p_rUj;ehBp+RB8jTxy-wMk}OsB{lsg{C<&Qp7-l4!he@gdvG#0 zU#Qh2vK>DFOOACLky&S-N=|(jw$9%GGU_Tz6JaVO5&YCezb{k(Vy&%>epG=#NAJ)> z>OcPMt}KF+BD)K(8T6m$0v@t-?7uo+k`WbUnqW&Mjcvl8<{jJhdmRI>_wQ zV8&$}4{0i7A9fF74mz~_i$fG0yb;V@e^wBUx4;Q%j*F~KPrr_$oMfjP%X);KpT!?< zmY3<(E*$E$3JlaJR!DF*9Y4KUoVI^Y8wj2Xyk)=CPb}qiQIpUf#X3X6Srtf# zKjp^(F0X@E%SY~^rSSU;d;_(VDl@+TirS65nxoHKBd+;InGAP~d~HtgFtukLQk#z( zXrJN3h&am%(rYCuP6cu2yRirhrVlw*8jn1VuCi-p&8-m2S9Fln=r;Cn?7J z{?{qS(Y7-mR1@i(AEC|82QB|FE*fk;fZ;c2Y{B~791Q8>*n;XXAq7;-j~Vq1sU0IbW{f&KyQ9WHgEypz8M#0ZXF3f>eiOyRP zSGM~7Q66hNIqAITp(h*;PzSGTZ27(KPBJlc;4Yt1U&Hv5o;x$=8=w8!)R<9A-&zHW zm*|di-Lrjh#xZ#_tM}KZ*@N+yF`V53fg*#!jU&pJh99aKZS6XMPHmRd0rR^R|C5UX zZs+|UJT|o1m;0U?>;_d1E44%7hITE=c3QxUFadf*K%b;c(&$Bx^&%hHrk6IW(C&6q zHZA&!#cwOK8P|?ES(sYy1P78o$25G(R~6FIq5S$=cyLKW0A4yrR3L#&PVxXve_G0U z!9f1EQLT-PZZ&RWomZpoqVMPaGYQ1&Z3aj|>cSNSoiPW)VUHQsj(~{=atT(R1pJB? zvt&)yj_nZGU?o&W6T>KMM|ecoSsLHNWmf_K4IhtZX?~1=n;fILe_>1q(vP)sa>=GD zznACJrPgj%YV+FuPDOT_rHU1|{y z$#=OcY&{DK=pQWz%G1I2uU55%+23bO;pCJ92dZ|KExzmu4&Km8QB4?TF1@@OI_aAA zC*TcnK!1E4m3C#R*F1pl*ZOf*$vd9LKjR`5W>%!J$}0`u6tZv9E)`hnMsuZ|SI5}= z>a@V~iY6wUCTUpo&WKg6cz^~}N~3B=yb#26L9R?wD{x?8iRQmw?CoK4c+lW>hB+@* zTYNbfPk)Fuv0!fdmd1D{`d0REGgZ`=57J7tDVYnaD{cZOlHHFsiRX^fhaSYr2|(aX zR>21t|FAS%E1*e^)8VAZK0W;55}2)e;8SyGLEz(Zb-icLI09fL|6HIVdG2~iIBPro zxj9ifA>xz;5pp&$B^%66awE<4AD?B}{jTPPTo&1(3^9GC;d!E&|L5*Iong z4t=LPq*PxNxnQ*S*|9x$&u(mJ*uStOUfmWF;5eKs$0CtRvtwjrPexMvRXKoYGCPKv zdJ;!SoMY+p&5dQzN+%}^mPJqHpAebc&rlh6MKc4mn1k5+z~8V(>$Fl>YPc&ZoD4@t z++0c0wFA&z-r22UVgf_}HQLh1`>y_@4B+#N!hf;Xe}&^|VH-Q>*AN~~BJ+Plhqn6^B; zzO}t=i-R?b5HA#E3sA_;+GeGH+)r`*l&C7%T!7TBb#R1{F7+(i$+7}$y8-qEF?74F zGJBjo?!;6*wpUkNTi>;A(*Ts$Zru_W;?&Io%?>(*TxVYf+wBm?1zG?Tqwy7|y6rC) zB^#e9p@_OWXq?G1EN*`dHn(2biv=NmZM1R&s?Qyh5yy|n3o1}GA*uY?h~WS0+rA&^ zVD(RVS;2aBA@N`YRU7j`FPu?Ysk;wMo?QBndEK1+!ae``@?Fw2bpOOSidMTls1Dg{ zZi!Ncp>ChpwjD0q^*_7H=KcJ${Ty0@-D5AinL>t3~vh zlg!8Ox4-u>8*!C`AFX4{M+u;If`>Whm+7`^_c4oFmtfJhkNSAI<&tk(WqJX2{_ zF7A&MuJY&0HnDqRO<{%~jOL(Q=5WXC1Ox%jSBOG+0@8;$t7E9)BUny~8AIKhTnbsF4FOIA1e;nziYnTDr$`hu4U7558S&of%xlJJ;dQf3KPeH0?S`iE;u?+%tp zx@Xb=JpAT$W@oUCxyZsS$TWTHm~!0yy~9zLLP=WZq+?2dPa8M*JnK<&k7DjZru_qS zY~i5OjU_WJ!wn-CL#cRp7P%kkMPmF5^e2em*jJNeG+Di&GH6viJPaTQZpJ0{H0Z$I-8QYnT8&TsTphh6H-f*93 zMNpZJO<$*P2i$whACIp8%P9rFx4~ve`~95HS=GY6N`Orus=}id(47R|X(46=)!st1 z2{48nCt6t)hLhvWKXhWTDSm11--R{_ZZ!2x66S)yvb8)UXY=DK|Ap8YO9>qJ}JqsL@=TqM!j znoPtqK^>kxB&>~o%rtR5zk6+`bZ;}z|GM<&*Dur;LeMp1>9ANCpx_t{#`ouZK_bvg z74escYH9WfOwAZWP^}?Y&YQwhY6Nl^GvS|YMAqoka-X{|6}%ytn4@cak6HLJC8&s` z91FmUNpmZTJ_23n6JM5Hyc-OiVo-6aIu&PV+XTEOPJ?$VFGRIcRC(xJ{qxEYIWCg? zp^f(f7KJml>6JFkP;#(f#GLPQ1jn^hx~`#wAG+nA6Fk?#0TZvu!(9b5Jnb2pEDVh} zJsTTcUGIEaG7@VMBT5(x8Dq^OepMIc{X@ZtX=#q=ERjskRRd+ZP&MI>Ixgun9&evx zWh+<=tYH{jtC7~bWG7vE7p!{hR~#(Z4D#ie_q(F0)huPJIXY<;j|8+xTC=}We*BQt zKFE3i>>XJ8E6*A1gS{!gpzQN~Dhy+4tYdia#L^t7b5|&mb!v5Yc1v6P`$zxYA9?6C zTY^@zfL_n7ds)f;uSl%!!jo1&c1#9t#-o%z>hn-Cb7?LHLnA}VdqmGf4bva2&ODssJp}%P4pzlo~&EHjSt_&{~>6+gK{cRqcr9lqsufM8F zkE-=%>Req550bsJiuRlH+bj0gA3gCMnp%$~+&k@;%>HV6=d0atPs!5MQPhDy(Ejhe z0=!3=+cq3u>?cXmc%|2tTpYBOKR<$_`C=kr%>s@jnWHcVs0_`w&mZrtJTZ>RjGkwe zJU^y0FLgGU9EER0-<2hMncLb}OHcWJ4ODWSf%R8c`HMnKKSIY!PJi?GOky{dc@=Re zb`|EKw>-PHwl>R__I}6(=R3WDF_~UsxlmSoKFR1y`ca{!D@e^RjWXda;?Ke5se@}0 zX>A*6>sA%UN8>4BeM1X+$ih+9+DA}xcdhU+r}rO=1FBU#m+E08t9c2@hRyq(ffk~l zB;v|CI93x~|e%AXX>OYB_<*p(Io#qtK2m?A)MY{jdOPxGfKCN^p2~cnqkfwYZ+ z7DjH1hj4ILw3=5uHE8>JQoEntS9ZQXua>FO@z#HuclZ89Qet0x=Dl7jwC={09_AJi zh+E^f1N0z%fpM7rcw z?BZUk=~7Tf=4Icwy>C3`Wier@jQ-418wg-8NL=hW?|3E_U>;QSP~^S;y}8rhD$yI) z26Gw!N=1jmT%uvW5`Bf~ZY)&h+qW7Y$TW}iy!4n^Ty}8i7;Mr|jggDQ;aa{OxU;UB ztAPnLUv2gh@zV{AMa8w{?jSm##Ic7zqbfMqfvH{DgkoK=*HQe(IS@7v?DS05lG$4n zd!dur%-(&i0B@k}_N|wGRDnN;!Zp{lC(b0)t2$ba)dIXq7Fy4nBl_;MG?tXVQM%;s zr(}E`rNSfMObQzl4Y683R6(vu?+=S8DxmpuZ|}M5Sv@ z8De4G&4^~2%ez%nWrwgcwjbRGkJPF=Gmtx-TmL$X^2r4a*%oq|VENL5L80n=G^|F~ zbzW7OR!gxT7H$xMdTQNuJZ5x%A5sOl;OO+jj~3!ukfo@MYKsv?e1;wtq%x!HO*NXJDJfl+o zIFI#)@fC-gpe2Ap;;^cWhox#Ptlm0_Ue`|scS&wOFPKzSP8yTGTx?-a6q4hstLNIF zhGWyQfjR(fUUq=6n4*hhItm?4IwKUv$0}b$xa)a&2 zUa5y(uXgSIX_4Zm$5G(4T^Y;F9DSH;JpnqYWnL)mmX9cUs;r~1m4OLS{nlwQrumzSZ(!5YpN;#+K1QS5CSz195;5Dq8HIN4xz))BymihwWwkHcJRhd**3Pe z^EkO5>9F9pd=yrGF9bB$PR@>`HEmQE(oU>dAP>p@_w?5I6LS|<-L-=CLQUeB>w<>0 zC?|C&PA~NsDwH^F+=ycWJZ{k)&}>^i3bm@56BFzNX5&rlRj>FL%ewPUT&q80EX!o( z84Oo9Odh%qp096(N$f@~jn*sGIc-1sStlM(>3WG&WIMpjo$}XK1IfpnAg$1kp>(aF z2?Swhzkmr!kGdJoiHtk*&g3ZjByw;6gqleXjTIoGnG@sCY2gN%((sK*r_yIZGlO~B zk(|4gTv~NSe??oHF&64Q!K6cnViXMX>0|C78@z)Y2YF^k`d0~*6NmpYv;byJp8j|uWdT~Adn zFT!A5aC3EiyR#5HyqREFwhisMC>1D?8k#N|jv^^9nx{a_JNYpR6cg5JGzbQYoVk3i z>*|Getf}kp?_le|I^-;KeK^HajVpAQKc11SEXsI&SJ45 ztg=>-NF$<3dh7~WadaI)Q0cAiq7|VPS5m~SZYHAR2yKznk*r0FAWDil%4$2i|HA&_ z``i1z_jzyT&3m6W^PTz5OYnzzTxao_!+&P%m~XvcnkM2re%YxRlCy`G1NqsBgDWX8-P z!WXHHeq7A!NL-@Qloi7V{T86Lt2_ho4m9p)t2L`1veXmO?b|c;;m&K6g@Quh;F7&+ zEByteDQl%a#cu$ri%A*Vu6TH%uN?V&&|3G8%b%dZ_^B+4$~IuyZX1bKvj|<%K-s1p zd^e!DWiDuy>E!qLCpyx>s787{;g!J*TRSR?9BvV?xS1G5TVU{EF`m7D zR`O_?Gq+RmP}%940G=|1np6PruP%uryaeGI&LWR3?>g$=S@up*Ox9nX;xT%S_?LEU zth9E^mu1YdKy8_*z_ijp+WDK$qFhj{XOIL@G-cjr~t-6@$)Rw<4eBjj;jfcSpt1lU0KgV{nyF7ggRNgf}B0@*h zpB_eg^*Ijv0FCVExc=C@arBy7AtKPXR!ywj1d*Ogs*cA@utIp&)%chJ|DFru4LFPH zy~p9Lr(%}ySmN0S2+55ytsVhI@J50LqTq@fRp@o>_sQ7%c4pQK0h>{un`mLkXy|$` z6}Cs;qlZxhM+c42i+kG_y6~sx{^mPTZbgfdB&5l?dG+|b^Wt^3M{_6}Mg-ATgW6x%Fi3CV>#r5fJJ`zeON}Ro|xIu zO{QAJFy(O{Wz|4kM^Dp@_b5OGO+3kr&hSJa>*~#h+mFBLWrTgts0t(EN(i zVV9~lPm8rg@)obZ@Cc@>PBHYFyexB=kzH8MyKI7D+geN+qxsFsstS6xH@ts zGBa1@W%2mNGuBT2=*(48qngmms-a;fgk&_W2~E4av5tsI%~;^@cfvS&2(#|4q^Mz1 zrfCc;bWo8-Dj&3hf9$8$;M5F8kj6G1Y%8xMBWbB4q1^El)|$kVu9fSR9dX-=OgyP} za>c>q1(?PY_}IgCV>vg>XWe9n_BLfS&yYyr23f{Sl~*d7>?^iW%HnXb+Sj)t+qH%H z_S;runMDTflpIxGE(mEq<@UV2Y5j3+4U9/ThunarLauncher/sendto-desktop" "") +; (gtk_accel_path "/ThunarStandardView/create-folder" "n") +; (gtk_accel_path "/ThunarShortcutsPane/sendto-shortcuts" "") +; (gtk_accel_path "/ThunarWindow/view-side-pane-menu" "") +; (gtk_accel_path "/ThunarStandardView/paste-into-folder" "v") +; (gtk_accel_path "/ThunarWindow/open-home" "Home") +; (gtk_accel_path "/ThunarWindow/view-menu" "") +; (gtk_accel_path "/ThunarLauncher/open" "o") +; (gtk_accel_path "/ThunarWindow/go-menu" "") +; (gtk_accel_path "/ThunarWindow/open-file-system" "") +; (gtk_accel_path "/ThunarWindow/zoom-out" "minus") +; (gtk_accel_path "/ThunarStandardView/paste" "v") +; (gtk_accel_path "/ThunarLauncher/open-with-menu" "") +; (gtk_accel_path "/ThunarWindow/help-menu" "") +; (gtk_accel_path "/ThunarWindow/file-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other-in-menu" "") +; (gtk_accel_path "/ThunarWindow/detach-tab" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-tab" "p") +; (gtk_accel_path "/ThunarStandardView/sort-by-name" "") +; (gtk_accel_path "/ThunarWindow/view-menubar" "m") +; (gtk_accel_path "/ThunarStandardView/back" "Left") +; (gtk_accel_path "/ThunarActions/uca-action-1631667358111140-1" "") +; (gtk_accel_path "/ThunarWindow/close-tab" "w") +; (gtk_accel_path "/ThunarWindow/view-as-compact-list" "3") +; (gtk_accel_path "/ThunarWindow/view-side-pane-tree" "e") +; (gtk_accel_path "/ThunarStandardView/restore" "") +; (gtk_accel_path "/ThunarWindow/open-network" "") +; (gtk_accel_path "/ThunarActions/Tap::create-archive" "") +; (gtk_accel_path "/ThunarWindow/new-tab" "t") +; (gtk_accel_path "/ThunarWindow/preferences" "") +; (gtk_accel_path "/ThunarStandardView/rename" "F2") +; (gtk_accel_path "/ThunarStandardView/sort-by-size" "") +; (gtk_accel_path "/ThunarWindow/sendto-menu" "") +; (gtk_accel_path "/ThunarWindow/edit-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-with-other" "") +; (gtk_accel_path "/ThunarBookmarks/b1c087b4bc214afe40ca5ce7dfc737d1" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-toolbar" "") +; (gtk_accel_path "/ThunarStandardView/invert-selection" "") +; (gtk_accel_path "/ThunarStandardView/make-link" "") +; (gtk_accel_path "/ThunarWindow/view-as-icons" "1") +; (gtk_accel_path "/ThunarWindow/new-window" "n") +; (gtk_accel_path "/ThunarStandardView/forward" "Right") +; (gtk_accel_path "/ThunarStandardView/move-to-trash" "") +; (gtk_accel_path "/ThunarStandardView/select-by-pattern" "s") +; (gtk_accel_path "/ThunarWindow/about" "") +; (gtk_accel_path "/ThunarWindow/contents" "F1") +; (gtk_accel_path "/ThunarWindow/open-desktop" "") +; (gtk_accel_path "/ThunarWindow/close-all-windows" "w") +; (gtk_accel_path "/ThunarWindow/zoom-in" "plus") +; (gtk_accel_path "/ThunarStandardView/duplicate" "") +; (gtk_accel_path "/ThunarWindow/open-parent" "Up") +; (gtk_accel_path "/ThunarWindow/view-side-pane-shortcuts" "b") +; (gtk_accel_path "/ThunarWindow/reload" "r") +; (gtk_accel_path "/ThunarWindow/open-templates" "") +; (gtk_accel_path "/ThunarStandardView/copy" "c") +; (gtk_accel_path "/ThunarWindow/view-location-selector-pathbar" "") +; (gtk_accel_path "/ThunarStandardView/sort-descending" "") +; (gtk_accel_path "/ThunarStandardView/properties" "Return") +; (gtk_accel_path "/ThunarStandardView/sort-by-type" "") +; (gtk_accel_path "/ThunarStandardView/delete" "") +; (gtk_accel_path "/ThunarStandardView/sort-ascending" "") +; (gtk_accel_path "/ThunarWindow/empty-trash" "") +; (gtk_accel_path "/ThunarWindow/view-location-selector-menu" "") +; (gtk_accel_path "/ThunarLauncher/open-in-new-window" "o") +; (gtk_accel_path "/ThunarStandardView/arrange-items-menu" "") +; (gtk_accel_path "/ThunarStandardView/cut" "x") +; (gtk_accel_path "/ThunarWindow/close-window" "q") +; (gtk_accel_path "/ThunarStandardView/select-all-files" "") +; (gtk_accel_path "/ThunarWindow/open-location" "l") +; (gtk_accel_path "/ThunarStandardView/sort-by-mtime" "") +; (gtk_accel_path "/ThunarWindow/zoom-reset" "0") +; (gtk_accel_path "/ThunarWindow/view-statusbar" "") +; (gtk_accel_path "/ThunarWindow/show-hidden" "h") +; (gtk_accel_path "/ThunarWindow/view-as-detailed-list" "2") diff --git a/images/foss-asic-tools/addons/xfce/.config/Thunar/uca.xml b/images/foss-asic-tools/addons/xfce/.config/Thunar/uca.xml new file mode 100755 index 00000000..e306d062 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/Thunar/uca.xml @@ -0,0 +1,13 @@ + + + + utilities-terminal + Open Terminal Here + 1631667358111140-1 + exo-open --working-directory %f --launch TerminalEmulator + Example for a custom action + * + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/Trolltech.conf b/images/foss-asic-tools/addons/xfce/.config/Trolltech.conf new file mode 100755 index 00000000..94e31b17 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/Trolltech.conf @@ -0,0 +1,22 @@ +[Qt%20Plugin%20Cache%204.8.false] +usr\lib64\qt4\plugins\inputmethods\libqimsw-multi.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\iconengines\libqsvgicon.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqgif.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqico.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqjpeg.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqmng.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqsvg.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqtga.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 +usr\lib64\qt4\plugins\imageformats\libqtiff.so=40807, 0, x86_64 linux g++-4 full-config, 2020-11-16T16:49:06 + +[Qt%20Factory%20Cache%204.8] +com.trolltech.Qt.QInputContextFactoryInterface%3A\usr\lib64\qt4\plugins\inputmethods\libqimsw-multi.so=2020-11-16T16:49:06, imsw-multi +com.trolltech.Qt.QIconEngineFactoryInterfaceV2%3A\usr\lib64\qt4\plugins\iconengines\libqsvgicon.so=2020-11-16T16:49:06, svg, svgz, svg.gz +com.trolltech.Qt.QIconEngineFactoryInterface%3A\usr\lib64\qt4\plugins\iconengines\libqsvgicon.so=2020-11-16T16:49:06 +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqgif.so=2020-11-16T16:49:06, gif +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqico.so=2020-11-16T16:49:06, ico +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqjpeg.so=2020-11-16T16:49:06, jpeg, jpg +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqmng.so=2020-11-16T16:49:06, mng +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqsvg.so=2020-11-16T16:49:06, svg, svgz +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqtga.so=2020-11-16T16:49:06, tga +com.trolltech.Qt.QImageIOHandlerFactoryInterface%3A\usr\lib64\qt4\plugins\imageformats\libqtiff.so=2020-11-16T16:49:06, tiff, tif diff --git a/images/foss-asic-tools/addons/xfce/.config/bg_sakuli.png b/images/foss-asic-tools/addons/xfce/.config/bg_sakuli.png new file mode 100755 index 0000000000000000000000000000000000000000..1158ccd691362bd3dca9d6026c94b50cbb04570e GIT binary patch literal 301472 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

YrAcvm(`m8+q*-i+N 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%0ADsW^f;sdn3XphCuEw6N zJLeGs!l{Bo+hE~1RD7ax6U-f}FxcWy_Dnv6$mpcoo++fvT2R$!ao zk+OkMd>z?lfaXiEcOEwmqtjr+w5fe}({n6>4Bcw$z3D^WyUPrZrAcn+{!%NN>rOx!QtYeCBbf&v01XwPv+CP8UILHLIl+ZrT>m-}LE z01C91s%mOA#l(B1zfp_PiXPPh_!GUlD68t+5bIey^C%x#LSNbUzlVSMe++st>?p*S z?@7cWiQ+j;yz{`p_{gIDs_I!55g+%H(LM>tg(Nd$w?ON4tKGSsu>b@1?;o_$AV8NeT z4n#2_(ru;bsXz^wmys>rE;iW8i!kL#?yBPs;X8HC;~_*EYqLB;Bk3hh`*wI!wE5!k zVw|}7IW)b&;jHb2qUNtmrAtSWJDM&bq!8y(J7NHErtOL|V3Z_=oe}w7Lmx%w? zyv5m3Sg!y}UC+W~P84}vx?~ObWMqRS{kYBS$8#1s&yR2r&3nPEi1V_yk?u-Vt$%6h>LHJGt7hesF5<8w^h znDKalHA3TzUsgnLULY~l+Cugdb_NPc$8^9R0W6K7#+!wqy3Ul~9by)>=@NsZPnSXL z!_A(+ds~}#3uuqVl<{3(XMitjvEJ`77AO zFJ%9kx;mKp;yF_$YV5}eEsQZflC~kfr5L01Dj$bIStZ6YP5?$#6*5}#V%2d-o|_&y zZ^nHmV{7%t>71fek+4lSA)l1mR!$m&dWT^6x6O%nP0O1t$8aUftnh$RGzIF%s*%q_ zjE@}Q5A%=93PjRw(=a+qz8_Mlx>V?FrA!431)z*K4V>>z2d&yZUHe(@?kDIUkGDJ) z)7HZ~^S*A;Pv}S$l(vYmbQP(YT?aW9f7Hh*Su{aaTRcu0b^tdZpSznL@|AH+w-}8m zG%mx6l`V`^-Mtz!SY>5d>5>9uEqT+QV@uYYUYTLY=6$K&K5b0Bw@+(pPb_FR9hgGx z5qmht^~qZB_HMvqFYzu(sA<2rJHE^xt0?IXn+w)}%=n#k3)${6X~inf;(hXz)#Ux_ z^cwDHohj@>1eApBV+9|<(9}M*L!uZpsN5Ew{+|@ANFCMV$0#a;V)i9&rfbPmJOPBT zransJW|R*RwAMp-@(}!wk!amZBk~g%`*> z4Tw&&majM2H~yVFiD8XPk$lx4BdvU`Dw`6w&zTQD%UHv+{`2%V%T(*`- z7bEx;6N(;S##k998;vVX+t%(Pl1fRRkt#Nu7AyYH(uo5%5^Ei+CJrCcq0*o!d-f!Y zfq;CH`|v&pT-))$C2AHZ_p2~IfHhp&5OQ0yXrv|)f3aWhe_NdU$RN2`n*%I3KH?b$_BgRp|2Z8B8^u$~yT+&~%U$nzd48Z+to$YxlcMC8|%yKjU ziN+qLiJ66&!p~5mKh;`LD3oREunrU(6L-EORqf;3tk;Ma*vISDCjv=hCj&ED=(7xU zOJeDThVLMH|19#K%|-$S93e&h=YT3Rhse@M~fB)=L9hY*Za* z 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�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

pW^;^R_nkP@H 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 literal 0 HcmV?d00001 diff --git a/images/foss-asic-tools/addons/xfce/.config/efabless.com.transparent-8.png b/images/foss-asic-tools/addons/xfce/.config/efabless.com.transparent-8.png new file mode 100755 index 0000000000000000000000000000000000000000..c457a201d84c3f960cda658fd8fb305a61101841 GIT binary patch literal 23014 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

vI09@1XqL6gSo!Npkw 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 literal 0 HcmV?d00001 diff --git a/images/foss-asic-tools/addons/xfce/.config/efabless_logo.png b/images/foss-asic-tools/addons/xfce/.config/efabless_logo.png new file mode 100755 index 0000000000000000000000000000000000000000..30ef53d3ceaad27075fca55bcb636cd5a57d2600 GIT binary patch literal 7460 zcmWkzc{tSH7oL4AW8Y>FV^_AZlgbR`i=;`#L@}6bNm5b7%plo{RQ58J$`(_!hp}W| zrjUIXLYC~t%;)F#$Gzvd|J-|@bI*Oxd)|{kbo@_9Kvn<*0twmK9(CHY@q0s=53x7L z9)2*eXJEdB69f>btjQFf_-Aj8xqggv{qz-|>tUWD7eNHd6|aj}yUU)w7o9G8Qf^&s zzIX@(lK)_LlyK(efY&YnSk`Hx;h#Wwkp4YHjV22Tg2dl(MMQ2b(>;5N&Z3aQ^00rb zmuXumik8><`_0eO0`0Iq&gsl|dwc6x4GlIGheZ?)kqZh6$Ycry z=8eVifV``QY2vA4Vm1xHGi=A+F6g%Qc1%la>#4TSQQU*p7cLxz3JMCg$zLIR9z;&x zEHE#onJLz9Z~T?BwzoHkDJ$!Yx5t9OM<2uf@wgFj>FLtsslybquP^e>8*Lo(V@PoD z-1D=Z)%47)mMHRFbvy-|*yib@-eT{FO~*?}$o^5|!-E`K8E^s`RabVpIp$!By{U)FS!2V$GdNt_#oL5 z%016nLivJs)TzKz>GGxX_u-ma;VO-k4q)0}LoBeF zR`1PlG>ZNb^k4@5+z&pwIeu%TGq>=ScK*WYvpt&fT}CXlwJ417sG}-2?0%`7U$(?g zqbKcR6NgGqtvI7@_*fZXKH6@m1rG8o2#b(l*Y5{}tWT|>9}XD#yqle1)H@4oKWGpGCJTm%}=`F-QWNE$nZ^BeJQ5o_q+T2*`fH<+T zXesk_IaNd}_MFKe#{9$O7sE$XLtyn++w5HX!-d}E61t4K=Y?j&6^9pp#e+2A%G|{D9cYO|8Eav9=S|hRw;KTcG7aO6DdF~#6DDc@@$6rIH zdFu3aznTp8_n=7n5j-pL&!u?f=y>*k_6qn*Gk&Rh3Lli)j;>+%g+Z7W4)hxq7la1c>jK@@_vwa3G8T^iLL2>@{JW$ z?w*4t2cK-@>AuxW40*qN`YZ;MUbC8xzNem#*_A^b`MVP-QQmKyRi(r8xLKB{EQm*+ zE)0ssq5S`b2g~18pMX@3jEL-e`mctS-yM;kCAd#G{y7fJmzTaP*Sivle3Q=K`c4!3 z*Z7|IzbHrJd3MEtCt5#RO|f>$3E2CM5)Q9FqJ>i!^WlY8L&EQCF27AXP!0LFpT;r( zXmLZwJ1AtBY#Yjfn~ZNHI7vAb3hq}xXPTMUBuuZ4d!xd3>saRNOQY4c=9`LI=_5b> zBfnTV)Z~HxJ^K0cXY|m}dCW*vq+qF|8Np}5PlJ}|o+?Y6qKS*-i#aHOvf%HKl#U-S z{FI`9$v}HY+l<0CkVSeI! z5=;L6kI6K!*WuI%x;Y72xduCH@$#iqJRYO z>DO?~W%(d9y<2LAAZzMPI=eWaMqJ5OZ^%i#_JuqM4AX6;9uBW%H3^hm{3VJ@QvL3-P+sA zO7q{3Q_=;saO=|D*v}=Vu+n6k1(2!+cY*ui!nZDaw(ugvcGizm#W& z!$Nav!0k{6R2FMaOg#)K5N5 zoZ0}g@u9NJendclCarCo%aMtRi~D8CupBioFvvrwXZ~Rw@D{W+_Cphh#CXr?HVg~a z(F{5<|B4lC&*O3|3mjA7*)>8fFe-1CE4VgN9JVw9mcsxV(C;F&-5>q^%|v1CNYNm2 z1-wVo@8uEAhhZ^j5V)StU?DeFxgdy4*=;o9?;C3Z`!@_g!59HaWZFsk89ri9!bev4 zm7=eQp`1}FqlC*>nUnz6gtk|0E{!S@Cm*gi+{-DaUryWdsE!)H9Bg&C0yCQu4**mu zw1>+;Xo!*^PohvKxc1m}@d6DIH#^WHOF``?3-p~T<(K7ThVdo#BR$B(&CFiH<;>CQ z&r|0}Rb>}FJ&haOiO>7qug|-r^Eq}{dQ?Sngtfn%V?AhT5eO*9sY4$-u+p+{Ag0hS zp>8*Xtkq4<#y)1H5}ye&UW+zuL@?B-Vsb>Zb?oV9UG!3$8AYXFBkN3h)*ZN?Xx%btAE^>=!{5%D^P812DFa^MF=90IUP z+DUaN50JPUHmeqDi#@RR7tI{8OtWxWU~uo>I*tgcgi-Vluq5wmU4~@(mC)p`YDz=BZn}tJX_*ZD zQWk6NV>I|M6OFk7ZoW*#VD5WYXrTcu1D?9nlmIqwiCRQ$2BSvw?ztp z%v*GDX41?2aN&9j+D(g!qgE$8tEr9L?bQ@HBdbItO&q5Qr|$$u(CDiYGSm2t>d+_S zGAgSl$$M@~3?i1n+b^>wc-0u<2-?>24kA}LU5rTlA@Z(E0!?ko` zA8R4tVm=GvrtFzx;K5TREZc6v=~cx(6}$2AamZtB1y-z=NX5T>MO0n@wAlCt@x4GY zk$ArFS&AXJU1(=@rn>9(NyQ8Fx!bhq=Mf$91vc`M*B$U5K|0b7r|AdM2zqPQm1RhrIP6T0k!;^O(DtPEA%$QS&3wpuACwr_D=!5JskY8T;MY3 zeFR(i7?DUMi5sa~e<}hUYoW52i`BC+o%G6VxUJPFou7Ine7(NC{e_0ADonu;{0i=~ z762}owqUM&&AVU-&PT_BuNI#g4i-_(bnkhX zH{K(%spYUnS>yYV0CP%n_5GtlytKyDX!^Mz{MB%u$M3)YovQF(eED8E@$GQ3&)azS z$;>0aF9nrNc~E?h{QlDM$>Id`uI053LuICuKs6^Uq59YE7$~EtsP^1ruc#aC0;TWI zDe=y*s4a2+Jicd%CvN@}5fDd2o;ER?#LLO z{5Rb$M;0c-vs>AaxrPV&>Kpt{S6-+#b!MJzq&iL{b3}x+YaaR4FVhj0k&}qHq}8vU3jq`Ylaj zn;J}dc2pG)dOMa|;6>3ysNdJX*%jEVnLrJ3sr`8K#_v{(7LX< zkFwxF(u4H5gMM{VX`i{TVK`PDjmy1G4*IG5>LU$~t5KiBo)B3sSXQhERobD+>KDR> z^_}n**+1&1nD>5K4<5sB(th>PXIpf~0fmoaE0Q zWV$kY*(;a-jAHckJ`7p8Z-vY0)FrD_{bA9eS8{W6YoJ+JLwpvZJ1Olnk-W9@Td?5d zzm&&MxXWcrqr)^_D#R5$*Ygd5XbH+p*vp~O7DhY`#xe$&4631r8;n*N43Q<3idy+F zw=TjOCsPy`Si0DPhcyKP4%_`F^Nysz4mzW{Ctj1^%c*$vA&mSt?>d){GrTI}GGT&$ zoUFz9a3Oko7k-(Pkx?e_IX~u$xx{Qh1Q|91j&O}2{1rF(0F3DxXlbe7zC}Tel_)|lIR2Uv#%u-^Y9yG9@GvVXH#xSm!7O(Xb{-c`{ zZ0Bpl^*Rt{+6yU*EXwXC#DQU=JfWZfP z(N$t0XA;Q=c(J>?Az|%=1Yl{@vY%zr9vT>WH6$cECo@wXQlte}H&Q1K!YRPluq6x+ zeB59bM~5-%e}UCy>nt6BZ35aTHR1f}Jpg>k4>JmHsTU3uGklmjNa*^>rYkuL-}ksg zZ$mI%Z?O@tXhJSFF6?e-9UD2sNO)W3QC;Kvi;jVlDtY&)+?^Z9`_Y)bc%EBx{TkIY zRVe$lC&<`~(6!CziC_nAUmmThB(Rc=<=m9PA5uQi!oSkm?y(NofX;+}yS17Q?&FJg zNHx%}My^xvry*?s#*~Ijt%Q7@fb(H<&!U)WgOC#EMQlbtpr3S=d}j;z?ks2>XHlX( z)+|!nwG7nU(9d_=9fT~r+wtreF*pfV-wLp4pt6F{*86Umr;E8K;uFKNkM5pkoG>0! zKm3y+?J6T*f6J9b0!=&Qn25-yF`7*k6c&Mq&Ba0#AKxJX2h>CQ;u(CYv(ls<@P;1M zFAykV0q$xWjMxl{`L6VmuON{ppe=yzqV;Tel6&7HGneaA+d*&p`}+y=s=eSry%GG! z$m-B_ftZR46ttQ#CgWohha;D$L7(I|@bQ1-ppt>HzXxcb+K*Gg#-bk4GvU)zR7rIv zo*((*cj)=!_r?d4GEhS-mXf3h2MP5S!h2O58Q`q9qO z`hEsH>p$XvH;1#Cz5Y0d8pM2y`z8+3(XI7Jq|F_%t$XktJWCR;h?_k~X6VEoJD_q? z`BB1i;}To3^}KhmxU-fL;d7H?r{f+4?ak9wPpBPA5`^-Up9Ei_|%y*6xat5 z9#~})ZeejrlE~NnYWBapMP$0P7;DGf8i*r%CJLTM^YHA0*tcmMO?((E;RX$m_l<@m2 z>?fH6#?nX(U0z)K=IBT@WlUTWdV`7X?7`-;GuE4Gj)O?z9QpUa>m;?!)WXrm#n0G__bhT-tqb4^0J~X@dWQGSc)xI;f7) zU(szIUV(Ih3W}TW{;C6;Xkt1N;^T`T5!M`~7saX91@iT1uMRSFv)9(=dm~s*0XjHO zEGGv_x={@7vE1P=dEVDYQlsr?16+m6?jjUF0dMkC)>R;KA~|QjQtDLSg34;yM$ya{%*Oq^vmQi-t1)KNmhFf z0MPeYGyt^}$}RmVaRn!PeS7ayo7(`j|?%*c1{6vic!>y458ckMeBeiyGW1d2kps&ydxZ+x&33{%6Ud@ z%$++4LQOV`55;ZVefSrwu7I=Q0m_*S=M}(=@JGIHgDg5V6S2yhoXOE{D@mdYO^-7C zz*f=>Ma9}~C`^=sPe@qNPQNNDXY)v#-(5#7KKB^F1%NqIiPafBmh2pIM^t{~mJplV zS=~vRs`xSQE)P8!OKZuqbT}AaYFsQ(;*pa3iJq`z%*?=_>6Ir9L?RGFk!$C?$&*g| z-c)_Wmrc;_H6j`AD8G0)Kg9y@3gScxt1(4!i&%WrCh%{a9{cB_&UGJoOgvOV$}oQr zRk%(|cnm*2$<-?8hUggi`ucKeST)m}oS4cr5e>H)kI)aL)$;O>@v>DvWwA7@T2nQZ z)!jf6mRpJW0Q%Q=>kgqjypfh*jp~d4`&vT`AFJ9KGOBzU^yNQJy0q?5MAA94jb zqbYM;QhfGRC4SRQ$qrmB*Wi!mGW^$k@#Q7-2ajThN+2nA!NCf?zB3?Gd%E%{%_{?Y z!R4m%goLCd?2X(X`Wh@TM50EG5Ab*=*Wh6j2LpG?xl- zxU@6dqsrFW%%r_!Cw;ua3X=F1HIHdr&FC_Z0=%}G+ZvWrw)N^<`0F>YG!R5Xbp4~A zV{0C}E9#nWyG+VeGjPh?UL{Jer?=PK6cn-Ha-7c9Pl zNZF6@GYm5CE!Zc+J2h*FnoIi9B{D+2Nd;Ay!u=B_0~xp6n_d*)BMVtf#65Rtv8+$1 zHfDZ~vstER<@~K2fSPQ~K#H|hregU5w_LbfP8r%DBF%%msd3$mJiHfuH`4+YS& zTq8G>5#(oe&78l*T{0%6mOvJDk<(bamh()|;1E<4KSr9_Sxp)jF}${)oo%Xl2UP!2 zzRyREcCp!DJ4`Purh7osyp+SGUvhxQ8+E`wq zuyc1VX)2)2<{4_RU!{i%?t<%2d#aS)j9bHa3KlCJho4&n-#HLm@ZEUDWrxe@Eo0Q9 z28UpQl0jR`<8@xz{JBz*Ch|pyzE;lzd&>Q)UcK@ZaE+&;vp{fa?V#P@SDx%0t)@l~ zckHZNSa-L7MOkq~3~(XulAx!j=$nBHZc&E2!!=FyZ@G$w7Po)x#djw89`O~`!4wVP zz8Jp4Jy9iT7#iwswXSJAhLb2fq_dtzem$lN>b)RBxp7b>&3+IHoMzG%KyMDkwADv{5C}f8_XP}a->kCtHypHqlmt1^9(+PjH2m)77ViHC zTLdWN{7r%kX>!(1KYA!s#?J~ioQmq&d6^AOE@_twIY>uDe7597lI3xj<$;*NVI zq5vx3OMX1&wawkgkz-%h#bb>9sPf%gpc9PqJ`-MpO>G_FYmGB0s2x3b-0k7YjPW}q zMs=2CY)oxYVPS&Qtdc~B&`!CG{%H}eLv1RIIyqDh4v|7 zMVV>zRJf>^aMr9s?Y^W`a_9W~C6-n@ZDR%8Bgc4*Wd%(F9M&SEqu8ZPoCdzchw1hF z1Ybzg-QjF@DmXftAo%(B$Bm8Qmlx34q^B~Nmc%l1oW4EIDx?lcri{SV@5itj=7q@|*dYVNKs{!mmhowGvM}@muTHOjH?`a)X4VIXqjT_VFx^QVW@LCDFgXMbZy2- z*tkdY&BMFc{dR+y9Hq5jR*sx=6V3{WyKMA2v45rF~$YC)) zD(5m&ITuj7j>5CWe)w~L%|1{{o;?G>_@=||@4sKND`avlbphPzaobwEH3}R! zxTk&QL<$SGn%=bFcYD!0I4GBE#`=5shH-F0eQj+6D5Q7Eqq-D)Jo^%sw=|kJ&T+v9 z!5+Id_2iY6>GjEng@wgo41H){+u11a0ZfOL3_szn81A?!(e9j>Y{zospgZE#C<`Uz zI*urDjT-u@ctcO=-nb?6D0h8M3aTMd=bWjqM;Piu?f9WzpF>uPmC2Xq-nca@zFeE(WRxjyWnVO_pe_QQ+2zJ$!>D8vSSN-BqVKE#MR$NR;&R#e5RdsprvuI zhK4Pi$CZ+&DaBl7XkA@c&W9n1ZLT38Be81o|FfW=u)>$D%8GsEdu>jT-7&|brB>wV F{{hVf)K~xj literal 0 HcmV?d00001 diff --git a/images/foss-asic-tools/addons/xfce/.config/gtk-2.0/gtkfilechooser.ini b/images/foss-asic-tools/addons/xfce/.config/gtk-2.0/gtkfilechooser.ini new file mode 100755 index 00000000..6fc7981d --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/gtk-2.0/gtkfilechooser.ini @@ -0,0 +1,11 @@ +[Filechooser Settings] +LocationMode=path-bar +ShowHidden=true +ShowSizeColumn=true +GeometryX=570 +GeometryY=247 +GeometryWidth=780 +GeometryHeight=585 +SortColumn=name +SortOrder=ascending +StartupMode=recent diff --git a/images/foss-asic-tools/addons/xfce/.config/gtk-3.0/bookmarks b/images/foss-asic-tools/addons/xfce/.config/gtk-3.0/bookmarks new file mode 100755 index 00000000..c9a604ed --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/gtk-3.0/bookmarks @@ -0,0 +1 @@ +file:///google-mpw diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1664x898.rc b/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1664x898.rc new file mode 100755 index 00000000..d6683a91 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1664x898.rc @@ -0,0 +1,3 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1904x1033.rc b/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1904x1033.rc new file mode 100755 index 00000000..d6683a91 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/desktop/icons.screen0-1904x1033.rc @@ -0,0 +1,3 @@ +[xfdesktop-version-4.10.3+-rcfile_format] +4.10.3+=true + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-6/16316678561.desktop b/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-6/16316678561.desktop new file mode 100755 index 00000000..25d9e41f --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-6/16316678561.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch TerminalEmulator +Icon=utilities-terminal +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +Name=Terminal Emulator +Comment=Use the command line +X-XFCE-Source=file:///usr/share/applications/exo-terminal-emulator.desktop diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-7/16316678652.desktop b/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-7/16316678652.desktop new file mode 100755 index 00000000..c6ffb77c --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/panel/launcher-7/16316678652.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Exec=exo-open --launch FileManager %u +Icon=system-file-manager +StartupNotify=true +Terminal=false +Categories=Utility;X-XFCE;X-Xfce-Toplevel; +OnlyShowIn=XFCE; +X-XFCE-MimeType=inode/directory;x-scheme-handler/trash; +Name=File Manager +Comment=Browse the file system +X-XFCE-Source=file:///usr/share/applications/exo-file-manager.desktop diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/terminal/accels.scm b/images/foss-asic-tools/addons/xfce/.config/xfce4/terminal/accels.scm new file mode 100755 index 00000000..ee6b171e --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/terminal/accels.scm @@ -0,0 +1,55 @@ +; xfce4-terminal GtkAccelMap rc-file -*- scheme -*- +; this file is an automated accelerator map dump +; +(gtk_accel_path "/terminal-window/goto-tab-1" "1") +(gtk_accel_path "/terminal-window/goto-tab-3" "3") +; (gtk_accel_path "/terminal-window/file-menu" "") +; (gtk_accel_path "/terminal-window/close-other-tabs" "") +; (gtk_accel_path "/terminal-window/search" "f") +; (gtk_accel_path "/terminal-window/next-tab" "Page_Down") +; (gtk_accel_path "/terminal-window/terminal-menu" "") +; (gtk_accel_path "/terminal-window/show-menubar" "") +; (gtk_accel_path "/terminal-window/zoom-reset" "0") +; (gtk_accel_path "/terminal-window/close-window" "q") +; (gtk_accel_path "/terminal-window/save-contents" "") +; (gtk_accel_path "/terminal-window/close-tab" "w") +; (gtk_accel_path "/terminal-window/view-menu" "") +; (gtk_accel_path "/terminal-window/new-tab" "t") +; (gtk_accel_path "/terminal-window/show-toolbar" "") +; (gtk_accel_path "/terminal-window/copy-input" "") +; (gtk_accel_path "/terminal-window/paste" "v") +; (gtk_accel_path "/terminal-window/copy" "c") +; (gtk_accel_path "/terminal-window/edit-menu" "") +; (gtk_accel_path "/terminal-window/fullscreen" "F11") +(gtk_accel_path "/terminal-window/goto-tab-6" "6") +; (gtk_accel_path "/terminal-window/read-only" "") +; (gtk_accel_path "/terminal-window/detach-tab" "d") +(gtk_accel_path "/terminal-window/goto-tab-8" "8") +(gtk_accel_path "/terminal-window/goto-tab-2" "2") +; (gtk_accel_path "/terminal-window/scroll-on-output" "") +; (gtk_accel_path "/terminal-window/prev-tab" "Page_Up") +; (gtk_accel_path "/terminal-window/move-tab-left" "Page_Up") +; (gtk_accel_path "/terminal-window/zoom-in" "plus") +; (gtk_accel_path "/terminal-window/search-prev" "") +; (gtk_accel_path "/terminal-window/reset-and-clear" "") +; (gtk_accel_path "/terminal-window/about" "") +; (gtk_accel_path "/terminal-window/search-next" "") +(gtk_accel_path "/terminal-window/toggle-menubar" "F10") +(gtk_accel_path "/terminal-window/goto-tab-7" "7") +; (gtk_accel_path "/terminal-window/select-all" "a") +; (gtk_accel_path "/terminal-window/help-menu" "") +(gtk_accel_path "/terminal-window/goto-tab-9" "9") +; (gtk_accel_path "/terminal-window/show-borders" "") +; (gtk_accel_path "/terminal-window/preferences" "") +(gtk_accel_path "/terminal-window/goto-tab-4" "4") +; (gtk_accel_path "/terminal-window/contents" "F1") +; (gtk_accel_path "/terminal-window/new-window" "n") +; (gtk_accel_path "/terminal-window/move-tab-right" "Page_Down") +; (gtk_accel_path "/terminal-window/zoom-out" "minus") +; (gtk_accel_path "/terminal-window/set-title" "s") +; (gtk_accel_path "/terminal-window/paste-selection" "") +; (gtk_accel_path "/terminal-window/undo-close-tab" "") +(gtk_accel_path "/terminal-window/goto-tab-5" "5") +; (gtk_accel_path "/terminal-window/zoom-menu" "") +; (gtk_accel_path "/terminal-window/reset" "") +; (gtk_accel_path "/terminal-window/tabs-menu" "") diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml new file mode 100755 index 00000000..2640492b --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/thunar.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml new file mode 100755 index 00000000..12b0ea7b --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml new file mode 100755 index 00000000..4e2cea26 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml new file mode 100755 index 00000000..b572577c --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-panel.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml new file mode 100755 index 00000000..f61963c3 --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml new file mode 100755 index 00000000..3324472b --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/.config/xfce4/xfconf/xfce-perchannel-xml/xsettings.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/images/foss-asic-tools/addons/xfce/Desktop/firefox.desktop b/images/foss-asic-tools/addons/xfce/Desktop/firefox.desktop new file mode 100755 index 00000000..5a7ad82e --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/Desktop/firefox.desktop @@ -0,0 +1,221 @@ +[Desktop Entry] +Version=1.0 +Name=Firefox Web Browser +Name[ar]=متصفح الويب فَيَرفُكْس +Name[ast]=Restolador web Firefox +Name[bn]=ফায়ারফক্স ওয়েব ব্রাউজার +Name[ca]=Navegador web Firefox +Name[cs]=Firefox Webový prohlížeč +Name[da]=Firefox - internetbrowser +Name[el]=Περιηγητής Firefox +Name[es]=Navegador web Firefox +Name[et]=Firefoxi veebibrauser +Name[fa]=مرورگر اینترنتی Firefox +Name[fi]=Firefox-selain +Name[fr]=Navigateur Web Firefox +Name[gl]=Navegador web Firefox +Name[he]=דפדפן האינטרנט Firefox +Name[hr]=Firefox web preglednik +Name[hu]=Firefox webböngésző +Name[it]=Firefox Browser Web +Name[ja]=Firefox ウェブ・ブラウザ +Name[ko]=Firefox 웹 브라우저 +Name[ku]=Geroka torê Firefox +Name[lt]=Firefox interneto naršyklė +Name[nb]=Firefox Nettleser +Name[nl]=Firefox webbrowser +Name[nn]=Firefox Nettlesar +Name[no]=Firefox Nettleser +Name[pl]=Przeglądarka WWW Firefox +Name[pt]=Firefox Navegador Web +Name[pt_BR]=Navegador Web Firefox +Name[ro]=Firefox – Navigator Internet +Name[ru]=Веб-браузер Firefox +Name[sk]=Firefox - internetový prehliadač +Name[sl]=Firefox spletni brskalnik +Name[sv]=Firefox webbläsare +Name[tr]=Firefox Web Tarayıcısı +Name[ug]=Firefox توركۆرگۈ +Name[uk]=Веб-браузер Firefox +Name[vi]=Trình duyệt web Firefox +Name[zh_CN]=Firefox 网络浏览器 +Name[zh_TW]=Firefox 網路瀏覽器 +Comment=Browse the World Wide Web +Comment[ar]=تصفح الشبكة العنكبوتية العالمية +Comment[ast]=Restola pela Rede +Comment[bn]=ইন্টারনেট ব্রাউজ করুন +Comment[ca]=Navegueu per la web +Comment[cs]=Prohlížení stránek World Wide Webu +Comment[da]=Surf på internettet +Comment[de]=Im Internet surfen +Comment[el]=Μπορείτε να περιηγηθείτε στο διαδίκτυο (Web) +Comment[es]=Navegue por la web +Comment[et]=Lehitse veebi +Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید +Comment[fi]=Selaa Internetin WWW-sivuja +Comment[fr]=Naviguer sur le Web +Comment[gl]=Navegar pola rede +Comment[he]=גלישה ברחבי האינטרנט +Comment[hr]=Pretražite web +Comment[hu]=A világháló böngészése +Comment[it]=Esplora il web +Comment[ja]=ウェブを閲覧します +Comment[ko]=웹을 돌아 다닙니다 +Comment[ku]=Li torê bigere +Comment[lt]=Naršykite internete +Comment[nb]=Surf på nettet +Comment[nl]=Verken het internet +Comment[nn]=Surf på nettet +Comment[no]=Surf på nettet +Comment[pl]=Przeglądanie stron WWW +Comment[pt]=Navegue na Internet +Comment[pt_BR]=Navegue na Internet +Comment[ro]=Navigați pe Internet +Comment[ru]=Доступ в Интернет +Comment[sk]=Prehliadanie internetu +Comment[sl]=Brskajte po spletu +Comment[sv]=Surfa på webben +Comment[tr]=İnternet'te Gezinin +Comment[ug]=دۇنيادىكى توربەتلەرنى كۆرگىلى بولىدۇ +Comment[uk]=Перегляд сторінок Інтернету +Comment[vi]=Để duyệt các trang web +Comment[zh_CN]=浏览互联网 +Comment[zh_TW]=瀏覽網際網路 +GenericName=Web Browser +GenericName[ar]=متصفح ويب +GenericName[ast]=Restolador Web +GenericName[bn]=ওয়েব ব্রাউজার +GenericName[ca]=Navegador web +GenericName[cs]=Webový prohlížeč +GenericName[da]=Webbrowser +GenericName[el]=Περιηγητής διαδικτύου +GenericName[es]=Navegador web +GenericName[et]=Veebibrauser +GenericName[fa]=مرورگر اینترنتی +GenericName[fi]=WWW-selain +GenericName[fr]=Navigateur Web +GenericName[gl]=Navegador Web +GenericName[he]=דפדפן אינטרנט +GenericName[hr]=Web preglednik +GenericName[hu]=Webböngésző +GenericName[it]=Browser web +GenericName[ja]=ウェブ・ブラウザ +GenericName[ko]=웹 브라우저 +GenericName[ku]=Geroka torê +GenericName[lt]=Interneto naršyklė +GenericName[nb]=Nettleser +GenericName[nl]=Webbrowser +GenericName[nn]=Nettlesar +GenericName[no]=Nettleser +GenericName[pl]=Przeglądarka WWW +GenericName[pt]=Navegador Web +GenericName[pt_BR]=Navegador Web +GenericName[ro]=Navigator Internet +GenericName[ru]=Веб-браузер +GenericName[sk]=Internetový prehliadač +GenericName[sl]=Spletni brskalnik +GenericName[sv]=Webbläsare +GenericName[tr]=Web Tarayıcı +GenericName[ug]=توركۆرگۈ +GenericName[uk]=Веб-браузер +GenericName[vi]=Trình duyệt Web +GenericName[zh_CN]=网络浏览器 +GenericName[zh_TW]=網路瀏覽器 +Keywords=Internet;WWW;Browser;Web;Explorer +Keywords[ar]=انترنت;إنترنت;متصفح;ويب;وب +Keywords[ast]=Internet;WWW;Restolador;Web;Esplorador +Keywords[ca]=Internet;WWW;Navegador;Web;Explorador;Explorer +Keywords[cs]=Internet;WWW;Prohlížeč;Web;Explorer +Keywords[da]=Internet;Internettet;WWW;Browser;Browse;Web;Surf;Nettet +Keywords[de]=Internet;WWW;Browser;Web;Explorer;Webseite;Site;surfen;online;browsen +Keywords[el]=Internet;WWW;Browser;Web;Explorer;Διαδίκτυο;Περιηγητής;Firefox;Φιρεφοχ;Ιντερνετ +Keywords[es]=Explorador;Internet;WWW +Keywords[fi]=Internet;WWW;Browser;Web;Explorer;selain;Internet-selain;internetselain;verkkoselain;netti;surffaa +Keywords[fr]=Internet;WWW;Browser;Web;Explorer;Fureteur;Surfer;Navigateur +Keywords[he]=דפדפן;אינטרנט;רשת;אתרים;אתר;פיירפוקס;מוזילה; +Keywords[hr]=Internet;WWW;preglednik;Web +Keywords[hu]=Internet;WWW;Böngésző;Web;Háló;Net;Explorer +Keywords[it]=Internet;WWW;Browser;Web;Navigatore +Keywords[is]=Internet;WWW;Vafri;Vefur;Netvafri;Flakk +Keywords[ja]=Internet;WWW;Web;インターネット;ブラウザ;ウェブ;エクスプローラ +Keywords[nb]=Internett;WWW;Nettleser;Explorer;Web;Browser;Nettside +Keywords[nl]=Internet;WWW;Browser;Web;Explorer;Verkenner;Website;Surfen;Online +Keywords[pt]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[pt_BR]=Internet;WWW;Browser;Web;Explorador;Navegador +Keywords[ru]=Internet;WWW;Browser;Web;Explorer;интернет;браузер;веб;файрфокс;огнелис +Keywords[sk]=Internet;WWW;Prehliadač;Web;Explorer +Keywords[sl]=Internet;WWW;Browser;Web;Explorer;Brskalnik;Splet +Keywords[tr]=İnternet;WWW;Tarayıcı;Web;Gezgin;Web sitesi;Site;sörf;çevrimiçi;tara +Keywords[uk]=Internet;WWW;Browser;Web;Explorer;Інтернет;мережа;переглядач;оглядач;браузер;веб;файрфокс;вогнелис;перегляд +Keywords[vi]=Internet;WWW;Browser;Web;Explorer;Trình duyệt;Trang web +Keywords[zh_CN]=Internet;WWW;Browser;Web;Explorer;网页;浏览;上网;火狐;Firefox;ff;互联网;网站; +Keywords[zh_TW]=Internet;WWW;Browser;Web;Explorer;網際網路;網路;瀏覽器;上網;網頁;火狐 +Exec=firefox %u +Terminal=false +X-MultipleArgs=false +Type=Application +Icon=/usr/lib/firefox/browser/icons/mozicon128.png +Categories=GNOME;GTK;Network;WebBrowser; +MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall; +StartupNotify=true +Actions=NewWindow;NewPrivateWindow; + +[Desktop Action NewWindow] +Name=Open a New Window +Name[ar]=افتح نافذة جديدة +Name[ast]=Abrir una ventana nueva +Name[bn]=Abrir una ventana nueva +Name[ca]=Obre una finestra nova +Name[cs]=Otevřít nové okno +Name[da]=Åbn et nyt vindue +Name[de]=Ein neues Fenster öffnen +Name[el]=Άνοιγμα νέου παραθύρου +Name[es]=Abrir una ventana nueva +Name[fi]=Avaa uusi ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre +Name[gl]=Abrir unha nova xanela +Name[he]=פתיחת חלון חדש +Name[hr]=Otvori novi prozor +Name[hu]=Új ablak nyitása +Name[it]=Apri una nuova finestra +Name[ja]=新しいウィンドウを開く +Name[ko]=새 창 열기 +Name[ku]=Paceyeke nû veke +Name[lt]=Atverti naują langą +Name[nb]=Åpne et nytt vindu +Name[nl]=Nieuw venster openen +Name[pt]=Abrir nova janela +Name[pt_BR]=Abrir nova janela +Name[ro]=Deschide o fereastră nouă +Name[ru]=Новое окно +Name[sk]=Otvoriť nové okno +Name[sl]=Odpri novo okno +Name[sv]=Öppna ett nytt fönster +Name[tr]=Yeni pencere aç +Name[ug]=يېڭى كۆزنەك ئېچىش +Name[uk]=Відкрити нове вікно +Name[vi]=Mở cửa sổ mới +Name[zh_CN]=新建窗口 +Name[zh_TW]=開啟新視窗 +Exec=firefox -new-window +OnlyShowIn=Unity; + +[Desktop Action NewPrivateWindow] +Name=Open a New Private Window +Name[ar]=افتح نافذة جديدة للتصفح الخاص +Name[ca]=Obre una finestra nova en mode d'incògnit +Name[de]=Ein neues privates Fenster öffnen +Name[es]=Abrir una ventana privada nueva +Name[fi]=Avaa uusi yksityinen ikkuna +Name[fr]=Ouvrir une nouvelle fenêtre de navigation privée +Name[he]=פתיחת חלון גלישה פרטית חדש +Name[hu]=Új privát ablak nyitása +Name[it]=Apri una nuova finestra anonima +Name[nb]=Åpne et nytt privat vindu +Name[ru]=Новое приватное окно +Name[sl]=Odpri novo okno zasebnega brskanja +Name[tr]=Yeni bir pencere aç +Name[uk]=Відкрити нове вікно у потайливому режимі +Name[zh_TW]=開啟新隱私瀏覽視窗 +Exec=firefox -private-window +OnlyShowIn=Unity; diff --git a/images/foss-asic-tools/addons/xfce/wm_startup.sh b/images/foss-asic-tools/addons/xfce/wm_startup.sh new file mode 100755 index 00000000..d0fd552d --- /dev/null +++ b/images/foss-asic-tools/addons/xfce/wm_startup.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo -e "\n------------------ startup of Xfce4 window manager ------------------" + +### disable screensaver and power management +xset -dpms & +xset s noblank & +xset s off & + +/usr/bin/startxfce4 --replace > $HOME/wm.log & +sleep 1 +cat $HOME/wm.log \ No newline at end of file diff --git a/images/foss-asic-tools/info.json b/images/foss-asic-tools/info.json new file mode 100755 index 00000000..ce7c5e92 --- /dev/null +++ b/images/foss-asic-tools/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "foss-asic-tools", + "REPO_URL": "https://github.com/efabless/foss-asic-tools", + "REPO_COMMIT": "alpha" + } +} diff --git a/images/foss-asic-tools/scripts/chrome-init.sh b/images/foss-asic-tools/scripts/chrome-init.sh new file mode 100644 index 00000000..4bdf1a85 --- /dev/null +++ b/images/foss-asic-tools/scripts/chrome-init.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +VNC_RES_W=${VNC_RESOLUTION%x*} +VNC_RES_H=${VNC_RESOLUTION#*x} + +echo -e "\n------------------ update chromium-browser.init ------------------" +echo -e "\n... set window size $VNC_RES_W x $VNC_RES_H as chrome window size!\n" + +echo "CHROMIUM_FLAGS='--no-sandbox --disable-gpu --user-data-dir --window-size=$VNC_RES_W,$VNC_RES_H --window-position=0,0'" > $HOME/.chromium-browser.init diff --git a/images/foss-asic-tools/scripts/chrome.sh b/images/foss-asic-tools/scripts/chrome.sh new file mode 100644 index 00000000..ce2e4f3f --- /dev/null +++ b/images/foss-asic-tools/scripts/chrome.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo "Install Chromium Browser" +yum -y install chromium chromium-libs chromium-libs-media +yum clean all + +ln -s /usr/bin/chromium-browser /usr/bin/google-chrome + +### fix to start chromium in a Docker container, see https://github.com/ConSol/docker-headless-vnc-container/issues/2 + +echo "CHROMIUM_FLAGS='--no-sandbox --start-maximized --user-data-dir'" > $HOME/.chromium-browser.init + +# add `source $INST_SCRIPTS/install/chromium-wrapper`string before last line + +#sed -i '$isource $STARTUPDIR/scripts/chromium-wrapper' #/usr/lib64/chromium-browser/chromium-browser.sh diff --git a/images/foss-asic-tools/scripts/chromium-wrapper b/images/foss-asic-tools/scripts/chromium-wrapper new file mode 100644 index 00000000..0c17d1a1 --- /dev/null +++ b/images/foss-asic-tools/scripts/chromium-wrapper @@ -0,0 +1,8 @@ +## custom wrapper to support the $HOME/.chromium-browser.init file +## will be "sourced" from /usr/lib64/chromium-browser/chromium-browser.sh + +source $HOME/.chromium-browser.init +echo "CHROMIUM_FLAGS: $CHROMIUM_FLAGS" + +CHROMIUM_DISTRO_FLAGS="$CHROMIUM_DISTRO_FLAGS $CHROMIUM_FLAGS " +echo "CHROMIUM_DISTRO_FLAGS: $CHROMIUM_DISTRO_FLAGS" diff --git a/images/foss-asic-tools/scripts/env.sh b/images/foss-asic-tools/scripts/env.sh new file mode 100755 index 00000000..ced81158 --- /dev/null +++ b/images/foss-asic-tools/scripts/env.sh @@ -0,0 +1,94 @@ + +base_path=/foss/tools/ +function get_path() { + tool_name=$1 + bin_path=$(realpath $base_path/$tool_name/*/bin) + echo $bin_path +} + +magic_path=$(get_path "magic") +gtkwave_path=$(get_path "gtkwave") +iverilog_path=$(get_path "iverilog") +klayout_path=$(realpath $base_path/klayout/* ) +netgen_path=$(get_path "netgen") +openlane_tools_path=$(get_path "openlane_tools" ) +riscv32i_path=$(get_path "riscv-gnu-toolchain-rv32i" ) +gaw3_path=$(get_path "gaw3") +ngscope_path=$(realpath $base_path/ngscope/*/usr/local/bin ) +ngspice_path=$(get_path "ngspice") +xschem_path=$(get_path "xschem") +xyce_path=$(get_path "xyce/Parallel") +covered_path=$(get_path "covered") + +export PATH=$PATH:${magic_path}:${gtkwave_path}:${iverilog_path}:${klayout_path}:${netgen_path}:${openlane_tools_path}:${riscv32i_path}:${gaw3_path}:${ngscope_path}:${ngspice_path}:${xschem_path}:${xyce_path}:${covered_path} + +export LD_LIBRARY_PATH=$(realpath $base_path/klayout/*/ ) + +export PDK_ROOT=/foss/pdks +export TOOLS=/foss/tools +export DESIGNS=/foss/designs + +alias magic='magic -d XR' +alias mmagic-sky130A='MAGTYPE=mag magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc' +alias lmagic-sky130A='MAGTYPE=maglef magic -rcfile ${PDK_ROOT}/sky130A/libs.tech/magic/sky130A.magicrc' + +alias k='klayout -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $SAK/klayout/tech/sky130A/sky130A.lyt -l $SAK/klayout/tech/sky130A/sky130A-eft.lyp' +alias ke='klayout -e -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $SAK/klayout/tech/sky130A/sky130A.lyt -l $SAK/klayout/tech/sky130A/sky130A-eft.lyp' +alias kf='klayout -c $SAK/klayout/tech/sky130A/sky130A.krc -nn $SAK/klayout/tech/sky130A/sky130A.lyt -l $SAK/klayout/tech/sky130A/sky130A-fom.lyp' + +alias t='cd /foss/tools' +alias d='cd /foss/designs' +alias p='cd /foss/pdks' + +export SAK=$TOOLS/sak/ +export EDITOR='gedit' +export PATH=$TOOLS/bin:$SAK:/usr/local/sbin:$PATH + +#---------------------------------------- +# Miscellaneous +#---------------------------------------- + +alias sh1='sha1sum' +alias destroy='sudo \rm -rf' +alias cp='cp -i' +alias egrep='egrep ' +alias fgrep='fgrep ' +alias grep='grep ' +alias l.='ls -d .* ' +alias ll='ls -l' +alias la='ls -al ' +alias llt='ls -lt' +alias llta='ls -alt' +alias du='du -skh' +alias mv='mv -i' +alias perlll='eval `perl -Mlocal::lib`' +alias rm='rm -i' +alias vrc='vi ~/.bashrc' +alias dux='du -sh* | sort -h' +alias shs='md5sum' +alias h='history' +alias hh='history | grep' +alias rc='source ~/.bashrc' +alias m='less' +alias c='vi ~/.commands' + +#---------------------------------------- +# Git +#---------------------------------------- + +alias gcl='git clone' +alias gcll='git clone --single-branch --depth=1' +alias ga='git add' +alias gc='git commit -a' +alias gps='git push' +alias gpl='git pull' +alias gco='git checkout' +alias gss='git status' +alias gr='git remote -v' +alias gl='git log' +alias gln='git log --name-status' +alias gsss='git submodule status' + + + + diff --git a/images/foss-asic-tools/scripts/firefox.sh b/images/foss-asic-tools/scripts/firefox.sh new file mode 100644 index 00000000..b3185773 --- /dev/null +++ b/images/foss-asic-tools/scripts/firefox.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +set -e + +echo "Install Firefox" + +function disableUpdate(){ + ff_def="$1/browser/defaults/profile" + mkdir -p $ff_def + echo < $ff_def/user.js +} + +#copy from org/sakuli/common/bin/installer_scripts/linux/install_firefox_portable.sh +function instFF() { + if [ ! "${1:0:1}" == "" ]; then + FF_VERS=$1 + if [ ! "${2:0:1}" == "" ]; then + FF_INST=$2 + echo "download Firefox $FF_VERS and install it to '$FF_INST'." + mkdir -p "$FF_INST" + FF_URL=http://releases.mozilla.org/pub/firefox/releases/$FF_VERS/linux-x86_64/zh-CN/firefox-$FF_VERS.tar.bz2 + echo "FF_URL: $FF_URL" + wget -qO- $FF_URL | tar xvj --strip 1 -C $FF_INST/ + ln -s "$FF_INST/firefox" /usr/bin/firefox + disableUpdate $FF_INST + exit $? + fi + fi + echo "function parameter are not set correctly please call it like 'instFF [version] [install path]'" + exit -1 +} + +instFF '45.9.0esr' '/usr/lib/firefox' + +#yum -y install firefox-45.7.0-2.el7.centos +#yum -y install firefox +#yum clean all +#apt-get update +#apt-get install -y firefox +#apt-get install -y firefox=45* +#apt-mark hold firefox +#apt-get clean -y diff --git a/images/foss-asic-tools/scripts/generate_container_user b/images/foss-asic-tools/scripts/generate_container_user new file mode 100644 index 00000000..dbdd4797 --- /dev/null +++ b/images/foss-asic-tools/scripts/generate_container_user @@ -0,0 +1,28 @@ +# Set current user in nss_wrapper +USER_ID=$(id -u) +GROUP_ID=$(id -g) +echo "USER_ID: $USER_ID, GROUP_ID: $GROUP_ID" + +if [ x"$USER_ID" != x"0" ]; then + + NSS_WRAPPER_PASSWD=/tmp/passwd + NSS_WRAPPER_GROUP=/etc/group + + cat /etc/passwd > $NSS_WRAPPER_PASSWD + + echo "default:x:${USER_ID}:${GROUP_ID}:Default Application User:${HOME}:/bin/bash" >> $NSS_WRAPPER_PASSWD + + export NSS_WRAPPER_PASSWD + export NSS_WRAPPER_GROUP + + if [ -r /usr/lib/libnss_wrapper.so ]; then + LD_PRELOAD=/usr/lib/libnss_wrapper.so + elif [ -r /usr/lib64/libnss_wrapper.so ]; then + LD_PRELOAD=/usr/lib64/libnss_wrapper.so + else + echo "no libnss_wrapper.so installed!" + exit 1 + fi + echo "nss_wrapper location: $LD_PRELOAD" + export LD_PRELOAD +fi diff --git a/images/foss-asic-tools/scripts/icewm_ui.sh b/images/foss-asic-tools/scripts/icewm_ui.sh new file mode 100644 index 00000000..843d9ce5 --- /dev/null +++ b/images/foss-asic-tools/scripts/icewm_ui.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo "Install Xfce4 UI components and disable xfce-polkit" + +yum -y install xorg-x11-fonts* xulrunner icewm +yum -y groups install "Fonts" +yum erase -y *power* *screensaver* +yum clean all +/bin/dbus-uuidgen > /etc/machine-id \ No newline at end of file diff --git a/images/foss-asic-tools/scripts/libnss_wrapper.sh b/images/foss-asic-tools/scripts/libnss_wrapper.sh new file mode 100644 index 00000000..903c67f5 --- /dev/null +++ b/images/foss-asic-tools/scripts/libnss_wrapper.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo "Install nss-wrapper to be able to execute image as non-root user" +yum -y install nss_wrapper gettext +yum clean all + +echo "add 'source generate_container_user' to .bashrc" + +# have to be added to hold all env vars correctly +echo 'source $STARTUPDIR/scripts/generate_container_user' >> $HOME/.bashrc diff --git a/images/foss-asic-tools/scripts/miscellaneous.sh b/images/foss-asic-tools/scripts/miscellaneous.sh new file mode 100755 index 00000000..636edd91 --- /dev/null +++ b/images/foss-asic-tools/scripts/miscellaneous.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +############### + +mkdir -p $DESIGNS +mkdir -p /foss/pdks +mkdir -p /foss/tools/bin +cd /foss/tools/bin +ln -s ../*/*/bin/* . + + +mkdir $STARTUPDIR/logs + + +############### + +cd /foss/pdks +ln -s ../tools/xschem/*/share xschem-share +ln -s ../tools/xschem/*/share/xschem/xschem_library . + +############### + diff --git a/images/foss-asic-tools/scripts/no_vnc.sh b/images/foss-asic-tools/scripts/no_vnc.sh new file mode 100644 index 00000000..f05be845 --- /dev/null +++ b/images/foss-asic-tools/scripts/no_vnc.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e +set -u + +echo "Install noVNC - HTML5 based VNC viewer" + +mkdir -p $NO_VNC_HOME/utils/websockify +wget -qO- https://github.com/novnc/noVNC/archive/v1.0.0.tar.gz | tar xz --strip 1 -C $NO_VNC_HOME + +# use older version of websockify to prevent hanging connections on offline containers, see https://github.com/ConSol/docker-headless-vnc-container/issues/50 + +wget -qO- https://github.com/novnc/websockify/archive/v0.6.1.tar.gz | tar xz --strip 1 -C $NO_VNC_HOME/utils/websockify + +chmod +x -v $NO_VNC_HOME/utils/*.sh +## create index.html to forward automatically to `vnc_lite.html` +ln -s $NO_VNC_HOME/vnc_lite.html $NO_VNC_HOME/index.html diff --git a/images/foss-asic-tools/scripts/set_user_permission.sh b/images/foss-asic-tools/scripts/set_user_permission.sh new file mode 100644 index 00000000..13f9e1e1 --- /dev/null +++ b/images/foss-asic-tools/scripts/set_user_permission.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e +if [[ -n $DEBUG ]]; then + verbose="-v" +fi + +for var in "$@" +do + echo "fix permissions for: $var" + find "$var"/ -name '*.sh' -exec chmod $verbose a+x {} + + find "$var"/ -name '*.desktop' -exec chmod $verbose a+x {} + + chgrp -R 0 "$var" && chmod -R $verbose a+rw "$var" && find "$var" -type d -exec chmod $verbose a+x {} + +done \ No newline at end of file diff --git a/images/foss-asic-tools/scripts/source_env.sh b/images/foss-asic-tools/scripts/source_env.sh new file mode 100755 index 00000000..0e93df1b --- /dev/null +++ b/images/foss-asic-tools/scripts/source_env.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cat /env/env.sh >> $HOME/.bashrc diff --git a/images/foss-asic-tools/scripts/tigervnc.sh b/images/foss-asic-tools/scripts/tigervnc.sh new file mode 100644 index 00000000..532c13db --- /dev/null +++ b/images/foss-asic-tools/scripts/tigervnc.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -e + +echo "Install TigerVNC server" +yum -y install tigervnc-server +yum clean all diff --git a/images/foss-asic-tools/scripts/tools.sh b/images/foss-asic-tools/scripts/tools.sh new file mode 100644 index 00000000..573ad234 --- /dev/null +++ b/images/foss-asic-tools/scripts/tools.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo "Install some common tools for further installation" +yum -y install epel-release + +yum -y update + +yum clean all + +yum install -y \ + git \ + qt-devel \ + octave \ + openmpi-devel \ + ruby-devel \ + tcl \ + tk \ + tcllib \ + wxGTK-devel \ + xorg-x11-server-Xvfb \ + sudo + +yum install -y \ + wget \ + net-tools \ + nmap \ + bzip2 \ + mailcap \ + numpy \ + gedit + diff --git a/images/foss-asic-tools/scripts/vnc_startup.sh b/images/foss-asic-tools/scripts/vnc_startup.sh new file mode 100755 index 00000000..39edd27b --- /dev/null +++ b/images/foss-asic-tools/scripts/vnc_startup.sh @@ -0,0 +1,49 @@ +#!/bin/bash +### every exit != 0 fails the script +set -e + +## resolve_vnc_connection +VNC_IP=$(hostname -i) + +## change vnc password +echo -e "\n------------------ change VNC password ------------------" +# first entry is control, second is view (if only one is valid for both) +mkdir -p "$HOME/.vnc" +PASSWD_PATH="$HOME/.vnc/passwd" +echo "$VNC_PW" | vncpasswd -f > $PASSWD_PATH +chmod 600 $PASSWD_PATH + + +## start vncserver and noVNC webclient +echo -e "\n------------------ start noVNC ----------------------------" + +$NO_VNC_HOME/utils/launch.sh --vnc localhost:$VNC_PORT --listen $NO_VNC_PORT &> $STARTUPDIR/logs/no_vnc_startup.log & +PID_SUB=$! + +echo -e "start vncserver with param: VNC_COL_DEPTH=$VNC_COL_DEPTH, VNC_RESOLUTION=$VNC_RESOLUTION\n..." + +vncserver $DISPLAY -depth $VNC_COL_DEPTH -geometry $VNC_RESOLUTION &> $STARTUPDIR/logs/vnc_startup.log + +echo -e "start window manager\n..." +$STARTUPDIR/scripts/wm_startup.sh &> $STARTUPDIR/logs/wm_startup.log + +## log connect options +echo -e "\n\n------------------ VNC environment started ------------------" +echo -e "\nVNCSERVER started on DISPLAY= $DISPLAY \n\t=> connect via VNC viewer with $VNC_IP:$VNC_PORT" +echo -e "\nnoVNC HTML client started:\n\t=> connect via http://localhost/?password=$VNC_PW\n" + + +if [[ $DEBUG == true ]] || [[ $1 =~ -t|--tail-log ]]; then + echo -e "\n------------------ $HOME/.vnc/*$DISPLAY.log ------------------" + # if option `-t` or `--tail-log` block the execution and tail the VNC log + tail -f $STARTUPDIR/logs/*.log $HOME/.vnc/*$DISPLAY.log +fi + +if [ -z "$1" ] || [[ $1 =~ -w|--wait ]]; then + wait $PID_SUB +else + # unknown option ==> call command + echo -e "\n\n------------------ EXECUTE COMMAND ------------------" + echo "Executing command: '$@'" + exec "$@" +fi diff --git a/images/foss-asic-tools/scripts/wm_startup.sh b/images/foss-asic-tools/scripts/wm_startup.sh new file mode 100755 index 00000000..1bee25b8 --- /dev/null +++ b/images/foss-asic-tools/scripts/wm_startup.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo -e "\n------------------ startup of Xfce4 window manager ------------------" + +### disable screensaver and power management +xset -dpms & +xset s noblank & +xset s off & + +/usr/bin/startxfce4 --replace > $STARTUPDIR/logs/wm.log & +sleep 1 +cat $STARTUPDIR/logs/wm.log diff --git a/images/foss-asic-tools/scripts/xfce_ui.sh b/images/foss-asic-tools/scripts/xfce_ui.sh new file mode 100644 index 00000000..c6b3c935 --- /dev/null +++ b/images/foss-asic-tools/scripts/xfce_ui.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +### every exit != 0 fails the script +set -e + +echo "Install Xfce4 UI components and disable xfce-polkit" + +yum --enablerepo=epel -y -x gnome-keyring --skip-broken groupinstall "Xfce" + +yum -y groups install "Fonts" + +yum erase -y *power* + +yum clean all + +rm /etc/xdg/autostart/xfce-polkit* + +/bin/dbus-uuidgen > /etc/machine-id diff --git a/images/gaw3-xschem/Dockerfile b/images/gaw3-xschem/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/gaw3-xschem/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/gaw3-xschem/info.json b/images/gaw3-xschem/info.json new file mode 100755 index 00000000..7e7082b7 --- /dev/null +++ b/images/gaw3-xschem/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "gaw3", + "REPO_URL": "https://github.com/StefanSchippers/xschem-gaw.git", + "REPO_COMMIT": "2a1fc97bcc3081af72fc37a8bc52bc4632e176b2" + } +} diff --git a/images/gaw3-xschem/scripts/dependencies.sh b/images/gaw3-xschem/scripts/dependencies.sh new file mode 100755 index 00000000..92642137 --- /dev/null +++ b/images/gaw3-xschem/scripts/dependencies.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +yum install -y \ + autoconf automake make \ + alsa-lib-devel \ + gtk3-devel \ + diff --git a/images/gaw3-xschem/scripts/install.sh b/images/gaw3-xschem/scripts/install.sh new file mode 100755 index 00000000..4b40f89b --- /dev/null +++ b/images/gaw3-xschem/scripts/install.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} + +git checkout ${REPO_COMMIT} + +chmod +x configure + +autoreconf -f -i + +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install diff --git a/images/gtkwave/Dockerfile b/images/gtkwave/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/gtkwave/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/gtkwave/info.json b/images/gtkwave/info.json new file mode 100755 index 00000000..b76c35a1 --- /dev/null +++ b/images/gtkwave/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "gtkwave", + "REPO_URL": "https://github.com/gtkwave/gtkwave", + "REPO_COMMIT": "bc06f0fabd174d44f50647b09d6f7c702b3b6c40" + } +} diff --git a/images/gtkwave/scripts/dependencies.sh b/images/gtkwave/scripts/dependencies.sh new file mode 100755 index 00000000..31ac3d1b --- /dev/null +++ b/images/gtkwave/scripts/dependencies.sh @@ -0,0 +1,17 @@ +#!/bin/bash +install_gpref() { + wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz + tar -xvzf gperf-3.1.tar.gz && \ + cd gperf-3.1 && \ + autoconf && \ + ./configure && \ + make -j$(nproc) && \ + make install +} + +yum install -y \ + gtk3-devel \ + bzip2-devel + +source scl_source enable devtoolset-8 +install_gpref diff --git a/images/gtkwave/scripts/install.sh b/images/gtkwave/scripts/install.sh new file mode 100755 index 00000000..cfde05d8 --- /dev/null +++ b/images/gtkwave/scripts/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME}/gtkwave3-gtk3/ + +git checkout ${REPO_COMMIT} + +./autogen.sh +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} --enable-gtk3 +make -j$(nproc) +make install diff --git a/images/irsim/.log.txt b/images/irsim/.log.txt new file mode 100755 index 00000000..0a92461c --- /dev/null +++ b/images/irsim/.log.txt @@ -0,0 +1,2 @@ +make[1]: Entering directory '/home/karim/work/ef/chipignite/tools/magic' +make[1]: Leaving directory '/home/karim/work/ef/chipignite/tools/magic' diff --git a/images/irsim/Dockerfile b/images/irsim/Dockerfile new file mode 100755 index 00000000..dfc28092 --- /dev/null +++ b/images/irsim/Dockerfile @@ -0,0 +1,10 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/install.sh install.sh +RUN bash install.sh + diff --git a/images/irsim/info.json b/images/irsim/info.json new file mode 100755 index 00000000..7c680312 --- /dev/null +++ b/images/irsim/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "irsim", + "REPO_URL": "https://github.com/rtimothyedwards/irsim", + "REPO_COMMIT": " 5f33a7328787f726c1a22e787c8cc810f46971d3" + } +} \ No newline at end of file diff --git a/images/irsim/scripts/install.sh b/images/irsim/scripts/install.sh new file mode 100755 index 00000000..997af74c --- /dev/null +++ b/images/irsim/scripts/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install + diff --git a/images/iverilog/Dockerfile b/images/iverilog/Dockerfile new file mode 100755 index 00000000..554da9c6 --- /dev/null +++ b/images/iverilog/Dockerfile @@ -0,0 +1,14 @@ +ARG NAME +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME +# +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh +# + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/iverilog/info.json b/images/iverilog/info.json new file mode 100755 index 00000000..27a8a971 --- /dev/null +++ b/images/iverilog/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "iverilog", + "REPO_URL": "https://github.com/steveicarus/iverilog.git", + "REPO_COMMIT": "v11_0" + } +} diff --git a/images/iverilog/scripts/dependencies.sh b/images/iverilog/scripts/dependencies.sh new file mode 100755 index 00000000..210aa1e4 --- /dev/null +++ b/images/iverilog/scripts/dependencies.sh @@ -0,0 +1,11 @@ +#!/bin/bash +yum group install "Development Tools" -y +yum -y install gcc-c++ + +wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz +tar -xvzf gperf-3.1.tar.gz && \ + cd gperf-3.1 && \ + autoconf && \ + ./configure --prefix=/opt/gperf/ && \ + make -j$(nproc) && \ + make install diff --git a/images/iverilog/scripts/install.sh b/images/iverilog/scripts/install.sh new file mode 100755 index 00000000..8cc233f1 --- /dev/null +++ b/images/iverilog/scripts/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} + +chmod +x autoconf.sh +PATH=/opt/gperf/bin:$PATH ./autoconf.sh +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install + diff --git a/images/klayout/Dockerfile b/images/klayout/Dockerfile new file mode 100755 index 00000000..f9aa6d4a --- /dev/null +++ b/images/klayout/Dockerfile @@ -0,0 +1,13 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME +# +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh + diff --git a/images/klayout/info.json b/images/klayout/info.json new file mode 100755 index 00000000..f6fb2120 --- /dev/null +++ b/images/klayout/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "klayout", + "REPO_URL": "https://github.com/KLayout/klayout", + "REPO_COMMIT": "8b1278808485cc06aeb29cb9425b089df4c58546" + } +} \ No newline at end of file diff --git a/images/klayout/scripts/dependencies.sh b/images/klayout/scripts/dependencies.sh new file mode 100755 index 00000000..3d19bb75 --- /dev/null +++ b/images/klayout/scripts/dependencies.sh @@ -0,0 +1,23 @@ +#!/bin/bash +yum install -y \ + alsa-lib \ + libmng \ + libyaml \ + pciutils \ + pciutils-libs \ + qt \ + qt-devel \ + qt-settings \ + qt-x11 \ + ruby \ + ruby-devel \ + ruby-irb \ + ruby-libs \ + rubygem-bigdecimal \ + rubygem-io-console \ + rubygem-json \ + rubygem-psych \ + rubygem-rdoc \ + rubygems + + diff --git a/images/klayout/scripts/install.sh b/images/klayout/scripts/install.sh new file mode 100755 index 00000000..ed90e16b --- /dev/null +++ b/images/klayout/scripts/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} + +prefix=/foss/tools/${NAME}/${REPO_COMMIT} +mkdir -p $prefix +./build.sh -j$(nproc) -prefix "$prefix" +./build.sh -j$(nproc) -prefix "$prefix" + diff --git a/images/magic/Dockerfile b/images/magic/Dockerfile new file mode 100755 index 00000000..dfc28092 --- /dev/null +++ b/images/magic/Dockerfile @@ -0,0 +1,10 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/install.sh install.sh +RUN bash install.sh + diff --git a/images/magic/info.json b/images/magic/info.json new file mode 100755 index 00000000..1bdb87b5 --- /dev/null +++ b/images/magic/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "magic", + "REPO_URL": "https://github.com/rtimothyedwards/magic", + "REPO_COMMIT": "73929a0bccd3083c3fe5c74b7ebf5a20d74bb4ee" + } +} \ No newline at end of file diff --git a/images/magic/scripts/install.sh b/images/magic/scripts/install.sh new file mode 100755 index 00000000..997af74c --- /dev/null +++ b/images/magic/scripts/install.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install + diff --git a/images/netgen/Dockerfile b/images/netgen/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/netgen/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/netgen/info.json b/images/netgen/info.json new file mode 100755 index 00000000..e60f5dbc --- /dev/null +++ b/images/netgen/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "netgen", + "REPO_URL": "https://github.com/rtimothyedwards/netgen", + "REPO_COMMIT": "18dcac73bcb10455475826facbfdb4c25ce1a951" + } +} \ No newline at end of file diff --git a/images/netgen/scripts/dependencies.sh b/images/netgen/scripts/dependencies.sh new file mode 100755 index 00000000..05a7907c --- /dev/null +++ b/images/netgen/scripts/dependencies.sh @@ -0,0 +1,2 @@ +#!/bin/bash + diff --git a/images/netgen/scripts/install.sh b/images/netgen/scripts/install.sh new file mode 100755 index 00000000..29e68b5c --- /dev/null +++ b/images/netgen/scripts/install.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} + +cd ${NAME} +git checkout ${REPO_COMMIT} + +./configure CFLAGS="-O2 -g" --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make clean +make -j$(nproc) +make install + + diff --git a/images/ngscope/Dockerfile b/images/ngscope/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/ngscope/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/ngscope/info.json b/images/ngscope/info.json new file mode 100755 index 00000000..0e62be67 --- /dev/null +++ b/images/ngscope/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "ngscope", + "REPO_URL": "none", + "REPO_COMMIT": "0.9.5" + } +} \ No newline at end of file diff --git a/images/ngscope/scripts/dependencies.sh b/images/ngscope/scripts/dependencies.sh new file mode 100755 index 00000000..edb22062 --- /dev/null +++ b/images/ngscope/scripts/dependencies.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +yum -y install bison flex gawk zlib-devel libtool wget git curl zip unzip +yum -y install autoconf automake make gcc-c++ libstdc++-static.x86_64 +yum -y install curl libffi-devel readline-devel tcl tcl-devel graphviz xdot tk tk-devel bzip2-devel xz-devel gtk2* +yum -y install wxGTK-devel + +cmakeVersionBig=3.14 +cmakeVersionSmall=${cmakeVersionBig}.0 + +install_cmake() { + wget https://cmake.org/files/v${cmakeVersionBig}/cmake-${cmakeVersionSmall}-Linux-x86_64.sh + md5sum -c <(echo "73041a43d27a30cdcbfdfdb61310d081 cmake-${cmakeVersionSmall}-Linux-x86_64.sh") || exit 1 + chmod +x cmake-${cmakeVersionSmall}-Linux-x86_64.sh + ./cmake-${cmakeVersionSmall}-Linux-x86_64.sh --skip-license --prefix=/usr/local +} + + +install_cmake diff --git a/images/ngscope/scripts/install.sh b/images/ngscope/scripts/install.sh new file mode 100755 index 00000000..3a67429f --- /dev/null +++ b/images/ngscope/scripts/install.sh @@ -0,0 +1,14 @@ +#!/bin/bash + + +wget https://sourceforge.net/projects/ngscope/files/rel_0_9/ngscope_0_9_5.tar.bz2 + +tar -xvf ngscope_0_9_5.tar.bz2 +cd ngscope +mkdir build +cd build + +prefix=/foss/tools/${NAME}/${REPO_COMMIT} +cmake -DCMAKE_INSTALL_PREFIX=$prefix .. +make -j$(nproc) +make DESTDIR=$prefix install diff --git a/images/ngspice/Dockerfile b/images/ngspice/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/ngspice/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/ngspice/info.json b/images/ngspice/info.json new file mode 100755 index 00000000..74bdd0dc --- /dev/null +++ b/images/ngspice/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "ngspice", + "REPO_URL": "https://git.code.sf.net/p/ngspice/ngspice", + "REPO_COMMIT": "51cc21de1637d1abca1b361b756784e69a28cf76" + } +} diff --git a/images/ngspice/scripts/dependencies.sh b/images/ngspice/scripts/dependencies.sh new file mode 100755 index 00000000..0cfcb117 --- /dev/null +++ b/images/ngspice/scripts/dependencies.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +yum -y install bison flex gawk zlib-devel libtool wget git curl zip unzip +yum -y install autoconf automake make gcc-c++ libstdc++-static.x86_64 +yum -y install curl libffi-devel readline-devel tcl tcl-devel graphviz xdot tk tk-devel bzip2-devel xz-devel gtk2* +yum -y install wxGTK-devel libXaw-devel + +cmakeVersionBig=3.14 +cmakeVersionSmall=${cmakeVersionBig}.0 + +install_cmake() { + wget https://cmake.org/files/v${cmakeVersionBig}/cmake-${cmakeVersionSmall}-Linux-x86_64.sh + md5sum -c <(echo "73041a43d27a30cdcbfdfdb61310d081 cmake-${cmakeVersionSmall}-Linux-x86_64.sh") || exit 1 + chmod +x cmake-${cmakeVersionSmall}-Linux-x86_64.sh + ./cmake-${cmakeVersionSmall}-Linux-x86_64.sh --skip-license --prefix=/usr/local +} + + +install_cmake diff --git a/images/ngspice/scripts/install.sh b/images/ngspice/scripts/install.sh new file mode 100755 index 00000000..25853832 --- /dev/null +++ b/images/ngspice/scripts/install.sh @@ -0,0 +1,17 @@ +#!/bin/bash +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} + +git checkout ${REPO_COMMIT} + +./autogen.sh +./autogen.sh + +./configure --disable-debug --enable-openmp --with-x --with-readline=yes --enable-xspice --with-fftw3=yes --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make +make install + + + diff --git a/images/open_pdks/Dockerfile b/images/open_pdks/Dockerfile new file mode 100755 index 00000000..1097bf79 --- /dev/null +++ b/images/open_pdks/Dockerfile @@ -0,0 +1,20 @@ +ARG BASE_IMAGE +ARG MAGIC_IMAGE +ARG SKYWATER_IMAGE + + +FROM ${MAGIC_IMAGE} as magic +FROM ${SKYWATER_IMAGE} as sw +FROM ${BASE_IMAGE} as builder +COPY --from=magic /foss/tools/ /foss/tools/ +COPY --from=sw /foss/pdks/ /foss/pdks/ + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/open_pdks/info.json b/images/open_pdks/info.json new file mode 100755 index 00000000..633abf6d --- /dev/null +++ b/images/open_pdks/info.json @@ -0,0 +1,10 @@ +{ + "args": { + "BASE_IMAGE": "base", + "MAGIC_IMAGE": "magic", + "NAME": "open_pdks", + "REPO_URL": "https://github.com/RTimothyEdwards/open_pdks", + "REPO_COMMIT": "527bfa4c2a069542981a0217946868068b0d33fe", + "SKYWATER_IMAGE": "skywater-pdk" + } +} \ No newline at end of file diff --git a/images/open_pdks/scripts/dependencies.sh b/images/open_pdks/scripts/dependencies.sh new file mode 100755 index 00000000..05a7907c --- /dev/null +++ b/images/open_pdks/scripts/dependencies.sh @@ -0,0 +1,2 @@ +#!/bin/bash + diff --git a/images/open_pdks/scripts/install.sh b/images/open_pdks/scripts/install.sh new file mode 100755 index 00000000..ed56acf6 --- /dev/null +++ b/images/open_pdks/scripts/install.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +magic_version=$(ls /foss/tools/magic/ ) +export PATH=$PATH:/foss/tools/magic/$magic_version/bin/ + +pdk_path=/foss/pdks/ +cd $pdk_path +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout master +git pull +git checkout -qf ${REPO_COMMIT} + +##./configure --enable-sky130-pdk=$pdk_path/skywater-pdk/libraries --enable-sram-sky130="disabled" + +./configure --enable-sky130-pdk=$pdk_path/skywater-pdk/libraries --enable-alpha-sky130 --enable-xschem-sky130 --enable-sram-sky130 + +cd sky130 +make veryclean +make prerequisites +make -j$(nproc) +make SHARED_PDKS_PATH=$pdk_path install +make clean + +cd $pdk_path +\rm -rf skywater-pdk open_pdks share + diff --git a/images/openlane/Dockerfile b/images/openlane/Dockerfile new file mode 100755 index 00000000..25b3dd14 --- /dev/null +++ b/images/openlane/Dockerfile @@ -0,0 +1,13 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh +# diff --git a/images/openlane/info.json b/images/openlane/info.json new file mode 100755 index 00000000..b97ffcaf --- /dev/null +++ b/images/openlane/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "openlane", + "REPO_URL": "https://github.com/The-OpenROAD-Project/OpenLane", + "REPO_COMMIT": "2021.09.23_03.17.13" + } +} \ No newline at end of file diff --git a/images/openlane/scripts/dependencies.sh b/images/openlane/scripts/dependencies.sh new file mode 100755 index 00000000..7a693aac --- /dev/null +++ b/images/openlane/scripts/dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/bash + + diff --git a/images/openlane/scripts/install.sh b/images/openlane/scripts/install.sh new file mode 100755 index 00000000..c9935d61 --- /dev/null +++ b/images/openlane/scripts/install.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + + +install_openlane_tools() { + cd docker_build + make export-all + mkdir -p /foss/tools/${NAME}_tools/${REPO_COMMIT} + cp -r build/* /foss/tools/${NAME}_tools/${REPO_COMMIT} +} + +mkdir -p /foss/tools/ +git clone ${REPO_URL} /foss/tools/${NAME}/${REPO_COMMIT} +cd /foss/tools/${NAME}/${REPO_COMMIT} + +git checkout ${REPO_COMMIT} + +install_openlane_tools + diff --git a/images/riscv-gnu-toolchain-rv32i/Dockerfile b/images/riscv-gnu-toolchain-rv32i/Dockerfile new file mode 100755 index 00000000..09f77bb1 --- /dev/null +++ b/images/riscv-gnu-toolchain-rv32i/Dockerfile @@ -0,0 +1,10 @@ +ARG NAME +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/riscv-gnu-toolchain-rv32i/info.json b/images/riscv-gnu-toolchain-rv32i/info.json new file mode 100755 index 00000000..1ba5966b --- /dev/null +++ b/images/riscv-gnu-toolchain-rv32i/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "riscv-gnu-toolchain-rv32i", + "REPO_URL": "https://github.com/riscv/riscv-gnu-toolchain", + "REPO_COMMIT": "411d134" + } +} diff --git a/images/riscv-gnu-toolchain-rv32i/scripts/dependencies.sh b/images/riscv-gnu-toolchain-rv32i/scripts/dependencies.sh new file mode 100755 index 00000000..210aa1e4 --- /dev/null +++ b/images/riscv-gnu-toolchain-rv32i/scripts/dependencies.sh @@ -0,0 +1,11 @@ +#!/bin/bash +yum group install "Development Tools" -y +yum -y install gcc-c++ + +wget http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz +tar -xvzf gperf-3.1.tar.gz && \ + cd gperf-3.1 && \ + autoconf && \ + ./configure --prefix=/opt/gperf/ && \ + make -j$(nproc) && \ + make install diff --git a/images/riscv-gnu-toolchain-rv32i/scripts/install.sh b/images/riscv-gnu-toolchain-rv32i/scripts/install.sh new file mode 100755 index 00000000..1a7c300b --- /dev/null +++ b/images/riscv-gnu-toolchain-rv32i/scripts/install.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} + +git submodule update --init --recursive +mkdir build +cd build +../configure --with-arch=rv32i --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) diff --git a/images/skywater-pdk/Dockerfile b/images/skywater-pdk/Dockerfile new file mode 100755 index 00000000..8bb76a35 --- /dev/null +++ b/images/skywater-pdk/Dockerfile @@ -0,0 +1,11 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as base +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/skywater-pdk/info.json b/images/skywater-pdk/info.json new file mode 100755 index 00000000..740b800e --- /dev/null +++ b/images/skywater-pdk/info.json @@ -0,0 +1,8 @@ +{ + "args" : { + "BASE_IMAGE" : "base", + "NAME": "skywater-pdk", + "REPO_URL": "https://github.com/google/skywater-pdk.git", + "REPO_COMMIT" : "c094b6e83a4f9298e47f696ec5a7fd53535ec5eb" + } +} diff --git a/images/skywater-pdk/scripts/dependencies.sh b/images/skywater-pdk/scripts/dependencies.sh new file mode 100755 index 00000000..7a693aac --- /dev/null +++ b/images/skywater-pdk/scripts/dependencies.sh @@ -0,0 +1,3 @@ +#!/bin/bash + + diff --git a/images/skywater-pdk/scripts/install.sh b/images/skywater-pdk/scripts/install.sh new file mode 100755 index 00000000..41059f20 --- /dev/null +++ b/images/skywater-pdk/scripts/install.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +mkdir -p /foss/pdks +git clone ${REPO_URL} /foss/pdks/${NAME}/ +cd /foss/pdks/${NAME}/ && \ +git checkout main && git submodule init && git pull --no-recurse-submodules && \ +git checkout -qf ${REPO_COMMIT} && \ +git submodule update --init libraries/sky130_fd_sc_hd/latest && \ +git submodule update --init libraries/sky130_fd_io/latest && \ +git submodule update --init libraries/sky130_fd_sc_hvl/latest && \ +git submodule update --init libraries/sky130_fd_pr/latest && \ +make timing + diff --git a/images/xschem/Dockerfile b/images/xschem/Dockerfile new file mode 100755 index 00000000..d42a6e28 --- /dev/null +++ b/images/xschem/Dockerfile @@ -0,0 +1,12 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/xschem/info.json b/images/xschem/info.json new file mode 100755 index 00000000..712a0fa5 --- /dev/null +++ b/images/xschem/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "xschem", + "REPO_URL": "https://github.com/StefanSchippers/xschem.git", + "REPO_COMMIT": "945368db9cf21c6a402260f6ee03350893a233ef" + } +} \ No newline at end of file diff --git a/images/xschem/scripts/dependencies.sh b/images/xschem/scripts/dependencies.sh new file mode 100755 index 00000000..d9fb0092 --- /dev/null +++ b/images/xschem/scripts/dependencies.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +yum install -y \ + alsa-lib-devel \ + gtk3-devel \ + libXpm-devel + +yum install -y libX11 libX11-devel libXrender libXrender-devel \ + libxcb libxcb-devel libcairo2 \ + libcairo2-devel tcl tcl-devel tk tk-devel \ + flex bison libXpm libXpm-devel gawk + + + diff --git a/images/xschem/scripts/install.sh b/images/xschem/scripts/install.sh new file mode 100755 index 00000000..b285852f --- /dev/null +++ b/images/xschem/scripts/install.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} + +autoreconf -f -i + +git checkout ${REPO_COMMIT} + +./configure --prefix=/foss/tools/${NAME}/${REPO_COMMIT} +make -j$(nproc) +make install diff --git a/images/xyce/Dockerfile b/images/xyce/Dockerfile new file mode 100755 index 00000000..b2de1df1 --- /dev/null +++ b/images/xyce/Dockerfile @@ -0,0 +1,15 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} as builder + +ARG REPO_URL +ARG REPO_COMMIT +ARG NAME + + +ADD scripts/dependencies.sh dependencies.sh +RUN bash dependencies.sh + +COPY scripts/trilinos.reconfigure.sh /trilinos.reconfigure.sh +COPY scripts/xyce.reconfigure.sh /xyce.reconfigure.sh +ADD scripts/install.sh install.sh +RUN bash install.sh diff --git a/images/xyce/info.json b/images/xyce/info.json new file mode 100755 index 00000000..2fe6c71f --- /dev/null +++ b/images/xyce/info.json @@ -0,0 +1,8 @@ +{ + "args": { + "BASE_IMAGE": "base", + "NAME": "xyce", + "REPO_URL": "https://github.com/Xyce/Xyce.git", + "REPO_COMMIT": "a157dbaa9516d5c218725f174b35f670b9e34131" + } +} diff --git a/images/xyce/scripts/dependencies.sh b/images/xyce/scripts/dependencies.sh new file mode 100755 index 00000000..a3f44e53 --- /dev/null +++ b/images/xyce/scripts/dependencies.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +yum -y install devtoolset-8-gcc-gfortran +yum -y install make bison libtool +yum -y install suitesparse-devel flex-devel fftw-devel blas-devel lapack-devel openmpi-devel + +cmakeVersionBig=3.17 +cmakeVersionSmall=${cmakeVersionBig}.0 + +install_cmake() { + wget https://cmake.org/files/v${cmakeVersionBig}/cmake-${cmakeVersionSmall}-Linux-x86_64.sh + chmod +x cmake-${cmakeVersionSmall}-Linux-x86_64.sh + ./cmake-${cmakeVersionSmall}-Linux-x86_64.sh --skip-license --prefix=/usr/local +} + + +install_cmake diff --git a/images/xyce/scripts/install.sh b/images/xyce/scripts/install.sh new file mode 100755 index 00000000..9c7a87b3 --- /dev/null +++ b/images/xyce/scripts/install.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +source scl_source enable devtoolset-8 + +git clone ${REPO_URL} ${NAME} +cd ${NAME} +git checkout ${REPO_COMMIT} +./bootstrap + +git clone https://github.com/trilinos/Trilinos trilinos +cd trilinos +git checkout trilinos-release-12-12-1 +mkdir -p parallel_build && cd parallel_build +cp /trilinos.reconfigure.sh ./reconfigure +chmod +x reconfigure +./reconfigure +make -j$(nproc) +make install + +cd /${NAME} +mkdir -p parallel_build && cd parallel_build +cp /xyce.reconfigure.sh ./reconfigure +chmod +x reconfigure +./reconfigure +make -j$(nproc) +make install + diff --git a/images/xyce/scripts/trilinos.reconfigure.sh b/images/xyce/scripts/trilinos.reconfigure.sh new file mode 100755 index 00000000..83ecc849 --- /dev/null +++ b/images/xyce/scripts/trilinos.reconfigure.sh @@ -0,0 +1,43 @@ +#!/bin/sh +SRCDIR=/xyce/trilinos +ARCHDIR=/xyce/XyceLibs/Parallel +FLAGS="-O3 -fPIC" +PATH=$PATH:/usr/lib64/openmpi/bin +cmake \ +-G "Unix Makefiles" \ +-DCMAKE_C_COMPILER=mpicc \ +-DCMAKE_CXX_COMPILER=mpic++ \ +-DCMAKE_Fortran_COMPILER=mpif77 \ +-DCMAKE_CXX_FLAGS="$FLAGS" \ +-DCMAKE_C_FLAGS="$FLAGS" \ +-DCMAKE_Fortran_FLAGS="$FLAGS" \ +-DCMAKE_INSTALL_PREFIX=$ARCHDIR \ +-DCMAKE_MAKE_PROGRAM="make" \ +-DTrilinos_ENABLE_NOX=ON \ +-DNOX_ENABLE_LOCA=ON \ +-DTrilinos_ENABLE_EpetraExt=ON \ +-DEpetraExt_BUILD_BTF=ON \ +-DEpetraExt_BUILD_EXPERIMENTAL=ON \ +-DEpetraExt_BUILD_GRAPH_REORDERINGS=ON \ +-DTrilinos_ENABLE_TrilinosCouplings=ON \ +-DTrilinos_ENABLE_Ifpack=ON \ +-DTrilinos_ENABLE_ShyLU=ON \ +-DTrilinos_ENABLE_Isorropia=ON \ +-DTrilinos_ENABLE_AztecOO=ON \ +-DTrilinos_ENABLE_Belos=ON \ +-DTrilinos_ENABLE_Teuchos=ON \ +-DTeuchos_ENABLE_COMPLEX=ON \ +-DTrilinos_ENABLE_Amesos=ON \ +-DAmesos_ENABLE_KLU=ON \ +-DTrilinos_ENABLE_Sacado=ON \ +-DTrilinos_ENABLE_Kokkos=OFF \ +-DTrilinos_ENABLE_Zoltan=ON \ +-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \ +-DTrilinos_ENABLE_CXX11=ON \ +-DTPL_ENABLE_AMD=ON \ +-DAMD_LIBRARY_DIRS="/usr/lib" \ +-DTPL_AMD_INCLUDE_DIRS="/usr/include/suitesparse" \ +-DTPL_ENABLE_BLAS=ON \ +-DTPL_ENABLE_LAPACK=ON \ +-DTPL_ENABLE_MPI=ON \ +$SRCDIR diff --git a/images/xyce/scripts/xyce.reconfigure.sh b/images/xyce/scripts/xyce.reconfigure.sh new file mode 100755 index 00000000..16dee50f --- /dev/null +++ b/images/xyce/scripts/xyce.reconfigure.sh @@ -0,0 +1,13 @@ +export PATH=$PATH:/usr/lib64/openmpi/bin +../configure \ +CXXFLAGS="-O3 -std=c++11" \ +ARCHDIR="/xyce/XyceLibs/Parallel" \ +CPPFLAGS="-I/usr/include/suitesparse" \ +--enable-shared \ +--enable-Xyce-shareable \ +--enable-mpi \ +CXX=/usr/lib64/openmpi/bin/mpicxx \ +CC=/usr/lib64/openmpi/bin/mpicc \ +F77=/usr/lib64/openmpi/bin/mpif77 \ +--prefix=/foss/tools/${NAME}/Parallel/${REPO_COMMIT} \ +--enable-fft --enable-intel_fft --enable-fftw --enable-athena --enable-adms_sensitivities --enable-hdf5 diff --git a/paths/__pycache__/paths.cpython-37.pyc b/paths/__pycache__/paths.cpython-37.pyc new file mode 100755 index 0000000000000000000000000000000000000000..17b528194dcef06ed5571c61a9b58ff0b0360eec GIT binary patch literal 1088 zcmZWoO>fgc5ZzhZiJN|^R6;@=IbftF95_}Lr9}`VqNwS~5?UFr)4Diu*mZ@doD-EO zNB%*5H#pZ{Cbwt*yz3WW-gqcjRJO1QzID$s5TKlx`D!@xijO+y!vD)g7MI19Mp&F2RC zznH3F@a?l!oThQB$n#9M`nlG-kxt{?i9d>pGu^VbIr@6r*vnE~#Q9*fzeeaprN%Cw zoF>IVmbI-OT?}dNWqBNBdLLhA0r&V5@&n3nm;XerYgR(VC;TnLz%e}6#w8ZUJqPeQZ|S?+@O*?uqWf$y-w=xhT79 zTzu$oldKr#g*Z#4Oorh`|02t%P%TK1@Zr)0(a$rPC_Ui~iuz<(nXTn6QAwK48EilU z_cm^|jsAa99n#euG>efgS>@2o(Uf%pZ>dB@^{Y)ZIB>HDiD5KItcXjBnKk5Q$A_ke z7-(uRgDp^m8muhRn>toZiA+8EsO?brLiE!t5n_RA%doL`pynMi{@x&$7g@4z|5X|k LpYMR{_$&Va#UJE3 literal 0 HcmV?d00001 diff --git a/paths/__pycache__/paths.cpython-39.pyc b/paths/__pycache__/paths.cpython-39.pyc new file mode 100755 index 0000000000000000000000000000000000000000..618ea610702e351cdeaaea80eecc04ac182fc59a GIT binary patch literal 1107 zcmZuwOK;Oa5Z+naiJLwsZ3PnI$R&ry9C{!dE5IPAKrsGJK_ zq8#}L^|60xuben@6fCH2nr$ZnNi3?w0%;uCBaGR>Byu1;1bg+hbo~3}0Cf5RYH@1=t-fTzk&#$|)Sg z_71v$8K(mYG9uJL(~r>gG2OehF%)oxl4{F1?`3Kb{V0~ls$<&%M z)p<7?jJB6B*)KG9{-mGeJ5si+Ol=HkG-cL}rQXKL^!go26%1WR`-jp*#YiA1XGUFGA6T0pl<6Ka$@*f(-M##1Zj#uz5p zhz#mR(7)(vkx~(3ZBrD1F2wE z=U;|o(Zqwn3e?cn(9{O5|Etk1U8mDocNeU5sP(AX4(i?Oj0}j3)15fFyR+#YV*)cLz55rE zqj!HzUp?h7c=A;bSri=Ts_O2V?yC1*KU!KEFnmAPcJrZP>=#WgK7rsNhIco5Ivng_hBCyq?;RQI%4(KImfE!v#xEDvXpgkn)4s z5!Qd-9T#O;jO(hJxbc4F+2>y z&ZN>`G`(L=jOY7VpOOLup{>p=;T}H%hWZ(HpCI)*R$KzZLY;}Q*AOqNj4@fzyopIk zG~Wv}uMy3GUI{OVX6#0dY9cM~vnFbI1HT|uZCg^$IhjB~s40zoROjzevzkLkDZ?7tXod9%~VLI3oo(P48M#A2}+CS|OLjm+11f*I5Uh}Ww`@L2K z@CCq^wIs!Ic6_~&(DZVvf=+{C57+kC9v<5Zw#(kI8jX^+o2XMRw`puI;czbtcjRM& z+gM1?9M_iKO{fVuR}p6l{kp7&OkytUBj|pxtCYGzhIIKifkAUy?uZDygS|!PBM6P; zwjvU4Z(}DNWJA)p+X%LMN`#ZW3FC)B`5VE87Zx-cBoK-WXZ&@2C?tp|xj(J+=ZSeh R8g`^?5;_o<$x@Oeqdzoz2<-p> literal 0 HcmV?d00001 diff --git a/recipe/__pycache__/recipe.cpython-39.pyc b/recipe/__pycache__/recipe.cpython-39.pyc new file mode 100755 index 0000000000000000000000000000000000000000..fe9550693c97ff1ff290caa6d4df9c20b4882609 GIT binary patch literal 1261 zcmZuwO>fjN5cOBG+1>O*AP_|eZipbY3l|Ou5K<8W1Qp^_L_!eO?y`_<7CW>cWiOOF zf1y3{mwe^KU*N>FvMl|M6IsT6Ix)@d zs+gGjMe}+K6H)jYb6WrP^x%;m+r)6UU?yzATXuszzq}BwSjd*Oat-ONv4v_7@9{;{ z@O{xn2YeB?@xE-;0n%>yzG`EN-X$$Z8e+@$c8qn?dX`0&%C!>4FORJ$8gtXu73Jjz z&NNTDeLgPcb2HOfFCSVnp3cn+Jsmebo>CRgt7&5@uVzJMEG3;M^S6^1b2=poTfQ=z zV*ba~(PM`rM>nUXaijZX(QMbY8Z~uYy3wSrC#6}h=DX|NM0eGwa~t!Ieq~-*XC8zM zZXkg^&U8m$7*{;ONMQ$fQ(>1e`xl~AB#nURX#_xx0W}^_<3LRSD|x_x8PUbJGUZi` zy1jbiYS^+aw2#JR?Mx>9ZzQ%+i|5;UpEdQVKgY6 zTA+

nR6 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%0A@O20hCz`z3R~%599TyGj@ACBd@Ty1y&lqzd*r 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