| # 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 --------------------------------- |
| #========================================================================= |
| |
| Testing_DIR ?= $(shell pwd) |
| |
| .DEFAULT_GOAL := all |
| |
| all : clean test-DRC |
| |
| test-DRC: test-DRC_switch test-DRC_SC test-DRC_main |
| |
| |
| #================================= |
| # --------- test-DRC_SC ---------- |
| #================================= |
| |
| .ONESHELL: |
| test-DRC_SC : test-DRC-gf180mcu_fd_ip_sram test-DRC-gf180mcu_fd_io test-DRC-gf180mcu_fd_sc_mcu7t5v0 test-DRC-gf180mcu_fd_sc_mcu9t5v0 |
| @echo "========== DRC-DRC_SC is done ==========" |
| |
| .ONESHELL: |
| test-DRC-gf180mcu_fd_ip_sram: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-gf180mcu_fd_ip_sram testing ==========" |
| @ python3 run_sc_regression.py \ |
| --path=ip_testcases/gf180mcu_fd_ip_sram__sram64x8m8wm1.gds \ |
| --path=ip_testcases/gf180mcu_fd_ip_sram__sram128x8m8wm1.gds \ |
| --path=ip_testcases/gf180mcu_fd_ip_sram__sram256x8m8wm1.gds \ |
| --path=ip_testcases/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds |
| |
| .ONESHELL: |
| test-DRC-gf180mcu_fd_io: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-gf180mcu_fd_io testing ==========" |
| @ python3 run_sc_regression.py \ |
| --path=ip_testcases/gf180mcu_fd_io_3lm.gds \ |
| --path=ip_testcases/gf180mcu_fd_io_4lm.gds \ |
| --path=ip_testcases/gf180mcu_fd_io_5lm.gds |
| |
| .ONESHELL: |
| test-DRC-gf180mcu_fd_sc_mcu7t5v0: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-gf180mcu_fd_sc_mcu7t5v0 testing ==========" |
| @ python3 run_sc_regression.py --path=sc_testcases/gf180mcu_fd_sc_mcu7t5v0.gds |
| |
| .ONESHELL: |
| test-DRC-gf180mcu_fd_sc_mcu9t5v0: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-gf180mcu_fd_sc_mcu9t5v0 testing ==========" |
| @ python3 run_sc_regression.py --path=sc_testcases/gf180mcu_fd_sc_mcu9t5v0.gds |
| |
| #================================= |
| # ----- test-DRC_regression ------ |
| #================================= |
| |
| .ONESHELL: |
| test-DRC_main : test-DRC-foundry-Option-1 test-DRC-foundry-Option-2 test-DRC-foundry-Option-3 test-DRC-foundry-Option-4 test-DRC-Option-A test-DRC-Option-B test-DRC-Option-C |
| @echo "========== DRC-Regression is done ==========" |
| |
| .ONESHELL: |
| test-DRC-foundry-Option-1: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression foundry-Option-1 ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_6kA_MIMA_SOLDER_BUMP.gds.gz \ |
| --metal_top="6K" --mim_option="A" --metal_level=6 --run_name="DRC-foundry-Option-1" |
| |
| .ONESHELL: |
| test-DRC-foundry-Option-2: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression foundry-Option-2 ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_9kA_MIMB_WEDGE.gds.gz \ |
| --metal_top="9K" --mim_option="B" --metal_level=6 --run_name="DRC-foundry-Option-2" |
| |
| .ONESHELL: |
| test-DRC-foundry-Option-3: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression foundry-Option-3 ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_11kA_MIMA_Gold_Bump.gds.gz \ |
| --metal_top="11K" --mim_option="A" --metal_level=6 --run_name="DRC-foundry-Option-3" |
| |
| .ONESHELL: |
| test-DRC-foundry-Option-4: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression foundry-Option-4 ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_30kA_MIMB_BALL.gds.gz \ |
| --metal_top="30K" --mim_option="B" --metal_level=6 --run_name="DRC-foundry-Option-4" |
| |
| .ONESHELL: |
| test-DRC-Option-A: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression Option-A ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_11kA_MIMA_Gold_Bump.gds.gz \ |
| --metal_top="30K" --mim_option="A" --metal_level=3 --run_name="DRC-Option-A" |
| |
| .ONESHELL: |
| test-DRC-Option-B: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression Option-B ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_11kA_MIMA_Gold_Bump.gds.gz \ |
| --metal_top="11K" --mim_option="B" --metal_level=4 --run_name="DRC-Option-B" |
| |
| .ONESHELL: |
| test-DRC-Option-C: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Regression Option-C ==========" |
| @python3 run_regression.py \ |
| --path=testcases/0.0.DM000013_13_1P6M_11kA_MIMA_Gold_Bump.gds.gz \ |
| --path=testcases/Manual_testcases.gds \ |
| --path=testcases/density_testcases/Mn_4_fail.gds \ |
| --path=testcases/density_testcases/Mn_4_pass.gds \ |
| --path=testcases/density_testcases/MT30_7_fail.gds \ |
| --path=testcases/density_testcases/MT30_7_pass.gds \ |
| --path=testcases/density_testcases/MT_3_fail.gds \ |
| --path=testcases/density_testcases/MT_3_pass.gds \ |
| --path=testcases/density_testcases/PL_8_fail.gds \ |
| --path=testcases/density_testcases/PL_8_pass.gds \ |
| --metal_top="9K" --mim_option="B" --metal_level=5 --run_name="DRC-Option-C" |
| |
| #================================= |
| # -------- test-DRC_switch ------- |
| #================================= |
| |
| .ONESHELL: |
| test-DRC_switch: |
| @cd $(Testing_DIR) |
| @echo "========== DRC-Switch testing ==========" |
| @python3 run_switch_checking.py |
| @rm -rf pattern.csv |
| |
| #=============================== |
| # --------- Clean ALL ---------- |
| #=============================== |
| |
| .ONESHELL: |
| clean: |
| @echo "==== Cleaning old runs ====" |
| @cd $(Testing_DIR)/ && rm -rf run_20* *report* markers.drc regression.drc merged_* sc pattern.csv database.lyrdb |
| @echo "==== Cleaning all runs is done ====" |
| |
| #========================== |
| # --------- 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 "... clean (To clean all old runs )" |
| @echo "... test-DRC_switch (To run switch checking regression )" |
| @echo "... test-DRC_SC (To run standard cells DRC regression )" |
| @echo "... test-DRC-gf180mcu_fd_ip_sram (To run SRAM IP cells DRC regression )" |
| @echo "... test-DRC-gf180mcu_fd_io (To run I/O cells DRC regression )" |
| @echo "... test-DRC-gf180mcu_fd_sc_mcu7t5v0 (To run standard cells 7 tracks DRC regression )" |
| @echo "... test-DRC-gf180mcu_fd_sc_mcu9t5v0 (To run standard cells 9 tracks DRC regression )" |
| @echo "... test-DRC_main (To run main DRC full regression )" |
| @echo "... test-DRC-foundry-Option-1 (To run main DRC regression using foundry-Option-1)" |
| @echo "... test-DRC-foundry-Option-2 (To run main DRC regression using foundry-Option-2)" |
| @echo "... test-DRC-foundry-Option-3 (To run main DRC regression using foundry-Option-3)" |
| @echo "... test-DRC-foundry-Option-4 (To run main DRC regression using foundry-Option-4)" |
| @echo "... test-DRC-Option-A (To run main DRC regression using Option-A )" |
| @echo "... test-DRC-Option-B (To run main DRC regression using Option-B )" |
| @echo "... test-DRC-Option-C (To run main DRC regression using Option-C )" |