diff --git a/.bumpversion.cfg b/.bumpversion.cfg
deleted file mode 100644
index 731e5d8b4..000000000
--- a/.bumpversion.cfg
+++ /dev/null
@@ -1,9 +0,0 @@
-[bumpversion]
-current_version = 0.0.1
-commit = True
-tag = True
-
-[bumpversion:file:./setup.py]
-[bumpversion:file:./docs/conf.py]
-[bumpversion:file:./README.md]
-[bumpversion:file:OpenFASoC/__init__.py]
diff --git a/.github/workflows/cryo_gen.yml b/.github/workflows/cryo_gen.yml
index eef1682b4..8d212c84b 100644
--- a/.github/workflows/cryo_gen.yml
+++ b/.github/workflows/cryo_gen.yml
@@ -8,7 +8,7 @@ on:
paths:
- 'openfasoc/common/**'
- 'openfasoc/generators/common/**'
- - 'openfasoc/generators/common/cryo-gen/**'
+ - 'openfasoc/generators/cryo-gen/**'
workflow_dispatch:
jobs:
@@ -38,5 +38,6 @@ jobs:
cd ./openfasoc/generators/cryo-gen &&\
make ${{ matrix.platform }}_cryo &&\
python3 parse_rpt.py ${{ matrix.platform }}
- "| tee -a file.log
+ " && exit_code=$? | tee -a file.log
+ if [ $? -ne 0 ]; then exit 1; fi
if grep "^Error" file.log; then exit 1; else exit 0; fi
diff --git a/.github/workflows/ldo_sky130hvl.yml b/.github/workflows/ldo_sky130hvl.yml
index 2157ec8e8..668124393 100644
--- a/.github/workflows/ldo_sky130hvl.yml
+++ b/.github/workflows/ldo_sky130hvl.yml
@@ -8,7 +8,7 @@ on:
paths:
- 'openfasoc/common/**'
- 'openfasoc/generators/common/**'
- - 'openfasoc/generators/common/ldo-gen/**'
+ - 'openfasoc/generators/ldo-gen/**'
workflow_dispatch:
jobs:
@@ -34,5 +34,6 @@ jobs:
cd ./openfasoc/generators/ldo-gen &&\
make sky130hvl_ldo &&\
python3 parse_rpt.py sky130hvl_ldo
- "| tee -a file.log
+ " && exit_code=$? | tee -a file.log
+ if [ $? -ne 0 ]; then exit 1; fi
if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi
diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml
deleted file mode 100644
index 9c7934174..000000000
--- a/.github/workflows/pre-commit.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-name: pre-commit
-
-on:
-# pull_request:
-# push:
- workflow_dispatch:
-
-jobs:
- pre-commit:
- runs-on: ubuntu-latest
- concurrency:
- group: ${{ github.ref }}-pre-commit
- cancel-in-progress: true
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-python@v2
- - uses: pre-commit/action@v2.0.0
diff --git a/.github/workflows/pythonpublish.yml b/.github/workflows/pythonpublish.yml
deleted file mode 100644
index 754ab6776..000000000
--- a/.github/workflows/pythonpublish.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-name: Upload Python Package
-
-on:
- release:
- types: [created, published]
- push:
- branches: [master]
- tags: [v*]
-
-jobs:
- deploy:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - name: Set up Python
- uses: actions/setup-python@v2
- with:
- python-version: "3.x"
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- pip install setuptools wheel twine
- - name: Build and publish
- env:
- TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
- TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
- run: |
- python setup.py sdist bdist_wheel
- twine upload dist/*
diff --git a/.github/workflows/tempSense_sky130hd.yml b/.github/workflows/tempSense_sky130hd.yml
index 8af2f7640..e32767e9d 100644
--- a/.github/workflows/tempSense_sky130hd.yml
+++ b/.github/workflows/tempSense_sky130hd.yml
@@ -8,7 +8,7 @@ on:
paths:
- 'openfasoc/common/**'
- 'openfasoc/generators/common/**'
- - 'openfasoc/generators/common/temp-sense-gen/**'
+ - 'openfasoc/generators/temp-sense-gen/**'
workflow_dispatch:
jobs:
@@ -34,5 +34,6 @@ jobs:
cd ./openfasoc/generators/temp-sense-gen &&\
make sky130hd_temp &&\
python3 parse_rpt.py
- "| tee -a file.log
+ " && exit_code=$? | tee -a file.log
+ if [ $? -ne 0 ]; then exit 1; fi
if grep "\[ERROR\]" file.log; then exit 1; else exit 0; fi
diff --git a/.github/workflows/test_python_api.yml b/.github/workflows/test_python_api.yml
index 506f273bf..bec0bf60f 100644
--- a/.github/workflows/test_python_api.yml
+++ b/.github/workflows/test_python_api.yml
@@ -7,7 +7,6 @@ on:
paths:
- 'openfasoc/common/**'
- 'openfasoc/generators/common/**'
- - 'openfasoc/generators/common/cryo-gen/**'
- 'tests/**'
- 'requirements.txt'
- 'pytest.ini'
@@ -21,7 +20,7 @@ jobs:
strategy:
max-parallel: 12
matrix:
- python-version: [3.7, 3.8, 3.9]
+ python-version: ["3.8", "3.9", "3.10"]
os: [ubuntu-latest]
steps:
@@ -37,6 +36,7 @@ jobs:
sudo apt install -y ngspice
python -m pip install --upgrade pip
pip install -r requirements.txt
+ pip install pytest
# pip install .
- name: Test with pytest
run: pytest
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index e72bd2a5f..000000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-image: python:3.7
-
-before_script:
- - pip list
- - python -V # Print out python version for debugging
- - which python # Print out which python for debugging
- - pip install -r requirements.txt --upgrade
- - python setup.py develop
-
-stages:
- - test
- - release
-
-pre-commit:
- stage: test
- script:
- - pip install pre-commit
- - pre-commit install
- - pre-commit run -a
-
-test:
- stage: test
- script:
- - pytest
-
-python37:
- image: python:3.7
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e py37
-
-python38:
- image: python:3.8
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e py38
-
-python39:
- image: python:3.9
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e py39
-
-doctest:
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e docs
-
-flake8:
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e flake8
-
-mypy:
- stage: test
- script:
- - python -m pip install tox
- - python -m tox -e mypy
-
-docs:
- stage: release
- script:
- - cd docs
- - make install clean html upload
- only:
- - release
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
deleted file mode 100644
index a48aeb8be..000000000
--- a/.pre-commit-config.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-repos:
- - repo: https://github.com/pre-commit/pre-commit-hooks
- rev: "5d1ab6d7f3e8f928c896232d2fb0ff95b3563ca6"
- hooks:
- - id: check-yaml
- - id: end-of-file-fixer
- - id: trailing-whitespace
-
- # - repo: https://github.com/hakancelikdev/unimport
- # rev: 039c9bb2940e95c16d8169053a7b301e4b20eecc
- # hooks:
- # - id: unimport
- # args: [--remove, --include-star-import]
- - repo: https://github.com/pycqa/isort
- rev: "c6a41965247a858a0afd848fbebfca18b8983917"
- hooks:
- - id: isort
- files: "OpenFASoC/.*"
- args: ["--profile", "black", "--filter-files"]
-
- - repo: https://github.com/psf/black
- rev: "8ed3e3d07ea3e6d62e3e533e69f96a0ff148cd5d"
- hooks:
- - id: black
-
- # - repo: https://gitlab.com/pycqa/flake8
- # rev: "21d3c70d676007470908d39b73f0521d39b3b997"
- # hooks:
- # - id: flake8
-# some comment
-
-
-# - repo: https://github.com/kynan/nbstripout
-# rev: 8cafdcc393232045208137698dbeb42d6e0dd9e8
-# hooks:
-# - id: nbstripout
-# files: ".ipynb"
-
- # - repo: https://github.com/pre-commit/mirrors-mypy
- # rev: ""
- # hooks:
- # - id: mypy
- # exclude: ^(docs/|example-plugin/|tests/fixtures)
- # - repo: https://github.com/pycqa/pydocstyle
- # rev: ""
- # hooks:
- # - id: pydocstyle
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 4e4004d68..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-language: python
-python:
- - "3.7"
-
-# install dependencies
-install:
- - pip install -r requirements.txt
-
-# run tests
-script:
- - pytest
-
-notifications:
- email: false
diff --git a/MANIFEST.in b/MANIFEST.in
deleted file mode 100644
index b447cb46c..000000000
--- a/MANIFEST.in
+++ /dev/null
@@ -1,3 +0,0 @@
-include requirements.txt
-include README.md
-include LICENSE
diff --git a/Makefile b/Makefile
deleted file mode 100644
index b66869225..000000000
--- a/Makefile
+++ /dev/null
@@ -1,273 +0,0 @@
-# Copyright 2020 Efabless Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-OPENLANE_DIR ?= $(shell pwd)
-
-PDK_ROOT ?= $(shell pwd)/pdks
-
-ifeq (, $(strip $(NPROC)))
- # Linux (utility program)
- NPROC := $(shell nproc 2>/dev/null)
-
- ifeq (, $(strip $(NPROC)))
- # Linux (generic)
- NPROC := $(shell grep -c ^processor /proc/cpuinfo 2>/dev/null)
- endif
- ifeq (, $(strip $(NPROC)))
- # BSD (at least FreeBSD and Mac OSX)
- NPROC := $(shell sysctl -n hw.ncpu 2>/dev/null)
- endif
- ifeq (, $(strip $(NPROC)))
- # Fallback
- NPROC := 1
- endif
-
-endif
-
-DOCKER_MEMORY_OPTIONS :=
-ifneq (,$(DOCKER_SWAP)) # Set to -1 for unlimited
-DOCKER_MEMORY_OPTIONS += --memory-swap=$(DOCKER_SWAP)
-endif
-ifneq (,$(DOCKER_MEMORY))
-DOCKER_MEMORY_OPTIONS += --memory=$(DOCKER_MEMORY)
-# To verify: cat /sys/fs/cgroup/memory/memory.limit_in_bytes inside the container
-endif
-
-DOCKER_UID_OPTIONS = $(shell python3 ./.github/scripts/get_docker_config.py)
-DOCKER_OPTIONS = $(DOCKER_MEMORY_OPTIONS) $(DOCKER_UID_OPTIONS)
-
-THREADS ?= $(NPROC)
-STD_CELL_LIBRARY ?= sky130_fd_sc_hd
-SPECIAL_VOLTAGE_LIBRARY ?= sky130_fd_sc_hvl
-IO_LIBRARY ?= sky130_fd_io
-INSTALL_SRAM ?= disabled
-
-CURRENT_TAG ?= $(shell python3 ./.github/scripts/dependencies/get_tag.py)
-IMAGE_NAME ?= efabless/openlane:$(CURRENT_TAG)
-TEST_DESIGN ?= spm
-DESIGN_LIST ?= spm
-BENCHMARK ?= regression_results/benchmark_results/SW_HD.csv
-REGRESSION_TAG ?= TEST_SW_HD
-FASTEST_TEST_SET_TAG ?= FASTEST_TEST_SET
-EXTENDED_TEST_SET_TAG ?= EXTENDED_TEST_SET
-PRINT_REM_DESIGNS_TIME ?= 0
-
-SKYWATER_COMMIT ?= $(shell python3 ./.github/scripts/tool.py sky130 -f commit)
-OPEN_PDKS_COMMIT ?= $(shell python3 ./.github/scripts/tool.py open_pdks -f commit)
-
-ENV_COMMAND ?= docker run --rm -v $(OPENLANE_DIR):/openLANE_flow -v $(PDK_ROOT):$(PDK_ROOT) -e PDK_ROOT=$(PDK_ROOT) $(DOCKER_OPTIONS) $(IMAGE_NAME)
-
-ifndef PDK_ROOT
-$(error PDK_ROOT is undefined, please export it before running make)
-endif
-
-.DEFAULT_GOAL := all
-
-.PHONY: all
-all: openlane pdk
-
-.PHONY: pdk
-pdk: skywater-pdk skywater-library open_pdks build-pdk gen-sources
-
-.PHONY: native-pdk
-native-pdk: skywater-pdk skywater-library open_pdks native-build-pdk gen-sources
-
-.PHONY: full-pdk
-full-pdk: skywater-pdk all-skywater-libraries open_pdks build-pdk gen-sources
-
-.PHONY: native-full-pdk
-native-full-pdk: skywater-pdk all-skywater-libraries open_pdks native-build-pdk gen-sources
-
-$(PDK_ROOT)/:
- mkdir -p $(PDK_ROOT)
-
-$(PDK_ROOT)/skywater-pdk:
- git clone $(shell python3 ./.github/scripts/tool.py sky130 -f repo) $(PDK_ROOT)/skywater-pdk
-
-.PHONY: skywater-pdk
-skywater-pdk: $(PDK_ROOT)/ $(PDK_ROOT)/skywater-pdk
- cd $(PDK_ROOT)/skywater-pdk && \
- git checkout main && git submodule init && git pull --no-recurse-submodules && \
- git checkout -qf $(SKYWATER_COMMIT)
-
-.PHONY: skywater-library
-skywater-library: $(PDK_ROOT)/skywater-pdk
- cd $(PDK_ROOT)/skywater-pdk && \
- git submodule update --init libraries/$(STD_CELL_LIBRARY)/latest && \
- git submodule update --init libraries/$(IO_LIBRARY)/latest && \
- git submodule update --init libraries/$(SPECIAL_VOLTAGE_LIBRARY)/latest && \
- $(MAKE) timing
-
-.PHONY: all-skywater-libraries
-all-skywater-libraries: skywater-pdk
- cd $(PDK_ROOT)/skywater-pdk && \
- git submodule update --init libraries/sky130_fd_sc_hd/latest && \
- git submodule update --init libraries/sky130_fd_sc_hs/latest && \
- git submodule update --init libraries/sky130_fd_sc_hdll/latest && \
- git submodule update --init libraries/sky130_fd_sc_ms/latest && \
- git submodule update --init libraries/sky130_fd_sc_ls/latest && \
- git submodule update --init libraries/sky130_fd_sc_hvl/latest && \
- git submodule update --init libraries/sky130_fd_io/latest && \
- $(MAKE) -j$(THREADS) timing
-
-### OPEN_PDKS
-$(PDK_ROOT)/open_pdks:
- git clone $(shell python3 ./.github/scripts/tool.py open_pdks -f repo) $(PDK_ROOT)/open_pdks
-
-.PHONY: open_pdks
-open_pdks: $(PDK_ROOT)/ $(PDK_ROOT)/open_pdks
- cd $(PDK_ROOT)/open_pdks && \
- git checkout master && git pull && \
- git checkout -qf $(OPEN_PDKS_COMMIT)
-
-.PHONY: build-pdk
-build-pdk: $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk
- [ -d $(PDK_ROOT)/sky130A ] && \
- (echo "Warning: A sky130A build already exists under $(PDK_ROOT). It will be deleted first!" && \
- sleep 5 && \
- rm -rf $(PDK_ROOT)/sky130A) || \
- true
- $(ENV_COMMAND) sh -c " cd $(PDK_ROOT)/open_pdks && \
- ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --enable-sram-sky130=$(INSTALL_SRAM)"
- cd $(PDK_ROOT)/open_pdks/sky130 && \
- $(MAKE) veryclean && \
- $(MAKE) prerequisites
- $(ENV_COMMAND) sh -c " cd $(PDK_ROOT)/open_pdks/sky130 && \
- make && \
- make SHARED_PDKS_PATH=$(PDK_ROOT) install && \
- make clean"
-
-.PHONY: native-build-pdk
-native-build-pdk: $(PDK_ROOT)/open_pdks $(PDK_ROOT)/skywater-pdk
- [ -d $(PDK_ROOT)/sky130A ] && \
- (echo "Warning: A sky130A build already exists under $(PDK_ROOT). It will be deleted first!" && \
- sleep 5 && \
- rm -rf $(PDK_ROOT)/sky130A) || \
- true
- cd $(PDK_ROOT)/open_pdks && \
- ./configure --enable-sky130-pdk=$(PDK_ROOT)/skywater-pdk/libraries --enable-sram-sky130=$(INSTALL_SRAM) && \
- cd sky130 && \
- $(MAKE) veryclean && \
- $(MAKE) && \
- $(MAKE) SHARED_PDKS_PATH=$(PDK_ROOT) install
-
-gen-sources: $(PDK_ROOT)/sky130A
- touch $(PDK_ROOT)/sky130A/SOURCES
- OPENLANE_COMMIT=$(git rev-parse HEAD)
- echo -ne "openlane " > $(PDK_ROOT)/sky130A/SOURCES
- cd $(OPENLANE_DIR) && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES
- echo -ne "skywater-pdk " >> $(PDK_ROOT)/sky130A/SOURCES
- cd $(PDK_ROOT)/skywater-pdk && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES
- echo -ne "open_pdks " >> $(PDK_ROOT)/sky130A/SOURCES
- cd $(PDK_ROOT)/open_pdks && git rev-parse HEAD >> $(PDK_ROOT)/sky130A/SOURCES
-
-### OPENLANE
-.PHONY: openlane
-openlane:
- docker pull $(IMAGE_NAME)
-
-.PHONY: mount
-mount:
- cd $(OPENLANE_DIR) && \
- docker run -it --rm -v $(OPENLANE_DIR):/openLANE_flow -v $(PDK_ROOT):$(PDK_ROOT) -e PDK_ROOT=$(PDK_ROOT) $(DOCKER_OPTIONS) $(IMAGE_NAME)
-
-MISC_REGRESSION_ARGS=
-.PHONY: regression regression_test
-regression_test: MISC_REGRESSION_ARGS=--benchmark $(BENCHMARK)
-regression_test: regression
-regression:
- cd $(OPENLANE_DIR) && \
- $(ENV_COMMAND) sh -c "\
- python3 run_designs.py --delete\
- --defaultTestSet\
- --tarList logs reports\
- --htmlExtract\
- --tag $(REGRESSION_TAG)\
- --threads $(THREADS)\
- --print $(PRINT_REM_DESIGNS_TIME)\
- $(MISC_REGRESSION_ARGS)\
- "
-
-DLTAG=custom_design_List
-.PHONY: test_design_list fastest_test_set extended_test_set
-fastest_test_set: DESIGN_LIST=$(shell python3 ./.github/test_sets/get_test_set.py fastestTestSet)
-fastest_test_set: DLTAG=$(FASTEST_TEST_SET_TAG)
-fastest_test_set: test_design_list
-extended_test_set: DESIGN_LIST=$(shell python3 ./.github/test_sets/get_test_set.py extendedTestSet)
-extended_test_set: DLTAG=$(EXTENDED_TEST_SET_TAG)
-extended_test_set: test_design_list
-test_design_list:
- cd $(OPENLANE_DIR) && \
- $(ENV_COMMAND) sh -c "\
- python3 run_designs.py --delete\
- --designs $(DESIGN_LIST)\
- --tag $(DLTAG)\
- --threads $(THREADS)\
- --print_rem $(PRINT_REM_DESIGNS_TIME)\
- --benchmark $(BENCHMARK)\
- "
-
-.PHONY: test
-test:
- cd $(OPENLANE_DIR) && \
- $(ENV_COMMAND) sh -c "./flow.tcl -design $(TEST_DESIGN) -tag openlane_test -disable_output -overwrite"
- @[ -f $(OPENLANE_DIR)/designs/$(TEST_DESIGN)/runs/openlane_test/results/magic/$(TEST_DESIGN).gds ] && \
- echo "Basic test passed" || \
- echo "Basic test failed"
-
-.PHONY: clean_runs
-clean_runs:
- @rm -rf ./designs/*/runs && echo "Runs cleaned successfully." || echo "Failed to delete runs."
-
-
-install:
- pip install -r requirements.txt --upgrade
- pip install -r requirements_dev.txt --upgrade
- pip install -e .
- pre-commit install
-
-test:
- pytest
-
-cov:
- pytest --cov= OpenFASoC
-
-mypy:
- mypy . --ignore-missing-imports
-
-lint:
- flake8
-
-pylint:
- pylint OpenFASoC
-
-lintd2:
- flake8 --select RST
-
-lintd:
- pydocstyle OpenFASoC
-
-doc8:
- doc8 docs/
-
-update:
- pur
-
-update2:
- pre-commit autoupdate --bleeding-edge
-
-add-types:
- python -m libcst.tool codemod autotyping.AutotypeCommand openfasoc/ --scalar-return
- python -m libcst.tool codemod autotyping.AutotypeCommand openfasoc/ --none-return
- python -m libcst.tool codemod autotyping.AutotypeCommand openfasoc/ --scalar-return
diff --git a/README.rst b/README.rst
index d03187143..85f25e920 100644
--- a/README.rst
+++ b/README.rst
@@ -8,7 +8,7 @@ OpenFASoC
OpenFASOC is focused on open-source automated analog generation from user specification to GDSII with fully open-sourced tools.
-This project is led by a team of researchers at the University of Michigan and is inspired by FASoC, which sits on proprietary tools. (See more about FaSoC at `website `_)
+This project is led by a team of researchers at the University of Michigan and is inspired by FASoC, that sits on proprietary tools. (See more about FaSoC at `website `_)
* **Temperature sensor -**
@@ -28,7 +28,7 @@ This project is led by a team of researchers at the University of Michigan and i
.. image:: https://colab.research.google.com/assets/colab-badge.svg
:target: https://colab.research.google.com/github/idea-fasoc/OpenFASOC/blob/main/docs/source/notebooks/ldo-gen/LDO_notebook.ipynb
-Prerequisites
+Getting Started
****************
Install all the prerequisites using the `dependencies.sh` script provided in the home location of this project (where this README.rst file is found). Supports CentOS7, Ubuntu 20.04 LTS and Ubuntu 22.04 LTS.
@@ -37,7 +37,9 @@ Install all the prerequisites using the `dependencies.sh` script provided in the
$ sudo ./dependencies.sh
-(Or) Please install the following tools by building the tools manually from their code base with the recommended commit ids for stable functioning of the flow:
+For more info on getting-started, please refer to ["Getting Started" section ](https://openfasoc.readthedocs.io/en/latest/getting-started.html)
+
+Below are the tool requirements along with their currently support versions that are updated regularly upon testing againsts the generators.
1. `Magic `_ (version:8.3.416)
@@ -67,109 +69,25 @@ Install all the prerequisites using the `dependencies.sh` script provided in the
- Python 3.7 is used in this generator.
- All the required tools need to be loaded into the environment before running this generator.
-Upgrading
-****************
-To upgrade packages used by the generators, the dependencies.sh script must be run (which can be found in the home folder of the cloned repository).
-
-.. code-block:: bash
-
- $ sudo ./dependencies.sh # Enter 'u' on being prompted to commence upgrade
-Testing Installation
-****************
-To test your installation, run the following commands from the home folder of the cloned repository -
-
-.. code-block:: bash
-
- $ cd openfasoc/generators/temp-sense-gen
- $ make sky130hd_temp
-
-This will run the Makefile for the temperature sensor generator (the functionality of which is explained in the Generators section).
-The installation has finished succesfully if the make process exits without errors.
-
-Design Generation
-********************
Generators
-^^^^^^^^^^^^^^
-**Temperature Sensor (temp-sense-gen)** - `link `_
-
-A fully automated SoC generator that uses an all-digital temperature sensor architecture, that relies on a new subthreshold oscillator (achieved using the auxiliary cell “Header Cell“) for realizing synthesizable thermal sensors.
-
- Block Architecture:
- - Temperature-sensitive ring oscillator and stacked zero-VT devices.
-
-.. image:: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/temp-sense-gen/readme_imgs/tempSensor-BA.png
- :target: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/temp-sense-gen/readme_imgs/tempSensor-BA.png
-
-**LDO Generator (ldo-gen)** - `link `_
-
-The main idea behind a Digital LDO is the use of an array of small power transistors that operate as switches. The use of power transistors as switches facilitates low VDD power management and process scalability which makes Digital LDOs a good potential candidate for power management as we go to lower nodes. With the “Unit Power Switch” as the auxiliary cell, an automatic LDO design tool “LDO_GEN” is developed as part of this project.
-
- Block Architecture:
- - Synchronous Digital LDO with optional stochastic flash ADC.
-
-.. image:: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/ldo-gen/readme_images/LDO-BA.png
- :target: https://github.com/idea-fasoc/OpenFASOC/blob/main/openfasoc/generators/ldo-gen/readme_images/LDO-BA.png
-
-**DC-DC Generator (dcdc-gen)** - `link `_
-
- For synthesizable on-chip power management circuits, we use the “2:1 SC Cell” auxiliary cell for implementing a switched-capacitor (SC) based DC-DC converter. By varying the number of auxiliary cells, we can achieve a wide range of conversion ratios with fine-grain resolution. It operates similarly to a successive approximation analog to digital converter (SAR ADC). Furthermore, since the total structure is simply composed of auxiliary cells, it is ideal for the proposed flow of automating the analog block design.
-
-
-**Cryo Generator (cryo-gen)** - `link `_ TBA
-
-**GDS Factory (gdsfactory)** - `link `_ TBA
-
-**LC-DCO Generator (lc-dco)** - `link `_ TBA
-
-**SCPA Generator (cpa-gen)** - `link `_ TBA
-
-Our fully open-source flow only supports the temperature sensor generation so far. We are working on adding additional generators in the near future.
-
-The generators are located inside `openfasoc/generators/`, the target for temperature sensor generation is `sky130hd_temp` and located inside `openfasoc/generators/temp-sense-gen`, the following parameters are supported:
-
-- --specfile: input specifications where the min/max temperature for the temp sensor are specified
-- --outputDir: output folder where the gds/def results will be exported
-- --platform: only sky130hd platform is supported for now
-- --clean: clean flow folder and start a fresh design flow
-- --mode: support verilog/macro/full modes, macro mode runs through APR/DRC/LVS steps to generate macros, full mode completes macro generation + simulations
-- --nhead: specify a fixed number of headers (optional)
-- --ninv: specify a fixed number of inverters (optional)
-
-Look more into "getting-started" section on how to run the OpenFASOC flow
-
-
-Spice Simulation Flow
-**************************
-
-To run the simulation, please edit your local model file in `common/platform_config.json`:
-
-- simTool: simulation tool, only ngspice is supported for now -- We plan to support Xyce in the future
-
-- simMode: `partial` (recommended to reduce runtime) or `full`, partial simulation only includes headers and cells in low voltage domain to calculate the frequency errors, full simulation includes the internal counter (full simulation is slow using ngspice and is still being tested)
-
-- nominal_voltage: the nominal voltage of the specified technology, it is used to set a supply voltage in the simulation testbench
-
-- model_file: the path to the top model lib file
-
-- model_corner: the corner used in the simulation
-
-- an example of the `common/platform_config.json` looks like:
-
-.. code-block:: json
+********************
- {
- "simTool": "ngspice",
- "simMode": "partial",
- "platforms": {
- "sky130hd": {
- "nominal_voltage": 1.8,
- "model_file": "~/open_pdks/pdks/sky130A/libs.tech/ngspice/sky130.lib.spice",
- "model_corner": "tt"
- }
- }
- }
++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+
+| Generator | Technology nodes | Supported | Documentation |
+| | | | |
++==========================================+====================+============================+================================================================+
+| Temperature Sensor | sky130hd | Yes | https://openfasoc.readthedocs.io/en/latest/flow-tempsense.html |
++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+
+| Low dropout Voltage Regulator (LDO) | sky130hvl | Yes | https://openfasoc.readthedocs.io/en/latest/flow-ldo.html |
++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+
+| Cryogenic | sky130hs, | No (In-progress) | https://openfasoc.readthedocs.io/en/latest/flow-cryo.html |
+| | sky130hd, | | |
+| | sky130hvl | | |
++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+
+| GDSFactory | sky130hd | No (In-progress) | https://openfasoc.readthedocs.io/en/latest/flow-ldo.html |
++------------------------------------------+--------------------+----------------------------+----------------------------------------------------------------+
Tapeouts and testing setup
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/.vscode/settings.json b/custom_block_tool/block_lvs_check_sky130pdk/.vscode/settings.json
deleted file mode 100644
index 515a5d18e..000000000
--- a/custom_block_tool/block_lvs_check_sky130pdk/.vscode/settings.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "makefile.extensionOutputFolder": "./.vscode"
-}
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A.magicrc b/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A.magicrc
deleted file mode 100644
index 9bb1dbd6c..000000000
--- a/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A.magicrc
+++ /dev/null
@@ -1,86 +0,0 @@
-puts stdout "Sourcing design .magicrc for technology sky130A ..."
-
-# Put grid on 0.005 pitch. This is important, as some commands don't
-# rescale the grid automatically (such as lef read?).
-
-set scalefac [tech lambda]
-if {[lindex $scalefac 1] < 2} {
- scalegrid 1 2
-}
-
-# drc off
-drc euclidean on
-# Change this to a fixed number for repeatable behavior with GDS writes
-# e.g., "random seed 12345"
-catch {random seed}
-
-# Turn off the scale option on ext2spice or else it conflicts with the
-# scale in the model files.
-ext2spice scale off
-
-# Allow override of PDK path from environment variable PDKPATH
-if {[catch {set PDKPATH $env(PDKPATH)}]} {
- set PDKPATH $env(PDK_ROOT)/sky130A
-}
-
-# loading technology
-tech load $PDKPATH/libs.tech/magic/sky130A.tech
-
-# load device generator
-source $PDKPATH/libs.tech/magic/sky130A.tcl
-
-# load bind keys (optional)
-# source $PDKPATH/libs.tech/magic/sky130A-BindKeys
-
-# set units to lambda grid
-snap lambda
-
-# set sky130 standard power, ground, and substrate names
-set VDD VPWR
-set GND VGND
-set SUB VSUBS
-
-# Allow override of type of magic library views used, "mag" or "maglef",
-# from environment variable MAGTYPE
-
-if {[catch {set MAGTYPE $env(MAGTYPE)}]} {
- set MAGTYPE mag
-}
-
-# add path to reference cells
-if {[file isdir ${PDKPATH}/libs.ref/${MAGTYPE}]} {
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_pr
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_io
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hd
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hdll
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hs
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_hvl
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_lp
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ls
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_fd_sc_ms
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu_sc
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_osu_sc_t18
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_ml_xx_hd
- addpath ${PDKPATH}/libs.ref/${MAGTYPE}/sky130_sram_macros
-} else {
- addpath ${PDKPATH}/libs.ref/sky130_fd_pr/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_io/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hd/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hdll/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hs/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_hvl/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_lp/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ls/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_fd_sc_ms/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_osu_sc/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_osu_sc_t18/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_ml_xx_hd/${MAGTYPE}
- addpath ${PDKPATH}/libs.ref/sky130_sram_macros/${MAGTYPE}
-}
-
-# add path to GDS cells
-
-# add path to IP from catalog. This procedure defined in the PDK script.
-catch {magic::query_mylib_ip}
-# add path to local IP from user design space. Defined in the PDK script.
-catch {magic::query_my_projects}
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A_setup.tcl b/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A_setup.tcl
deleted file mode 100644
index ede844e37..000000000
--- a/custom_block_tool/block_lvs_check_sky130pdk/sky130A/sky130A_setup.tcl
+++ /dev/null
@@ -1,419 +0,0 @@
-#---------------------------------------------------------------
-# Setup file for netgen LVS
-# SkyWater sky130A
-#---------------------------------------------------------------
-permute default
-property default
-property parallel none
-
-# Allow override of default #columns in the output format.
-catch {format $env(NETGEN_COLUMNS)}
-
-#---------------------------------------------------------------
-# For the following, get the cell lists from
-# circuit1 and circuit2.
-#---------------------------------------------------------------
-
-set cells1 [cells list -all -circuit1]
-set cells2 [cells list -all -circuit2]
-
-# NOTE: In accordance with the LVS manager GUI, the schematic is
-# always circuit2, so some items like property "par1" only need to
-# be specified for circuit2.
-
-#-------------------------------------------
-# Resistors (except metal)
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__res_iso_pw
-lappend devices sky130_fd_pr__res_high_po_0p35
-lappend devices sky130_fd_pr__res_high_po_0p69
-lappend devices sky130_fd_pr__res_high_po_1p41
-lappend devices sky130_fd_pr__res_high_po_2p85
-lappend devices sky130_fd_pr__res_high_po_5p73
-lappend devices sky130_fd_pr__res_high_po
-lappend devices sky130_fd_pr__res_xhigh_po_0p35
-lappend devices sky130_fd_pr__res_xhigh_po_0p69
-lappend devices sky130_fd_pr__res_xhigh_po_1p41
-lappend devices sky130_fd_pr__res_xhigh_po_2p85
-lappend devices sky130_fd_pr__res_xhigh_po_5p73
-lappend devices sky130_fd_pr__res_xhigh_po
-lappend devices sky130_fd_pr__res_generic_nd
-lappend devices sky130_fd_pr__res_generic_pd
-lappend devices sky130_fd_pr__res_generic_nd__hv
-lappend devices sky130_fd_pr__res_generic_pd__hv
-lappend devices mrdn_hv mrdp_hv
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- permute "-circuit1 $dev" 1 2
- property "-circuit1 $dev" series enable
- property "-circuit1 $dev" series {w critical}
- property "-circuit1 $dev" series {l add}
- property "-circuit1 $dev" parallel enable
- property "-circuit1 $dev" parallel {l critical}
- property "-circuit1 $dev" parallel {w add}
- property "-circuit1 $dev" parallel {value par}
- property "-circuit1 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit1 $dev" delete mult
- }
- if {[lsearch $cells2 $dev] >= 0} {
- permute "-circuit2 $dev" 1 2
- property "-circuit2 $dev" series enable
- property "-circuit2 $dev" series {w critical}
- property "-circuit2 $dev" series {l add}
- property "-circuit2 $dev" parallel enable
- property "-circuit2 $dev" parallel {l critical}
- property "-circuit2 $dev" parallel {w add}
- property "-circuit2 $dev" parallel {value par}
- property "-circuit2 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit2 $dev" delete mult
- }
-}
-
-#-------------------------------------------
-# MRM (metal) resistors and poly resistor
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__res_generic_po
-lappend devices sky130_fd_pr__res_generic_l1
-lappend devices sky130_fd_pr__res_generic_m1
-lappend devices sky130_fd_pr__res_generic_m2
-lappend devices sky130_fd_pr__res_generic_m3
-lappend devices sky130_fd_pr__res_generic_m4
-lappend devices sky130_fd_pr__res_generic_m5
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- permute "-circuit1 $dev" end_a end_b
- property "-circuit1 $dev" series enable
- property "-circuit1 $dev" series {w critical}
- property "-circuit1 $dev" series {l add}
- property "-circuit1 $dev" parallel enable
- property "-circuit1 $dev" parallel {l critical}
- property "-circuit1 $dev" parallel {w add}
- property "-circuit1 $dev" parallel {value par}
- property "-circuit1 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit1 $dev" delete mult
- }
- if {[lsearch $cells2 $dev] >= 0} {
- permute "-circuit2 $dev" end_a end_b
- property "-circuit2 $dev" series enable
- property "-circuit2 $dev" series {w critical}
- property "-circuit2 $dev" series {l add}
- property "-circuit2 $dev" parallel enable
- property "-circuit2 $dev" parallel {l critical}
- property "-circuit2 $dev" parallel {w add}
- property "-circuit2 $dev" parallel {value par}
- property "-circuit2 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit2 $dev" delete mult
- }
-}
-
-#-------------------------------------------
-# (MOS) transistors
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__nfet_01v8
-lappend devices sky130_fd_pr__nfet_01v8_lvt
-lappend devices sky130_fd_bs_flash__special_sonosfet_star
-lappend devices sky130_fd_pr__nfet_g5v0d10v5
-lappend devices sky130_fd_pr__nfet_05v0_nvt
-lappend devices sky130_fd_pr__pfet_01v8
-lappend devices sky130_fd_pr__pfet_01v8_lvt
-lappend devices sky130_fd_pr__pfet_01v8_mvt
-lappend devices sky130_fd_pr__pfet_01v8_hvt
-lappend devices sky130_fd_pr__pfet_g5v0d10v5
-lappend devices sky130_fd_pr__special_pfet_pass
-lappend devices sky130_fd_pr__special_nfet_pass
-lappend devices sky130_fd_pr__special_nfet_latch
-lappend devices sky130_fd_pr__cap_var_lvt
-lappend devices sky130_fd_pr__cap_var_hvt
-lappend devices sky130_fd_pr__cap_var
-lappend devices sky130_fd_pr__nfet_20v0_nvt
-lappend devices sky130_fd_pr__nfet_20v0
-lappend devices sky130_fd_pr__pfet_20v0
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- permute "-circuit1 $dev" 1 3
- property "-circuit1 $dev" parallel enable
- property "-circuit1 $dev" parallel {l critical}
- property "-circuit1 $dev" parallel {w add}
- property "-circuit1 $dev" tolerance {w 0.01} {l 0.01}
- # Ignore these properties
- property "-circuit1 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs
- }
- if {[lsearch $cells2 $dev] >= 0} {
- permute "-circuit2 $dev" 1 3
- property "-circuit2 $dev" parallel enable
- property "-circuit2 $dev" parallel {l critical}
- property "-circuit2 $dev" parallel {w add}
- property "-circuit2 $dev" tolerance {w 0.01} {l 0.01}
- # Ignore these properties
- property "-circuit2 $dev" delete as ad ps pd mult sa sb sd nf nrd nrs
- }
-}
-
-#-------------------------------------------
-# diodes
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__diode_pw2nd_05v5
-lappend devices sky130_fd_pr__diode_pw2nd_05v5_lvt
-lappend devices sky130_fd_pr__diode_pw2nd_05v5_nvt
-lappend devices sky130_fd_pr__diode_pd2nw_05v5
-lappend devices sky130_fd_pr__diode_pd2nw_05v5_lvt
-lappend devices sky130_fd_pr__diode_pd2nw_05v5_hvt
-lappend devices sky130_fd_pr__diode_pw2nd_11v0
-lappend devices sky130_fd_pr__diode_pd2nw_11v0
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- property "-circuit1 $dev" parallel enable
- property "-circuit1 $dev" parallel {area add}
- property "-circuit1 $dev" parallel {value add}
- property "-circuit1 $dev" tolerance {area 0.02}
- # Ignore these properties
- property "-circuit1 $dev" delete mult perim
- }
- if {[lsearch $cells2 $dev] >= 0} {
- property "-circuit2 $dev" parallel enable
- property "-circuit2 $dev" parallel {area add}
- property "-circuit2 $dev" parallel {value add}
- property "-circuit2 $dev" tolerance {area 0.02}
- # Ignore these properties
- property "-circuit2 $dev" delete mult perim
- }
-}
-
-#-------------------------------------------
-# capacitors
-# MiM capacitors
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__cap_mim_m3_1
-lappend devices sky130_fd_pr__cap_mim_m3_2
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- property "-circuit1 $dev" parallel enable
- property "-circuit1 $dev" parallel {area add}
- property "-circuit1 $dev" parallel {value add}
- property "-circuit1 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit1 $dev" delete mult perim mf
- }
- if {[lsearch $cells2 $dev] >= 0} {
- property "-circuit2 $dev" parallel enable
- property "-circuit2 $dev" parallel {area add}
- property "-circuit2 $dev" parallel {value add}
- property "-circuit2 $dev" tolerance {l 0.01} {w 0.01}
- # Ignore these properties
- property "-circuit2 $dev" delete mult perim mf
- }
-}
-
-#-------------------------------------------
-# Fixed-layout devices
-# bipolar transistors,
-# VPP capacitors
-#-------------------------------------------
-
-set devices {}
-lappend devices sky130_fd_pr__npn_05v5_W1p00L1p00
-lappend devices sky130_fd_pr__npn_05v5_W1p00L2p00
-lappend devices sky130_fd_pr__pnp_05v5_W0p68L0p68
-lappend devices sky130_fd_pr__pnp_05v5_W3p40L3p40
-lappend devices sky130_fd_pr__npn_05v5
-lappend devices sky130_fd_pr__pnp_05v5
-lappend devices sky130_fd_pr__npn_11v0
-
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_lim5_shield
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_lim5_shield
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m4_shield
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_pom4_shield
-lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_lim5_shield
-lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_lim4_shield
-lappend devices sky130_fd_pr__cap_vpp_6p8x6p1_polym4_shield
-lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_lim5_shield
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_li_shield
-lappend devices sky130_fd_pr__cap_vpp_11p5x11p7_m3_shield
-lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_li_shield
-lappend devices sky130_fd_pr__cap_vpp_1p8x1p8_m3_shield
-lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_li_shield
-lappend devices sky130_fd_pr__cap_vpp_4p4x4p6_m3_shield
-lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_li_shield
-lappend devices sky130_fd_pr__cap_vpp_8p6x7p9_m3_shield
-lappend devices sky130_fd_pr__ind_04_01
-lappend devices sky130_fd_pr__ind_04_02
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- property "-circuit1 $dev" parallel enable
- # Ignore these properties
- property "-circuit1 $dev" delete mult
- }
- if {[lsearch $cells2 $dev] >= 0} {
- property "-circuit2 $dev" parallel enable
- # Ignore these properties
- property "-circuit2 $dev" delete mult
- }
-}
-
-#---------------------------------------------------------------
-# Schematic cells which are not extractable
-#---------------------------------------------------------------
-
-set devices {sky130_fd_io__condiode sky130_fd_io__tap_1}
-
-foreach dev $devices {
- if {[lsearch $cells1 $dev] >= 0} {
- ignore class "-circuit1 $dev"
- }
- if {[lsearch $cells2 $dev] >= 0} {
- ignore class "-circuit2 $dev"
- }
-}
-
-#---------------------------------------------------------------
-# Digital cells (ignore decap, fill, and tap cells)
-# Make a separate list for each supported library
-#---------------------------------------------------------------
-# e.g., ignore class "-circuit2 sky130_fc_sc_hd__decap_3"
-#---------------------------------------------------------------
-
-if { [info exist ::env(MAGIC_EXT_USE_GDS)] && $::env(MAGIC_EXT_USE_GDS) } {
- foreach cell $cells1 {
-# if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {
-# ignore class "-circuit1 $cell"
-# }
- if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {
- ignore class "-circuit1 $cell"
- }
- if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} {
- ignore class "-circuit1 $cell"
- }
- if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
- ignore class "-circuit1 $cell"
- }
- }
- foreach cell $cells2 {
-# if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {
-# ignore class "-circuit2 $cell"
-# }
- if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {
- ignore class "-circuit2 $cell"
- }
- if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} {
- ignore class "-circuit2 $cell"
- }
- if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
- ignore class "-circuit2 $cell"
- }
- }
-}
-
-#---------------------------------------------------------------
-# Allow the fill, decap, etc., cells to be parallelized
-#---------------------------------------------------------------
-
-foreach cell $cells1 {
- if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__diode_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__fill_diode_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
- if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
- property "-circuit1 $cell" parallel enable
- }
-}
-foreach cell $cells2 {
- if {[regexp {sky130_fd_sc_[^_]+__decap_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__fill_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__tapvpwrvgnd_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__diode_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
- if {[regexp {sky130_fd_sc_[^_]+__fill_diode_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
- if {[regexp {sky130_ef_sc_[^_]+__fakediode_[[:digit:]]+} $cell match]} {
- property "-circuit2 $cell" parallel enable
- }
-}
-
-#---------------------------------------------------------------
-# Handle cells captured from Electric
-#
-# Find cells of the form "__" in the netlist
-# from Electric where the extracted layout netlist has only
-# "". Cross-check by ensuring that the full name
-# "__" does not exist in both cells, and that
-# the truncated name "" does not exist in both cells.
-#---------------------------------------------------------------
-# e.g., hydra_spi_controller__hydra_spi_controller
-#---------------------------------------------------------------
-
-foreach cell $cells1 {
- if {[regexp "(.+)__(.+)" $cell match library cellname]} {
- if {([lsearch $cells2 $cell] < 0) && \
- ([lsearch $cells2 $cellname] >= 0) && \
- ([lsearch $cells1 $cellname] < 0)} {
- equate classes "-circuit1 $cell" "-circuit2 $cellname"
- puts stdout "Matching pins of $cell in circuit 1 and $cellname in circuit 2"
- equate pins "-circuit1 $cell" "-circuit2 $cellname"
- }
- }
-}
-
-foreach cell $cells2 {
- if {[regexp "(.+)__(.+)" $cell match library cellname]} {
- if {([lsearch $cells1 $cell] < 0) && \
- ([lsearch $cells1 $cellname] >= 0) && \
- ([lsearch $cells2 $cellname] < 0)} {
- equate classes "-circuit1 $cellname" "-circuit2 $cell"
- puts stdout "Matching pins of $cellname in circuit 1 and $cell in circuit 2"
- equate pins "-circuit1 $cellname" "-circuit2 $cell"
- }
- }
-}
-
-# Match pins on black-box cells if LVS is called with "-blackbox"
-if {[model blackbox]} {
- foreach cell $cells1 {
- if {[model "-circuit1 $cell"] == "blackbox"} {
- if {[lsearch $cells2 $cell] >= 0} {
- puts stdout "Matching pins of $cell in circuits 1 and 2"
- equate pins "-circuit1 $cell" "-circuit2 $cell"
- }
- }
- }
-}
-
-#---------------------------------------------------------------
diff --git a/dependencies.mk b/dependencies.mk
deleted file mode 100644
index aea082167..000000000
--- a/dependencies.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-# Makefile for installing and updating dependencies
-
-DEPENDENCIES_SCRIPT = dependencies.sh
-
-# Phony targets
-.PHONY: install update #clean clean_install clean_update
-
-# Default target
-all: install update
-
-# Target for installing dependencies
-install:
- echo "y" | ./$(DEPENDENCIES_SCRIPT)
-
-# Target for updating dependencies
-update:
- echo "u" | ./$(DEPENDENCIES_SCRIPT)
-
-# # Target for cleaning up generated files
-# clean:
-# # Command to clean up generated files goes here, but
-# # currently this makefile does not generate new files in the first place
-
-# # Target for cleaning up and reinstalling dependencies
-# clean_install: clean install
-
-# # Target for cleaning up and updating dependencies
-# clean_update: clean update
diff --git a/dependencies.sh b/dependencies.sh
index bd8178087..cca36145c 100755
--- a/dependencies.sh
+++ b/dependencies.sh
@@ -4,7 +4,7 @@ printf "Function: \nIf this script runs smoothly, all necessary dependencies for
downloaded at once. If you've already downloaded all dependencies with this script,
you can run this script again to update the installed dependencies.\n
Basic Requirements (not exhaustive):
-(1) Python 3.6 or higher is required.
+(1) Python 3.8 or higher is required.
(2) Intel x86 architecture is required, as this script will use Conda to download several
Python packages for which versions compatible with ARM architecture currently do not
exist for installation in Conda's package repository. If your machine does not run
@@ -128,13 +128,13 @@ mi_ver=$(python3 -c"import sys; print(str(sys.version_info.minor))")
if [ "$ma_ver" -lt 3 ]
then
- echo "[Warning] python version less than 3.* . Not compatible. You atleast need version above or equal to 3.7."
- sed -i 's/gdsfactory==5.1.1/#gdsfactory==5.1.1/g' requirements.txt
+ echo "[Warning] python version less than 3.* . Not compatible. You atleast need version above or equal to 3.8."
+# sed -i 's/gdsfactory==5.1.1/#gdsfactory==5.1.1/g' requirements.txt
echo "[Warning] Skipping installing the gdsfactory python package because of that error. Continuing installation..."
-elif [ "$mi_ver" -lt 6 ]
+elif [ "$mi_ver" -lt 8 ]
then
- echo "[Warning] python version less than 3.6 . Not compatible. You atleast need version above or equal to 3.7."
- sed -i 's/gdsfactory==5.1.1/#gdsfactory==5.1.1/g' requirements.txt
+ echo "[Warning] python version less than 3.8 . Not compatible. You atleast need version above or equal to 3.8."
+# sed -i 's/gdsfactory==5.1.1/#gdsfactory==5.1.1/g' requirements.txt
echo "[Warning] Skipping installing the gdsfactory python package because of that error. Continuing installation..."
else
echo "Compatible python version exists: $ma_ver.$mi_ver"
@@ -156,9 +156,9 @@ fi
# install miniconda3
if ! [ -x /home/$(logname)/miniconda3 ]
then
- wget https://repo.anaconda.com/miniconda/Miniconda3-py37_23.1.0-1-Linux-x86_64.sh \
- && bash Miniconda3-py37_23.1.0-1-Linux-x86_64.sh -b -p /home/$(logname)/miniconda3/ \
- && rm -f Miniconda3-py37_23.1.0-1-Linux-x86_64.sh
+ wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
+ && bash ./Miniconda3-latest-Linux-x86_64.sh -b -p /home/$(logname)/miniconda3 \
+ && rm ./Miniconda3-latest-Linux-x86_64.sh
else
echo "[OpenFASoC] Found miniconda3. Continuing the installation...\n"
fi
@@ -181,7 +181,8 @@ source /home/$(logname)/miniconda3/etc/profile.d/conda.sh
if [ $? == 0 ] && [ -x /home/$(logname)/miniconda3/ ]
then
- conda update -y conda
+ conda update -y conda --all
+ conda install python=3.10 -c anaconda
if [ $? == 0 ];then conda install -c litex-hub --file conda_versions.txt -y ; else echo "[OpenFASoC] Failed to update conda version." ; exit ; fi
if [ $? == 0 ];then echo "[OpenFASoC] Installed OpenROAD, Yosys, Skywater PDK, Magic and Netgen successfully" ; else echo "[OpenFASoC] Failed to install conda packages" ; exit ; fi
else
diff --git a/docker/conda/Dockerfile b/docker/conda/Dockerfile
index 5012ca82c..afc4e151c 100755
--- a/docker/conda/Dockerfile
+++ b/docker/conda/Dockerfile
@@ -1,33 +1,30 @@
-FROM ubuntu:20.04
+FROM ubuntu:22.04
RUN apt-get -y update
RUN apt-get -y upgrade
ENV DEBIAN_FRONTEND=noninteractive
-RUN apt-get install -y wget autoconf libtool automake g++
-RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py37_23.1.0-1-Linux-x86_64.sh \
- && bash Miniconda3-py37_23.1.0-1-Linux-x86_64.sh -b -p /usr/bin/miniconda3/ \
- && rm -f Miniconda3-py37_23.1.0-1-Linux-x86_64.sh
+COPY ./packages.txt .
+RUN xargs apt-get install -y < packages.txt
+RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
+ && bash ./Miniconda3-latest-Linux-x86_64.sh -b -p /usr/bin/miniconda3 \
+ && rm ./Miniconda3-latest-Linux-x86_64.sh
ENV PATH=/usr/bin/miniconda3/bin:${PATH}
-RUN conda update -y conda
-RUN conda install -y -c litex-hub yosys \
- open_pdks.sky130a \
- magic \
- netgen \
- openroad \
- ngspice
-
-
-RUN apt install qt5-default qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qttools5-dev libqt5xmlpatterns5-dev qtmultimedia5-dev libqt5multimediawidgets5 libqt5svg5-dev -y
-RUN apt install ruby ruby-dev -y
-RUN apt install python3-dev -y
-RUN apt install libz-dev -y
-RUN apt install build-essential -y
-
-RUN wget https://www.klayout.org/downloads/Ubuntu-20/klayout_0.28.6-1_amd64.deb
-RUN dpkg -i klayout_0.28.6-1_amd64.deb
-RUN apt install time git -y
+RUN conda update conda --all -y
+RUN conda install python=3.10 \
+ yosys \
+ open_pdks.sky130a \
+ magic \
+ netgen \
+ openroad \
+ ngspice \
+ -c litex-hub \
+ -c anaconda \
+ -y
ENV PDK_ROOT=/usr/bin/miniconda3/share/pdk/
+
+RUN wget https://www.klayout.org/downloads/Ubuntu-22/klayout_0.28.12-1_amd64.deb
+RUN dpkg -i klayout_0.28.12-1_amd64.deb
RUN strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
COPY ./scripts /scripts
diff --git a/docker/conda/README b/docker/conda/README
new file mode 100644
index 000000000..bbe609c87
--- /dev/null
+++ b/docker/conda/README
@@ -0,0 +1,7 @@
+The Dockerfile present inside this directory builds an image with all OpenFASoC dependencies (EDA tools and PDK) at their latest versions. This is used as an environment for testing generators upon updates.
+
+Two images are built with tags "stable" and "alpha".
+- "alpha" tagged image has the latest available tools installed in it. This image is later used to verify the generators
+- "stable" tag image is created when specified generators are working with the "alpha" tagged image. At the same time, conda package versions and the original tool specific versions are extracted and stored in `conda_versions.txt` and `versions.txt` respectively. In the end, these versions are written to the `readme.rst` file.
+
+All scripts that are used in the second part of this check are kept in the `/scripts` directory and all the required packages over the plain `ubuntu:22` image are stored in `packages.txt`
\ No newline at end of file
diff --git a/docker/conda/packages.txt b/docker/conda/packages.txt
new file mode 100644
index 000000000..816082b35
--- /dev/null
+++ b/docker/conda/packages.txt
@@ -0,0 +1,18 @@
+wget
+autoconf
+libtool
+automake
+g++
+qtbase5-dev
+qttools5-dev
+libqt5xmlpatterns5-dev
+qtmultimedia5-dev
+libqt5multimediawidgets5
+libqt5svg5-dev
+ruby
+ruby-dev
+python3-dev
+libz-dev
+build-essential
+time
+git
\ No newline at end of file
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/Makefile b/openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/Makefile
similarity index 100%
rename from custom_block_tool/block_lvs_check_sky130pdk/Makefile
rename to openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/Makefile
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/README b/openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/README
similarity index 100%
rename from custom_block_tool/block_lvs_check_sky130pdk/README
rename to openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/README
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/run_lvspex.sh b/openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/run_lvspex.sh
similarity index 100%
rename from custom_block_tool/block_lvs_check_sky130pdk/run_lvspex.sh
rename to openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/run_lvspex.sh
diff --git a/custom_block_tool/block_lvs_check_sky130pdk/sky130A_setup.tcl b/openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/sky130A_setup.tcl
similarity index 100%
rename from custom_block_tool/block_lvs_check_sky130pdk/sky130A_setup.tcl
rename to openfasoc/common/drc-lvs-check/custom_block_tool/block_lvs_check_sky130pdk/sky130A_setup.tcl
diff --git a/pre-commit-2.19.0.pyz b/pre-commit-2.19.0.pyz
deleted file mode 100644
index 4ccaab115..000000000
Binary files a/pre-commit-2.19.0.pyz and /dev/null differ
diff --git a/requirements.txt b/requirements.txt
index 87d50d37e..ccb4ee1ce 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,9 +2,9 @@ pandas
klayout
numpy
matplotlib
-gdsfactory==5.1.1
+gdsfactory
nbsphinx
cairosvg
scipy
ltspice
-mako
\ No newline at end of file
+mako