Merge pull request #1514 from ucb-bar/klayout-docs
KLayout section of Sky130+OpenROAD tutorial
This commit is contained in:
10
.github/workflows/chipyard-full-flow.yml
vendored
10
.github/workflows/chipyard-full-flow.yml
vendored
@@ -143,6 +143,7 @@ jobs:
|
||||
echo "par.openroad.openroad_bin: $PWD/.conda-openroad/bin/openroad" >> tutorial.yml
|
||||
echo "par.openroad.klayout_bin: $PWD/.conda-klayout/bin/klayout" >> tutorial.yml
|
||||
echo "drc.magic.magic_bin: $PWD/.conda-signoff/bin/magic" >> tutorial.yml
|
||||
echo "drc.klayout.klayout_bin: $PWD/.conda-klayout/bin/klayout" >> tutorial.yml
|
||||
echo "lvs.netgen.netgen_bin: $PWD/.conda-signoff/bin/netgen" >> tutorial.yml
|
||||
echo "" >> tutorial.yml
|
||||
echo "# speed up tutorial runs & declutter log output" >> tutorial.yml
|
||||
@@ -157,12 +158,13 @@ jobs:
|
||||
export VLSI_TOP=RocketTile
|
||||
make buildfile
|
||||
make syn
|
||||
# NOTE: commenting out for now bc this times out - need to debug why
|
||||
# openroad freezes during some write commands after detailed route
|
||||
# so need to stop the flow & run last step separately
|
||||
make par HAMMER_EXTRA_ARGS="--stop_after_step extraction"
|
||||
make redo-par HAMMER_EXTRA_ARGS="--start_before_step extraction"
|
||||
make drc
|
||||
make lvs
|
||||
# make par HAMMER_EXTRA_ARGS="--stop_after_step extraction"
|
||||
# make redo-par HAMMER_EXTRA_ARGS="--start_before_step extraction"
|
||||
# make drc
|
||||
# make lvs
|
||||
|
||||
|
||||
cleanup:
|
||||
|
||||
@@ -103,7 +103,7 @@ dependencies:
|
||||
- sty
|
||||
- open_pdks.sky130a
|
||||
- pip:
|
||||
- hammer-vlsi[asap7]==1.1.1
|
||||
- hammer-vlsi[asap7]==1.1.2
|
||||
|
||||
# doc requirements
|
||||
- sphinx
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# To update a single package to the latest version compatible with the version constraints in the source:
|
||||
# conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE
|
||||
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
||||
# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/cy-check/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-check/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/new-cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/new-cy/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||
# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml
|
||||
metadata:
|
||||
channels:
|
||||
- url: ucb-bar
|
||||
@@ -21,16 +21,12 @@ metadata:
|
||||
- url: nodefaults
|
||||
used_env_vars: []
|
||||
content_hash:
|
||||
linux-64: 967545a3d2b81a4de0339614d0f20b58c49406462f629da7d0dcc2451fb276aa
|
||||
linux-64: e7c675d0d3f73f68c2d31ca13bd89c381b1ce9ba8ba88a24e3c678eee624e32b
|
||||
platforms:
|
||||
- linux-64
|
||||
sources:
|
||||
- /scratch/abejgonza/cy/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml
|
||||
- /scratch/abejgonza/cy-check/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/cy-check/conda-reqs/esp-tools.yaml
|
||||
- /scratch/abejgonza/new-cy/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/new-cy/conda-reqs/esp-tools.yaml
|
||||
package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
@@ -189,14 +185,14 @@ package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
md5: 0fde972b336190cd618fe158e7b8f295
|
||||
sha256: b72044c8657645a8a8f7a7e1b8f37b552080cd67df06ef1054e34831677ca66d
|
||||
md5: 212e31461947b52bde67eab980d73435
|
||||
sha256: 7a2701c0d40d0f09c7192148df609e958c2e5a3fea367f4fee3e0b5f427d8375
|
||||
manager: conda
|
||||
name: open_pdks.sky130a
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.423_0_g1604945-20230709_210322.tar.bz2
|
||||
version: 1.0.423_0_g1604945
|
||||
url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.424_0_g78b7bc3-20230709_210322.tar.bz2
|
||||
version: 1.0.424_0_g78b7bc3
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
@@ -2906,14 +2902,14 @@ package:
|
||||
dependencies:
|
||||
python: '>=3.6'
|
||||
hash:
|
||||
md5: d3ed087d1f7f8f5590e8e87b57a8ce64
|
||||
sha256: 18e3bd52c64f23bbc7c200fd2fc4152dd29423936dc43e8f129cb43f1af0136c
|
||||
md5: e8fbc1b54b25f4b08281467bc13b70cc
|
||||
sha256: 4acc7151cef5920d130f2e0a7615559cce8bfb037aeecb14d4d359ae3d9bc51b
|
||||
manager: conda
|
||||
name: pyparsing
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda
|
||||
version: 3.1.0
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.0.9
|
||||
- category: main
|
||||
dependencies:
|
||||
libgcc-ng: '>=12'
|
||||
@@ -3631,14 +3627,14 @@ package:
|
||||
python_abi: 3.9.* *_cp39
|
||||
unicodedata2: '>=14.0.0'
|
||||
hash:
|
||||
md5: 5f7c468bf9d9551a80187db7e809ef1f
|
||||
sha256: 9d4a61bf76070a197ec565943a1811b53260ec3a468a14671bbf8b9c36a1232f
|
||||
md5: 2de1f1007cb53e2d8e062cabea02f883
|
||||
sha256: d291856787dc9cc46e668014cfbf02eb1e987b3b73e6aa09338726f9663dcbe1
|
||||
manager: conda
|
||||
name: fonttools
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.40.0-py39hd1e30aa_0.conda
|
||||
version: 4.40.0
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.0-py39hd1e30aa_0.conda
|
||||
version: 4.41.0
|
||||
- category: main
|
||||
dependencies:
|
||||
python: '>=3.4'
|
||||
@@ -4572,23 +4568,23 @@ package:
|
||||
kiwisolver: '>=1.0.1'
|
||||
libgcc-ng: '>=12'
|
||||
libstdcxx-ng: '>=12'
|
||||
numpy: '>=1.20.3,<2.0a0'
|
||||
numpy: '>=1.21.6,<2.0a0'
|
||||
packaging: '>=20.0'
|
||||
pillow: '>=6.2.0'
|
||||
pyparsing: '>=2.3.1'
|
||||
pyparsing: '>=2.3.1,<3.1'
|
||||
python: '>=3.9,<3.10.0a0'
|
||||
python-dateutil: '>=2.7'
|
||||
python_abi: 3.9.* *_cp39
|
||||
tk: '>=8.6.12,<8.7.0a0'
|
||||
hash:
|
||||
md5: f2a931db797bb58bd335f4a857b4c898
|
||||
sha256: 34f8db992c68bee53fb6f0212707503ce197d13fadc231dbc37a99f31f72879a
|
||||
md5: 61cee808ff7830fcceeb4f336cc738b1
|
||||
sha256: 1ddef160608b3ef8c9b644a5df13b1c0da84e6e3d4e017076350fccb5ea24fb4
|
||||
manager: conda
|
||||
name: matplotlib-base
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.1-py39he190548_0.conda
|
||||
version: 3.7.1
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.2-py39h0126182_0.conda
|
||||
version: 3.7.2
|
||||
- category: main
|
||||
dependencies:
|
||||
jsonschema: '>=3.0.0,<5.0.0'
|
||||
@@ -5482,14 +5478,14 @@ package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
sha256: 0e0bc5ba78b8db3667ad636d964eb963dc97a59f04c6f6214c5f0e4a8f726c56
|
||||
sha256: 18c694e5ae8a208cdb3d2c20a993ca1a7b0efa258c247a1e565150f477f83744
|
||||
manager: pip
|
||||
name: mock
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/27/6f/fbb16f260a7107ee98871d83f6793d88c4311b7189b10ef239da0b2181db/mock-5.0.2-py3-none-any.whl
|
||||
version: 5.0.2
|
||||
url: https://files.pythonhosted.org/packages/6b/20/471f41173930550f279ccb65596a5ac19b9ac974a8d93679bcd3e0c31498/mock-5.1.0-py3-none-any.whl
|
||||
version: 5.1.0
|
||||
- dependencies: {}
|
||||
hash:
|
||||
sha256: 40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0
|
||||
@@ -5550,14 +5546,14 @@ package:
|
||||
dependencies:
|
||||
ruamel.yaml.clib: '>=0.2.7'
|
||||
hash:
|
||||
sha256: 25d0ee82a0a9a6f44683dcf8c282340def4074a4562f3a24f55695bb254c1693
|
||||
sha256: 23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447
|
||||
manager: pip
|
||||
name: ruamel.yaml
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/23/33/dbc62343de0cf92e0f9c15bc0a287bdaea0953f1cadca0480c78d5ac6641/ruamel.yaml-0.17.26-py3-none-any.whl
|
||||
version: 0.17.26
|
||||
url: https://files.pythonhosted.org/packages/d9/0e/2a05efa11ea33513fbdf4a2e2576fe94fd8fa5ad226dbb9c660886390974/ruamel.yaml-0.17.32-py3-none-any.whl
|
||||
version: 0.17.32
|
||||
- category: main
|
||||
dependencies:
|
||||
mock: '*'
|
||||
@@ -5592,14 +5588,14 @@ package:
|
||||
pyyaml: '>=6.0,<7.0'
|
||||
ruamel.yaml: '>=0.17.21,<0.18.0'
|
||||
hash:
|
||||
sha256: f4fb4dd5f7fac1f2206a25d0949024046fe8f855198e8edbd5206fa9d58ab05f
|
||||
sha256: 47f1fc5904756b01d46a8d23a4f3950382086b716138e21a027cd44dc5101f27
|
||||
manager: pip
|
||||
name: hammer-vlsi
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/0a/da/1897421311c6332655e2f73d02d8c914ecb724198a1988aacd8f4c61ae6e/hammer_vlsi-1.1.1-py3-none-any.whl
|
||||
version: 1.1.1
|
||||
url: https://files.pythonhosted.org/packages/30/e4/37b77c7921b80d58d8b2a325c031e75d656319b676e7fd4555e02b651a9d/hammer_vlsi-1.1.2-py3-none-any.whl
|
||||
version: 1.1.2
|
||||
- category: main
|
||||
dependencies:
|
||||
asttokens: '>=2,<3'
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# To update a single package to the latest version compatible with the version constraints in the source:
|
||||
# conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE
|
||||
# To re-solve the entire environment, e.g. after changing a version constraint in the source file:
|
||||
# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/cy-check/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-check/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/new-cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/new-cy/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||
# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml
|
||||
metadata:
|
||||
channels:
|
||||
- url: ucb-bar
|
||||
@@ -21,16 +21,12 @@ metadata:
|
||||
- url: nodefaults
|
||||
used_env_vars: []
|
||||
content_hash:
|
||||
linux-64: c21b046554fff6a17a993f763664cc9d9994650e380510f7391ababd82f27219
|
||||
linux-64: 0335b8b27ccf73c4f8f9b753f8248f87111cbb6e79860d1ffb1171841f5e264d
|
||||
platforms:
|
||||
- linux-64
|
||||
sources:
|
||||
- /scratch/abejgonza/cy/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml
|
||||
- /scratch/abejgonza/cy-check/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/cy-check/conda-reqs/riscv-tools.yaml
|
||||
- /scratch/abejgonza/new-cy/conda-reqs/chipyard.yaml
|
||||
- /scratch/abejgonza/new-cy/conda-reqs/riscv-tools.yaml
|
||||
package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
@@ -189,14 +185,14 @@ package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
md5: 0fde972b336190cd618fe158e7b8f295
|
||||
sha256: b72044c8657645a8a8f7a7e1b8f37b552080cd67df06ef1054e34831677ca66d
|
||||
md5: 212e31461947b52bde67eab980d73435
|
||||
sha256: 7a2701c0d40d0f09c7192148df609e958c2e5a3fea367f4fee3e0b5f427d8375
|
||||
manager: conda
|
||||
name: open_pdks.sky130a
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.423_0_g1604945-20230709_210322.tar.bz2
|
||||
version: 1.0.423_0_g1604945
|
||||
url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.424_0_g78b7bc3-20230709_210322.tar.bz2
|
||||
version: 1.0.424_0_g78b7bc3
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
@@ -2888,14 +2884,14 @@ package:
|
||||
dependencies:
|
||||
python: '>=3.6'
|
||||
hash:
|
||||
md5: e8fbc1b54b25f4b08281467bc13b70cc
|
||||
sha256: 4acc7151cef5920d130f2e0a7615559cce8bfb037aeecb14d4d359ae3d9bc51b
|
||||
md5: d3ed087d1f7f8f5590e8e87b57a8ce64
|
||||
sha256: 18e3bd52c64f23bbc7c200fd2fc4152dd29423936dc43e8f129cb43f1af0136c
|
||||
manager: conda
|
||||
name: pyparsing
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2
|
||||
version: 3.0.9
|
||||
url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.0-pyhd8ed1ab_0.conda
|
||||
version: 3.1.0
|
||||
- category: main
|
||||
dependencies:
|
||||
libgcc-ng: '>=12'
|
||||
@@ -3632,14 +3628,14 @@ package:
|
||||
python_abi: 3.10.* *_cp310
|
||||
unicodedata2: '>=14.0.0'
|
||||
hash:
|
||||
md5: d3d83b419c81ac718a9221442707882b
|
||||
sha256: e5d22bcf75a4414d84000a3d905c70d4d2a1db96c0dfbf5a89169817351b2bb7
|
||||
md5: 606aea800172f81896b21cabc5575206
|
||||
sha256: b9e1a3b84c670fab1c491b29c6b36f630aa520f45f08a44440851f46750d85c1
|
||||
manager: conda
|
||||
name: fonttools
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.40.0-py310h2372a71_0.conda
|
||||
version: 4.40.0
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.0-py310h2372a71_0.conda
|
||||
version: 4.41.0
|
||||
- category: main
|
||||
dependencies:
|
||||
python: '>=3.4'
|
||||
@@ -4264,20 +4260,20 @@ package:
|
||||
numpy: '>=1.21.6,<2.0a0'
|
||||
packaging: '>=20.0'
|
||||
pillow: '>=6.2.0'
|
||||
pyparsing: '>=2.3.1,<3.1'
|
||||
pyparsing: '>=2.3.1'
|
||||
python: '>=3.10,<3.11.0a0'
|
||||
python-dateutil: '>=2.7'
|
||||
python_abi: 3.10.* *_cp310
|
||||
tk: '>=8.6.12,<8.7.0a0'
|
||||
hash:
|
||||
md5: 9b55c9041c5a7f80f184a2cb05ec9663
|
||||
sha256: 28ff078d33e18b52a455d58d24ab7b959b4db98411470afd5869f30fbb54250b
|
||||
md5: 68b2dd34c69d08b05a9db5e3596fe3ee
|
||||
sha256: d2be8ac0a90aa12ba808f8777d1837b5aa983fc3c7c60c600e8fe6bd9352541c
|
||||
manager: conda
|
||||
name: matplotlib-base
|
||||
optional: false
|
||||
platform: linux-64
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.2-py310hf38f957_0.conda
|
||||
version: 3.7.2
|
||||
url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.1-py310he60537e_0.conda
|
||||
version: 3.7.1
|
||||
- category: main
|
||||
dependencies:
|
||||
libgcc-ng: '>=12'
|
||||
@@ -5456,14 +5452,14 @@ package:
|
||||
- category: main
|
||||
dependencies: {}
|
||||
hash:
|
||||
sha256: 0e0bc5ba78b8db3667ad636d964eb963dc97a59f04c6f6214c5f0e4a8f726c56
|
||||
sha256: 18c694e5ae8a208cdb3d2c20a993ca1a7b0efa258c247a1e565150f477f83744
|
||||
manager: pip
|
||||
name: mock
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/27/6f/fbb16f260a7107ee98871d83f6793d88c4311b7189b10ef239da0b2181db/mock-5.0.2-py3-none-any.whl
|
||||
version: 5.0.2
|
||||
url: https://files.pythonhosted.org/packages/6b/20/471f41173930550f279ccb65596a5ac19b9ac974a8d93679bcd3e0c31498/mock-5.1.0-py3-none-any.whl
|
||||
version: 5.1.0
|
||||
- dependencies: {}
|
||||
hash:
|
||||
sha256: f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5
|
||||
@@ -5524,14 +5520,14 @@ package:
|
||||
dependencies:
|
||||
ruamel.yaml.clib: '>=0.2.7'
|
||||
hash:
|
||||
sha256: 25d0ee82a0a9a6f44683dcf8c282340def4074a4562f3a24f55695bb254c1693
|
||||
sha256: 23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447
|
||||
manager: pip
|
||||
name: ruamel.yaml
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/23/33/dbc62343de0cf92e0f9c15bc0a287bdaea0953f1cadca0480c78d5ac6641/ruamel.yaml-0.17.26-py3-none-any.whl
|
||||
version: 0.17.26
|
||||
url: https://files.pythonhosted.org/packages/d9/0e/2a05efa11ea33513fbdf4a2e2576fe94fd8fa5ad226dbb9c660886390974/ruamel.yaml-0.17.32-py3-none-any.whl
|
||||
version: 0.17.32
|
||||
- category: main
|
||||
dependencies:
|
||||
mock: '*'
|
||||
@@ -5566,14 +5562,14 @@ package:
|
||||
pyyaml: '>=6.0,<7.0'
|
||||
ruamel.yaml: '>=0.17.21,<0.18.0'
|
||||
hash:
|
||||
sha256: f4fb4dd5f7fac1f2206a25d0949024046fe8f855198e8edbd5206fa9d58ab05f
|
||||
sha256: 47f1fc5904756b01d46a8d23a4f3950382086b716138e21a027cd44dc5101f27
|
||||
manager: pip
|
||||
name: hammer-vlsi
|
||||
optional: false
|
||||
platform: linux-64
|
||||
source: null
|
||||
url: https://files.pythonhosted.org/packages/0a/da/1897421311c6332655e2f73d02d8c914ecb724198a1988aacd8f4c61ae6e/hammer_vlsi-1.1.1-py3-none-any.whl
|
||||
version: 1.1.1
|
||||
url: https://files.pythonhosted.org/packages/30/e4/37b77c7921b80d58d8b2a325c031e75d656319b676e7fd4555e02b651a9d/hammer_vlsi-1.1.2-py3-none-any.whl
|
||||
version: 1.1.2
|
||||
- category: main
|
||||
dependencies:
|
||||
asttokens: '>=2,<3'
|
||||
|
||||
@@ -46,13 +46,14 @@ Prerequisites
|
||||
-------------
|
||||
|
||||
* Python 3.9+
|
||||
* OpenROAD flow tools:
|
||||
* OpenROAD flow tools (NOTE: tutorial may break with different tool versions):
|
||||
|
||||
* Yosys (synthesis), install `using conda <https://anaconda.org/litex-hub/yosys>`__ or `from source <https://yosyshq.net/yosys/download.html>`__
|
||||
* OpenROAD (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or `from source <https://openroad.readthedocs.io/en/latest/main/README.html#install-dependencies>`__
|
||||
* KLayout (DEF to GDSII conversion), install `using conda <https://anaconda.org/litex-hub/klayout>`__ or `from source <https://www.klayout.de/build.html>`__
|
||||
* Magic (DRC), , install `using conda <https://anaconda.org/litex-hub/magic>`__ or `from source <http://www.opencircuitdesign.com/magic/install.html>`__
|
||||
* NetGen (LVS), , install `using conda <https://anaconda.org/litex-hub/netgen>`__ or `from source <http://www.opencircuitdesign.com/netgen/install.html>`__
|
||||
* **Yosys 0.27+3** (synthesis), install `using conda <https://anaconda.org/litex-hub/yosys>`__ or `from source <https://yosyshq.net/yosys/download.html>`__
|
||||
* **OpenROAD v2.0-7070-g0264023b6** (place-and-route), install `using conda <https://anaconda.org/litex-hub/openroad>`__ (note that GUI is disabled in conda package) or
|
||||
`from source <https://github.com/The-OpenROAD-Project/OpenROAD/blob/master/docs/user/Build.md>`__ (git hash: 0264023b6c2a8ae803b8d440478d657387277d93)
|
||||
* **KLayout 0.28.5** (DEF to GDSII conversion, DRC), install `using conda <https://anaconda.org/litex-hub/klayout>`__ or `from source <https://www.klayout.de/build.html>`__
|
||||
* **Magic 8.3.376** (DRC), install `using conda <https://anaconda.org/litex-hub/magic>`__ or `from source <http://www.opencircuitdesign.com/magic/install.html>`__
|
||||
* **NetGen 1.5.250** (LVS), install `using conda <https://anaconda.org/litex-hub/netgen>`__ or `from source <http://www.opencircuitdesign.com/netgen/install.html>`__
|
||||
|
||||
* Sky130A PDK, install `using conda <https://anaconda.org/litex-hub/open_pdks.sky130a>`__ or `these directions <https://github.com/ucb-bar/hammer/blob/master/hammer/technology/sky130>`__
|
||||
* `Sram22 Sky130 SRAM macros <https://github.com/rahulk29/sram22_sky130_macros>`__
|
||||
@@ -67,6 +68,10 @@ Note that we create a new conda environment for each tool because some of them h
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
# channel settings so openroad/klayout install properly
|
||||
conda config --set channel_priority true
|
||||
conda config --add channels defaults
|
||||
|
||||
# download all files for Sky130A PDK
|
||||
conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9
|
||||
# clone the SRAM22 Sky130 SRAM macros
|
||||
@@ -78,6 +83,10 @@ Note that we create a new conda environment for each tool because some of them h
|
||||
conda create -c litex-hub --prefix ~/.conda-klayout klayout=0.28.5_98_g87e2def28
|
||||
conda create -c litex-hub --prefix ~/.conda-signoff magic=8.3.376_0_g5e5879c netgen=1.5.250_0_g178b172
|
||||
|
||||
# revert conda settings
|
||||
conda config --set channel_priority strict
|
||||
conda config --remove channels defaults
|
||||
|
||||
Initial Setup
|
||||
-------------
|
||||
In the Chipyard root, ensure that you have the Chipyard conda environment activated. Then, run:
|
||||
@@ -118,7 +127,7 @@ Add the following YAML keys to the top of this file to specify the location of t
|
||||
example-openroad.yml
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
This contains the Hammer configuration for the OpenROAD tool flow.
|
||||
It selects tools for synthesis (Yosys), place and route (OpenROAD), DRC (Magic), and LVS (NetGen).
|
||||
It selects tools for synthesis (Yosys), place and route (OpenROAD), DRC (KLayout or Magic), and LVS (NetGen).
|
||||
|
||||
Add the following YAML keys to the top of this file to specify the locations of the tool binaries.
|
||||
Note that this is not required if the tools are already on your PATH.
|
||||
@@ -129,7 +138,8 @@ Note that this is not required if the tools are already on your PATH.
|
||||
# tool binary paths
|
||||
synthesis.yosys.yosys_bin: ~/.conda-yosys/bin/yosys
|
||||
par.openroad.openroad_bin: ~/.conda-openroad/bin/openroad
|
||||
par.openroad.klayout_bin: ~/.conda-klayout/bin/klayout
|
||||
par.openroad.klayout_bin: ~/.conda-klayout/bin/klayout # binary that OpenROAD calls for final GDS writeout
|
||||
drc.klayout.klayout_bin: ~/.conda-klayout/bin/klayout # binary that runs for DRC step
|
||||
drc.magic.magic_bin: ~/.conda-signoff/bin/magic
|
||||
lvs.netgen.netgen_bin: ~/.conda-signoff/bin/netgen
|
||||
|
||||
@@ -237,10 +247,14 @@ DRC & LVS
|
||||
|
||||
As a note, this tutorial has been run extensively through commercial signoff tools,
|
||||
thus the open-source signoff flow is not stable or guaranteed to produce useful results.
|
||||
We welcome any contributions to improving both our `Magic tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/magic>`__
|
||||
We welcome any contributions to improving our `KLayout tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/klayout>`__,
|
||||
`Magic tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/drc/magic>`__,
|
||||
and `Netgen tool plugin <https://github.com/ucb-bar/hammer/blob/master/hammer/lvs/netgen>`__.
|
||||
|
||||
To run DRC & LVS in Magic & Netgen, respectively:
|
||||
We recommend KLayout for DRC to produce readable results, but Magic may be selected in ``example-openroad.yml``
|
||||
by uncommenting the line ``vlsi.core.drc_tool: "hammer.drc.magic"``.
|
||||
|
||||
To run DRC & LVS and view the results:
|
||||
|
||||
.. code-block:: shell
|
||||
|
||||
@@ -259,7 +273,13 @@ Note that in ``sky130-openroad.yml`` we have set the following YAML keys:
|
||||
These keys cause the Hammer plugin to only generate all necessary scripts, without executing them with the respective tool.
|
||||
This is because Magic and Netgen, as of the writing of this tutorial, do not have a database format that may be loaded interactively,
|
||||
so to view the DRC/LVS results for debugging you must launch the tool interactively, then run DRC/LVS checks,
|
||||
which is done by the ``generated-scripts/view_[drc|lvs]`` scripts.
|
||||
which is done by the ``generated-scripts/view_[drc|lvs]`` scripts. This is not the case for KLayout, which does have a loadable database format.
|
||||
|
||||
Below is the window you should see when loading the KLayout DRC results interactively. Note that most of these DRC errors are
|
||||
from special rules relating to Sky130 SRAMs, which have been verified separately. In the future the KLayout tool plugin should blackbox these
|
||||
SRAM macros by default, but this feature does not exist yet.
|
||||
|
||||
.. image:: ../_static/images/vlsi-openroad-klayout-drc.png
|
||||
|
||||
|
||||
VLSI Flow Control
|
||||
|
||||
BIN
docs/_static/images/vlsi-openroad-klayout-drc.png
vendored
Normal file
BIN
docs/_static/images/vlsi-openroad-klayout-drc.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
@@ -1,10 +1,11 @@
|
||||
# Tool options. Replace with your tool plugin of choice.
|
||||
vlsi.core.build_system: make
|
||||
# Yosys
|
||||
# Synthesis: Yosys
|
||||
vlsi.core.synthesis_tool: "hammer.synthesis.yosys"
|
||||
# OpenROAD
|
||||
# Place-and-Route: OpenROAD
|
||||
vlsi.core.par_tool: "hammer.par.openroad"
|
||||
# Magic
|
||||
vlsi.core.drc_tool: "hammer.drc.magic"
|
||||
# Netgen
|
||||
# DRC: KLayout or Magic (comment other one out)
|
||||
vlsi.core.drc_tool: "hammer.drc.klayout"
|
||||
# vlsi.core.drc_tool: "hammer.drc.magic"
|
||||
# LVS: Netgen
|
||||
vlsi.core.lvs_tool: "hammer.lvs.netgen"
|
||||
|
||||
Reference in New Issue
Block a user