blob: 900157fb7ca8b8bbcfb0e902d09fcfce77e0fda1 [file] [log] [blame]
# Copyright 2022 GlobalFoundries PDK Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# 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.
#=========================================================================
# ---------------------------------- DRC ---------------------------------
#=========================================================================
SHELL := /bin/bash
Testing_DIR ?= $(shell pwd)
run_folder := $(shell date +'run_%Y_%m_%d_%H_%M')
.DEFAULT_GOAL := all
all : test-DRC-pcell
test-DRC-pcell: Add_run-dir test-DRC-bjt test-DRC-diode test-DRC-MIM test-DRC-MOSCAP test-DRC-MOS test-DRC-RES
#=================================
# --------- RUN FOLDER ----------
#=================================
.ONESHELL:
Add_run-dir:
@cd $(Testing_DIR)
@ mkdir -p $(run_folder)/bjt_drc $(run_folder)/diode_drc $(run_folder)/mimcap_drc $(run_folder)/mosfet_drc $(run_folder)/moscap_drc $(run_folder)/res_drc
#=================================
# ---------- test-DRC-BJT --------
#=================================
.ONESHELL:
test-DRC-bjt: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for BJT pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/bjt_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/bjt_drc/bjt.log
@mv -f ../testcases/bjt_pcells*.lyrdb $(run_folder)/bjt_drc
#=================================
# -------- test-DRC-diode -------
#=================================
.ONESHELL:
test-DRC-diode: test-DRC-np_diode test-DRC-pn_diode test-DRC-np_dw_diode test-DRC-pn_dw_diode test-DRC-nwp_diode test-DRC-dnwpw_diode test-DRC-dnwps_diode test-DRC-sc_diode
.ONESHELL:
test-DRC-np_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for np_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/np_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/np_diode.log
@mv -f ../testcases/np_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-pn_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pn_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pn_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/pn_diode.log
@mv -f ../testcases/pn_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-np_dw_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for np_dw_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/np_dw_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/np_dw_diode.log
@mv -f ../testcases/np_dw_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-pn_dw_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pn_dw_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pn_dw_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/pn_dw_diode.log
@mv -f ../testcases/pn_dw_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-nwp_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nwp_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nwp_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/nwp_diode.log
@mv -f ../testcases/nwp_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-dnwpw_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for dnwpw_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/dnwpw_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/dnwpw_diode.log
@mv -f ../testcases/dnwpw_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-dnwps_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for dnwps_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/dnwps_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/dnwps_diode.log
@mv -f ../testcases/dnwps_diode_pcells*.lyrdb $(run_folder)/diode_drc
.ONESHELL:
test-DRC-sc_diode: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for sc_diode pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/sc_diode_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/diode_drc/sc_diode.log
@mv -f ../testcases/sc_diode_pcells*.lyrdb $(run_folder)/diode_drc
#=================================
# --------- test-DRC-MIM ---------
#=================================
.ONESHELL:
test-DRC-MIM: test-DRC-MIM-A test-DRC-MIM-B
.ONESHELL:
test-DRC-MIM-A: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for MIM-A pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/MIM-A_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mimcap_drc/mim_a_gfA.log
@mv -f ../testcases/MIM-A_pcells*.lyrdb $(run_folder)/mimcap_drc
.ONESHELL:
test-DRC-MIM-B: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for MIM-B pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/MIM-B_gfB_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mimcap_drc/mim_b_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/MIM-B_gfC_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mimcap_drc/mim_b_gfC.log
@mv -f ../testcases/MIM-B_gfB_pcells*.lyrdb $(run_folder)/mimcap_drc
#=================================
# --------- test-DRC-MOS ---------
#=================================
.ONESHELL:
test-DRC-MOS: test-DRC-nmos_3p3 test-DRC-nmos_5p0 test-DRC-nmos_6p0 test-DRC-pmos_3p3 test-DRC-pmos_5p0 test-DRC-pmos_6p0 test-DRC-nmos_3p3_dw test-DRC-nmos_5p0_dw test-DRC-nmos_6p0_dw test-DRC-pmos_3p3_dw test-DRC-pmos_5p0_dw test-DRC-pmos_6p0_dw test-DRC-nmos_6p0_nat test-DRC-nmos_10p0_asym test-DRC-pmos_10p0_asym
.ONESHELL:
test-DRC-nmos_3p3: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_3p3 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_gfC.log
@mv -f ../testcases/nmos_3p3_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_5p0: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_5p0 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_gfC.log
@mv -f ../testcases/nmos_5p0_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_6p0: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_6p0 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_gfC.log
@mv -f ../testcases/nmos_6p0_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_3p3: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_3p3 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_gfC.log
@mv -f ../testcases/pmos_3p3_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_5p0: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_5p0 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_gfC.log
@mv -f ../testcases/pmos_5p0_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_6p0: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_6p0 pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_gfC.log
@mv -f ../testcases/pmos_6p0_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_3p3_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_3p3_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_3p3_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_3p3_dw_gfC.log
@mv -f ../testcases/nmos_3p3_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_5p0_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_5p0_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_5p0_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_5p0_dw_gfC.log
@mv -f ../testcases/nmos_5p0_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_6p0_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_6p0_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_dw_gfC.log
@mv -f ../testcases/nmos_6p0_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_3p3_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_3p3_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_3p3_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_3p3_dw_gfC.log
@mv -f ../testcases/pmos_3p3_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_5p0_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_5p0_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_5p0_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_5p0_dw_gfC.log
@mv -f ../testcases/pmos_5p0_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_6p0_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_6p0_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_6p0_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_6p0_dw_gfC.log
@mv -f ../testcases/pmos_6p0_dw_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_6p0_nat: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_6p0_nat pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_nat_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_nat_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_nat_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_nat_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_6p0_nat_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_6p0_nat_gfC.log
@mv -f ../testcases/nmos_6p0_nat_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-nmos_10p0_asym: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmos_10p0_asym pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_10p0_asym_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_10p0_asym_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_10p0_asym_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_10p0_asym_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmos_10p0_asym_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/nmos_10p0_asym_gfC.log
@mv -f ../testcases/nmos_10p0_asym_pcells*.lyrdb $(run_folder)/mosfet_drc
.ONESHELL:
test-DRC-pmos_10p0_asym: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmos_10p0_asym pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_10p0_asym_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_10p0_asym_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_10p0_asym_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_10p0_asym_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmos_10p0_asym_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/mosfet_drc/pmos_10p0_asym_gfC.log
@mv -f ../testcases/pmos_10p0_asym_pcells*.lyrdb $(run_folder)/mosfet_drc
#=================================
# ------- test-DRC-MOSCAP --------
#=================================
.ONESHELL:
test-DRC-MOSCAP: test-DRC-nmoscap test-DRC-pmoscap test-DRC-nmoscap_dw test-DRC-pmoscap_dw test-DRC-nmoscap_b test-DRC-pmoscap
.ONESHELL:
test-DRC-nmoscap: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmoscap pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_gfC.log
@mv -f ../testcases/nmoscap_pcells*.lyrdb $(run_folder)/moscap_drc
.ONESHELL:
test-DRC-pmoscap: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmoscap pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_gfC.log
@mv -f ../testcases/pmoscap_pcells*.lyrdb $(run_folder)/moscap_drc
.ONESHELL:
test-DRC-nmoscap_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmoscap_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_dw_gfC.log
@mv -f ../testcases/nmoscap_dw_pcells*.lyrdb $(run_folder)/moscap_drc
.ONESHELL:
test-DRC-pmoscap_dw: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmoscap_dw pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_dw_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_dw_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_dw_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_dw_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_dw_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_dw_gfC.log
@mv -f ../testcases/pmoscap_dw_pcells*.lyrdb $(run_folder)/moscap_drc
.ONESHELL:
test-DRC-nmoscap_b: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nmoscap_b pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_b_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_b_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_b_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_b_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nmoscap_b_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/nmoscap_b_gfC.log
@mv -f ../testcases/nmoscap_b_pcells*.lyrdb $(run_folder)/moscap_drc
.ONESHELL:
test-DRC-pmoscap_b: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pmoscap_b pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_b_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_b_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_b_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_b_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pmoscap_b_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/moscap_drc/pmoscap_b_gfC.log
@mv -f ../testcases/pmoscap_b_pcells*.lyrdb $(run_folder)/moscap_drc
#=================================
# --------- test-DRC-RES ---------
#=================================
.ONESHELL:
test-DRC-RES: test-DRC-nplus_u_res test-DRC-nplus_s_res test-DRC-pplus_u_res test-DRC-pplus_s_res test-DRC-npolyf_u_res test-DRC-npolyf_s_res test-DRC-ppolyf_u_res \
test-DRC-ppolyf_s_res test-DRC-ppolyf_u_high_Rs_res test-DRC-nwell_res test-DRC-pwell_res test-DRC-metal_res
.ONESHELL:
test-DRC-nplus_u_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nplus_u_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_u_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_u_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_u_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_u_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_u_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_u_res_gfC.log
@mv -f ../testcases/nplus_u_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-nplus_s_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nplus_s_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_s_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_s_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_s_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_s_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nplus_s_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/nplus_s_res_gfC.log
@mv -f ../testcases/nplus_s_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-pplus_u_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pplus_u_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_u_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_u_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_u_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_u_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_u_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_u_res_gfC.log
@mv -f ../testcases/pplus_u_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-pplus_s_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pplus_s_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_s_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_s_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_s_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_s_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pplus_s_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/pplus_s_res_gfC.log
@mv -f ../testcases/pplus_s_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-npolyf_u_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for npolyf_u_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_u_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_u_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_u_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_u_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_u_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_u_res_gfC.log
@mv -f ../testcases/npolyf_u_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-npolyf_s_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for npolyf_s_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_s_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_s_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_s_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_s_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/npolyf_s_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/npolyf_s_res_gfC.log
@mv -f ../testcases/npolyf_s_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-ppolyf_u_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for ppolyf_u_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_res_gfC.log
@mv -f ../testcases/ppolyf_u_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-ppolyf_s_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for ppolyf_s_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_s_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_s_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_s_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_s_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_s_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_s_res_gfC.log
@mv -f ../testcases/ppolyf_s_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-ppolyf_u_high_Rs_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for ppolyf_u_high_Rs_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_high_Rs_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_high_Rs_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_high_Rs_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_high_Rs_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/ppolyf_u_high_Rs_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/ppolyf_u_high_Rs_res_gfC.log
@mv -f ../testcases/ppolyf_u_high_Rs_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-nwell_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for nwell_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nwell_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/nwell_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nwell_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/nwell_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/nwell_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/nwell_res_gfC.log
@mv -f ../testcases/nwell_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-pwell_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for pwell_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pwell_resistor_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/pwell_res_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pwell_resistor_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/pwell_res_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/pwell_resistor_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/pwell_res_gfC.log
@mv -f ../testcases/pwell_resistor_pcells*.lyrdb $(run_folder)/res_drc
.ONESHELL:
test-DRC-metal_res: Add_run-dir
@cd $(Testing_DIR)
@echo "===== test-DRC for metal_res pcells ====="
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/metal_resistor_rm1_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/metal_res_rm1_gfC.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/metal_resistor_rm2_3_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/metal_res_rm2_3_gfC.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/metal_resistor_tm30k_pcells.gds --gf180mcu=A --antenna --no_offgrid |& tee $(run_folder)/res_drc/metal_res_tm30k_gfA.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/metal_resistor_tm11k_pcells.gds --gf180mcu=B --antenna --no_offgrid |& tee $(run_folder)/res_drc/metal_res_tm11k_gfB.log
@python3 $(PDK_ROOT)/$(PDK)/run_drc.py --path=../testcases/metal_resistor_tm9k_pcells.gds --gf180mcu=C --antenna --no_offgrid |& tee $(run_folder)/res_drc/metal_res_tm9k_gfC.log
@mv -f ../testcases/metal_resistor_rm1_pcells*.lyrdb $(run_folder)/res_drc
@mv -f ../testcases/metal_resistor_rm2_3_pcells*.lyrdb $(run_folder)/res_drc
@mv -f ../testcases/metal_resistor_tm30k_pcells*.lyrdb $(run_folder)/res_drc
@mv -f ../testcases/metal_resistor_tm11k_pcells*.lyrdb $(run_folder)/res_drc
@mv -f ../testcases/metal_resistor_tm9k_pcells*.lyrdb $(run_folder)/res_drc
#==========================
# --------- HELP ----------
#==========================
# Help Target
help:
@echo "\n ==== The following are some of the valid targets for this Makefile ====\n"
@echo "... all (the default if no target is provided )"
@echo "... test-DRC-pcell (To run DRC for on all pcells )"
@echo "... test-DRC-bjt (To run DRC for on bjt pcells )"
@echo "... test-DRC-diode (To run DRC for on diode pcells )"
@echo "... test-DRC-MIM (To run DRC for on MIM pcells )"
@echo "... test-DRC-MOS (To run DRC for on MOS pcells )"
@echo "... test-DRC-MOSCAP (To run DRC for on MOSCAP pcells )"
@echo "... test-DRC-RES (To run DRC for on RES pcells )"