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