From 31d2d7145b7714e3d1624aba50e9c2cce715adf7 Mon Sep 17 00:00:00 2001 From: mrg Date: Fri, 13 Jan 2023 09:47:07 -0800 Subject: [PATCH 01/26] v1.2.1 --- compiler/globals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/globals.py b/compiler/globals.py index c66d63ac..06260fc9 100644 --- a/compiler/globals.py +++ b/compiler/globals.py @@ -22,7 +22,7 @@ from openram import debug from openram import options -VERSION = "1.2.0" +VERSION = "1.2.1" NAME = "OpenRAM v{}".format(VERSION) USAGE = "sram_compiler.py [options] \nUse -h for help.\n" From 78e84ee8dfa8818c48f35e0da8fa2e80d740bc0e Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 10:30:48 -0800 Subject: [PATCH 02/26] Add version file --- MANIFEST.in | 1 + VERSION | 1 + compiler/globals.py | 3 ++- pyproject.toml | 12 ------------ setup.py | 13 +++++++++++++ 5 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 VERSION diff --git a/MANIFEST.in b/MANIFEST.in index 82a701d7..cb0967e3 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -6,6 +6,7 @@ include install_conda.sh include docker/* recursive-include compiler * recursive-include technology * +include VERSION exclude .DS_Store exclude .idea exclude **/model_data diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..6085e946 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.2.1 diff --git a/compiler/globals.py b/compiler/globals.py index 2bbdf400..626b5d22 100644 --- a/compiler/globals.py +++ b/compiler/globals.py @@ -22,7 +22,8 @@ from openram import debug from openram import options -VERSION = "1.2.0" +from openram import OPENRAM_HOME +VERSION = open(OPENRAM_HOME + "/../VERSION").read().rstrip() NAME = "OpenRAM v{}".format(VERSION) USAGE = "sram_compiler.py [options] \nUse -h for help.\n" diff --git a/pyproject.toml b/pyproject.toml index 5aebe600..fed528d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,15 +1,3 @@ [build-system] requires = ["setuptools"] build-backend = "setuptools.build_meta" - -[project] -name = "openram" -version = "1.2.0" -description = "An open-source static random access memory (SRAM) compiler" -authors = [ - { name="Matthew Guthaus", email="mrg@ucsc.edu" }, -] -keywords = [ "sram", "magic", "gds", "netgen", "ngspice", "netlist" ] -readme = "README.md" -license = { text = "BSD-3-Clause License" } -requires-python = ">=3.6" \ No newline at end of file diff --git a/setup.py b/setup.py index ee86e65c..292fabb1 100644 --- a/setup.py +++ b/setup.py @@ -48,8 +48,21 @@ with open("requirements.txt") as f: reqs = f.read().splitlines() +# Read version from file +version = open("VERSION", "r").read().rstrip() + + # Call the setup to create the package setup( + name="openram", + version=version, + description="An open-source static random access memory (SRAM) compiler", + url="https://openram.org/", + author="Matthew Guthaus", + author_email="mrg@ucsc.edu", + keywords=[ "sram", "magic", "gds", "netgen", "ngspice", "netlist" ], + readme="README.md", + license="BSD-3", packages=packages, package_dir=package_dir, include_package_data=True, From 184643f35469798e957314c352781c6570eae1bb Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 10:31:46 -0800 Subject: [PATCH 03/26] Change library make target name --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index cdd527c1..9f5bd9ad 100644 --- a/Makefile +++ b/Makefile @@ -215,14 +215,14 @@ wipe: uninstall .PHONY: wipe # Build the openram library -build-library: +build_library: @rm -rf dist @rm -rf openram.egg-info @python3 -m pip install --upgrade build @python3 -m build -.PHONY: build-library +.PHONY: build_library # Build and install the openram library -library: build-library +library: build_library @python3 -m pip install --force --find-links=dist openram .PHONY: library From 78a2472bbfa8f3625608e6b2abd320a07fb00e81 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 10:33:01 -0800 Subject: [PATCH 04/26] Add deploy.yml --- .github/workflows/deploy.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..77d1a0a1 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,25 @@ +name: deploy +on: + push: + branches: + - stable + tags: + - 'v*.*.*' +jobs: + deploy_pip: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v1 + - name: Install dependencies + uses: actions/setup-python@v2 + with: + python-version: '3.8' + run: | + python3 -m pip install virtualenv + - name: Build Python package + run: | + make build_library + - name: Upload package to PyPI + run: | + echo "Not ready yet..." From 320b0223f8073a719a754eaaced8aced6a52eabc Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 10:46:55 -0800 Subject: [PATCH 05/26] Try with the current branch --- .github/workflows/deploy.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 77d1a0a1..a0c550aa 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,10 +1,10 @@ name: deploy -on: - push: - branches: - - stable - tags: - - 'v*.*.*' +on: [push] +# push: +# branches: +# - stable +# tags: +# - 'v*.*.*' jobs: deploy_pip: runs-on: ubuntu-latest From a8098bf1ba6d8406ab9c15c12269cbecb5559ced Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 10:50:03 -0800 Subject: [PATCH 06/26] Fix broken step --- .github/workflows/deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a0c550aa..d3cf197e 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -11,10 +11,11 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v1 - - name: Install dependencies + - name: Setup Python uses: actions/setup-python@v2 with: python-version: '3.8' + - name: Install dependencies run: | python3 -m pip install virtualenv - name: Build Python package From e35156339152171243bb52d9b654d535b7d9c187 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 11:02:28 -0800 Subject: [PATCH 07/26] Reenable workflow restriction --- .github/workflows/deploy.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d3cf197e..60b2c247 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,10 +1,10 @@ name: deploy -on: [push] -# push: -# branches: -# - stable -# tags: -# - 'v*.*.*' +on: + push: + branches: + - stable + tags: + - 'v*.*.*' jobs: deploy_pip: runs-on: ubuntu-latest From c598a29f9792761b2d60bc30438c4ca362aeb06d Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 22:06:10 -0800 Subject: [PATCH 08/26] Add pypi-publish action --- .github/workflows/deploy.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 60b2c247..1ee4c0a8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -22,5 +22,6 @@ jobs: run: | make build_library - name: Upload package to PyPI - run: | - echo "Not ready yet..." + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} From 50f746a9940a8661727cbc4bc21013bc23974593 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Tue, 7 Feb 2023 22:20:29 -0800 Subject: [PATCH 09/26] Exclude conda directory from Python package --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 292fabb1..8f3fd9f2 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ from setuptools import setup, find_namespace_packages # Include these folder from the root of repo as submodules include = ["compiler", "docker", "technology", "macros"] # Exclude files/folders with these words -exclude = ["docs", "images"] +exclude = ["docs", "images", "miniconda"] # Find all modules inside the 'compiler' folder From ac70d67da7eb9883e6a4fb7b93980470566fa5d9 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Fri, 10 Feb 2023 11:01:31 -0800 Subject: [PATCH 10/26] Run regression on branches other than 'stable' --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f10d3db1..9fa83326 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,8 @@ name: ci -on: [push] +on: + push: + branches: + - '!stable' jobs: regress: runs-on: self-hosted From 0a2fceded496c83838b9fd95b2899d15a1ae3976 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Sun, 12 Feb 2023 16:37:30 -0800 Subject: [PATCH 11/26] Add new workflows --- .github/workflows/README.md | 69 +++++++++++++++++++++++ .github/workflows/deploy.yml | 3 +- .github/workflows/{ci.yml => regress.yml} | 32 +++++++++-- .github/workflows/sync.yml | 25 ++++++++ .github/workflows/version.yml | 44 +++++++++++++++ 5 files changed, 165 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/README.md rename .github/workflows/{ci.yml => regress.yml} (55%) create mode 100644 .github/workflows/sync.yml create mode 100644 .github/workflows/version.yml diff --git a/.github/workflows/README.md b/.github/workflows/README.md new file mode 100644 index 00000000..7648a890 --- /dev/null +++ b/.github/workflows/README.md @@ -0,0 +1,69 @@ +# How do the workflows work? + +1. When there is a push to the private repo's 'dev' branch (private/dev), +`regress` workflow runs the regression tests. + +1. If `regress` workflow fails on 'private/dev', `sync` workflow gets triggered +and it pushes the latest changes to the public repo's 'dev' branch (public/dev). +After this push, `regress` workflow will also run on 'public/dev'. + +1. If `regress` workflow successfully passes on 'private/dev', `version` +workflow gets triggered. It creates a new version commit and tag, and pushes to +'private/dev', 'public/dev', 'public/stable'. + +1. When there is a push with new version to the 'public/stable' branch, `deploy` +workflow runs. It deploys the PyPI package of OpenRAM. + +1. If there is a pull request on either repo, `regress` workflow runs on that +pull request. + +1. If there is a push to 'public/dev', `regress` workflow runs (it also happens +when pull requests are merged). + +1. If `regress` workflow successfully passes on 'public/dev', `version` +workflow gets triggered. It creates a new version commit and tag, and pushes to +'private/dev', 'public/dev', and 'public/stable'. + + + +## Important Notes + +1. Workflows understand that the latest commit has a new version with the +following commit message syntax. + + ``` + Bump version: + ``` + + Automatically generated version commit have the following syntax: + + ``` + Bump version: a.b.c -> a.b.d + ``` + +1. `version` workflow only increments the right-most version digit. Other digits +in the version number must be updated manually following the syntax above. + +1. `regress` workflow doesn't run if the push has a new version. We assume that +this commit was automatically generated after a previous commit passed `regress` +workflow or was manually generated with caution. + +1. `regress` workflow doesn't run on branches named 'stable'. + +1. `deploy` workflow only runs on branches named 'stable'. + +1. `version` workflow is only triggered from branches named 'dev' if they pass +`regress` workflow. + +1. `sync` workflow only runs on the private repo. + +1. Pull requests merged on to 'public/dev' will also trigger `regress` and it +can create a new version. + +1. Merging pull requests that don't pass `regress` workflow on the public repo +should be avoided since it won't update the private repo automatically. To +prevent merging by mistake, the dev branch can be protected in the GitHub +settings. + +1. Merging pull requests on the private repo should be safe in any case. + diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1ee4c0a8..48556fa7 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,10 +3,9 @@ on: push: branches: - stable - tags: - - 'v*.*.*' jobs: deploy_pip: + if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} runs-on: ubuntu-latest steps: - name: Checkout code diff --git a/.github/workflows/ci.yml b/.github/workflows/regress.yml similarity index 55% rename from .github/workflows/ci.yml rename to .github/workflows/regress.yml index 9fa83326..e9cda14a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/regress.yml @@ -1,10 +1,16 @@ -name: ci +name: regress on: push: - branches: - - '!stable' + branches-ignore: + - stable + pull_request: + branches-ignore: + - stable jobs: - regress: + # All tests should be run from this job. + regression_test: + # This job runs on pull requests or any push that doesn't have a new version + if: ${{ github.event_name == 'pull_request' || startsWith(github.event.head_commit.message, 'Bump version:') == false }} runs-on: self-hosted steps: - name: Checkout code @@ -42,5 +48,19 @@ jobs: if: ${{ failure() }} uses: actions/upload-artifact@v2 with: - name: Regress Archives - path: ${{ github.workspace }}/compiler/tests/results/* + name: Regress Archives + path: ${{ github.workspace }}/compiler/tests/results/* + # This job triggers sync.yml workflow + sync_trigger: + if: ${{ always() && github.event_name == 'push' && github.ref_name == 'dev' && github.repository == 'VLSIDA/PrivateRAM' && needs.regression_test.result == 'failure' }} + needs: regression_test + uses: ./.github/workflows/sync.yml + secrets: + ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + # This job triggers version.yml workflow + version_trigger: + if: ${{ github.event_name == 'push' && github.ref_name == 'dev' }} + needs: regression_test + uses: ./.github/workflows/version.yml + secrets: + ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml new file mode 100644 index 00000000..7e374d50 --- /dev/null +++ b/.github/workflows/sync.yml @@ -0,0 +1,25 @@ +name: sync +on: + workflow_call: + secrets: + WORKFLOW_ACCESS_TOKEN: + required: true +jobs: + sync_dev: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + - name: Synchronize OpenRAM repo + run: | + # Configure pusher account + git config --global user.name "mrg" + git config --global user.email "mrg@ucsc.edu" + # Add remote repo + git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git + git pull public-repo dev + # Push the latest changes + git push -u public-repo HEAD:dev diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml new file mode 100644 index 00000000..18271019 --- /dev/null +++ b/.github/workflows/version.yml @@ -0,0 +1,44 @@ +name: version +on: + workflow_call: + secrets: + WORKFLOW_ACCESS_TOKEN: + required: true +jobs: + make_version: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + - name: Configure git + run: | + # Configure the committer + git config --global user.name "mrg" + git config --global user.email "mrg@ucsc.edu" + # Set remote repos + git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git + git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git + - name: Make new version number + run: | + # Read the current version number + export CURRENT_VERSION="$(cat VERSION)" + # Increment the version number + export NEXT_VERSION="$(echo ${CURRENT_VERSION} | awk -F. -v OFS=. '{$NF += 1 ; print}')" + echo "${NEXT_VERSION}" > VERSION + # Commit the change and tag the commit + git commit -a -m "Bump version: ${CURRENT_VERSION} -> ${NEXT_VERSION}" + git tag "v${NEXT_VERSION}" HEAD + - name: Push changes + run: | + # Push to private/dev + git pull private-repo dev + git push private-repo HEAD:dev --tags + # Push to public/dev + git pull public-repo dev + git push public-repo HEAD:dev --tags + # Push to public/stable + git pull public-repo stable + git push public-repo HEAD:stable --tags From 984126f7e0776e8e30ef84f52fabb3d3d816bd7e Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Sun, 12 Feb 2023 16:40:55 -0800 Subject: [PATCH 12/26] Fix typo --- .github/workflows/regress.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/regress.yml b/.github/workflows/regress.yml index e9cda14a..a858969b 100644 --- a/.github/workflows/regress.yml +++ b/.github/workflows/regress.yml @@ -56,11 +56,11 @@ jobs: needs: regression_test uses: ./.github/workflows/sync.yml secrets: - ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + WORKFLOW_ACCESS_TOKEN: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} # This job triggers version.yml workflow version_trigger: if: ${{ github.event_name == 'push' && github.ref_name == 'dev' }} needs: regression_test uses: ./.github/workflows/version.yml secrets: - ACCESS_TOKEN_GITHUB: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + WORKFLOW_ACCESS_TOKEN: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} From c891a033f2c816be345650c953bd32c7be95f667 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Mon, 13 Feb 2023 22:12:36 -0800 Subject: [PATCH 13/26] Make releases with workflow --- .github/workflows/deploy.yml | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 48556fa7..5f788004 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: - stable jobs: deploy_pip: - if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} + if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} runs-on: ubuntu-latest steps: - name: Checkout code @@ -24,3 +24,29 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TOKEN }} + github_release: + if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + - name: Create a release + run: | + # Find the last two commits + export LATEST_TAG="$(git describe --tags --abbrev=0)" + export PREVIOUS_TAG="$(git describe --tags --abbrev=0 $(git rev-list --tags --skip=1 --max-count=1))" + # Write release notes to a file + touch release_notes.txt + printf "## Install\nPython package is available at [PyPI](https://pypi.org/project/openram/).\n" >> release_notes.txt + printf "## Documentation\nDocumentation is available [here](https://github.com/VLSIDA/OpenRAM/blob/stable/docs/source/index.md).\n" >> release_notes.txt + printf "## Changes\n" >> release_notes.txt + printf "Full changelog: https://github.com/VLSIDA/OpenRAM/compare/${PREVIOUS_TAG}...${LATEST_TAG}\n" >> release_notes.txt + printf "## Contributors\n" >> release_notes.txt + printf "$(git log --pretty='format:+ %an' ${LATEST_TAG}...${PREVIOUS_TAG} | sort -u)\n" >> release_notes.txt + # Create the release via GitHub CLI + gh release create ${LATEST_TAG} --verify-tag -F release_notes.txt + env: + GITHUB_TOKEN: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} From 742745070820c554c8d00f58ac2bc094f057b0c6 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Mon, 13 Feb 2023 22:54:23 -0800 Subject: [PATCH 14/26] Make sure versions always have tags --- .github/workflows/sync.yml | 43 +++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index 7e374d50..b3ac219b 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -1,11 +1,16 @@ name: sync on: + push: + branches: + - dev workflow_call: secrets: WORKFLOW_ACCESS_TOKEN: required: true jobs: - sync_dev: + # This job synchronizes the 'dev' branch of OpenRAM repo with the current branch + sync_dev_no_version: + if: ${{ github.event_name == 'workflow_call' && github.repository == 'VLSIDA/PrivateRAM' }} runs-on: ubuntu-latest steps: - name: Checkout code @@ -23,3 +28,39 @@ jobs: git pull public-repo dev # Push the latest changes git push -u public-repo HEAD:dev + # This job makes sure that a version commit has a tag (manually bumped versions might have tags missing) + sync_dev_tag_check: + if: ${{ github.event_name == 'push' && github.repository == 'VLSIDA/PrivateRAM' && startsWith(github.event.head_commit.message, 'Bump version:') }} + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + - name: Compare version and tag + run: | + # Configure pusher account + git config --global user.name "mrg" + git config --global user.email "mrg@ucsc.edu" + # Add both repos + git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git + git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git + # Read the version file + echo "LATEST_VERSION=v$(cat VERSION)" >> $GITHUB_ENV + # Read the tag name of the last commit + echo "HEAD_TAG=$(git describe --tags HEAD)" >> $GITHUB_ENV + - name: Make a new tag and push + if: ${{ env.LATEST_VERSION != env.HEAD_TAG }} + run: | + # Tag the commit + git tag ${{ env.LATEST_VERSION }} HEAD + # Push to private/dev + git pull private-repo dev + git push private-repo HEAD:dev --tags + # Push to public-repo/dev + git pull public-repo dev + git push public-repo HEAD:dev --tags + # Push to public/stable + git pull public-repo stable + git push public-repo HEAD:stable --tags From 818a9d2317c1be9c30b7185df5a041bb1b63404e Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Wed, 15 Feb 2023 14:15:22 -0800 Subject: [PATCH 15/26] Update workflow documentation --- .github/workflows/README.md | 69 +++++++++++++++++++++++++++++++---- .github/workflows/deploy.yml | 2 + .github/workflows/regress.yml | 2 +- 3 files changed, 64 insertions(+), 9 deletions(-) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 7648a890..44d75187 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -1,7 +1,10 @@ # How do the workflows work? 1. When there is a push to the private repo's 'dev' branch (private/dev), -`regress` workflow runs the regression tests. +`regress` workflow runs the regression tests if the commit is not versioned. +`sync` workflow runs and makes sure that the versioned commit has a tag if it is +versioned. See [important notes](#important-notes) to see what "versioned +commit" means. 1. If `regress` workflow fails on 'private/dev', `sync` workflow gets triggered and it pushes the latest changes to the public repo's 'dev' branch (public/dev). @@ -9,10 +12,11 @@ After this push, `regress` workflow will also run on 'public/dev'. 1. If `regress` workflow successfully passes on 'private/dev', `version` workflow gets triggered. It creates a new version commit and tag, and pushes to -'private/dev', 'public/dev', 'public/stable'. +'private/dev', 'public/dev', and 'public/stable'. 1. When there is a push with new version to the 'public/stable' branch, `deploy` -workflow runs. It deploys the PyPI package of OpenRAM. +workflow runs. It deploys the PyPI package of OpenRAM and creates a new GitHub +release on that repo. 1. If there is a pull request on either repo, `regress` workflow runs on that pull request. @@ -28,21 +32,23 @@ workflow gets triggered. It creates a new version commit and tag, and pushes to ## Important Notes -1. Workflows understand that the latest commit has a new version with the -following commit message syntax. +1. Workflows understand that the latest commit is versioned with the following +commit message syntax. ``` Bump version: ``` - Automatically generated version commit have the following syntax: + Automatically generated version commits have the following syntax: ``` Bump version: a.b.c -> a.b.d ``` 1. `version` workflow only increments the right-most version digit. Other digits -in the version number must be updated manually following the syntax above. +in the version number must be updated manually, following the syntax above. Just +following this syntax is enough for workflows to create a new version +automatically. That means, you don't have to tag that commit manually. 1. `regress` workflow doesn't run if the push has a new version. We assume that this commit was automatically generated after a previous commit passed `regress` @@ -65,5 +71,52 @@ should be avoided since it won't update the private repo automatically. To prevent merging by mistake, the dev branch can be protected in the GitHub settings. -1. Merging pull requests on the private repo should be safe in any case. +1. Merging pull requests on the private repo should be safe in any case. They +are treated the same as commit pushes. + + + +## Flowchart +```mermaid +flowchart TD + +start((Start)); +privatedev[(PrivateRAM/dev)]; +publicdev[(OpenRAM/dev)]; +publicstable[(OpenRAM/stable)]; +regressprivate{{regress}}; +regresspublic{{regress}}; +syncnover{{sync/no_version}}; +synctag{{sync/fix_tag}}; +deploy{{deploy}}; +versionprivate{{version}}; +versionpublic{{version}}; + +privateif1(Is versioned?); +privateif2(Has version tag?); +privateif3(Did tests pass?); + +publicif1(Is versioned?); +publicif2(Is versioned?); +publicif3(Did tests pass?) + +start-- Push commit -->privatedev + privatedev-->privateif1 + privateif1-- Yes -->privateif2 + privateif2-- No -->synctag + privateif1-- No -->regressprivate + regressprivate-->privateif3 + privateif3-- Yes -->versionprivate + privateif3-- No -->syncnover + +start-- Push commit / Merge PR -->publicdev +publicdev-->publicif1 + publicif1-- No -->regresspublic + regresspublic-->publicif3 + publicif3-- Yes -->versionpublic + +start-- "Push commit (from workflows)" -->publicstable +publicstable-->publicif2 + publicif2-- Yes -->deploy +``` diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5f788004..dd6326c1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,7 @@ on: branches: - stable jobs: + # This job upload the Python library to PyPI deploy_pip: if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} runs-on: ubuntu-latest @@ -24,6 +25,7 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TOKEN }} + # This job creates a new GitHub release github_release: if: ${{ startsWith(github.event.head_commit.message, 'Bump version:') }} runs-on: ubuntu-latest diff --git a/.github/workflows/regress.yml b/.github/workflows/regress.yml index a858969b..1da43009 100644 --- a/.github/workflows/regress.yml +++ b/.github/workflows/regress.yml @@ -7,7 +7,7 @@ on: branches-ignore: - stable jobs: - # All tests should be run from this job. + # All tests should be run from this job regression_test: # This job runs on pull requests or any push that doesn't have a new version if: ${{ github.event_name == 'pull_request' || startsWith(github.event.head_commit.message, 'Bump version:') == false }} From b9707568161e8853f8c51d68ddbcc4c1aba89dbe Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Wed, 15 Feb 2023 21:41:05 -0800 Subject: [PATCH 16/26] Push only the latest version tag --- .github/workflows/sync.yml | 6 +++--- .github/workflows/version.yml | 8 +++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index b3ac219b..a3a1fb20 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -57,10 +57,10 @@ jobs: git tag ${{ env.LATEST_VERSION }} HEAD # Push to private/dev git pull private-repo dev - git push private-repo HEAD:dev --tags + git push private-repo HEAD:dev ${{ env.LATEST_VERSION }} # Push to public-repo/dev git pull public-repo dev - git push public-repo HEAD:dev --tags + git push public-repo HEAD:dev ${{ env.LATEST_VERSION }} # Push to public/stable git pull public-repo stable - git push public-repo HEAD:stable --tags + git push public-repo HEAD:stable ${{ env.LATEST_VERSION }} diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index 18271019..f3ff51cb 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -33,12 +33,14 @@ jobs: git tag "v${NEXT_VERSION}" HEAD - name: Push changes run: | + # Read next tag + export NEXT_TAG="v$(cat VERSION)" # Push to private/dev git pull private-repo dev - git push private-repo HEAD:dev --tags + git push private-repo HEAD:dev ${NEXT_TAG} # Push to public/dev git pull public-repo dev - git push public-repo HEAD:dev --tags + git push public-repo HEAD:dev ${NEXT_TAG} # Push to public/stable git pull public-repo stable - git push public-repo HEAD:stable --tags + git push public-repo HEAD:stable ${NEXT_TAG} From cb180434913d7ff5d7d86a9100c2659d9d50f019 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Thu, 16 Feb 2023 20:59:23 -0800 Subject: [PATCH 17/26] Use vlsida-bot account for workflows --- .github/workflows/sync.yml | 8 ++++---- .github/workflows/version.yml | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index a3a1fb20..a605e5f4 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -21,8 +21,8 @@ jobs: - name: Synchronize OpenRAM repo run: | # Configure pusher account - git config --global user.name "mrg" - git config --global user.email "mrg@ucsc.edu" + git config --global user.name "vlsida-bot" + git config --global user.email "mrg+vlsidabot@ucsc.edu" # Add remote repo git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git git pull public-repo dev @@ -41,8 +41,8 @@ jobs: - name: Compare version and tag run: | # Configure pusher account - git config --global user.name "mrg" - git config --global user.email "mrg@ucsc.edu" + git config --global user.name "vlsida-bot" + git config --global user.email "mrg+vlsidabot@ucsc.edu" # Add both repos git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index f3ff51cb..610f0a6d 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -16,8 +16,8 @@ jobs: - name: Configure git run: | # Configure the committer - git config --global user.name "mrg" - git config --global user.email "mrg@ucsc.edu" + git config --global user.name "vlsida-bot" + git config --global user.email "mrg+vlsidabot@ucsc.edu" # Set remote repos git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git From a7582c05dc2de9dcffa72bd97d6203e2ce9b5926 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Fri, 17 Feb 2023 10:42:31 -0800 Subject: [PATCH 18/26] Disable failing tests --- compiler/tests/Makefile | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/compiler/tests/Makefile b/compiler/tests/Makefile index daafa4dc..69385140 100644 --- a/compiler/tests/Makefile +++ b/compiler/tests/Makefile @@ -86,7 +86,20 @@ BROKEN_STAMPS = \ %/50_riscv_512b_1rw1r_func_test.ok \ %/50_riscv_512b_1rw_func_test.ok \ %/50_riscv_8k_1rw1r_func_test.ok \ - %/50_riscv_8k_1rw_func_test.ok + %/50_riscv_8k_1rw_func_test.ok \ + freepdk45/20_sram_1bank_2mux_1rw_1r_spare_cols_test.ok \ + freepdk45/20_sram_1bank_2mux_1w_1r_spare_cols_test.ok \ + freepdk45/20_sram_1bank_2mux_global_test.ok \ + freepdk45/20_sram_1bank_2mux_wmask_spare_cols_test.ok \ + freepdk45/20_sram_1bank_2mux_wmask_test.ok \ + freepdk45/20_sram_1bank_4mux_1rw_1r_test.ok \ + freepdk45/20_sram_1bank_4mux_test.ok \ + freepdk45/20_sram_1bank_8mux_1rw_1r_test.ok \ + freepdk45/21_model_delay_test.ok \ + freepdk45/21_xyce_delay_test.ok \ + scn4m_subm/19_single_bank_global_bitline_test.ok \ + scn4m_subm/21_model_delay_test.ok \ + scn4m_subm/21_xyce_delay_test.ok gettech = $(word 1,$(subst /, ,$*)) getfile = $(word 2,$(subst /, ,$*)) From d3da632dc1c84505fbdbe820e466693b8ddc15e8 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Fri, 17 Feb 2023 13:34:02 -0800 Subject: [PATCH 19/26] Fix typo in model delay test --- compiler/tests/21_model_delay_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/tests/21_model_delay_test.py b/compiler/tests/21_model_delay_test.py index 5a6d1ce3..681f4fff 100755 --- a/compiler/tests/21_model_delay_test.py +++ b/compiler/tests/21_model_delay_test.py @@ -93,7 +93,7 @@ class model_delay_test(openram_test): else: self.assertTrue(False) # other techs fail - debug.info(3, 'spice_delays {}'.fomrat(spice_delays)) + debug.info(3, 'spice_delays {}'.format(spice_delays)) debug.info(3, 'model_delays {}'.format(model_delays)) # Check if no too many or too few results From d8a169e79f37ed1389f352db9d64989eed0f0486 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Fri, 17 Feb 2023 14:56:52 -0800 Subject: [PATCH 20/26] Reenable tests --- compiler/tests/Makefile | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/compiler/tests/Makefile b/compiler/tests/Makefile index 69385140..7351a424 100644 --- a/compiler/tests/Makefile +++ b/compiler/tests/Makefile @@ -87,19 +87,6 @@ BROKEN_STAMPS = \ %/50_riscv_512b_1rw_func_test.ok \ %/50_riscv_8k_1rw1r_func_test.ok \ %/50_riscv_8k_1rw_func_test.ok \ - freepdk45/20_sram_1bank_2mux_1rw_1r_spare_cols_test.ok \ - freepdk45/20_sram_1bank_2mux_1w_1r_spare_cols_test.ok \ - freepdk45/20_sram_1bank_2mux_global_test.ok \ - freepdk45/20_sram_1bank_2mux_wmask_spare_cols_test.ok \ - freepdk45/20_sram_1bank_2mux_wmask_test.ok \ - freepdk45/20_sram_1bank_4mux_1rw_1r_test.ok \ - freepdk45/20_sram_1bank_4mux_test.ok \ - freepdk45/20_sram_1bank_8mux_1rw_1r_test.ok \ - freepdk45/21_model_delay_test.ok \ - freepdk45/21_xyce_delay_test.ok \ - scn4m_subm/19_single_bank_global_bitline_test.ok \ - scn4m_subm/21_model_delay_test.ok \ - scn4m_subm/21_xyce_delay_test.ok gettech = $(word 1,$(subst /, ,$*)) getfile = $(word 2,$(subst /, ,$*)) From 1b711ed7d724c86c41e51f7a342533be3eaa8840 Mon Sep 17 00:00:00 2001 From: mrg Date: Fri, 17 Feb 2023 15:37:53 -0800 Subject: [PATCH 21/26] Include and use FreePDK45 models with license. --- technology/freepdk45/__init__.py | 36 ++-- .../freepdk45/models/APACHE-LICENSE-2.0.txt | 176 ++++++++++++++++++ technology/freepdk45/models/hspice_ff.include | 12 ++ .../freepdk45/models/hspice_nom.include | 12 ++ technology/freepdk45/models/hspice_ss.include | 12 ++ .../tran_models/models_ff/NMOS_THKOX.inc | 79 ++++++++ .../models/tran_models/models_ff/NMOS_VTG.inc | 80 ++++++++ .../models/tran_models/models_ff/NMOS_VTH.inc | 80 ++++++++ .../models/tran_models/models_ff/NMOS_VTL.inc | 80 ++++++++ .../tran_models/models_ff/PMOS_THKOX.inc | 82 ++++++++ .../models/tran_models/models_ff/PMOS_VTG.inc | 74 ++++++++ .../models/tran_models/models_ff/PMOS_VTH.inc | 68 +++++++ .../models/tran_models/models_ff/PMOS_VTL.inc | 76 ++++++++ .../tran_models/models_nom/NMOS_THKOX.inc | 79 ++++++++ .../tran_models/models_nom/NMOS_VTG.inc | 80 ++++++++ .../tran_models/models_nom/NMOS_VTH.inc | 80 ++++++++ .../tran_models/models_nom/NMOS_VTL.inc | 80 ++++++++ .../tran_models/models_nom/PMOS_THKOX.inc | 82 ++++++++ .../tran_models/models_nom/PMOS_VTG.inc | 74 ++++++++ .../tran_models/models_nom/PMOS_VTH.inc | 68 +++++++ .../tran_models/models_nom/PMOS_VTL.inc | 76 ++++++++ .../tran_models/models_ss/NMOS_THKOX.inc | 79 ++++++++ .../models/tran_models/models_ss/NMOS_VTG.inc | 80 ++++++++ .../models/tran_models/models_ss/NMOS_VTH.inc | 80 ++++++++ .../models/tran_models/models_ss/NMOS_VTL.inc | 80 ++++++++ .../tran_models/models_ss/PMOS_THKOX.inc | 82 ++++++++ .../models/tran_models/models_ss/PMOS_VTG.inc | 74 ++++++++ .../models/tran_models/models_ss/PMOS_VTH.inc | 68 +++++++ .../models/tran_models/models_ss/PMOS_VTL.inc | 76 ++++++++ technology/scn4m_subm/__init__.py | 17 +- 30 files changed, 2095 insertions(+), 27 deletions(-) create mode 100644 technology/freepdk45/models/APACHE-LICENSE-2.0.txt create mode 100644 technology/freepdk45/models/hspice_ff.include create mode 100644 technology/freepdk45/models/hspice_nom.include create mode 100644 technology/freepdk45/models/hspice_ss.include create mode 100644 technology/freepdk45/models/tran_models/models_ff/NMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/NMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/NMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/NMOS_VTL.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/PMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/PMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/PMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_ff/PMOS_VTL.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/NMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/NMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/NMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/NMOS_VTL.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/PMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/PMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/PMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_nom/PMOS_VTL.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/NMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/NMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/NMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/NMOS_VTL.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/PMOS_THKOX.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/PMOS_VTG.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/PMOS_VTH.inc create mode 100644 technology/freepdk45/models/tran_models/models_ss/PMOS_VTL.inc diff --git a/technology/freepdk45/__init__.py b/technology/freepdk45/__init__.py index fc7ce813..9dd34791 100644 --- a/technology/freepdk45/__init__.py +++ b/technology/freepdk45/__init__.py @@ -18,16 +18,16 @@ from openram import debug TECHNOLOGY = "freepdk45" ########################## -# FreePDK45 paths - -PDK_PATH=os.environ.get("FREEPDK45") -if PDK_PATH==None: - debug.error("Must define FREEPDK45 to point to PDK.", -1) -PDK_DIR=os.path.abspath(os.path.expanduser(PDK_PATH)) -os.environ["PDK_DIR"] = PDK_DIR -os.environ["SYSTEM_CDS_LIB_DIR"] = "{0}/ncsu_basekit/cdssetup".format(PDK_DIR) -os.environ["CDS_SITE"] = PDK_DIR -os.environ["MGC_TMPDIR"] = "/tmp" +# Cadence FreePDK45 paths +#PDK_PATH=os.environ.get("FREEPDK45") +#if PDK_PATH==None: +# debug.error("Must define FREEPDK45 to point to PDK.", -1) +#PDK_DIR=os.path.abspath(os.path.expanduser(PDK_PATH)) +#os.environ["PDK_DIR"] = PDK_DIR +#os.environ["SYSTEM_CDS_LIB_DIR"] = "{0}/ncsu_basekit/cdssetup".format(PDK_DIR) +#os.environ["CDS_SITE"] = PDK_DIR +#os.environ["MGC_TMPDIR"] = "/tmp" +#os.environ["SYSTEM_CDS_LIB_DIR"] = "{0}/ncsu_basekit/cdssetup".format(PDK_DIR) ########################### #OpenRAM Paths @@ -35,11 +35,15 @@ os.environ["MGC_TMPDIR"] = "/tmp" try: DRCLVS_HOME = os.path.abspath(os.environ.get("DRCLVS_HOME")) except: - DRCLVS_HOME= PDK_DIR+"/ncsu_basekit/techfile/calibre" + tech_paths = os.environ.get("OPENRAM_TECH").split(':') + for d in tech_paths: + if os.path.isdir(d+"/freepdk45"): + DRCLVS_HOME= d+"/freepdk45/tech" + break + +# If you are using Cadence, you should set the DRCLVS_HOME environment variable +# to the FreePDK45 PDK location: +# DRCLVS_HOME= PDK_DIR+"/ncsu_basekit/techfile/calibre" os.environ["DRCLVS_HOME"] = DRCLVS_HOME -# try: -# SPICE_MODEL_DIR = os.path.abspath(os.environ.get("SPICE_MODEL_DIR")) -# except: -# Always use the one in the PDK dir for FreePDK45 -os.environ["SPICE_MODEL_DIR"] = PDK_DIR+"/ncsu_basekit/models/hspice/tran_models" +os.environ["SPICE_MODEL_DIR"] = "{0}/models/hspice/tran_models".format(os.path.dirname(__file__)) diff --git a/technology/freepdk45/models/APACHE-LICENSE-2.0.txt b/technology/freepdk45/models/APACHE-LICENSE-2.0.txt new file mode 100644 index 00000000..2bb9ad24 --- /dev/null +++ b/technology/freepdk45/models/APACHE-LICENSE-2.0.txt @@ -0,0 +1,176 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/technology/freepdk45/models/hspice_ff.include b/technology/freepdk45/models/hspice_ff.include new file mode 100644 index 00000000..c8747ae1 --- /dev/null +++ b/technology/freepdk45/models/hspice_ff.include @@ -0,0 +1,12 @@ + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/NMOS_VTG.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/PMOS_VTG.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/NMOS_VTL.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/PMOS_VTL.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/NMOS_VTH.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/PMOS_VTH.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/NMOS_THKOX.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ff/PMOS_THKOX.inc diff --git a/technology/freepdk45/models/hspice_nom.include b/technology/freepdk45/models/hspice_nom.include new file mode 100644 index 00000000..46a87d36 --- /dev/null +++ b/technology/freepdk45/models/hspice_nom.include @@ -0,0 +1,12 @@ + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/NMOS_VTG.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/PMOS_VTG.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/NMOS_VTL.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/PMOS_VTL.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/NMOS_VTH.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/PMOS_VTH.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/NMOS_THKOX.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_nom/PMOS_THKOX.inc diff --git a/technology/freepdk45/models/hspice_ss.include b/technology/freepdk45/models/hspice_ss.include new file mode 100644 index 00000000..b0eca04d --- /dev/null +++ b/technology/freepdk45/models/hspice_ss.include @@ -0,0 +1,12 @@ + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/NMOS_VTG.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/PMOS_VTG.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/NMOS_VTL.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/PMOS_VTL.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/NMOS_VTH.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/PMOS_VTH.inc + +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/NMOS_THKOX.inc +.inc '$PDK_DIR/ncsu_basekit/models/hspice/tran_models/models_ss/PMOS_THKOX.inc diff --git a/technology/freepdk45/models/tran_models/models_ff/NMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_ff/NMOS_THKOX.inc new file mode 100644 index 00000000..88b7a076 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/NMOS_THKOX.inc @@ -0,0 +1,79 @@ +* Customized PTM 45 NMOS: ff + +.model NMOS_THKOX nmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.65e-09 toxp = 6e-09 toxm = 6.65e-09 toxref = 6.65e-09 ++dtox = 6.5e-10 lint = 4.625e-09 ++vth0 = 1.474 k1 = 1.569 u0 = 0.05404 vsat = 147390 ++rdsw = 155 ndep = 2.08e+18 xj = 1.26e-08 + +* secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = 0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1.0e-009 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1.0 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.04 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.012 bigc = 0.0028 ++cigc = 0.002 aigsd = 0.012 bigsd = 0.0028 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 diff --git a/technology/freepdk45/models/tran_models/models_ff/NMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTG.inc new file mode 100644 index 00000000..bdb3e165 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTG.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS ff + +.model NMOS_VTG nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.1e-09 toxp = 1e-09 toxm = 1.1e-09 toxref = 1.1e-09 ++dtox = 0.1e-09 lint = 4.275e-09 ++vth0 = 0.3856 k1 = 0.4 u0 = 0.046 vsat = 123000 ++rdsw = 155 ndep = 3.4e+18 xj = 1.9e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ff/NMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTH.inc new file mode 100644 index 00000000..03c9f688 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTH.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS NMOS_VTH ff + +.model NMOS_VTH nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.008 nfactor = 1.6 wint = 5e-09 ++cgso = 1.1e-010 cgdo = 1.1e-10 + +* parameters customized by the user ++toxe = 1.58e-09 toxp = 1.0e-09 toxm = 1.58e-09 toxref = 1.58e-09 ++dtox = 5.8e-10 lint = 4.275e-09 ++vth0 = 0.5828 k1 = 0.4 u0 = 0.05 vsat = 170000 ++rdsw = 155 ndep = 3.24e+018 xj = 1.9e-08 + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+020 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 u0 = 0.049 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.015211 bigc = 0.0027432 ++cigc = 0.002 aigsd = 0.015211 bigsd = 0.0027432 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + diff --git a/technology/freepdk45/models/tran_models/models_ff/NMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTL.inc new file mode 100644 index 00000000..3820382d --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/NMOS_VTL.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS ff + +.model NMOS_VTL nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.1e-09 toxp = 1e-09 toxm = 1.1e-09 toxref = 1.1e-09 ++dtox = 0.1e-09 lint = 4.275e-09 ++vth0 = 0.297 k1 = 0.4 u0 = 0.046 vsat = 148000 ++rdsw = 155 ndep = 3.4e+18 xj = 1.9e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ff/PMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_ff/PMOS_THKOX.inc new file mode 100644 index 00000000..5e8277b5 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/PMOS_THKOX.inc @@ -0,0 +1,82 @@ +* Customized PTM 45 PMOS: ff + +.model PMOS_THKOX pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.75e-09 toxp = 6e-09 toxm = 6.75e-09 toxref = 6.75e-09 ++dtox = 7.5e-10 lint = 4.625e-09 ++vth0 = -1.414 k1 = 1.515 u0 = 0.00589 vsat = 70000 ++rdsw = 155 ndep = 1.88e+18 xj = 1.26e-08 + +*secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-009 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 etab = 0 ++vfb = 0.55 ua = 2.0e-009 ub = 0.5e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = -1e-020 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 3.22e-008 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.69 bigc = 0.0012 ++cigc = 0.0008 aigsd = 0.0087 bigsd = 0.0012 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + + diff --git a/technology/freepdk45/models/tran_models/models_ff/PMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTG.inc new file mode 100644 index 00000000..3ec27aca --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTG.inc @@ -0,0 +1,74 @@ +* Customized PTM 45 PMOS PMOS_VTG ff + +.model PMOS_VTG pmos level = 54 + +* parameter customized by user ++vth0 = -0.3592 toxref = 1.22e-009 vsat = 62000 ++toxe = 1.22e-009 toxp = 1.0e-009 toxm = 1.22e-009 ++dtox = 2.2e-010 epsrox = 3.9 wint = 5e-009 lint = 4.275e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.3e-009 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ff/PMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTH.inc new file mode 100644 index 00000000..8db0fdab --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTH.inc @@ -0,0 +1,68 @@ +* Customized PTM 45 PMOS PMOS_VTH ff + +.model PMOS_VTH pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 toxe = 1.55e-009 toxp = 1e-009 toxm = 1.55e-009 ++dtox = 5.5e-010 epsrox = 3.9 wint = 5e-009 lint = 4.275e-009 ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.55e-009 + ++vth0 = -0.4794 k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.4e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 1.8 eta0 = 0.0125 etab = 0 ++vfb = 0.55 u0 = 0.021 ua = 2e-009 ub = 5e-019 ++uc = 0 vsat = 80000 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 250 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.0097 bigc = 0.00125 ++cigc = 0.0008 aigsd = 0.0097 bigsd = 0.00125 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ff/PMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTL.inc new file mode 100644 index 00000000..7476dc81 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ff/PMOS_VTL.inc @@ -0,0 +1,76 @@ +* Customized PTM 45 PMOS ff + +.model PMOS_VTL pmos level = 54 + +* parameter customized by user ++vth0 = -0.2771 toxref = 1.22e-009 vsat = 69000 ++toxe = 1.22e-009 toxp = 1.0e-009 toxm = 1.22e-009 ++dtox = 2.2e-010 epsrox = 3.9 wint = 5e-009 lint = 4.275e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.3e-009 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + diff --git a/technology/freepdk45/models/tran_models/models_nom/NMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_nom/NMOS_THKOX.inc new file mode 100644 index 00000000..150fd391 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/NMOS_THKOX.inc @@ -0,0 +1,79 @@ +* Customized PTM 45 NMOS NMOS_THKOX + +.model NMOS_THKOX nmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.65e-09 toxp = 6e-09 toxm = 6.65e-09 toxref = 6.65e-09 ++dtox = 6.5e-10 lint = 3.75e-09 ++vth0 = 1.507 k1 = 1.6 u0 = 0.05323 vsat = 147390 ++rdsw = 155 ndep = 2.08e+18 xj = 1.4e-08 + +* secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = 0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1.0e-009 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1.0 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.04 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.012 bigc = 0.0028 ++cigc = 0.002 aigsd = 0.012 bigsd = 0.0028 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 diff --git a/technology/freepdk45/models/tran_models/models_nom/NMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTG.inc new file mode 100644 index 00000000..72a1e072 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTG.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS nom + +.model NMOS_VTG nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.14e-09 toxp = 1e-09 toxm = 1.14e-09 toxref = 1.14e-09 ++dtox = 0.14e-09 lint = 3.75e-09 ++vth0 = 0.4106 k1 = 0.4 u0 = 0.045 vsat = 123000 ++rdsw = 155 ndep = 3.4e+18 xj = 1.98e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_nom/NMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTH.inc new file mode 100644 index 00000000..bfc696bd --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTH.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS NMOS_VTH + +.model NMOS_VTH nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.008 nfactor = 1.6 wint = 5e-09 ++cgso = 1.1e-010 cgdo = 1.1e-10 + +* parameters customized by the user ++toxe = 1.63e-09 toxp = 1.0e-09 toxm = 1.63e-09 toxref = 1.63e-09 ++dtox = 6.3e-10 lint = 3.75e-09 ++vth0 = 0.6078 k1 = 0.4 u0 = 0.05 vsat = 170000 ++rdsw = 155 ndep = 3.24e+018 xj = 1.98e-08 + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+020 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 u0 = 0.049 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.015211 bigc = 0.0027432 ++cigc = 0.002 aigsd = 0.015211 bigsd = 0.0027432 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + diff --git a/technology/freepdk45/models/tran_models/models_nom/NMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTL.inc new file mode 100644 index 00000000..1a62a634 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/NMOS_VTL.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS nom + +.model NMOS_VTL nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.14e-09 toxp = 1e-09 toxm = 1.14e-09 toxref = 1.14e-09 ++dtox = 0.14e-09 lint = 3.75e-09 ++vth0 = 0.322 k1 = 0.4 u0 = 0.045 vsat = 148000 ++rdsw = 155 ndep = 3.4e+18 xj = 1.98e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_nom/PMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_nom/PMOS_THKOX.inc new file mode 100644 index 00000000..e48f97eb --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/PMOS_THKOX.inc @@ -0,0 +1,82 @@ +* Customized PTM 45 PMOS PMOS_THKOX + +.model PMOS_THKOX pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.75e-09 toxp = 6e-09 toxm = 6.75e-09 toxref = 6.75e-09 ++dtox = 7.5e-10 lint = 3.75e-09 ++vth0 = -1.445 k1 = 1.544 u0 = 0.00571 vsat = 70000 ++rdsw = 155 ndep = 1.88e+18 xj = 1.4e-08 + +*secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-009 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 etab = 0 ++vfb = 0.55 ua = 2.0e-009 ub = 0.5e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = -1e-020 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 3.22e-008 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.69 bigc = 0.0012 ++cigc = 0.0008 aigsd = 0.0087 bigsd = 0.0012 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + + diff --git a/technology/freepdk45/models/tran_models/models_nom/PMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTG.inc new file mode 100644 index 00000000..420ccf15 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTG.inc @@ -0,0 +1,74 @@ +* Customized PTM 45 PMOS PMOS_VTG + +.model PMOS_VTG pmos level = 54 + +* parameter customized by user ++vth0 = -0.3842 toxref = 1.26e-009 vsat = 62000 ++toxe = 1.26e-009 toxp = 1.0e-009 toxm = 1.26e-009 ++dtox = 2.6e-010 epsrox = 3.9 wint = 5e-009 lint = 3.75e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 +* toxref = 1.3e-009 ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 diff --git a/technology/freepdk45/models/tran_models/models_nom/PMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTH.inc new file mode 100644 index 00000000..afc4de87 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTH.inc @@ -0,0 +1,68 @@ +* Customized PTM 45 PMOS PMOS_VTH + +.model PMOS_VTH pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 toxe = 1.6e-009 toxp = 1e-009 toxm = 1.6e-009 ++dtox = 6e-010 epsrox = 3.9 wint = 5e-009 lint = 3.75e-009 ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.6e-009 + ++vth0 = -0.5044 k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.4e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 1.8 eta0 = 0.0125 etab = 0 ++vfb = 0.55 u0 = 0.021 ua = 2e-009 ub = 5e-019 ++uc = 0 vsat = 80000 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 250 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.0097 bigc = 0.00125 ++cigc = 0.0008 aigsd = 0.0097 bigsd = 0.00125 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_nom/PMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTL.inc new file mode 100644 index 00000000..4e114596 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_nom/PMOS_VTL.inc @@ -0,0 +1,76 @@ +* Customized PTM 45 PMOS + +.model PMOS_VTL pmos level = 54 + +* parameter customized by user ++vth0 = -0.3021 toxref = 1.26e-009 vsat = 69000 ++toxe = 1.26e-009 toxp = 1.0e-009 toxm = 1.26e-009 ++dtox = 2.6e-010 epsrox = 3.9 wint = 5e-009 lint = 3.75e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.3e-009 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + diff --git a/technology/freepdk45/models/tran_models/models_ss/NMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_ss/NMOS_THKOX.inc new file mode 100644 index 00000000..f642d085 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/NMOS_THKOX.inc @@ -0,0 +1,79 @@ +* Customized PTM 45 NMOS: ss + +.model NMOS_THKOX nmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.65e-09 toxp = 6e-09 toxm = 6.65e-09 toxref = 6.65e-09 ++dtox = 6.5e-10 lint = 2.875e-09 ++vth0 = 1.536 k1 = 1.626 u0 = 0.05255 vsat = 147390 ++rdsw = 155 ndep = 2.15e+18 xj = 1.54e-08 + +* secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = 0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1.0e-009 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1.0 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.04 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.012 bigc = 0.0028 ++cigc = 0.002 aigsd = 0.012 bigsd = 0.0028 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 diff --git a/technology/freepdk45/models/tran_models/models_ss/NMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTG.inc new file mode 100644 index 00000000..73b0e36b --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTG.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS ss + +.model NMOS_VTG nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.17e-09 toxp = 1e-09 toxm = 1.17e-09 toxref = 1.17e-09 ++dtox = 0.17e-09 lint = 3.225e-09 ++vth0 = 0.4356 k1 = 0.4 u0 = 0.044 vsat = 123000 ++rdsw = 155 ndep = 3.6e+18 xj = 2.05e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ss/NMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTH.inc new file mode 100644 index 00000000..88fe376d --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTH.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS NMOS_VTH ss + +.model NMOS_VTH nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.008 nfactor = 1.6 wint = 5e-09 ++cgso = 1.1e-010 cgdo = 1.1e-10 + +* parameters customized by the user ++toxe = 1.68e-09 toxp = 1.0e-09 toxm = 1.68e-09 toxref = 1.68e-09 ++dtox = 6.8e-10 lint = 3.225e-09 ++vth0 = 0.6328 k1 = 0.4 u0 = 0.05 vsat = 170000 ++rdsw = 155 ndep = 3.4e+018 xj = 2.05e-08 + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+020 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 u0 = 0.049 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.015211 bigc = 0.0027432 ++cigc = 0.002 aigsd = 0.015211 bigsd = 0.0027432 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + diff --git a/technology/freepdk45/models/tran_models/models_ss/NMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTL.inc new file mode 100644 index 00000000..1c37414a --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/NMOS_VTL.inc @@ -0,0 +1,80 @@ +* Customized PTM 45 NMOS ss + +.model NMOS_VTL nmos level = 54 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.006 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 1.17e-09 toxp = 1e-09 toxm = 1.17e-09 toxref = 1.17e-09 ++dtox = 0.17e-09 lint = 3.225e-09 ++vth0 = 0.347 k1 = 0.4 u0 = 0.044 vsat = 148000 ++rdsw = 155 ndep = 3.6e+18 xj = 2.05e-08 + + + + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 + ++k2 = 0 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = 0 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-010 ++dvtp1 = 0.1 lpe0 = 0 lpeb = 0 ++ngate = 3e+20 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.13 etab = 0 ++vfb = -0.55 ua = 6e-010 ub = 1.2e-018 ++uc = 0 a0 = 1 ags = 0 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = 0.04 dwg = 0 dwb = 0 pclm = 0.02 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = -0.005 drout = 0.5 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 1e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rsw = 80 rdw = 80 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.02 bigc = 0.0027 ++cigc = 0.002 aigsd = 0.02 bigsd = 0.0027 cigsd = 0.002 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ss/PMOS_THKOX.inc b/technology/freepdk45/models/tran_models/models_ss/PMOS_THKOX.inc new file mode 100644 index 00000000..447e66a7 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/PMOS_THKOX.inc @@ -0,0 +1,82 @@ +* Customized PTM 45 PMOS: ss + +.model PMOS_THKOX pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + +* parameters related to the technology node ++tnom = 27 epsrox = 3.9 ++eta0 = 0.0049 nfactor = 2.1 wint = 5e-09 ++cgso = 1.1e-10 cgdo = 1.1e-10 xl = -2e-08 + +* parameters customized by the user ++toxe = 6.75e-09 toxp = 6e-09 toxm = 6.75e-09 toxref = 6.75e-09 ++dtox = 7.5e-10 lint = 2.875e-09 ++vth0 = -1.471 k1 = 1.568 u0 = 0.00555 vsat = 70000 ++rdsw = 155 ndep = 1.94e+18 xj = 1.54e-08 + +*secondary parameters ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 ++k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-009 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 ++ngate = 2e+020 nsd = 2e+020 phin = 0 ++cdsc = 0.000 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 etab = 0 ++vfb = 0.55 ua = 2.0e-009 ub = 0.5e-018 ++uc = 0 a0 = 1.0 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = -1e-020 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2.3e+006 ++rsh = 5 rsw = 85 rdw = 85 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 3.22e-008 ++prwb = 6.8e-011 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 + ++aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.69 bigc = 0.0012 ++cigc = 0.0008 aigsd = 0.0087 bigsd = 0.0012 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 + ++xrcrg1 = 12 xrcrg2 = 5 ++cgbo = 2.56e-011 cgdl = 2.653e-10 ++cgsl = 2.653e-10 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0e-006 dmci = 0e-006 dmdg = 0e-006 dmcgt = 0e-007 ++dwj = 0.0e-008 xgw = 0e-007 xgl = 0e-008 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + + diff --git a/technology/freepdk45/models/tran_models/models_ss/PMOS_VTG.inc b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTG.inc new file mode 100644 index 00000000..43fa96c7 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTG.inc @@ -0,0 +1,74 @@ +* Customized PTM 45 PMOS PMOS_VTG ss + +.model PMOS_VTG pmos level = 54 + +* parameter customized by user ++vth0 = -0.4092 toxref = 1.3e-009 vsat = 62000 ++toxe = 1.3e-009 toxp = 1.0e-009 toxm = 1.3e-009 ++dtox = 3e-010 epsrox = 3.9 wint = 5e-009 lint = 3.225e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.3e-009 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ss/PMOS_VTH.inc b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTH.inc new file mode 100644 index 00000000..52b39a55 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTH.inc @@ -0,0 +1,68 @@ +* Customized PTM 45 PMOS PMOS_VTH + +.model PMOS_VTH pmos level = 54 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 toxe = 1.65e-009 toxp = 1e-009 toxm = 1.65e-009 ++dtox = 6.5e-010 epsrox = 3.9 wint = 5e-009 lint = 3.225e-009 ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.65e-009 + ++vth0 = -0.5294 k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.4e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 1.8 eta0 = 0.0125 etab = 0 ++vfb = 0.55 u0 = 0.021 ua = 2e-009 ub = 5e-019 ++uc = 0 vsat = 80000 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 250 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.0097 bigc = 0.00125 ++cigc = 0.0008 aigsd = 0.0097 bigsd = 0.00125 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 \ No newline at end of file diff --git a/technology/freepdk45/models/tran_models/models_ss/PMOS_VTL.inc b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTL.inc new file mode 100644 index 00000000..c195f1f0 --- /dev/null +++ b/technology/freepdk45/models/tran_models/models_ss/PMOS_VTL.inc @@ -0,0 +1,76 @@ +* Customized PTM 45 PMOS ss + +.model PMOS_VTL pmos level = 54 + +* parameter customized by user ++vth0 = -0.3271 toxref = 1.3e-009 vsat = 69000 ++toxe = 1.3e-009 toxp = 1.0e-009 toxm = 1.3e-009 ++dtox = 3e-010 epsrox = 3.9 wint = 5e-009 lint = 3.225e-009 + ++version = 4.8 binunit = 1 paramchk= 1 mobmod = 0 ++capmod = 2 igcmod = 1 igbmod = 1 geomod = 1 ++diomod = 1 rdsmod = 0 rbodymod= 1 rgatemod= 1 ++permod = 1 acnqsmod= 0 trnqsmod= 0 + ++tnom = 27 + ++ll = 0 wl = 0 lln = 1 wln = 1 ++lw = 0 ww = 0 lwn = 1 wwn = 1 ++lwl = 0 wwl = 0 xpart = 0 toxref = 1.3e-009 ++xl = -20e-9 + ++k1 = 0.4 k2 = -0.01 k3 = 0 ++k3b = 0 w0 = 2.5e-006 dvt0 = 1 dvt1 = 2 ++dvt2 = -0.032 dvt0w = 0 dvt1w = 0 dvt2w = 0 ++dsub = 0.1 minv = 0.05 voffl = 0 dvtp0 = 1e-011 ++dvtp1 = 0.05 lpe0 = 0 lpeb = 0 xj = 1.98e-008 ++ngate = 2e+020 ndep = 2.44e+018 nsd = 2e+020 phin = 0 ++cdsc = 0 cdscb = 0 cdscd = 0 cit = 0 ++voff = -0.126 nfactor = 2.22 eta0 = 0.0055 etab = 0 ++vfb = 0.55 u0 = 0.02 ua = 2e-009 ub = 5e-019 ++uc = 0 a0 = 1 ags = 1e-020 ++a1 = 0 a2 = 1 b0 = 0 b1 = 0 ++keta = -0.047 dwg = 0 dwb = 0 pclm = 0.12 ++pdiblc1 = 0.001 pdiblc2 = 0.001 pdiblcb = 3.4e-008 drout = 0.56 ++pvag = 1e-020 delta = 0.01 pscbe1 = 8.14e+008 pscbe2 = 9.58e-007 ++fprout = 0.2 pdits = 0.08 pditsd = 0.23 pditsl = 2300000 ++rsh = 5 rdsw = 155 rsw = 75 rdw = 75 ++rdswmin = 0 rdwmin = 0 rswmin = 0 prwg = 0 ++prwb = 0 wr = 1 alpha0 = 0.074 alpha1 = 0.005 ++beta0 = 30 agidl = 0.0002 bgidl = 2.1e+009 cgidl = 0.0002 ++egidl = 0.8 aigbacc = 0.012 bigbacc = 0.0028 cigbacc = 0.002 ++nigbacc = 1 aigbinv = 0.014 bigbinv = 0.004 cigbinv = 0.004 ++eigbinv = 1.1 nigbinv = 3 aigc = 0.010687 bigc = 0.0012607 ++cigc = 0.0008 aigsd = 0.010687 bigsd = 0.0012607 cigsd = 0.0008 ++nigc = 1 poxedge = 1 pigcd = 1 ntox = 1 ++xrcrg1 = 12 xrcrg2 = 5 + ++cgso = 1.1e-010 cgdo = 1.1e-010 cgbo = 2.56e-011 cgdl = 2.653e-010 ++cgsl = 2.653e-010 ckappas = 0.03 ckappad = 0.03 acde = 1 ++moin = 15 noff = 0.9 voffcv = 0.02 + ++kt1 = -0.11 kt1l = 0 kt2 = 0.022 ute = -1.5 ++ua1 = 4.31e-009 ub1 = 7.61e-018 uc1 = -5.6e-011 prt = 0 ++at = 33000 + ++fnoimod = 1 tnoimod = 0 + ++jss = 0.0001 jsws = 1e-011 jswgs = 1e-010 njs = 1 ++ijthsfwd= 0.01 ijthsrev= 0.001 bvs = 10 xjbvs = 1 ++jsd = 0.0001 jswd = 1e-011 jswgd = 1e-010 njd = 1 ++ijthdfwd= 0.01 ijthdrev= 0.001 bvd = 10 xjbvd = 1 ++pbs = 1 cjs = 0.0005 mjs = 0.5 pbsws = 1 ++cjsws = 5e-010 mjsws = 0.33 pbswgs = 1 cjswgs = 3e-010 ++mjswgs = 0.33 pbd = 1 cjd = 0.0005 mjd = 0.5 ++pbswd = 1 cjswd = 5e-010 mjswd = 0.33 pbswgd = 1 ++cjswgd = 5e-010 mjswgd = 0.33 tpb = 0.005 tcj = 0.001 ++tpbsw = 0.005 tcjsw = 0.001 tpbswg = 0.005 tcjswg = 0.001 ++xtis = 3 xtid = 3 + ++dmcg = 0 dmci = 0 dmdg = 0 dmcgt = 0 ++dwj = 0 xgw = 0 xgl = 0 + ++rshg = 0.4 gbmin = 1e-010 rbpb = 5 rbpd = 15 ++rbps = 15 rbdb = 15 rbsb = 15 ngcon = 1 + + diff --git a/technology/scn4m_subm/__init__.py b/technology/scn4m_subm/__init__.py index e18ed3ed..2003b69a 100644 --- a/technology/scn4m_subm/__init__.py +++ b/technology/scn4m_subm/__init__.py @@ -16,23 +16,18 @@ import os TECHNOLOGY = "scn4m_subm" -########################## -# CDK paths - -# os.environ["CDK_DIR"] = CDK_DIR #PDK path -# os.environ["SYSTEM_CDS_LIB_DIR"] = "{0}/cdssetup".format(CDK_DIR) -# os.environ["CDS_SITE"] = CDK_DIR -os.environ["MGC_TMPDIR"] = "/tmp" - ########################### # OpenRAM Paths - try: DRCLVS_HOME = os.path.abspath(os.environ.get("DRCLVS_HOME")) except: - OPENRAM_TECH=os.path.abspath(os.environ.get("OPENRAM_TECH")) - DRCLVS_HOME=OPENRAM_TECH+"/scn4m_subm/tech" + tech_paths = os.environ.get("OPENRAM_TECH").split(':') + for d in tech_paths: + if os.path.isdir(d+"/freepdk45"): + DRCLVS_HOME= d+"/freepdk45/tech" + break + os.environ["DRCLVS_HOME"] = DRCLVS_HOME os.environ["SPICE_MODEL_DIR"] = "{0}/models".format(os.path.dirname(__file__)) From c07268d297a3cabcc8895438d369814d606193ec Mon Sep 17 00:00:00 2001 From: mrg Date: Fri, 17 Feb 2023 17:00:04 -0800 Subject: [PATCH 22/26] Disable power routing on some freepdk45 tests for issue 36 --- compiler/tests/20_sram_1bank_2mux_1rw_1r_spare_cols_test.py | 3 +++ compiler/tests/20_sram_1bank_2mux_1w_1r_spare_cols_test.py | 3 +++ compiler/tests/20_sram_1bank_2mux_global_test.py | 3 +++ compiler/tests/20_sram_1bank_2mux_wmask_spare_cols_test.py | 3 +++ compiler/tests/20_sram_1bank_2mux_wmask_test.py | 3 +++ compiler/tests/20_sram_1bank_4mux_1rw_1r_test.py | 3 +++ compiler/tests/20_sram_1bank_4mux_test.py | 3 +++ compiler/tests/20_sram_1bank_8mux_1rw_1r_test.py | 3 +++ 8 files changed, 24 insertions(+) diff --git a/compiler/tests/20_sram_1bank_2mux_1rw_1r_spare_cols_test.py b/compiler/tests/20_sram_1bank_2mux_1rw_1r_spare_cols_test.py index 71d4a3eb..704204dd 100755 --- a/compiler/tests/20_sram_1bank_2mux_1rw_1r_spare_cols_test.py +++ b/compiler/tests/20_sram_1bank_2mux_1rw_1r_spare_cols_test.py @@ -23,6 +23,9 @@ class sram_1bank_2mux_1rw_1r_spare_cols_test(openram_test): openram.init_openram(config_file, is_unit_test=True) from openram import sram_config + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + OPTS.num_rw_ports = 1 OPTS.num_r_ports = 1 OPTS.num_w_ports = 0 diff --git a/compiler/tests/20_sram_1bank_2mux_1w_1r_spare_cols_test.py b/compiler/tests/20_sram_1bank_2mux_1w_1r_spare_cols_test.py index ce3fef2a..ae5ee11b 100755 --- a/compiler/tests/20_sram_1bank_2mux_1w_1r_spare_cols_test.py +++ b/compiler/tests/20_sram_1bank_2mux_1w_1r_spare_cols_test.py @@ -23,6 +23,9 @@ class sram_1bank_2mux_1w_1r_spare_cols_test(openram_test): openram.init_openram(config_file, is_unit_test=True) from openram import sram_config + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + OPTS.num_rw_ports = 0 OPTS.num_w_ports = 1 OPTS.num_r_ports = 1 diff --git a/compiler/tests/20_sram_1bank_2mux_global_test.py b/compiler/tests/20_sram_1bank_2mux_global_test.py index 01d831ee..f8b73aca 100755 --- a/compiler/tests/20_sram_1bank_2mux_global_test.py +++ b/compiler/tests/20_sram_1bank_2mux_global_test.py @@ -31,6 +31,9 @@ class sram_1bank_2mux_global_test(openram_test): num_spare_rows = 0 num_spare_cols = 0 + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + c = sram_config(word_size=8, num_words=32, num_banks=1, diff --git a/compiler/tests/20_sram_1bank_2mux_wmask_spare_cols_test.py b/compiler/tests/20_sram_1bank_2mux_wmask_spare_cols_test.py index 0f8a1d7f..419390a5 100755 --- a/compiler/tests/20_sram_1bank_2mux_wmask_spare_cols_test.py +++ b/compiler/tests/20_sram_1bank_2mux_wmask_spare_cols_test.py @@ -30,6 +30,9 @@ class sram_1bank_2mux_wmask_spare_cols_test(openram_test): num_spare_rows = 0 num_spare_cols = 0 + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + c = sram_config(word_size=8, write_size=4, num_words=64, diff --git a/compiler/tests/20_sram_1bank_2mux_wmask_test.py b/compiler/tests/20_sram_1bank_2mux_wmask_test.py index cc3c2322..05d89040 100755 --- a/compiler/tests/20_sram_1bank_2mux_wmask_test.py +++ b/compiler/tests/20_sram_1bank_2mux_wmask_test.py @@ -30,6 +30,9 @@ class sram_1bank_2mux_wmask_test(openram_test): num_spare_rows = 0 num_spare_cols = 0 + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + c = sram_config(word_size=8, write_size=4, num_words=64, diff --git a/compiler/tests/20_sram_1bank_4mux_1rw_1r_test.py b/compiler/tests/20_sram_1bank_4mux_1rw_1r_test.py index ffe7a673..1ab0d745 100755 --- a/compiler/tests/20_sram_1bank_4mux_1rw_1r_test.py +++ b/compiler/tests/20_sram_1bank_4mux_1rw_1r_test.py @@ -23,6 +23,9 @@ class sram_1bank_4mux_1rw_1r_test(openram_test): openram.init_openram(config_file, is_unit_test=True) from openram import sram_config + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + OPTS.num_rw_ports = 1 OPTS.num_r_ports = 1 OPTS.num_w_ports = 0 diff --git a/compiler/tests/20_sram_1bank_4mux_test.py b/compiler/tests/20_sram_1bank_4mux_test.py index 3f1f0886..15f9f31d 100755 --- a/compiler/tests/20_sram_1bank_4mux_test.py +++ b/compiler/tests/20_sram_1bank_4mux_test.py @@ -30,6 +30,9 @@ class sram_1bank_4mux_test(openram_test): num_spare_rows = 0 num_spare_cols = 0 + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + c = sram_config(word_size=4, num_words=64, num_banks=1, diff --git a/compiler/tests/20_sram_1bank_8mux_1rw_1r_test.py b/compiler/tests/20_sram_1bank_8mux_1rw_1r_test.py index c95fec84..7ce6ca8d 100755 --- a/compiler/tests/20_sram_1bank_8mux_1rw_1r_test.py +++ b/compiler/tests/20_sram_1bank_8mux_1rw_1r_test.py @@ -23,6 +23,9 @@ class sram_1bank_8mux_1rw_1r_test(openram_test): openram.init_openram(config_file, is_unit_test=True) from openram import sram_config + if OPTS.tech_name == "freepdk45": + OPTS.route_supplies = False + OPTS.num_rw_ports = 1 OPTS.num_r_ports = 1 OPTS.num_w_ports = 0 From 5a26be52bd279c75e06f619ed354d880c93e91cc Mon Sep 17 00:00:00 2001 From: mrg Date: Fri, 17 Feb 2023 17:32:30 -0800 Subject: [PATCH 23/26] Fix path to tech and spice models. --- technology/freepdk45/__init__.py | 8 ++------ technology/scn4m_subm/__init__.py | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/technology/freepdk45/__init__.py b/technology/freepdk45/__init__.py index 9dd34791..998365df 100644 --- a/technology/freepdk45/__init__.py +++ b/technology/freepdk45/__init__.py @@ -35,15 +35,11 @@ TECHNOLOGY = "freepdk45" try: DRCLVS_HOME = os.path.abspath(os.environ.get("DRCLVS_HOME")) except: - tech_paths = os.environ.get("OPENRAM_TECH").split(':') - for d in tech_paths: - if os.path.isdir(d+"/freepdk45"): - DRCLVS_HOME= d+"/freepdk45/tech" - break + DRCLVS_HOME = "{0}/tech".format(os.path.dirname(__file__)) # If you are using Cadence, you should set the DRCLVS_HOME environment variable # to the FreePDK45 PDK location: # DRCLVS_HOME= PDK_DIR+"/ncsu_basekit/techfile/calibre" os.environ["DRCLVS_HOME"] = DRCLVS_HOME -os.environ["SPICE_MODEL_DIR"] = "{0}/models/hspice/tran_models".format(os.path.dirname(__file__)) +os.environ["SPICE_MODEL_DIR"] = "{0}/models/tran_models".format(os.path.dirname(__file__)) diff --git a/technology/scn4m_subm/__init__.py b/technology/scn4m_subm/__init__.py index 2003b69a..8fbc2176 100644 --- a/technology/scn4m_subm/__init__.py +++ b/technology/scn4m_subm/__init__.py @@ -22,11 +22,7 @@ TECHNOLOGY = "scn4m_subm" try: DRCLVS_HOME = os.path.abspath(os.environ.get("DRCLVS_HOME")) except: - tech_paths = os.environ.get("OPENRAM_TECH").split(':') - for d in tech_paths: - if os.path.isdir(d+"/freepdk45"): - DRCLVS_HOME= d+"/freepdk45/tech" - break + DRCLVS_HOME = "{0}/tech".format(os.path.dirname(__file__)) os.environ["DRCLVS_HOME"] = DRCLVS_HOME From ee1a29132f97e9111775c48a295aeb1ce70e6c49 Mon Sep 17 00:00:00 2001 From: Eren Dogan Date: Mon, 20 Feb 2023 19:42:18 -0800 Subject: [PATCH 24/26] Fix workflow skipping sync --- .github/workflows/README.md | 4 ++-- .github/workflows/sync.yml | 41 +-------------------------------- .github/workflows/sync_tag.yml | 42 ++++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/sync_tag.yml diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 44d75187..b0e9ddf7 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -86,8 +86,8 @@ publicdev[(OpenRAM/dev)]; publicstable[(OpenRAM/stable)]; regressprivate{{regress}}; regresspublic{{regress}}; -syncnover{{sync/no_version}}; -synctag{{sync/fix_tag}}; +syncnover{{sync}}; +synctag{{sync_tag}}; deploy{{deploy}}; versionprivate{{version}}; versionpublic{{version}}; diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml index a605e5f4..78f78484 100644 --- a/.github/workflows/sync.yml +++ b/.github/workflows/sync.yml @@ -1,8 +1,5 @@ name: sync on: - push: - branches: - - dev workflow_call: secrets: WORKFLOW_ACCESS_TOKEN: @@ -10,7 +7,7 @@ on: jobs: # This job synchronizes the 'dev' branch of OpenRAM repo with the current branch sync_dev_no_version: - if: ${{ github.event_name == 'workflow_call' && github.repository == 'VLSIDA/PrivateRAM' }} + if: ${{ github.repository == 'VLSIDA/PrivateRAM' }} runs-on: ubuntu-latest steps: - name: Checkout code @@ -28,39 +25,3 @@ jobs: git pull public-repo dev # Push the latest changes git push -u public-repo HEAD:dev - # This job makes sure that a version commit has a tag (manually bumped versions might have tags missing) - sync_dev_tag_check: - if: ${{ github.event_name == 'push' && github.repository == 'VLSIDA/PrivateRAM' && startsWith(github.event.head_commit.message, 'Bump version:') }} - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - fetch-depth: 0 - token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} - - name: Compare version and tag - run: | - # Configure pusher account - git config --global user.name "vlsida-bot" - git config --global user.email "mrg+vlsidabot@ucsc.edu" - # Add both repos - git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git - git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git - # Read the version file - echo "LATEST_VERSION=v$(cat VERSION)" >> $GITHUB_ENV - # Read the tag name of the last commit - echo "HEAD_TAG=$(git describe --tags HEAD)" >> $GITHUB_ENV - - name: Make a new tag and push - if: ${{ env.LATEST_VERSION != env.HEAD_TAG }} - run: | - # Tag the commit - git tag ${{ env.LATEST_VERSION }} HEAD - # Push to private/dev - git pull private-repo dev - git push private-repo HEAD:dev ${{ env.LATEST_VERSION }} - # Push to public-repo/dev - git pull public-repo dev - git push public-repo HEAD:dev ${{ env.LATEST_VERSION }} - # Push to public/stable - git pull public-repo stable - git push public-repo HEAD:stable ${{ env.LATEST_VERSION }} diff --git a/.github/workflows/sync_tag.yml b/.github/workflows/sync_tag.yml new file mode 100644 index 00000000..92023417 --- /dev/null +++ b/.github/workflows/sync_tag.yml @@ -0,0 +1,42 @@ +name: sync_tag +on: + push: + branches: + - dev +jobs: + # This job makes sure that a version commit has a tag (manually bumped versions might have tags missing) + sync_dev_tag_check: + if: ${{ github.repository == 'VLSIDA/PrivateRAM' && startsWith(github.event.head_commit.message, 'Bump version:') }} + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + token: ${{ secrets.WORKFLOW_ACCESS_TOKEN }} + - name: Compare version and tag + run: | + # Configure pusher account + git config --global user.name "vlsida-bot" + git config --global user.email "mrg+vlsidabot@ucsc.edu" + # Add both repos + git remote add private-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/PrivateRAM.git + git remote add public-repo https://${{ secrets.WORKFLOW_ACCESS_TOKEN }}@github.com/VLSIDA/OpenRAM.git + # Read the version file + echo "LATEST_VERSION=v$(cat VERSION)" >> $GITHUB_ENV + # Read the tag name of the last commit + echo "HEAD_TAG=$(git describe --tags HEAD)" >> $GITHUB_ENV + - name: Make a new tag and push + if: ${{ env.LATEST_VERSION != env.HEAD_TAG }} + run: | + # Tag the commit + git tag ${{ env.LATEST_VERSION }} HEAD + # Push to private/dev + git pull private-repo dev + git push private-repo HEAD:dev ${{ env.LATEST_VERSION }} + # Push to public-repo/dev + git pull public-repo dev + git push public-repo HEAD:dev ${{ env.LATEST_VERSION }} + # Push to public/stable + git pull public-repo stable + git push public-repo HEAD:stable ${{ env.LATEST_VERSION }} From 3348fc0a16e5c07fbb9cebfb8bdf9782dcc73212 Mon Sep 17 00:00:00 2001 From: Samuel Crow <42583985+samuelkcrow@users.noreply.github.com> Date: Mon, 20 Feb 2023 22:54:04 -0800 Subject: [PATCH 25/26] Add note about installing conda environment --- docs/source/debug.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/debug.md b/docs/source/debug.md index 73cc31db..e8ae091c 100644 --- a/docs/source/debug.md +++ b/docs/source/debug.md @@ -50,7 +50,7 @@ use the following command to run all regression tests: cd OpenRAM/compiler/tests make -j 3 ``` -The -j can run with 3 threads. By default, this will run in all technologies. +The -j can run with 3 threads. By default, this will run in all technologies. Note that if you have not run openram, the conda environment will not be installed. You can install it by running OpenRAM/install_conda.sh (see [Basic Setup](basic_setup.md#anaconda) for more details). To run a specific test in all technologies: ``` From 58e42d3999bfd4fe3b1baab84d61da713d54acb8 Mon Sep 17 00:00:00 2001 From: Samuel Crow <42583985+samuelkcrow@users.noreply.github.com> Date: Mon, 20 Feb 2023 22:58:59 -0800 Subject: [PATCH 26/26] Add reference to install_conda.sh script --- docs/source/basic_setup.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/basic_setup.md b/docs/source/basic_setup.md index 092ef29a..83f2c544 100644 --- a/docs/source/basic_setup.md +++ b/docs/source/basic_setup.md @@ -52,6 +52,12 @@ worry about updating/installing these tools. OpenRAM installs Anaconda silently OpenRAM uses Anaconda by default, but you can turn this feature off by setting `use_conda = False` in your config file. Then, OpenRAM will use the tools you have installed on your system. +If you want to install Anaconda without running OpenRAM (for example to run unit tests, which do not install Anaconda), you can run: +``` +cd OpenRAM +./install_conda.sh +``` + ## Docker (deprecated, use Anaconda instead)