Skip to content

Commit 7d50b59

Browse files
committed
misc: maintain openlane
This PR migrates OpenLane away from Efabless infrastructure so old designs taped-out using OpenLane may be taped out again in the future. A message clarifying the maintenance status of OpenLane has been added. Ciel has been replaced with Volare. The CI has been updated appropriately, and the repository now uses the GitHub Container Repository.) All Python files have been re-linted using more modern tools. This commit has no effect on the logical operation of OpenLane.
1 parent fd8fa64 commit 7d50b59

36 files changed

+708
-771
lines changed

.flake8

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[flake8]
2-
ignore = E203,E266,E302,E501,W503
2+
ignore = E203,E266,E302,E501,W503,F824
33
exclude =
44
.git,
55
__pycache__,
@@ -8,4 +8,7 @@ exclude =
88
install/,
99
venv/,
1010
pdks/,
11-
dependencies/includedyaml
11+
dependencies/includedyaml
12+
per-file-ignores =
13+
dependencies/env_info.py:F401,
14+
dependencies/version.py:F401

.github/actions/docker_build/action.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ inputs:
1616
tool_repository:
1717
description: The Docker repository in which to store tools
1818
required: false
19-
default: "efabless/openlane-tools"
19+
default: "ghcr.io/the-openroad-project/openlane-tools"
2020
runs:
2121
using: "composite"
2222
steps:
23-
- uses: actions/checkout@v2
23+
- uses: actions/checkout@v4
2424
- uses: docker/setup-buildx-action@v2
2525
- uses: ./.github/actions/set_env_variables
2626

@@ -37,9 +37,6 @@ runs:
3737
username: ${{ inputs.dockerhub_user }}
3838
password: ${{ inputs.dockerhub_password }}
3939

40-
- name: Set up QEMU
41-
uses: docker/setup-qemu-action@v1
42-
4340
- name: Docker Build
4441
shell: bash
4542
run: |

.github/scripts/update_tools.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232

3333
tools = Tool.from_metadata_yaml(open(metadata_path).read())
3434

35+
3536
# Handle Multiline Strings Properly / https://stackoverflow.com/a/33300001
3637
def represent_str(dumper: yaml.Dumper, data: str):
3738
if "\n" in data:

.github/workflows/lint.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ on:
1010
jobs:
1111
lint_python:
1212
name: Lint Python Code
13-
runs-on: ubuntu-20.04
13+
runs-on: ubuntu-latest
1414
steps:
1515
- name: Check out Git repository
16-
uses: actions/checkout@v2
16+
uses: actions/checkout@v4
1717
- name: Install Linters
1818
run: python3 -m pip install -r ./requirements_lint.txt
1919
- name: Ensure Black Formatting

.github/workflows/openlane_ci.yml

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ on:
1414
jobs:
1515
pdk_build:
1616
name: Fetch or Build PDK
17-
runs-on: ubuntu-20.04
17+
runs-on: ubuntu-22.04
1818
strategy:
1919
matrix:
2020
pdk: [sky130A, gf180mcuC]
@@ -24,13 +24,6 @@ jobs:
2424
- name: Set up environment variables
2525
uses: ./.github/actions/set_env_variables
2626

27-
- name: Get Volare Build/Push Dependencies
28-
run: |
29-
# Magic Build Dependencies
30-
sudo apt-get install -y tcsh tcl-dev tk-dev libcairo2-dev m4
31-
# GHR (Pushing)
32-
go install github.com/tcnksm/ghr@latest
33-
3427
- name: Build (or Get) PDK
3528
run: |
3629
export PATH=$PATH:$(go env GOPATH)/bin
@@ -41,11 +34,11 @@ jobs:
4134
sudo mkdir -p ${{ env.PDK_ROOT }}
4235
sudo chown -R $USER:$USER ${{ env.PDK_ROOT }}
4336
44-
python3 -m pip install --upgrade --no-cache-dir volare
37+
python3 -m pip install --upgrade --no-cache-dir 'ciel>=2.0.1,<3'
4538
export OPDKS_VER="$(python3 ./dependencies/tool.py open_pdks -f commit)"
46-
volare enable\
39+
ciel enable\
4740
--pdk $PDK_FAMILY\
48-
--token ${{ secrets.MY_TOKEN }}\
41+
--token ${{ secrets.GITHUB_TOKEN }}\
4942
$OPDKS_VER
5043
5144
- name: Tarball PDK
@@ -59,7 +52,7 @@ jobs:
5952
path: /tmp/${{ matrix.pdk }}.tar
6053
prepare_test_matrices:
6154
name: Prepare Test Matrices
62-
runs-on: ubuntu-20.04
55+
runs-on: ubuntu-22.04
6356
outputs:
6457
design_matrix: ${{ steps.set-matrix.outputs.design_matrix }}
6558
issue_regression_matrix: ${{ steps.set-matrix.outputs.issue_regression_matrix }}
@@ -86,32 +79,32 @@ jobs:
8679
8780
docker_build_amd64:
8881
name: Docker Build (amd64)
89-
runs-on: ubuntu-20.04
82+
runs-on: ubuntu-22.04
83+
permissions:
84+
packages: write
9085
steps:
9186
- uses: actions/checkout@v4
9287
- name: Build
9388
uses: ./.github/actions/docker_build
9489
with:
9590
arch: amd64
96-
dockerhub_user: ${{ secrets.DOCKERHUB_USER }}
97-
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
9891
tool_repository: ${{ vars.TOOL_DOCKER_IMAGE }}
9992
docker_build_arm64v8:
10093
name: Docker Build (arm64v8)
101-
runs-on: ubuntu-20.04
94+
runs-on: ubuntu-22.04-arm
95+
permissions:
96+
packages: write
10297
steps:
10398
- uses: actions/checkout@v4
10499
- name: Build
105100
uses: ./.github/actions/docker_build
106101
with:
107102
arch: arm64v8
108-
dockerhub_user: ${{ secrets.DOCKERHUB_USER }}
109-
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
110103
tool_repository: ${{ vars.TOOL_DOCKER_IMAGE }}
111104
issue_regression_test:
112105
name: Regression Test (Test ${{ matrix.test }})
113106
needs: [docker_build_amd64, pdk_build, prepare_test_matrices]
114-
runs-on: ubuntu-20.04
107+
runs-on: ubuntu-22.04
115108
strategy:
116109
fail-fast: false
117110
matrix: ${{ fromJSON(needs.prepare_test_matrices.outputs.issue_regression_matrix) }}
@@ -159,7 +152,7 @@ jobs:
159152
test:
160153
name: Test Design ${{ matrix.design.name }} (${{ matrix.design.pdk }}/${{matrix.design.scl}})
161154
needs: [docker_build_amd64, pdk_build, prepare_test_matrices]
162-
runs-on: ubuntu-20.04
155+
runs-on: ubuntu-22.04
163156
strategy:
164157
fail-fast: false
165158
matrix: ${{ fromJSON(needs.prepare_test_matrices.outputs.design_matrix) }}
@@ -226,14 +219,16 @@ jobs:
226219
needs:
227220
[docker_build_amd64, docker_build_arm64v8, test, issue_regression_test]
228221
if: always()
229-
runs-on: ubuntu-20.04
222+
runs-on: ubuntu-22.04
223+
permissions:
224+
packages: write
230225
steps:
231226
- name: Check If Going To Push An Image To Docker
232227
# # Uncomment the next line if you want to only build & push a container if entire test set succeeds
233228
# if: needs.test.result == 'success'
234229
# Ruby snippet to print 0 if this is a PR or if there is no DOCKERHUB_USER secret set, otherwise, 1
235230
run: |
236-
export PUSHING=$(ruby -e 'if ("${{ github.event_name }}" != "pull_request" && "${{ secrets.DOCKERHUB_USER }}" != ""); print(1) else print(0) end')
231+
export PUSHING=$(ruby -e 'if ("${{ github.event_name }}" != "pull_request"); print(1) else print(0) end')
237232
echo "PUSHING=$PUSHING" >> $GITHUB_ENV
238233
239234
- uses: actions/checkout@v4
@@ -290,14 +285,7 @@ jobs:
290285
uses: tvdias/[email protected]
291286
with:
292287
tag: "${{ env.NEW_TAG }}"
293-
repo-token: "${{ secrets.MY_TOKEN }}"
294-
295-
- name: Login to DockerHub
296-
if: ${{ env.PUSHING == '1' }}
297-
uses: docker/login-action@v1
298-
with:
299-
username: ${{ secrets.DOCKERHUB_USER }}
300-
password: ${{ secrets.DOCKERHUB_PASSWORD }}
288+
repo-token: "${{ secrets.BOT_TOKEN }}"
301289

302290
- name: Start Tag List
303291
if: ${{ env.PUSHING == '1' }}

.github/workflows/tool_updater.yml

Lines changed: 0 additions & 82 deletions
This file was deleted.

.github/workflows/variables_documentation_check.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ on:
1010
jobs:
1111
check_variables:
1212
name: Check Variables
13-
runs-on: ubuntu-20.04
13+
runs-on: ubuntu-22.04
1414
steps:
1515
- name: Check out Git repository
16-
uses: actions/checkout@v2
16+
uses: actions/checkout@v4
1717
- name: Install Ripgrep
1818
run: sudo apt install -y ripgrep
1919
- name: Check for missing documentation

Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ PRINT_REM_DESIGNS_TIME ?= 0
5757
SKYWATER_COMMIT ?= $(shell $(PYTHON_BIN) ./dependencies/tool.py sky130 -f commit)
5858
OPEN_PDKS_COMMIT ?= $(shell $(PYTHON_BIN) ./dependencies/tool.py open_pdks -f commit)
5959

60-
export PDK_ROOT ?= $(HOME)/.volare
60+
export PDK_ROOT ?= $(HOME)/.ciel
6161
export PDK_ROOT := $(shell $(PYTHON_BIN) -c "import os; print(os.path.realpath('$(PDK_ROOT)'), end='')")
6262
PDK_OPTS = -v $(PDK_ROOT):$(PDK_ROOT) -e PDK_ROOT=$(PDK_ROOT)
6363

@@ -124,8 +124,8 @@ mount:
124124

125125
.PHONY: pdk
126126
pdk: venv/created
127-
PYTHONPATH= ./venv/bin/$(PYTHON_BIN) -m pip install --upgrade --no-cache-dir volare
128-
./venv/bin/volare enable --pdk $(PDK_FAMILY)
127+
PYTHONPATH= ./venv/bin/$(PYTHON_BIN) -m pip install --upgrade --no-cache-dir ciel
128+
./venv/bin/ciel enable --pdk $(PDK_FAMILY)
129129

130130
.PHONY: survey
131131
survey:

README.md

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
1+
<h3 align="center"> OpenLane is currently in maintenance mode.</h3>
2+
3+
The versions of OpenLane currently being offered and supported are currently
4+
versions 1.0.X, as they were used for countless tape outs for the Google MPW and
5+
Efabless chipIgnite shuttles. Only critical bugfixes will be merged at this
6+
point. The intent is that tape-outs on older shuttles may be reproduced.
7+
8+
<p align="center">
9+
<a href="https://github.com/librelane/librelane"><img src="./docs/_static/librelane_banner.svg" width="50%" alt="LibreLane: Meet the successor to OpenLane — community-driven and rewritten from scratch with a modular architecture. Configure your designs using one file just like OpenLane, or use Python to implement advanced flows."></a>
10+
</p>
11+
12+
---
13+
114
<h1 align="center">OpenLane</h1>
215
<p align="center">
3-
<a href="https://colab.research.google.com/github/chipsalliance/silicon-notebooks/blob/main/digital-inverter-openlane.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Colab"></a>
416
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0"/></a>
5-
<img src="https://github.com/efabless/volare/actions/workflows/ci.yml/badge.svg?branch=main" alt="GitHub Actions Status Badge" />
17+
<img src="https://github.com/The-OpenROAD-Project/OpenLane/actions/workflows/openlane_ci.yml/badge.svg?branch=superstable" alt="GitHub Actions Status Badge" />
618
<a href="https://openlane.readthedocs.io/"><img src="https://readthedocs.org/projects/openlane/badge/?version=latest" alt="Documentation Build Status Badge"/></a>
7-
<a href="https://invite.skywater.tools"><img src="https://img.shields.io/badge/Community-Open%20Source%20Silicon%20Slack-ff69b4?logo=slack" alt="Invite to the Open Source Silicon Slack"/></a>
8-
<a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/python%20code%20style-black-000000.svg" alt="Python Code Style: black"/></a>
19+
<a href="https://matrix.to/#/#openlane:fossi-chat.org"><img src="https://img.shields.io/badge/Community-FOSSi%20Chat-1bb378?logo=element" alt="Invite to FOSSi Chat"/></a>
920
</p>
1021

1122
OpenLane is an automated RTL to GDSII flow based on several components including OpenROAD, Yosys, Magic, Netgen, CVC, SPEF-Extractor, KLayout and a number of custom scripts for design exploration and optimization. The flow performs all ASIC implementation steps from RTL all the way down to GDSII.
1223

1324
You can check out the documentation, including in-depth guides and reference manuals at [ReadTheDocs](https://openlane.readthedocs.io/).
1425

15-
## Quick-start Guide
16-
If you just want to try OpenLane out, try [this Colaboratory](https://colab.research.google.com/github/chipsalliance/silicon-notebooks/blob/main/digital-inverter-openlane.ipynb) by our friends at Google and ChipsAlliance. It's an online Python-based utility, and the best part is, *you don't need to install anything.*
17-
1826
## Installation, the short version
1927
The short version is, to install the OpenLane environment...
2028

@@ -43,7 +51,7 @@ make test
4351
If everything's gone smoothly, that's it. OpenLane is set up on your computer. To enter the OpenLane environment, `cd $HOME/OpenLane` and then `make mount`.
4452

4553
## Installation, the long version
46-
See the installation docs at https://openlane.readthedocs.io/en/latest/getting_started/installation/index.html.
54+
See the installation docs at https://openlane.readthedocs.io/en/superstable/getting_started/installation/index.html.
4755

4856
## Usage
4957
After entering the OpenLane environment, you can start hardening chips: the following command, for example, runs the included [spm design](./designs/spm).
@@ -52,9 +60,6 @@ After entering the OpenLane environment, you can start hardening chips: the foll
5260
./flow.tcl -design spm
5361
```
5462

55-
## Need more help?
56-
You can join the [Open Source Silicon Slack](https://invite.skywater.tools), where you can ask thousands of other open source hardware enthusiasts for help with setting up or running OpenLane.
57-
5863
## Publication
5964
If you use OpenLane in your research, please cite the following paper.
6065

@@ -73,10 +78,16 @@ If you use OpenLane in your research, please cite the following paper.
7378
```
7479

7580

76-
## License
77-
[The Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).
81+
## Legal Stuff
7882

79-
Docker images distributed by Efabless Corporation under the same license.
83+
OpenLane is ©2020-2024 Efabless Corporation and is available under
84+
[the Apache License, version 2.0](https://www.apache.org/licenses/LICENSE-2.0.txt).
8085

81-
Binaries in OpenLane distributions may fall under stricter open source licenses.
86+
Newer container images (downloaded from
87+
`ghcr.io/the-openroad-project/openlane`) are distributed by Somnium Consulting
88+
LLC under the same license.
8289

90+
Older container images (downloaded from `docker.io/efabless/openlane`) were
91+
distributed by Efabless Corporation under the same license.
92+
93+
Binaries in OpenLane distributions may fall under stricter open source licenses.

dependencies/image_name.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ __DIRNAME__ := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
44
ifeq ($(OPENLANE_IMAGE_NAME),)
55
OPENLANE_DOCKER_TAG ?= $(shell $(PYTHON_BIN) $(__DIRNAME__)/get_tag.py)
66
ifneq ($(OPENLANE_DOCKER_TAG),)
7-
export OPENLANE_IMAGE_NAME ?= efabless/openlane:$(OPENLANE_DOCKER_TAG)
7+
export OPENLANE_IMAGE_NAME ?= ghcr.io/the-openroad-project/openlane:$(OPENLANE_DOCKER_TAG)
88
endif
99
endif

0 commit comments

Comments
 (0)