Merge pull request #11 from mabrains/drc_actions
Adding GitHub Actions for DRC testing
diff --git a/.github/workflows/drc_gf180mcu_fd_io_test.yml b/.github/workflows/drc_gf180mcu_fd_io_test.yml
new file mode 100644
index 0000000..68b9698
--- /dev/null
+++ b/.github/workflows/drc_gf180mcu_fd_io_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: Regression testing the DRC rules against gf180mcu_fd_io
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "gf180mcu_fd_io_DRC_testing"
+ gf180mcu_fd_io_DRC_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for gf180mcu_fd_io
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC-gf180mcu_fd_io
diff --git a/.github/workflows/drc_gf180mcu_fd_ip_sram_test.yml b/.github/workflows/drc_gf180mcu_fd_ip_sram_test.yml
new file mode 100644
index 0000000..f5b0f1c
--- /dev/null
+++ b/.github/workflows/drc_gf180mcu_fd_ip_sram_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: Regression testing the DRC rules against gf180mcu_fd_ip_sram
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "DRC_gf180mcu_fd_ip_sram_testing"
+ DRC_gf180mcu_fd_ip_sram_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for gf180mcu_fd_ip_sram
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC-gf180mcu_fd_ip_sram
diff --git a/.github/workflows/drc_gf180mcu_fd_sc_mcu7t5v0_test.yml b/.github/workflows/drc_gf180mcu_fd_sc_mcu7t5v0_test.yml
new file mode 100644
index 0000000..0a93fdb
--- /dev/null
+++ b/.github/workflows/drc_gf180mcu_fd_sc_mcu7t5v0_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: Regression testing the DRC rules against gf180mcu_fd_sc_mcu7t5v0
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "DRC_gf180mcu_fd_sc_mcu7t5v0_testing"
+ DRC_gf180mcu_fd_sc_mcu7t5v0_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for gf180mcu_fd_sc_mcu7t5v0
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC-gf180mcu_fd_sc_mcu7t5v0
diff --git a/.github/workflows/drc_gf180mcu_fd_sc_mcu9t5v0_test.yml b/.github/workflows/drc_gf180mcu_fd_sc_mcu9t5v0_test.yml
new file mode 100644
index 0000000..93a36f9
--- /dev/null
+++ b/.github/workflows/drc_gf180mcu_fd_sc_mcu9t5v0_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: Regression testing the DRC rules against gf180mcu_fd_sc_mcu9t5v0
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "DRC_gf180mcu_fd_sc_mcu9t5v0_testing"
+ DRC_gf180mcu_fd_sc_mcu9t5v0_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for gf180mcu_fd_sc_mcu9t5v0
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC-gf180mcu_fd_sc_mcu9t5v0
diff --git a/.github/workflows/drc_regression_test.yml b/.github/workflows/drc_regression_test.yml
new file mode 100644
index 0000000..e1934a8
--- /dev/null
+++ b/.github/workflows/drc_regression_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: Regression testing the DRC rules
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "DRC_Regression_testing"
+ DRC_Regression_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for Regression
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC_main -j$(nproc)
diff --git a/.github/workflows/drc_switch_checking_test.yml b/.github/workflows/drc_switch_checking_test.yml
new file mode 100644
index 0000000..9c8e5a2
--- /dev/null
+++ b/.github/workflows/drc_switch_checking_test.yml
@@ -0,0 +1,66 @@
+# 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.
+
+# This is a Github Actions for testing DRC rule deck of GF180MCU
+name: DRC Switch Checking (Rule deck arguments) test
+
+# Controls when the workflow will run
+on:
+ # Triggers the workflow on push or pull request events
+ push:
+ pull_request:
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Defines environment variables
+env:
+ PDK_ROOT: $GITHUB_WORKSPACE/rules/klayout
+ PDK: drc
+
+# A workflow run is made up of one or more jobs that can run sequentially or in parallel
+jobs:
+ # This workflow contains a single job called "DRC_Switch_Checking_testing"
+ DRC_Switch_Checking_testing:
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - uses: actions/checkout@v3
+
+ # Gets python version with list of needed requirements
+ - uses: actions/setup-python@v3
+ with:
+ python-version: '3.9'
+ cache: 'pip'
+ cache-dependency-path: '**/requirements.test.txt'
+
+ # Installs requirements
+ - run: pip install -r ./rules/klayout/requirements.test.txt
+
+ # Installs Klayout verison 0.27.8
+ - name: Installing Klayout 0.27.8
+ run: |
+ wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.27.8-1_amd64.deb
+ sudo apt-get install qt5-default qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev
+ sudo dpkg -i ./klayout_0.27.8-1_amd64.deb
+ sudo apt-get install -f -y
+
+ # Runs a set of commands using the runners shell
+ - name: Testing DRC for Switch Checking
+ run: |
+ cd ./rules/klayout/drc/testing
+ make test-DRC_switch -j$(nproc)
diff --git a/rules/klayout/drc/testing/Makefile b/rules/klayout/drc/testing/Makefile
index 8f75baf..37824f1 100644
--- a/rules/klayout/drc/testing/Makefile
+++ b/rules/klayout/drc/testing/Makefile
@@ -31,18 +31,39 @@
#=================================
.ONESHELL:
-test-DRC_SC:
+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-SC testing =========="
- @ python3 run_sc_regression.py --path=sc_testcases/GF018_5VGreen_SRAM_1P_64x8M8WM1.gds \
- --path=sc_testcases/GF018_5VGreen_SRAM_1P_128x8M8WM1.gds \
- --path=sc_testcases/GF018_5VGreen_SRAM_1P_256x8M8WM1.gds \
- --path=sc_testcases/GF018_5VGreen_SRAM_1P_512x8M8WM1.gds \
- --path=sc_testcases/GF018green_ipio_5p0c_75_3lm.gds \
- --path=sc_testcases/GF018green_ipio_5p0c_75_4lm.gds \
- --path=sc_testcases/GF018green_ipio_5p0c_75_5lm.gds \
- --path=sc_testcases/GF018hv5v_green_sc9.gds \
- --path=sc_testcases/GF018hv5v_mcu_sc7.gds \
+ @echo "========== DRC-gf180mcu_fd_ip_sram testing =========="
+ @ python3 run_sc_regression.py \
+ --path=sc_testcases/gf180mcu_fd_ip_sram__sram64x8m8wm1.gds \
+ --path=sc_testcases/gf180mcu_fd_ip_sram__sram128x8m8wm1.gds \
+ --path=sc_testcases/gf180mcu_fd_ip_sram__sram256x8m8wm1.gds \
+ --path=sc_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=sc_testcases/gf180mcu_fd_io_3lm.gds \
+ --path=sc_testcases/gf180mcu_fd_io_4lm.gds \
+ --path=sc_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 ------
@@ -56,59 +77,66 @@
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 \
- --metal_top="6K" --mim_option="A" --metal_level=6 --run_name="DRC-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 \
- --metal_top="9K" --mim_option="B" --metal_level=6 --run_name="DRC-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 \
- --metal_top="11K" --mim_option="A" --metal_level=6 --run_name="DRC-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 \
- --metal_top="30K" --mim_option="B" --metal_level=6 --run_name="DRC-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 \
- --metal_top="30K" --mim_option="A" --metal_level=3 --run_name="DRC-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 \
- --metal_top="11K" --mim_option="B" --metal_level=4 --run_name="DRC-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 \
- --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"
+ @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 -------
@@ -138,15 +166,19 @@
# 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_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 )"
+ @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 )"
diff --git a/rules/klayout/drc/testing/run_regression.py b/rules/klayout/drc/testing/run_regression.py
index 6f8741a..5582f72 100644
--- a/rules/klayout/drc/testing/run_regression.py
+++ b/rules/klayout/drc/testing/run_regression.py
@@ -100,7 +100,7 @@
if 'logger.info("Starting GF180MCU DENSITY DRC rules.")' in line:
remove_if = True
if remove_if == True:
- if 'CHIP.area' in line or 'end ' in line and 'end #' not in line:
+ if 'CHIP.area' in line or 'end\n' in line and 'end #' not in line:
line = ''
if 'GEOMETRY RULES' in line:
break
diff --git a/rules/klayout/drc/testing/run_sc_regression.py b/rules/klayout/drc/testing/run_sc_regression.py
index 664d39b..f08ac69 100644
--- a/rules/klayout/drc/testing/run_sc_regression.py
+++ b/rules/klayout/drc/testing/run_sc_regression.py
@@ -139,8 +139,9 @@
os.system(f"klayout -b -r split_gds.rb -rd input={path}")
print(f"File {path} was splitted into multiple gds files")
- other_files = os.listdir('sc')
- args["--path"] = args["--path"] + other_files
+ if os.path.exists("sc"):
+ other_files = os.listdir('sc')
+ args["--path"] = args["--path"] + other_files
# Get input data for simulator
for path in args["--path"]:
diff --git a/rules/klayout/drc/testing/run_switch_checking.py b/rules/klayout/drc/testing/run_switch_checking.py
index 73b1215..87ef89a 100644
--- a/rules/klayout/drc/testing/run_switch_checking.py
+++ b/rules/klayout/drc/testing/run_switch_checking.py
@@ -74,7 +74,7 @@
os.system('mkdir -p {0}'.format(run_directory))
log_file = run_directory + "/" + test_case + ".log"
- os.system('python3 ../run_drc.py --path=switch_checking/switch_checking.gds {0} >> {1}'.format(switches, log_file))
+ os.system('python3 ../run_drc.py --path=switch_checking/simple_por.gds.gz {0} >> {1}'.format(switches, log_file))
check_output_log(log_file, expected_result)
diff --git a/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram128x8m8wm1.gds b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram128x8m8wm1.gds
new file mode 100644
index 0000000..5397ff3
--- /dev/null
+++ b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram128x8m8wm1.gds
Binary files differ
diff --git a/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram256x8m8wm1.gds b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram256x8m8wm1.gds
new file mode 100644
index 0000000..7fd6339
--- /dev/null
+++ b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram256x8m8wm1.gds
Binary files differ
diff --git a/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds
new file mode 100644
index 0000000..cd71da3
--- /dev/null
+++ b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram512x8m8wm1.gds
Binary files differ
diff --git a/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram64x8m8wm1.gds b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram64x8m8wm1.gds
new file mode 100644
index 0000000..d53a578
--- /dev/null
+++ b/rules/klayout/drc/testing/sc_testcases/gf180mcu_fd_ip_sram__sram64x8m8wm1.gds
Binary files differ
diff --git a/rules/klayout/drc/testing/switch_checking/simple_por.gds.gz b/rules/klayout/drc/testing/switch_checking/simple_por.gds.gz
new file mode 100644
index 0000000..920b37f
--- /dev/null
+++ b/rules/klayout/drc/testing/switch_checking/simple_por.gds.gz
Binary files differ
diff --git a/rules/klayout/drc/testing/switch_checking/switch_checking.gds b/rules/klayout/drc/testing/switch_checking/switch_checking.gds
deleted file mode 100644
index 025aa90..0000000
--- a/rules/klayout/drc/testing/switch_checking/switch_checking.gds
+++ /dev/null
Binary files differ
diff --git a/rules/klayout/requirements.test.txt b/rules/klayout/requirements.test.txt
new file mode 100644
index 0000000..3f6804c
--- /dev/null
+++ b/rules/klayout/requirements.test.txt
@@ -0,0 +1,4 @@
+docopt==0.6.2
+pandas==1.3.4
+sympy==1.9
+numpy==1.20.3