diff --git a/.github/workflows/chipyard-full-flow.yml b/.github/workflows/chipyard-full-flow.yml index 7fe09a23..5179be0f 100644 --- a/.github/workflows/chipyard-full-flow.yml +++ b/.github/workflows/chipyard-full-flow.yml @@ -107,6 +107,60 @@ jobs: source env.sh cd sims/verilator make verilog + - name: VLSI test + run: | + cd ${{ env.REMOTE_WORK_DIR }} + eval "$(conda shell.bash hook)" + source env.sh + + cd vlsi + + # NOTE: most conda installs are in separate conda envs because they mess up + # each other's versions (for no apparent reason) and we need the latest versions + conda config --add channels defaults + conda config --add channels litex-hub + + # installs for example-sky130.yml + conda create -y --prefix ./.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9 + git clone https://github.com/rahulk29/sram22_sky130_macros.git + + # installs for example-openroad.yml + conda create -y --prefix ./.conda-yosys yosys=0.27_4_gb58664d44 + conda create -y --prefix ./.conda-openroad openroad=2.0_7070_g0264023b6 + conda create -y --prefix ./.conda-klayout klayout=0.28.5_98_g87e2def28 + conda create -y --prefix ./.conda-signoff magic=8.3.376_0_g5e5879c netgen=1.5.250_0_g178b172 + + echo "# Tutorial configs" > tutorial.yml + echo "# pdk" > tutorial.yml + echo "technology.sky130.sky130A: $PWD/.conda-sky130/share/pdk/sky130A" >> tutorial.yml + echo "technology.sky130.sram22_sky130_macros: $PWD/sram22_sky130_macros" >> tutorial.yml + echo "" >> tutorial.yml + echo "# tools" >> tutorial.yml + echo "synthesis.yosys.yosys_bin: $PWD/.conda-yosys/bin/yosys" >> tutorial.yml + 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 "lvs.netgen.netgen_bin: $PWD/.conda-signoff/bin/netgen" >> tutorial.yml + echo "" >> tutorial.yml + echo "# speed up tutorial runs & declutter log output" >> tutorial.yml + echo "par.openroad.timing_driven: false" >> tutorial.yml + echo "par.openroad.write_reports: false" >> tutorial.yml + + conda config --remove channels litex-hub + conda config --remove channels defaults + + export tutorial=sky130-openroad + export EXTRA_CONFS=tutorial.yml + export VLSI_TOP=RocketTile + make buildfile + make syn + # 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 + cleanup: name: cleanup diff --git a/README.md b/README.md index 7e44cc11..a21b142e 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ These additional publications cover many of the internal components used in Chip * **FireMarshal**: N. Pemberton, et al., *ISPASS'21*. [PDF](https://ieeexplore.ieee.org/document/9408192). * **VLSI** * **Hammer**: E. Wang, et al., *ISQED'20*. [PDF](https://www.isqed.org/English/Archives/2020/Technical_Sessions/113.html). + * **Hammer**: H. Liew, et al., *DAC'22*. [PDF](https://dl.acm.org/doi/abs/10.1145/3489517.3530672). ## Acknowledgements diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index e2f6c84e..b9a46c8e 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -1,5 +1,6 @@ channels: - ucb-bar + - litex-hub - conda-forge - nodefaults @@ -100,8 +101,9 @@ dependencies: # hammer packages - sty + - open_pdks.sky130a - pip: - - hammer-vlsi[asap7]==1.0.1 + - hammer-vlsi[asap7]==1.0.5 # doc requirements - sphinx diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index baf3e021..18c908be 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -7,32 +7,26 @@ # Install this environment as "YOURENV" with: # conda-lock install -n YOURENV --file conda-requirements-esp-tools-linux-64.conda-lock.yml # 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 +# 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-circt/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-circt/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/chipyard/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard/conda-reqs/esp-tools.yaml -f /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/chipyard.yaml -f /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/cy-cfg-finder/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-cfg-finder/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/cy-conda-req/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-conda-req/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /home/eecs/nayiri/chipyard/conda-reqs/chipyard.yaml -f /home/eecs/nayiri/chipyard/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar used_env_vars: [] + - url: litex-hub + used_env_vars: [] - url: conda-forge used_env_vars: [] - url: nodefaults used_env_vars: [] content_hash: - linux-64: 749e7dba3bc3ffdbcf8bc734717a8296b1f3ef463f7f2af0bee452c5ac028d10 + linux-64: 576de47cdf62e8c328cee203cd3150231e6bf142d2f735eaa760aedc342b7f2b platforms: - linux-64 sources: - - /scratch/abejgonza/cy-circt/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-circt/conda-reqs/esp-tools.yaml - - /scratch/abejgonza/chipyard/conda-reqs/chipyard.yaml - - /scratch/abejgonza/chipyard/conda-reqs/esp-tools.yaml - - /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/chipyard.yaml - - /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/esp-tools.yaml - - /scratch/abejgonza/cy-cfg-finder/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-cfg-finder/conda-reqs/esp-tools.yaml - - /scratch/abejgonza/cy-conda-req/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-conda-req/conda-reqs/esp-tools.yaml + - /home/eecs/nayiri/chipyard/conda-reqs/chipyard.yaml + - /home/eecs/nayiri/chipyard/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -188,6 +182,17 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.2.0-h46fd767_19.tar.bz2 version: 12.2.0 +- category: main + dependencies: {} + hash: + md5: b81ebefd12ddbf18353d1a227f2dccf8 + sha256: d7b45d7f379d65cbbdaf557aa5e1f0e1c2aef6f1a1b7b598622e75f77da318e2 + manager: conda + name: open_pdks.sky130a + optional: false + platform: linux-64 + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.399_0_g63dbde9-20230225_164303.tar.bz2 + version: 1.0.399_0_g63dbde9 - category: main dependencies: {} hash: @@ -415,25 +420,12 @@ package: libstdcxx-ng: '>=12' hash: md5: 6bfb79319763a11c7423c9d0e0ee00b7 - sha256: null manager: conda name: dromajo optional: false platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/dromajo-1.0.0-0_h1234567_g6a6e34e.tar.bz2 version: 1.0.0 -- category: main - dependencies: - libgcc-ng: '>=10.3.0' - hash: - md5: 40e0c155eafefec2a63d1df0de0f5cdc - sha256: 1c0b56f8c25dab0a2d4db25f0209f1fe9b83539a649dd821b97c4bfbbc12c3f7 - manager: conda - name: e2fsprogs-libs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/e2fsprogs-libs-1.46.2-h166bdaf_0.tar.bz2 - version: 1.46.2 - category: main dependencies: libgcc-ng: '>=12' @@ -486,15 +478,15 @@ package: version: 0.21.1 - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' hash: - md5: 626e68ae9cc5912d6adb79d318cf962d - sha256: 6ecacdbdf5cd9d2b46211b15a2f7db428ea5edd0cae9be89ccd837fc7b35643f + md5: 96f3b11872ef6fad973eac856cd2624f + sha256: 41ec165704ccce2faa0437f4f53c03c06261a2cc9ff7614828e51427d9261f4b manager: conda name: giflib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda version: 5.2.1 - category: main dependencies: @@ -656,18 +648,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 version: '1.17' -- category: main - dependencies: - libgcc-ng: '>=12' - hash: - md5: b4f717df2d377410b462328bf0e8fb7d - sha256: 0d8b666ca4deabf948a76654df0fa1277145bed1c9e8a58e18a649c22c5f1c3e - manager: conda - name: libjpeg-turbo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.4-h166bdaf_0.tar.bz2 - version: 2.1.4 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -2018,18 +1998,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-2.1.1-pyhd8ed1ab_0.conda version: 2.1.1 -- category: main - dependencies: - python: '>=3.6' - hash: - md5: f3f2ab3ce28979a24d1a988ba211eb9b - sha256: 1354731d0eb1b406b66b3cb3d6ab74d7cbe9c0ec1d30b9e5afa366d4539e4687 - manager: conda - name: asn1crypto - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2 - version: 1.5.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2121,16 +2089,16 @@ package: version: 2.1.1 - category: main dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 + __unix: '' + python: '>=3.8' hash: - md5: 3613ff4128b3e565d048106196206929 - sha256: 21c425ecc4e6f4ec97aab1285b22ad629c75d2efb62f89cd6d9618ab6a2e606c + md5: 20e4087407c7cb04a40817114b333dbf + sha256: 23676470b591b100393bb0f6c46fe10624dcbefc696a6a9f42932ed8816ef0ea manager: conda name: click optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/click-8.1.3-py39hf3d152e_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.3-unix_pyhd8ed1ab_2.tar.bz2 version: 8.1.3 - category: main dependencies: @@ -2230,7 +2198,6 @@ package: python_abi: 3.9.* *_cp39 hash: md5: ae197de48b202c65efd7a61135ac0ae5 - sha256: null manager: conda name: esp-tools optional: false @@ -2241,14 +2208,14 @@ package: dependencies: python: '>=3.7' hash: - md5: a385c3e8968b4cf8fbc426ace915fd1a - sha256: cf668360331552b2903e440cda1b4e47062c3f3775342e4a278ef4d141c28d1d + md5: 7312299d7a0ea4993159229b7d2dceb2 + sha256: f073c3ba993912f1c0027bc34a54975642885f0a4cd5f9dc42a17ca945df2c18 manager: conda name: exceptiongroup optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.0-pyhd8ed1ab_0.conda - version: 1.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.1-pyhd8ed1ab_0.conda + version: 1.1.1 - category: main dependencies: python: '>=3.7' @@ -2487,20 +2454,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py39hf939315_1.tar.bz2 version: 1.4.4 -- category: main - dependencies: - libgcc-ng: '>=12' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: a0238daacd28c07735c6bc75aedf2014 - sha256: bbae929b429f39a10432e86d87bf02864e6640287245de71edeac6b3c29b0ff7 - manager: conda - name: lazy-object-proxy - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py39h72bdee0_0.conda - version: 1.9.0 - category: main dependencies: jpeg: '>=9e,<10a' @@ -2780,18 +2733,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2 version: 0.2.1 -- category: main - dependencies: - python: '>=3.7' - hash: - md5: f3e7301de38fd621c902faf8087bc564 - sha256: 7258b7f6a8e5fcd5e5a22e0a85b89e03e9cf5049d1591bc98420fd080007f25d - manager: conda - name: pathable - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pathable-0.4.3-pyhd8ed1ab_0.tar.bz2 - version: 0.4.3 - category: main dependencies: python: '>=3.6' @@ -2806,42 +2747,16 @@ package: version: 1.9.6 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: 89e3c7cdde7d3aaa2aee933b604dd07f - sha256: 7d055ffc8a02bf781a89d069db3454b453605cdaff300b82cedcc7133283e47e - manager: conda - name: pkgutil-resolve-name - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 - version: 1.3.10 -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: d86903c57fe229d9dd8878a6dd9d149f - sha256: abf2d34464c6255d35703e3c9477475e3e6e353ca8675990596d2477cdbc5b52 + md5: 7d301a0d25f424d96175f810935f0da9 + sha256: c25e1757e4e90638bb1e778aba3ee5f3c01fae9752e3c3929f9be7d367f6c7f3 manager: conda name: pluggy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.0.0-pyhd8ed1ab_5.tar.bz2 version: 1.0.0 -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: bfefe349de77edb720cb4688821ff78e - sha256: 83cdcf4c17264d63e972f079408bd86ab15a9b14230d168b3c35b5971860be11 - manager: conda - name: poetry-core - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/poetry-core-1.0.8-py39hf3d152e_1.tar.bz2 - version: 1.0.8 - category: main dependencies: python: '>=3.9,<3.10.0a0' @@ -2869,30 +2784,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.4-py39hb9d737c_0.tar.bz2 version: 5.9.4 -- category: main - dependencies: - python: '' - hash: - md5: 359eeb6536da0e687af562ed265ec263 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - manager: conda - name: ptyprocess - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - version: 0.7.0 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: b4613d7e7a493916d867842a6a148054 - sha256: 268be33a290e3d51467ab29cbb5a80cf79f69dade2f2dead25d7f80d76c3543a - manager: conda - name: py - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2 - version: 1.11.0 - category: main dependencies: python: '' @@ -2931,19 +2822,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 version: '2.21' -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: fdd9fda18e2af3df572dbeccaaff135a - sha256: 3f6e7c4727df937e72ba78853933c64153ecb5588391c4c97cb019cca1c6fa94 - manager: conda - name: pyinotify - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinotify-0.9.6-py39hf3d152e_1006.tar.bz2 - version: 0.9.6 - category: main dependencies: python: '>=3.6' @@ -2996,16 +2874,16 @@ package: version: 0.19.3 - category: main dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 + __unix: '' + python: '>=3.8' hash: - md5: d34b97a2386932b97c7cb80916a673e7 - sha256: 42d46baeab725d3c70d22a4258549e9f0f1a72b740166cd9c3b394c4369cb306 + md5: 2a7de29fb590ca14b5243c4c812c8025 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b manager: conda name: pysocks optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 version: 1.7.1 - category: main dependencies: @@ -3088,18 +2966,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.0-pyhd8ed1ab_0.conda version: 67.6.0 -- category: main - dependencies: - python: '>=3.6' - hash: - md5: 65bacdee3cac51e49f45d530bbd5e90f - sha256: 5e00e61916a46c1857871adec258952a50a86542883bcbaa1f1df572bd51e786 - manager: conda - name: shellingham - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.0-pyhd8ed1ab_0.tar.bz2 - version: 1.5.0 - category: main dependencies: python: '' @@ -3220,18 +3086,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sty-1.0.0-pyhd8ed1ab_0.tar.bz2 version: 1.0.0 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: f832c45a477c78bebd107098db465095 - sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 - manager: conda - name: toml - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - version: 0.10.2 - category: main dependencies: python: '>=3.7' @@ -3322,14 +3176,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 2d93b130d148d7fc77e583677792fc6a - sha256: 70c57b5ac94cd32e78f1a2fa2c38572bfac85b901a6a99aa254a9e8e126c132d + md5: 43e7d9e50261fb11deb76e17d8431aac + sha256: f81eee64fcdfb379e27d01773b34041fbf7f9e86f33b157c9925d19e0a442452 manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.4.0-pyha770c72_0.tar.bz2 - version: 4.4.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda + version: 4.5.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3344,23 +3198,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py39hb9d737c_0.tar.bz2 version: 15.0.0 -- category: main - dependencies: - libgcc-ng: '>=9.3.0' - ncurses: '>=6.2,<7.0.0a0' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - readline: '>=8.0,<9.0a0' - zlib: '>=1.2.11,<1.3.0a0' - hash: - md5: bf0434c73a112c64bb1dd4ea6129e8c2 - sha256: c456c945aeb463d725ce133934f0294a2f4b85bd6ca6d433f3f95454d1112d6b - manager: conda - name: util-linux - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/util-linux-2.36-py39h28948ff_1.tar.bz2 - version: '2.36' - category: main dependencies: flex: '>=2.6.4,<3.0a0' @@ -3437,14 +3274,14 @@ package: dependencies: python: '>=3.7' hash: - md5: c829cfb8cb826acb9de0ac1a2df0a940 - sha256: bd4f11ff075ff251ade9f57686f31473e25be46ab282d9603f551401250f9f44 + md5: 49bb0d9e60ce1db25e151780331bb5f3 + sha256: 79b4d29b0c004014a2abd5fc2c9fcd35cc6256222b960c2a317a27c4b0d8884d manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.38.4-pyhd8ed1ab_0.tar.bz2 - version: 0.38.4 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_0.conda + version: 0.40.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3525,19 +3362,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.15.0-pyhd8ed1ab_0.conda version: 3.15.0 -- category: main - dependencies: - python: '>=3.6' - typing_extensions: '>=4.0' - hash: - md5: 59c40397276a286241c65faec5e1be3c - sha256: be2dbd6710438fa48b83bf06841091227276ae545d145dfe5cb5149c6484e951 - manager: conda - name: aioitertools - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aioitertools-0.11.0-pyhd8ed1ab_0.tar.bz2 - version: 0.11.0 - category: main dependencies: frozenlist: '>=1.1.0' @@ -3706,33 +3530,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/curl-7.88.1-hdc1c0ab_0.conda version: 7.88.1 -- category: main - dependencies: - python: '' - six: '>=1.4.0' - hash: - md5: c69f19038efee4eb534623610d0c2053 - sha256: 2ba7e3e4f75e07b42246b4ba8569c983ecbdcda47b1b900632858a23d91826f2 - manager: conda - name: docker-pycreds - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-pycreds-0.4.0-py_0.tar.bz2 - version: 0.4.0 -- category: main - dependencies: - e2fsprogs-libs: 1.46.2 h166bdaf_0 - libgcc-ng: '>=10.3.0' - util-linux: '>=2.36,<2.37.0a0' - hash: - md5: 3a5caf0e611d38f05b004a25423e07cb - sha256: fac9c225ac324519cf1224cd87c201a7b18f0c5f42033ef9db7a480a9163f348 - manager: conda - name: e2fsprogs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/e2fsprogs-1.46.2-h166bdaf_0.tar.bz2 - version: 1.46.2 - category: main dependencies: gmpy2: '' @@ -3989,19 +3786,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.7.0-pyhd8ed1ab_0.tar.bz2 version: 1.7.0 -- category: main - dependencies: - ptyprocess: '>=0.5' - python: '' - hash: - md5: 5909e7b978141dd80d28dbf9de627827 - sha256: 04eef875d461732ef22cd19bf2c989c40e73b5da625bf6a6b82ddae200e90e56 - manager: conda - name: pexpect - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 - version: 4.8.0 - category: main dependencies: freetype: '>=2.12.1,<3.0a0' @@ -4103,19 +3887,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/qemu-5.0.0-hb15d774_0.tar.bz2 version: 5.0.0 -- category: main - dependencies: - python: '>=3.5' - six: '' - hash: - md5: fed45fc5ea0813240707998abe49f520 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - manager: conda - name: rfc3339-validator - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - version: 0.1.4 - category: main dependencies: pyasn1: '>=0.1.3' @@ -4186,16 +3957,16 @@ package: version: 2.28.11.15 - category: main dependencies: - typing_extensions: 4.4.0 pyha770c72_0 + typing_extensions: 4.5.0 pyha770c72_0 hash: - md5: be969210b61b897775a0de63cd9e9026 - sha256: 6f129b1bc18d111dcf3abaec6fcf6cbee00f1b77bb42d0f0bc8d85f8faa65cf0 + md5: b3c594fde1a80a1fc3eb9cc4a5dfe392 + sha256: 6da5e15fa533620ae2e7aca9a7d16013eed3a73ac64c47d7c3bf3deec39b63b9 manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.4.0-hd8ed1ab_0.tar.bz2 - version: 4.4.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda + version: 4.5.0 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4290,19 +4061,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15.0.7-default_had23c3d_1.conda version: 15.0.7 -- category: main - dependencies: - clikit: '>=0.6.0,<0.7.0' - python: '>=3.6' - hash: - md5: 4c82b11a3d06031bd58e7d869f53d965 - sha256: a3a5beaf5b4a5ba671580164e6b1da77837f9d69414b095bd3231e84a85f505c - manager: conda - name: cleo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cleo-0.8.1-pyhd8ed1ab_2.tar.bz2 - version: 0.8.1 - category: main dependencies: cffi: '>=1.12' @@ -4362,14 +4120,14 @@ package: pcre2: '>=10.40,<10.41.0a0' perl: 5.* hash: - md5: 7311557191b94fb57e6f58a8d996b694 - sha256: ae95471eb6fdf56b2801b8bb6a191ab377c8161cdba5d763030f5cad9af1c1fd + md5: 70fd89375d9b5ca90c15dcf3662b1b42 + sha256: fba1e93848c20e29d205726142fb37ad7e2be785699f98aac348524080354f6d manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.39.2-pl5321h693f4a3_0.conda - version: 2.39.2 + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h693f4a3_0.conda + version: 2.40.0 - category: main dependencies: gitdb: '>=4.0.1,<5' @@ -4431,20 +4189,19 @@ package: dependencies: attrs: '>=17.4.0' importlib-metadata: '' - importlib_resources: '>=1.4.0' - pkgutil-resolve-name: '>=1.3.10' - pyrsistent: '!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0' - python: '>=3.7' - typing_extensions: '' + pyrsistent: '>=0.14.0' + python: '>=3.6' + setuptools: '' + six: '>=1.11.0' hash: - md5: 723268a468177cd44568eb8f794e0d80 - sha256: 4f68a23430d1afc5c9b41c46fbac0ade33c0bf57a293c646bfdd6dc65350eada + md5: 66125e28711d8ffc04a207a2b170316d + sha256: d74a3ddd3c3dd9bd7b00110a196e3af90490c5660674f18bfd53a8fdf91de418 manager: conda name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda - version: 4.17.3 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2 + version: 3.2.0 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4452,7 +4209,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 5b3ed39ee3809d63d347b649de0a45f8 - sha256: null manager: conda name: libdwarf optional: false @@ -4495,14 +4251,14 @@ package: python: '>=3.7' typing-extensions: '>=4.4' hash: - md5: 0b8fbdfd52918bc2f1b76feccd95c919 - sha256: bb3f0b4eeb3244a99aae8ada600b90efbaaa66f28d064bdd437dc326cd210f87 + md5: 1d1a27f637808c76dd83e3f469aa6f7e + sha256: 5875ef7f4b079fe080c10287b13843860bc69a42e457729a8c5dc32cb3563e92 manager: conda name: platformdirs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.0-pyhd8ed1ab_0.conda - version: 3.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.1-pyhd8ed1ab_0.conda + version: 3.1.1 - category: main dependencies: libgcc-ng: '>=12' @@ -4566,14 +4322,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: d1c9c56188d38c4d0ea625fa45bd9000 - sha256: bec15a25d19fbef4454e280d2a49d09eb72a6650983b769be28dab07ed36832d + md5: 1b96b6926c03bc190c9425da6cc637e7 + sha256: dfa8e083442b18006c0015154b5e88dbe624a268ec9fd8abe4959dae484d5ef3 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.11-pyhd8ed1ab_0.conda - version: 0.16.11 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.12-pyhd8ed1ab_0.conda + version: 0.16.12 - category: main dependencies: cffi: '' @@ -4650,14 +4406,14 @@ package: types-awscrt: '' typing_extensions: '' hash: - md5: 1284ea7cf431f599298c3e86922cb6ef - sha256: 949071f4ffaada1a7df890a0eca82507446f427d913272bae109c39f42b03361 + md5: 77b2ba7cde37be73d8edfd6b292e9ee9 + sha256: e9fe8bc0b8fa005067cd67d24456157afc9d6082b1e2bb229ffde3061ad02e5b manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.87-pyhd8ed1ab_0.conda - version: 1.29.87 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.90-pyhd8ed1ab_0.conda + version: 1.29.90 - category: main dependencies: clang-format: 15.0.7 default_had23c3d_1 @@ -4708,14 +4464,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 4d66c7eacd0d9be4fd00ce591854eba4 - sha256: a5fd392324fb841f28b3cd7179f4906a8d3d40b52b1fc231829d9455a0fd79b3 + md5: e886aa3ceb206963720799725ffcd414 + sha256: 688845fde60145cdeb47d78de3d9632ef6bd4d4793bdf1cb9055ed2fc0a84a8a manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.19-pyhd8ed1ab_0.conda - version: 2.5.19 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.20-pyhd8ed1ab_0.conda + version: 2.5.20 - category: main dependencies: importlib_metadata: '' @@ -4729,22 +4485,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-2.2.0-pyhd8ed1ab_0.tar.bz2 version: 2.2.0 -- category: main - dependencies: - jsonschema: '>=4.0.0,<5.0.0' - pathable: '>=0.4.1,<0.5.0' - python: '>=3.6' - pyyaml: '>=5.1' - typing_extensions: '>=4.3.0,<5.0.0' - hash: - md5: a0266083a9eb9c4871fb27c1b30681b7 - sha256: 6bc2645c224994d2f456a59972aaf194937e373381bd5ae2c12052577b8a1db4 - manager: conda - name: jsonschema-spec - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-spec-0.1.2-pyhd8ed1ab_0.tar.bz2 - version: 0.1.2 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4753,7 +4493,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 899c511688e6c41cb51c2921a8d25e63 - sha256: null manager: conda name: libdwarf-dev optional: false @@ -4790,19 +4529,17 @@ package: version: 3.7.1 - category: main dependencies: - attrs: '>=19.2.0' - jsonschema: '>=4.0.0,<5.0.0' + jsonschema: '>=3.0.0,<5.0.0' python: '>=3.7' - rfc3339-validator: '' hash: - md5: 8b32c5ef540b6afe23ea8e75dd400fbb - sha256: 8e69b65ffdc0d71f5d924c34d8e45bb2ca169573db29ede1844a46a2c8e3a5d0 + md5: 277aff70bb1def188c9c016ba4564e23 + sha256: 0c2f971f86211f2b6db431de9d8ab4c9e38eed5422bd06f93cd8be3cbb882a2c manager: conda name: openapi-schema-validator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.4.3-pyhd8ed1ab_0.conda - version: 0.4.3 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.2.3-pyhd8ed1ab_0.tar.bz2 + version: 0.2.3 - category: main dependencies: alsa-lib: '>=1.2.8,<1.2.9.0a0' @@ -4859,14 +4596,14 @@ package: pynacl: '>=1.5' python: '>=3.6' hash: - md5: 9159272243591905b0766ae53e942218 - sha256: 98728c9e3ec10c198154a5c8c0cec51eea76ecbd4744618449725d166c050fcb + md5: 748d328d93daa18c35220e251b610b25 + sha256: 35d35d9eea83058068d23213976d3d990a87692cd0fb52104c8cd7eedda5b555 manager: conda name: paramiko optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.0.0-pyhd8ed1ab_0.conda - version: 3.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.1.0-pyhd8ed1ab_0.conda + version: 3.1.0 - category: main dependencies: cryptography: '>=38.0.0,<40' @@ -4948,14 +4685,14 @@ package: platformdirs: <4,>=2.4 python: '>=3.7' hash: - md5: a4c92707c28aafc95208c747db80fd3f - sha256: 0c074440b5aca612c5ee24d516845583fbad82bf3f349322d9c9fdf139cd0edd + md5: cb9a711f7c9f3074fe522e5a34481e60 + sha256: 28540cdda9279d7daeb8f2deec6f1128869ba90742a966e488b692e8083c5349 manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.20.0-pyhd8ed1ab_0.conda - version: 20.20.0 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.21.0-pyhd8ed1ab_0.conda + version: 20.21.0 - category: main dependencies: conda-package-streaming: '>=0.7.0' @@ -5039,22 +4776,20 @@ package: version: 2.54.4 - category: main dependencies: - importlib_resources: '>=5.8.0,<6.0.0' - jsonschema: '>=4.0.0,<5.0.0' - jsonschema-spec: '>=0.1.1,<0.2.0' - lazy-object-proxy: '>=1.7.1,<2.0.0' - openapi-schema-validator: '>=0.4.2,<0.5' + jsonschema: '>=3.2.0,<5.0.0' + openapi-schema-validator: '>=0.2.0,<0.3.0' python: '>=3.7' pyyaml: '>=5.1' + setuptools: '' hash: - md5: 243b7dc9b3e129a2e7d5f2ca690f337c - sha256: 3053d96adb90a7dd6002c1151531485d9973a94050139a233701c3c25f94e0ea + md5: 5ff3ff67d18fd4938c4ae38c3baf21bb + sha256: 11f24d36001aaba0a7197ff7b9a07ab943d05f969b13e5a9c4ffec13eca19cd0 manager: conda name: openapi-spec-validator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.5.5-pyhd8ed1ab_0.conda - version: 0.5.5 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.4.0-pyhd8ed1ab_1.tar.bz2 + version: 0.4.0 - category: main dependencies: cfgv: '>=2.0.0' @@ -5096,14 +4831,14 @@ package: pysocks: '>=1.5.6,<2.0,!=1.5.7' python: <4.0 hash: - md5: 01f33ad2e0aaf6b5ba4add50dad5ad29 - sha256: f2f09c44e47946ce631dbc9a8a79bb463ac0f4122aaafdbcc51f200a1e420ca6 + md5: 27db656619a55d727eaf5a6ece3d2fd6 + sha256: 213bdf6c3a5d721fa83b45d527d3ecd340f9547c0d6bbd0b8d9d746ec9a1fb4b manager: conda name: urllib3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.14-pyhd8ed1ab_0.conda - version: 1.26.14 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda + version: 1.26.15 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -5111,14 +4846,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 7aa03b260e0e7803fafc414707cac996 - sha256: 9c3f2b48b8b69e436f80c4b5bd716ba4410ea1fe5f851406916e43f3feca05df + md5: f5f163a412ecc6be50ef913cf3de6ad6 + sha256: 1172449dfba0f4bba3adb2a0c9878878fdf7c4cc22c0f6c3ebbc42d3b11bfda4 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.88-pyhd8ed1ab_0.conda - version: 1.29.88 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.90-pyhd8ed1ab_0.conda + version: 1.29.90 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5164,22 +4899,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_0.conda version: 2.28.2 -- category: main - dependencies: - aiohttp: '>=3.3.1' - aioitertools: '>=0.5.1' - botocore: '>=1.27.59,<1.27.60' - python: '>=3.6' - wrapt: '>=1.10.10' - hash: - md5: a3f48ea10883a5df371b895008b1ca4b - sha256: 76068553358b26c9c03be992cbe982a369d1e015a53700f092db92c784ce98a9 - manager: conda - name: aiobotocore - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.4.2-pyhd8ed1ab_0.conda - version: 2.4.2 - category: main dependencies: botocore: '>=1.11.3' @@ -5307,19 +5026,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 version: 0.20.1 -- category: main - dependencies: - python: '' - requests: '>=2.0.1,<=3.0.0' - hash: - md5: 402668adee8fcba9a9c265cdc2a88f5a - sha256: 1f2f3329127844be226bdc9bd9922d84a8767ae208d4a650c3ba655c84cb1e1c - manager: conda - name: requests-toolbelt - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.9.1-py_0.tar.bz2 - version: 0.9.1 - category: main dependencies: python: '>=3.7' @@ -5378,7 +5084,7 @@ package: version: 5.1.1 - category: main dependencies: - botocore: 1.29.88 + botocore: 1.29.90 colorama: '>=0.2.5,<0.4.5' docutils: '>=0.10,<0.17' python: '>=3.9,<3.10.0a0' @@ -5387,29 +5093,29 @@ package: rsa: '>=3.1.2,<4.8' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: e9c5b0e909628d74e4ce807bb2a7693f - sha256: 2c641bc5be23dc659180c46126cb509034c67e4e5d3f68dc286d06199459f57e + md5: 1aad173d6a406ea8e26aa7ac6ec92b77 + sha256: dbc0e344cc63263aca1bc1257563f1caa46d11b4484d3767d52715a61e3e1395 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.88-py39hf3d152e_0.conda - version: 1.27.88 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.90-py39hf3d152e_0.conda + version: 1.27.90 - category: main dependencies: - botocore: '>=1.29.88,<1.30.0' + botocore: '>=1.29.90,<1.30.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 6d9d3d9ed7d005bf4180948445cf15a7 - sha256: f073885ff0739d25e35d62aa202f44df59fa75beb95a247b0f041c4973964c4b + md5: a57ff13af4774f422569fe6630d73c08 + sha256: 045c5d6441b6b6790d0e9a826bee129b6f6c14ce65e8c50556b8a109a84d9912 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.88-pyhd8ed1ab_0.conda - version: 1.26.88 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.90-pyhd8ed1ab_0.conda + version: 1.26.90 - category: main dependencies: cachecontrol: 0.12.11 pyhd8ed1ab_1 @@ -5470,37 +5176,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/msal_extensions-1.0.0-pyhd8ed1ab_0.tar.bz2 version: 1.0.0 -- category: main - dependencies: - cachecontrol: '>=0.12.9,<0.13.0' - cachy: '>=0.3.0,<0.4.0' - cleo: '>=0.8.1,<0.9.0' - clikit: '>=0.6.2,<0.7.0' - crashtest: '>=0.3.0,<0.4.0' - html5lib: '>=1.0,<2.0' - keyring: '>=21.2.0' - lockfile: '>=0.9' - packaging: '>=20.4,<21.0' - pexpect: '>=4.7.0,<5.0.0' - pkginfo: '>=1.4,<2.0' - poetry-core: '>=1.0.7,<1.1.0' - ptyprocess: '>=0.5' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - requests: '>=2.18,<3.0' - requests-toolbelt: '>=0.9.1,<0.10.0' - shellingham: '>=1.1,<2.0' - tomlkit: '>=0.7.0,<1.0.0' - virtualenv: '>=20.0.26,<21.0.0' - hash: - md5: 0685495d547bc110b90852ad186dc8a1 - sha256: b2ae9a17f7f35b0bf422a15c3ac54766170dfbb78af5ecc77aa70d057cc13b48 - manager: conda - name: poetry - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/poetry-1.1.15-py39hf3d152e_0.tar.bz2 - version: 1.1.15 - category: main dependencies: livereload: '>=2.3.0' @@ -5518,33 +5193,31 @@ package: - category: main dependencies: python: '>=2.7' - setuptools: '' - sphinx: '' + sphinx: '>=1.8' hash: - md5: 1951ebeb88189bf6d6d52039c0aa7776 - sha256: bd197a9d339d7cf9e5a563da5a4f6c62b668714e5c64a0ed5af09b008b833da2 + md5: 914897066d5873acfb13e75705276ad1 + sha256: 2e5f16a2d58f9a31443ffbb8ce3852cfccf533a6349045828cd2e994ef0679ca manager: conda name: sphinxcontrib-jquery optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-2.0.0-pyhd8ed1ab_0.conda - version: 2.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + version: '4.1' - category: main dependencies: - boto3: '>=1.19.5,<2' - jsonschema: '>=3.2,<5' - pydantic: ~=1.10.2 - python: '>=3.7' - typing_extensions: ~=4.4.0 + boto3: ~=1.5 + jsonschema: ~=3.2 + python: '>=3.6' + six: ~=1.15 hash: - md5: 1136b4bb3893069daeb272a3d6aecd7b - sha256: 9d9316f995fa2aedd97a8495b1a8b87265d3d8fc0771c8a0e51da7c3c1a0571c + md5: 6a8ad721f4edea85a40070c78f379dd4 + sha256: d9b2ff5fdf1e8de7cf80f2a14a7cb76c65c0bae18a2fe51700e6ed3c71fdb5b5 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.60.1-pyhd8ed1ab_0.conda - version: 1.60.1 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.55.0-pyhd8ed1ab_0.conda + version: 1.55.0 - category: main dependencies: azure-core: '>=1.11.0,<2.0.0' @@ -5568,14 +5241,14 @@ package: python: '' typing_extensions: '' hash: - md5: 0665225dcc452177ebf284917328c4c1 - sha256: b03ab85abbac40c456ae8447d8a03345f54a6c7690efc1e1cf687db0ace600b8 + md5: 72b6b21dfad72737aab3d4988b51244f + sha256: 77179ed8be45e06e010dc0143bf56201aa028ba59d573e4216be8c1a49ff372b manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.88-pyhd8ed1ab_0.conda - version: 1.26.88 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.90-pyhd8ed1ab_0.conda + version: 1.26.90 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5716,74 +5389,43 @@ package: werkzeug: <2.2.0,>=0.5 xmltodict: '' hash: - md5: 24a19f3ea233ebd0cc0b8e6e0bc5df58 - sha256: 55e3f4fd163518afd72e926d88011cc47933779c97523b4d64b3680f99bd787b + md5: 7b8eaea28d5c08c8539c3b35a07fe3d1 + sha256: 47f8f38a9eff042ebd7754fa6c36739021c0e6cdca1848cc4b0138cfc4043ace manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.3-pyhd8ed1ab_0.conda - version: 4.1.3 -- dependencies: {} - hash: - sha256: ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344 - manager: pip - name: bcrypt - platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/aa/48/fd2b197a9741fa790ba0b88a9b10b5e88e62ff5cf3e1bc96d8354d7ce613/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 4.0.1 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.4-pyhd8ed1ab_0.conda + version: 4.1.4 - category: main dependencies: {} hash: - sha256: 122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62 + sha256: c41cfb1e99ba5d341fbcc5308836e7d7c9786d302f995b2c271ce2144dece9eb manager: pip name: mock optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/5c/03/b7e605db4a57c0f6fba744b11ef3ddf4ddebcada35022927a2b5fc623fdf/mock-4.0.3-py3-none-any.whl - version: 4.0.3 -- category: main - dependencies: {} - hash: - sha256: 9967365f2037ac8fd43ff678ad1b72c82b184b2498440579d5cfae9d63e5b0f9 - manager: pip - name: mypy-boto3-ec2 - optional: false - platform: linux-64 - url: https://files.pythonhosted.org/packages/a4/60/815ee785b017d49e09f42175e791a3a3495293b0dbce7d18c74f43a1e8a4/mypy_boto3_ec2-1.21.9-py3-none-any.whl - version: 1.21.9 -- dependencies: {} - hash: - sha256: ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf - manager: pip - name: numpy - platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/43/55/fea3342371187dea4044521c0ba82b90fb5a42fb92446be019b316dd3320/numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 1.24.1 + url: https://files.pythonhosted.org/packages/e6/88/8a05e7ad0bb823246b2add3d2e97f990c41c71a40762c8db77a4bd78eedf/mock-5.0.1-py3-none-any.whl + version: 5.0.1 - dependencies: {} hash: sha256: 40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 manager: pip name: pyyaml platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/12/fc/a4d5a7554e0067677823f7265cb3ae22aed8a238560b5133b58cda252dad/PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl version: '6.0' - category: main dependencies: six: '*' hash: - sha256: e3305297c744ae53ffa032c45dc347286165e4ffce6875dc662b205db0623d86 + sha256: 6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c manager: pip name: asttokens optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/2d/1b/fdbdf82b86e07ca90985740ac160a1dd4ab09cb81071ec12d71c701e1138/asttokens-2.0.8-py2.py3-none-any.whl - version: 2.0.8 + url: https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl + version: 2.2.1 - category: main dependencies: numpy: '*' @@ -5793,7 +5435,6 @@ package: name: gdspy optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/1d/e4/97b8add92fbec2a9890ad4777272e9a9e4d7a0ceeac42b7e1febe94f0e86/gdspy-1.4.zip version: '1.4' - category: main @@ -5806,7 +5447,6 @@ package: name: paramiko-ng optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/9f/53/1ac75eab589149b1e02e38185ecebf09e1b805fc3fdeadbc16d1a2b7d208/paramiko_ng-2.8.10-py2.py3-none-any.whl version: 2.8.10 - dependencies: @@ -5816,7 +5456,6 @@ package: manager: pip name: ruamel.yaml platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/9e/cb/938214ac358fbef7058343b3765c79a1b7ed0c366f7f992ce7ff38335652/ruamel.yaml-0.17.21-py3-none-any.whl version: 0.17.21 - category: main @@ -5824,14 +5463,13 @@ package: mock: '*' six: '*' hash: - sha256: 34ae88c846046742ef074036bf311dc90ab152b7bc09c342b281cebf676727a2 + sha256: c8fc6fabc0e7f6984eeabb942540e45646e5bef0bb99fe59e02da634e4d4b9ca manager: pip name: sure optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/c7/ee/043531858afab5f312ca02867de51189c0c1dd76ba652f1d95ffa13d07f7/sure-2.0.0.tar.gz - version: 2.0.0 + url: https://files.pythonhosted.org/packages/dd/ae/eb28ee3b6768e51cb938abcf521cb678217203f33385a2df54d3f23331c5/sure-2.0.1.tar.gz + version: 2.0.1 - category: main dependencies: paramiko-ng: '*' @@ -5842,7 +5480,6 @@ package: name: fab-classic optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/6b/0f/efc537eebfd2a2c470250c0ac8bd8a05ffc13d95a7fb22021367890d7c46/fab_classic-1.19.2-py2.py3-none-any.whl version: 1.19.2 - category: main @@ -5853,14 +5490,13 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: f476c58c84d01bda7a642b09514a4ecd798503fdd47fe466b83a7945d44fcb93 + sha256: 1e4b942c42a2292f2e6140fc8df51edc8fd5f8a5c7141e471ecb1d6676fe0bb6 manager: pip name: hammer-vlsi optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/85/0f/7fcab088a5e2780d165bbea5ea3974b0f2286ddc98499e98aa29609bd0ee/hammer_vlsi-1.0.1-py3-none-any.whl - version: 1.0.1 + url: https://files.pythonhosted.org/packages/86/15/6643fe3965aabde680eab7f64eef1e3967b516640c756858cd246dd0b427/hammer_vlsi-1.0.5-py3-none-any.whl + version: 1.0.5 - category: main dependencies: asttokens: '>=2,<3' @@ -5871,7 +5507,6 @@ package: name: icontract optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/d8/91/9756e7cf0b155e80bf9a62beffdd1dec4afce43cc6ab7f432f2267c62762/icontract-2.6.2-py3-none-any.whl version: 2.6.2 - category: main @@ -5879,12 +5514,11 @@ package: icontract: '>=2.0.1,<3' typing-extensions: '>=3.6.6' hash: - sha256: e5608063e3f6122db255acde636255f9c0da3a8e6b7edd35498b95280ff18961 + sha256: a70437fea7bca647c0e98161e1006ef49970267999c571b499760f1c43c6ba10 manager: pip name: pylddwrap optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/6b/4e/aebc1cff19a572dbcc7e60d8e74f38fd568ef9185650b39f72fde9ff84d1/pylddwrap-1.2.1.tar.gz - version: 1.2.1 + url: https://files.pythonhosted.org/packages/c9/12/4afd6542c43cd20271f0e53bf0211decc10079a76a41e53c0288025a7b85/pylddwrap-1.2.2.tar.gz + version: 1.2.2 version: 1 diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 75d28b2b..58e35a08 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -7,32 +7,26 @@ # Install this environment as "YOURENV" with: # conda-lock install -n YOURENV --file conda-requirements-riscv-tools-linux-64.conda-lock.yml # 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 +# 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-circt/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-circt/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/chipyard/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard/conda-reqs/riscv-tools.yaml -f /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/chipyard.yaml -f /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/cy-cfg-finder/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-cfg-finder/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/cy-conda-req/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-conda-req/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /home/eecs/nayiri/chipyard/conda-reqs/chipyard.yaml -f /home/eecs/nayiri/chipyard/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar used_env_vars: [] + - url: litex-hub + used_env_vars: [] - url: conda-forge used_env_vars: [] - url: nodefaults used_env_vars: [] content_hash: - linux-64: 4c1c6c308bfb81342c899cce8d0bf34b608f27e9896c07a7fdee8d1752c4ded2 + linux-64: 627a36ef251d91a4b9367ab331f17aff95a8eea6e2bbb80089fb5f1016740d25 platforms: - linux-64 sources: - - /scratch/abejgonza/cy-circt/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-circt/conda-reqs/riscv-tools.yaml - - /scratch/abejgonza/chipyard/conda-reqs/chipyard.yaml - - /scratch/abejgonza/chipyard/conda-reqs/riscv-tools.yaml - - /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/chipyard.yaml - - /Users/joonhohwangbo/Documents/Research/coding/chipyard/conda-reqs/riscv-tools.yaml - - /scratch/abejgonza/cy-cfg-finder/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-cfg-finder/conda-reqs/riscv-tools.yaml - - /scratch/abejgonza/cy-conda-req/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-conda-req/conda-reqs/riscv-tools.yaml + - /home/eecs/nayiri/chipyard/conda-reqs/chipyard.yaml + - /home/eecs/nayiri/chipyard/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -188,6 +182,17 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.2.0-h46fd767_19.tar.bz2 version: 12.2.0 +- category: main + dependencies: {} + hash: + md5: b81ebefd12ddbf18353d1a227f2dccf8 + sha256: d7b45d7f379d65cbbdaf557aa5e1f0e1c2aef6f1a1b7b598622e75f77da318e2 + manager: conda + name: open_pdks.sky130a + optional: false + platform: linux-64 + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.399_0_g63dbde9-20230225_164303.tar.bz2 + version: 1.0.399_0_g63dbde9 - category: main dependencies: {} hash: @@ -415,25 +420,12 @@ package: libstdcxx-ng: '>=12' hash: md5: 6bfb79319763a11c7423c9d0e0ee00b7 - sha256: null manager: conda name: dromajo optional: false platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/dromajo-1.0.0-0_h1234567_g6a6e34e.tar.bz2 version: 1.0.0 -- category: main - dependencies: - libgcc-ng: '>=10.3.0' - hash: - md5: 40e0c155eafefec2a63d1df0de0f5cdc - sha256: 1c0b56f8c25dab0a2d4db25f0209f1fe9b83539a649dd821b97c4bfbbc12c3f7 - manager: conda - name: e2fsprogs-libs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/e2fsprogs-libs-1.46.2-h166bdaf_0.tar.bz2 - version: 1.46.2 - category: main dependencies: libgcc-ng: '>=12' @@ -486,15 +478,15 @@ package: version: 0.21.1 - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' hash: - md5: 626e68ae9cc5912d6adb79d318cf962d - sha256: 6ecacdbdf5cd9d2b46211b15a2f7db428ea5edd0cae9be89ccd837fc7b35643f + md5: 96f3b11872ef6fad973eac856cd2624f + sha256: 41ec165704ccce2faa0437f4f53c03c06261a2cc9ff7614828e51427d9261f4b manager: conda name: giflib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h0b41bf4_3.conda version: 5.2.1 - category: main dependencies: @@ -656,18 +648,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 version: '1.17' -- category: main - dependencies: - libgcc-ng: '>=12' - hash: - md5: b4f717df2d377410b462328bf0e8fb7d - sha256: 0d8b666ca4deabf948a76654df0fa1277145bed1c9e8a58e18a649c22c5f1c3e - manager: conda - name: libjpeg-turbo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.4-h166bdaf_0.tar.bz2 - version: 2.1.4 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -2018,18 +1998,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-2.1.1-pyhd8ed1ab_0.conda version: 2.1.1 -- category: main - dependencies: - python: '>=3.6' - hash: - md5: f3f2ab3ce28979a24d1a988ba211eb9b - sha256: 1354731d0eb1b406b66b3cb3d6ab74d7cbe9c0ec1d30b9e5afa366d4539e4687 - manager: conda - name: asn1crypto - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/asn1crypto-1.5.1-pyhd8ed1ab_0.tar.bz2 - version: 1.5.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2121,16 +2089,16 @@ package: version: 2.1.1 - category: main dependencies: - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 + __unix: '' + python: '>=3.8' hash: - md5: 9bb8d28c0899d583a062c17b15ee3e89 - sha256: 550b1266fed8a3bbfc2e7d5cbe646668aca5b5f1c3b4ac9a17ca2d215d06785a + md5: 20e4087407c7cb04a40817114b333dbf + sha256: 23676470b591b100393bb0f6c46fe10624dcbefc696a6a9f42932ed8816ef0ea manager: conda name: click optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/click-8.1.3-py310hff52083_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.3-unix_pyhd8ed1ab_2.tar.bz2 version: 8.1.3 - category: main dependencies: @@ -2223,14 +2191,14 @@ package: dependencies: python: '>=3.7' hash: - md5: a385c3e8968b4cf8fbc426ace915fd1a - sha256: cf668360331552b2903e440cda1b4e47062c3f3775342e4a278ef4d141c28d1d + md5: 7312299d7a0ea4993159229b7d2dceb2 + sha256: f073c3ba993912f1c0027bc34a54975642885f0a4cd5f9dc42a17ca945df2c18 manager: conda name: exceptiongroup optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.0-pyhd8ed1ab_0.conda - version: 1.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.1-pyhd8ed1ab_0.conda + version: 1.1.1 - category: main dependencies: python: '>=3.7' @@ -2469,20 +2437,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py310hbf28c38_1.tar.bz2 version: 1.4.4 -- category: main - dependencies: - libgcc-ng: '>=12' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - md5: 8664f43451412071a7111211fe7e38f2 - sha256: a26e8c55b8d1b17e784c6e2ffa75ed4dec4a335c7df17f183dcc9c5149d6cd70 - manager: conda - name: lazy-object-proxy - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py310h1fa729e_0.conda - version: 1.9.0 - category: main dependencies: jpeg: '>=9e,<10a' @@ -2762,18 +2716,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pastel-0.2.1-pyhd8ed1ab_0.tar.bz2 version: 0.2.1 -- category: main - dependencies: - python: '>=3.7' - hash: - md5: f3e7301de38fd621c902faf8087bc564 - sha256: 7258b7f6a8e5fcd5e5a22e0a85b89e03e9cf5049d1591bc98420fd080007f25d - manager: conda - name: pathable - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pathable-0.4.3-pyhd8ed1ab_0.tar.bz2 - version: 0.4.3 - category: main dependencies: python: '>=3.6' @@ -2788,42 +2730,16 @@ package: version: 1.9.6 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: 89e3c7cdde7d3aaa2aee933b604dd07f - sha256: 7d055ffc8a02bf781a89d069db3454b453605cdaff300b82cedcc7133283e47e - manager: conda - name: pkgutil-resolve-name - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 - version: 1.3.10 -- category: main - dependencies: - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - md5: 02e428ab589e3cefe070352c905cefec - sha256: 28967130059ac29a1298de5f4555c0ec6344ea56e32642c44f40c19d83f38162 + md5: 7d301a0d25f424d96175f810935f0da9 + sha256: c25e1757e4e90638bb1e778aba3ee5f3c01fae9752e3c3929f9be7d367f6c7f3 manager: conda name: pluggy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.0.0-pyhd8ed1ab_5.tar.bz2 version: 1.0.0 -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: bfefe349de77edb720cb4688821ff78e - sha256: 83cdcf4c17264d63e972f079408bd86ab15a9b14230d168b3c35b5971860be11 - manager: conda - name: poetry-core - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/poetry-core-1.0.8-py39hf3d152e_1.tar.bz2 - version: 1.0.8 - category: main dependencies: python: '>=3.10,<3.11.0a0' @@ -2851,30 +2767,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.4-py310h5764c6d_0.tar.bz2 version: 5.9.4 -- category: main - dependencies: - python: '' - hash: - md5: 359eeb6536da0e687af562ed265ec263 - sha256: fb31e006a25eb2e18f3440eb8d17be44c8ccfae559499199f73584566d0a444a - manager: conda - name: ptyprocess - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2 - version: 0.7.0 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: b4613d7e7a493916d867842a6a148054 - sha256: 268be33a290e3d51467ab29cbb5a80cf79f69dade2f2dead25d7f80d76c3543a - manager: conda - name: py - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2 - version: 1.11.0 - category: main dependencies: python: '' @@ -2913,19 +2805,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 version: '2.21' -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: fdd9fda18e2af3df572dbeccaaff135a - sha256: 3f6e7c4727df937e72ba78853933c64153ecb5588391c4c97cb019cca1c6fa94 - manager: conda - name: pyinotify - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyinotify-0.9.6-py39hf3d152e_1006.tar.bz2 - version: 0.9.6 - category: main dependencies: python: '>=3.6' @@ -2978,16 +2857,16 @@ package: version: 0.19.3 - category: main dependencies: - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 + __unix: '' + python: '>=3.8' hash: - md5: 378f2260e871f3ea46c6fa58d9f05277 - sha256: cb6e4821234cee05acd1996cef88e40dfc2d5ab12cf12c5b1d6ed9118f7f41a7 + md5: 2a7de29fb590ca14b5243c4c812c8025 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b manager: conda name: pysocks optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 version: 1.7.1 - category: main dependencies: @@ -3089,18 +2968,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.0-pyhd8ed1ab_0.conda version: 67.6.0 -- category: main - dependencies: - python: '>=3.6' - hash: - md5: 65bacdee3cac51e49f45d530bbd5e90f - sha256: 5e00e61916a46c1857871adec258952a50a86542883bcbaa1f1df572bd51e786 - manager: conda - name: shellingham - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.0-pyhd8ed1ab_0.tar.bz2 - version: 1.5.0 - category: main dependencies: python: '' @@ -3221,18 +3088,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sty-1.0.0-pyhd8ed1ab_0.tar.bz2 version: 1.0.0 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: f832c45a477c78bebd107098db465095 - sha256: f0f3d697349d6580e4c2f35ba9ce05c65dc34f9f049e85e45da03800b46139c1 - manager: conda - name: toml - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2 - version: 0.10.2 - category: main dependencies: python: '>=3.7' @@ -3323,14 +3178,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 2d93b130d148d7fc77e583677792fc6a - sha256: 70c57b5ac94cd32e78f1a2fa2c38572bfac85b901a6a99aa254a9e8e126c132d + md5: 43e7d9e50261fb11deb76e17d8431aac + sha256: f81eee64fcdfb379e27d01773b34041fbf7f9e86f33b157c9925d19e0a442452 manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.4.0-pyha770c72_0.tar.bz2 - version: 4.4.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.5.0-pyha770c72_0.conda + version: 4.5.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3345,23 +3200,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py310h5764c6d_0.tar.bz2 version: 15.0.0 -- category: main - dependencies: - libgcc-ng: '>=9.3.0' - ncurses: '>=6.2,<7.0.0a0' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - readline: '>=8.0,<9.0a0' - zlib: '>=1.2.11,<1.3.0a0' - hash: - md5: bf0434c73a112c64bb1dd4ea6129e8c2 - sha256: c456c945aeb463d725ce133934f0294a2f4b85bd6ca6d433f3f95454d1112d6b - manager: conda - name: util-linux - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/util-linux-2.36-py39h28948ff_1.tar.bz2 - version: '2.36' - category: main dependencies: flex: '>=2.6.4,<3.0a0' @@ -3438,14 +3276,14 @@ package: dependencies: python: '>=3.7' hash: - md5: c829cfb8cb826acb9de0ac1a2df0a940 - sha256: bd4f11ff075ff251ade9f57686f31473e25be46ab282d9603f551401250f9f44 + md5: 49bb0d9e60ce1db25e151780331bb5f3 + sha256: 79b4d29b0c004014a2abd5fc2c9fcd35cc6256222b960c2a317a27c4b0d8884d manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.38.4-pyhd8ed1ab_0.tar.bz2 - version: 0.38.4 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.40.0-pyhd8ed1ab_0.conda + version: 0.40.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3694,33 +3532,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/curl-7.88.1-hdc1c0ab_0.conda version: 7.88.1 -- category: main - dependencies: - python: '' - six: '>=1.4.0' - hash: - md5: c69f19038efee4eb534623610d0c2053 - sha256: 2ba7e3e4f75e07b42246b4ba8569c983ecbdcda47b1b900632858a23d91826f2 - manager: conda - name: docker-pycreds - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-pycreds-0.4.0-py_0.tar.bz2 - version: 0.4.0 -- category: main - dependencies: - e2fsprogs-libs: 1.46.2 h166bdaf_0 - libgcc-ng: '>=10.3.0' - util-linux: '>=2.36,<2.37.0a0' - hash: - md5: 3a5caf0e611d38f05b004a25423e07cb - sha256: fac9c225ac324519cf1224cd87c201a7b18f0c5f42033ef9db7a480a9163f348 - manager: conda - name: e2fsprogs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/e2fsprogs-1.46.2-h166bdaf_0.tar.bz2 - version: 1.46.2 - category: main dependencies: gmpy2: '' @@ -3826,19 +3637,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.0.0-pyha770c72_0.conda version: 6.0.0 -- category: main - dependencies: - python: '>=3.7' - zipp: '>=3.1.0' - hash: - md5: e5fd2260a231ee63b6969f4801082f2b - sha256: 091cca3e010f7a7353152f0abda2d68cfd83ddde80a15e974d9e18b2047e7be2 - manager: conda - name: importlib_resources - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.12.0-pyhd8ed1ab_0.conda - version: 5.12.0 - category: main dependencies: more-itertools: '' @@ -3977,19 +3775,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.7.0-pyhd8ed1ab_0.tar.bz2 version: 1.7.0 -- category: main - dependencies: - ptyprocess: '>=0.5' - python: '' - hash: - md5: 5909e7b978141dd80d28dbf9de627827 - sha256: 04eef875d461732ef22cd19bf2c989c40e73b5da625bf6a6b82ddae200e90e56 - manager: conda - name: pexpect - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.8.0-pyh9f0ad1d_2.tar.bz2 - version: 4.8.0 - category: main dependencies: freetype: '>=2.12.1,<3.0a0' @@ -4091,19 +3876,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/qemu-5.0.0-hb15d774_0.tar.bz2 version: 5.0.0 -- category: main - dependencies: - python: '>=3.5' - six: '' - hash: - md5: fed45fc5ea0813240707998abe49f520 - sha256: 7c7052b51de0b5c558f890bb11f8b5edbb9934a653d76be086b1182b9f54185d - manager: conda - name: rfc3339-validator - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_0.tar.bz2 - version: 0.1.4 - category: main dependencies: pyasn1: '>=0.1.3' @@ -4174,16 +3946,16 @@ package: version: 2.28.11.15 - category: main dependencies: - typing_extensions: 4.4.0 pyha770c72_0 + typing_extensions: 4.5.0 pyha770c72_0 hash: - md5: be969210b61b897775a0de63cd9e9026 - sha256: 6f129b1bc18d111dcf3abaec6fcf6cbee00f1b77bb42d0f0bc8d85f8faa65cf0 + md5: b3c594fde1a80a1fc3eb9cc4a5dfe392 + sha256: 6da5e15fa533620ae2e7aca9a7d16013eed3a73ac64c47d7c3bf3deec39b63b9 manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.4.0-hd8ed1ab_0.tar.bz2 - version: 4.4.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda + version: 4.5.0 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4278,19 +4050,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15.0.7-default_had23c3d_1.conda version: 15.0.7 -- category: main - dependencies: - clikit: '>=0.6.0,<0.7.0' - python: '>=3.6' - hash: - md5: 4c82b11a3d06031bd58e7d869f53d965 - sha256: a3a5beaf5b4a5ba671580164e6b1da77837f9d69414b095bd3231e84a85f505c - manager: conda - name: cleo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cleo-0.8.1-pyhd8ed1ab_2.tar.bz2 - version: 0.8.1 - category: main dependencies: cffi: '>=1.12' @@ -4350,14 +4109,14 @@ package: pcre2: '>=10.40,<10.41.0a0' perl: 5.* hash: - md5: 7311557191b94fb57e6f58a8d996b694 - sha256: ae95471eb6fdf56b2801b8bb6a191ab377c8161cdba5d763030f5cad9af1c1fd + md5: 70fd89375d9b5ca90c15dcf3662b1b42 + sha256: fba1e93848c20e29d205726142fb37ad7e2be785699f98aac348524080354f6d manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.39.2-pl5321h693f4a3_0.conda - version: 2.39.2 + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h693f4a3_0.conda + version: 2.40.0 - category: main dependencies: gitdb: '>=4.0.1,<5' @@ -4390,19 +4149,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-6.0.0-h8e241bc_0.conda version: 6.0.0 -- category: main - dependencies: - importlib_resources: '>=5.12.0,<5.12.1.0a0' - python: '>=3.7' - hash: - md5: 3544c818f0720c89eb16ae6940ab440b - sha256: 0675df2bf18e52d0ea2bc5e1009faac273f059361a0caf36c0e0edc7831098a9 - manager: conda - name: importlib-resources - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-5.12.0-pyhd8ed1ab_0.conda - version: 5.12.0 - category: main dependencies: importlib-metadata: '>=6.0.0,<6.0.1.0a0' @@ -4419,20 +4165,19 @@ package: dependencies: attrs: '>=17.4.0' importlib-metadata: '' - importlib_resources: '>=1.4.0' - pkgutil-resolve-name: '>=1.3.10' - pyrsistent: '!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0' - python: '>=3.7' - typing_extensions: '' + pyrsistent: '>=0.14.0' + python: '>=3.6' + setuptools: '' + six: '>=1.11.0' hash: - md5: 723268a468177cd44568eb8f794e0d80 - sha256: 4f68a23430d1afc5c9b41c46fbac0ade33c0bf57a293c646bfdd6dc65350eada + md5: 66125e28711d8ffc04a207a2b170316d + sha256: d74a3ddd3c3dd9bd7b00110a196e3af90490c5660674f18bfd53a8fdf91de418 manager: conda name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda - version: 4.17.3 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-3.2.0-pyhd8ed1ab_3.tar.bz2 + version: 3.2.0 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4440,7 +4185,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 5b3ed39ee3809d63d347b649de0a45f8 - sha256: null manager: conda name: libdwarf optional: false @@ -4510,14 +4254,14 @@ package: python: '>=3.7' typing-extensions: '>=4.4' hash: - md5: 0b8fbdfd52918bc2f1b76feccd95c919 - sha256: bb3f0b4eeb3244a99aae8ada600b90efbaaa66f28d064bdd437dc326cd210f87 + md5: 1d1a27f637808c76dd83e3f469aa6f7e + sha256: 5875ef7f4b079fe080c10287b13843860bc69a42e457729a8c5dc32cb3563e92 manager: conda name: platformdirs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.0-pyhd8ed1ab_0.conda - version: 3.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.1-pyhd8ed1ab_0.conda + version: 3.1.1 - category: main dependencies: libgcc-ng: '>=12' @@ -4581,14 +4325,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: d1c9c56188d38c4d0ea625fa45bd9000 - sha256: bec15a25d19fbef4454e280d2a49d09eb72a6650983b769be28dab07ed36832d + md5: 1b96b6926c03bc190c9425da6cc637e7 + sha256: dfa8e083442b18006c0015154b5e88dbe624a268ec9fd8abe4959dae484d5ef3 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.11-pyhd8ed1ab_0.conda - version: 0.16.11 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.12-pyhd8ed1ab_0.conda + version: 0.16.12 - category: main dependencies: cffi: '' @@ -4665,14 +4409,14 @@ package: types-awscrt: '' typing_extensions: '' hash: - md5: 1284ea7cf431f599298c3e86922cb6ef - sha256: 949071f4ffaada1a7df890a0eca82507446f427d913272bae109c39f42b03361 + md5: 77b2ba7cde37be73d8edfd6b292e9ee9 + sha256: e9fe8bc0b8fa005067cd67d24456157afc9d6082b1e2bb229ffde3061ad02e5b manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.87-pyhd8ed1ab_0.conda - version: 1.29.87 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.90-pyhd8ed1ab_0.conda + version: 1.29.90 - category: main dependencies: clang-format: 15.0.7 default_had23c3d_1 @@ -4723,14 +4467,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 4d66c7eacd0d9be4fd00ce591854eba4 - sha256: a5fd392324fb841f28b3cd7179f4906a8d3d40b52b1fc231829d9455a0fd79b3 + md5: e886aa3ceb206963720799725ffcd414 + sha256: 688845fde60145cdeb47d78de3d9632ef6bd4d4793bdf1cb9055ed2fc0a84a8a manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.19-pyhd8ed1ab_0.conda - version: 2.5.19 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.20-pyhd8ed1ab_0.conda + version: 2.5.20 - category: main dependencies: importlib_metadata: '' @@ -4744,22 +4488,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-2.2.0-pyhd8ed1ab_0.tar.bz2 version: 2.2.0 -- category: main - dependencies: - jsonschema: '>=4.0.0,<5.0.0' - pathable: '>=0.4.1,<0.5.0' - python: '>=3.6' - pyyaml: '>=5.1' - typing_extensions: '>=4.3.0,<5.0.0' - hash: - md5: a0266083a9eb9c4871fb27c1b30681b7 - sha256: 6bc2645c224994d2f456a59972aaf194937e373381bd5ae2c12052577b8a1db4 - manager: conda - name: jsonschema-spec - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-spec-0.1.2-pyhd8ed1ab_0.tar.bz2 - version: 0.1.2 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4768,7 +4496,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 899c511688e6c41cb51c2921a8d25e63 - sha256: null manager: conda name: libdwarf-dev optional: false @@ -4777,19 +4504,17 @@ package: version: 0.0.0.20190110_28_ga81397fc4 - category: main dependencies: - attrs: '>=19.2.0' - jsonschema: '>=4.0.0,<5.0.0' + jsonschema: '>=3.0.0,<5.0.0' python: '>=3.7' - rfc3339-validator: '' hash: - md5: 8b32c5ef540b6afe23ea8e75dd400fbb - sha256: 8e69b65ffdc0d71f5d924c34d8e45bb2ca169573db29ede1844a46a2c8e3a5d0 + md5: 277aff70bb1def188c9c016ba4564e23 + sha256: 0c2f971f86211f2b6db431de9d8ab4c9e38eed5422bd06f93cd8be3cbb882a2c manager: conda name: openapi-schema-validator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.4.3-pyhd8ed1ab_0.conda - version: 0.4.3 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.2.3-pyhd8ed1ab_0.tar.bz2 + version: 0.2.3 - category: main dependencies: alsa-lib: '>=1.2.8,<1.2.9.0a0' @@ -4846,14 +4571,14 @@ package: pynacl: '>=1.5' python: '>=3.6' hash: - md5: 9159272243591905b0766ae53e942218 - sha256: 98728c9e3ec10c198154a5c8c0cec51eea76ecbd4744618449725d166c050fcb + md5: 748d328d93daa18c35220e251b610b25 + sha256: 35d35d9eea83058068d23213976d3d990a87692cd0fb52104c8cd7eedda5b555 manager: conda name: paramiko optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.0.0-pyhd8ed1ab_0.conda - version: 3.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.1.0-pyhd8ed1ab_0.conda + version: 3.1.0 - category: main dependencies: cryptography: '>=38.0.0,<40' @@ -4935,14 +4660,14 @@ package: platformdirs: <4,>=2.4 python: '>=3.7' hash: - md5: a4c92707c28aafc95208c747db80fd3f - sha256: 0c074440b5aca612c5ee24d516845583fbad82bf3f349322d9c9fdf139cd0edd + md5: cb9a711f7c9f3074fe522e5a34481e60 + sha256: 28540cdda9279d7daeb8f2deec6f1128869ba90742a966e488b692e8083c5349 manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.20.0-pyhd8ed1ab_0.conda - version: 20.20.0 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.21.0-pyhd8ed1ab_0.conda + version: 20.21.0 - category: main dependencies: conda-package-streaming: '>=0.7.0' @@ -5026,22 +4751,20 @@ package: version: 2.54.4 - category: main dependencies: - importlib_resources: '>=5.8.0,<6.0.0' - jsonschema: '>=4.0.0,<5.0.0' - jsonschema-spec: '>=0.1.1,<0.2.0' - lazy-object-proxy: '>=1.7.1,<2.0.0' - openapi-schema-validator: '>=0.4.2,<0.5' + jsonschema: '>=3.2.0,<5.0.0' + openapi-schema-validator: '>=0.2.0,<0.3.0' python: '>=3.7' pyyaml: '>=5.1' + setuptools: '' hash: - md5: 243b7dc9b3e129a2e7d5f2ca690f337c - sha256: 3053d96adb90a7dd6002c1151531485d9973a94050139a233701c3c25f94e0ea + md5: 5ff3ff67d18fd4938c4ae38c3baf21bb + sha256: 11f24d36001aaba0a7197ff7b9a07ab943d05f969b13e5a9c4ffec13eca19cd0 manager: conda name: openapi-spec-validator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.5.5-pyhd8ed1ab_0.conda - version: 0.5.5 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.4.0-pyhd8ed1ab_1.tar.bz2 + version: 0.4.0 - category: main dependencies: cfgv: '>=2.0.0' @@ -5083,14 +4806,14 @@ package: pysocks: '>=1.5.6,<2.0,!=1.5.7' python: <4.0 hash: - md5: 01f33ad2e0aaf6b5ba4add50dad5ad29 - sha256: f2f09c44e47946ce631dbc9a8a79bb463ac0f4122aaafdbcc51f200a1e420ca6 + md5: 27db656619a55d727eaf5a6ece3d2fd6 + sha256: 213bdf6c3a5d721fa83b45d527d3ecd340f9547c0d6bbd0b8d9d746ec9a1fb4b manager: conda name: urllib3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.14-pyhd8ed1ab_0.conda - version: 1.26.14 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda + version: 1.26.15 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -5098,14 +4821,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 7aa03b260e0e7803fafc414707cac996 - sha256: 9c3f2b48b8b69e436f80c4b5bd716ba4410ea1fe5f851406916e43f3feca05df + md5: f5f163a412ecc6be50ef913cf3de6ad6 + sha256: 1172449dfba0f4bba3adb2a0c9878878fdf7c4cc22c0f6c3ebbc42d3b11bfda4 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.88-pyhd8ed1ab_0.conda - version: 1.29.88 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.90-pyhd8ed1ab_0.conda + version: 1.29.90 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5278,19 +5001,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 version: 0.20.1 -- category: main - dependencies: - python: '' - requests: '>=2.0.1,<=3.0.0' - hash: - md5: 402668adee8fcba9a9c265cdc2a88f5a - sha256: 1f2f3329127844be226bdc9bd9922d84a8767ae208d4a650c3ba655c84cb1e1c - manager: conda - name: requests-toolbelt - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-toolbelt-0.9.1-py_0.tar.bz2 - version: 0.9.1 - category: main dependencies: python: '>=3.7' @@ -5349,7 +5059,7 @@ package: version: 5.1.1 - category: main dependencies: - botocore: 1.29.88 + botocore: 1.29.90 colorama: '>=0.2.5,<0.4.5' docutils: '>=0.10,<0.17' python: '>=3.10,<3.11.0a0' @@ -5358,29 +5068,29 @@ package: rsa: '>=3.1.2,<4.8' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 462e28bc8d49e442e5c0af990ebffdfe - sha256: 06d6dc5d6a9e66b4f9488bb2dd039017d28077a6a52342bd0570a29150d3c919 + md5: f22d497dccdfef2df007457017d9caf2 + sha256: 564d3ad709000c3b043c68e42e0614732c34ad6cd94179ba5162109df800d6e3 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.88-py310hff52083_0.conda - version: 1.27.88 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.90-py310hff52083_0.conda + version: 1.27.90 - category: main dependencies: - botocore: '>=1.29.88,<1.30.0' + botocore: '>=1.29.90,<1.30.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 6d9d3d9ed7d005bf4180948445cf15a7 - sha256: f073885ff0739d25e35d62aa202f44df59fa75beb95a247b0f041c4973964c4b + md5: a57ff13af4774f422569fe6630d73c08 + sha256: 045c5d6441b6b6790d0e9a826bee129b6f6c14ce65e8c50556b8a109a84d9912 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.88-pyhd8ed1ab_0.conda - version: 1.26.88 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.90-pyhd8ed1ab_0.conda + version: 1.26.90 - category: main dependencies: cachecontrol: 0.12.11 pyhd8ed1ab_1 @@ -5441,37 +5151,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/msal_extensions-1.0.0-pyhd8ed1ab_0.tar.bz2 version: 1.0.0 -- category: main - dependencies: - cachecontrol: '>=0.12.9,<0.13.0' - cachy: '>=0.3.0,<0.4.0' - cleo: '>=0.8.1,<0.9.0' - clikit: '>=0.6.2,<0.7.0' - crashtest: '>=0.3.0,<0.4.0' - html5lib: '>=1.0,<2.0' - keyring: '>=21.2.0' - lockfile: '>=0.9' - packaging: '>=20.4,<21.0' - pexpect: '>=4.7.0,<5.0.0' - pkginfo: '>=1.4,<2.0' - poetry-core: '>=1.0.7,<1.1.0' - ptyprocess: '>=0.5' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - requests: '>=2.18,<3.0' - requests-toolbelt: '>=0.9.1,<0.10.0' - shellingham: '>=1.1,<2.0' - tomlkit: '>=0.7.0,<1.0.0' - virtualenv: '>=20.0.26,<21.0.0' - hash: - md5: 0685495d547bc110b90852ad186dc8a1 - sha256: b2ae9a17f7f35b0bf422a15c3ac54766170dfbb78af5ecc77aa70d057cc13b48 - manager: conda - name: poetry - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/poetry-1.1.15-py39hf3d152e_0.tar.bz2 - version: 1.1.15 - category: main dependencies: livereload: '>=2.3.0' @@ -5489,33 +5168,31 @@ package: - category: main dependencies: python: '>=2.7' - setuptools: '' - sphinx: '' + sphinx: '>=1.8' hash: - md5: 1951ebeb88189bf6d6d52039c0aa7776 - sha256: bd197a9d339d7cf9e5a563da5a4f6c62b668714e5c64a0ed5af09b008b833da2 + md5: 914897066d5873acfb13e75705276ad1 + sha256: 2e5f16a2d58f9a31443ffbb8ce3852cfccf533a6349045828cd2e994ef0679ca manager: conda name: sphinxcontrib-jquery optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-2.0.0-pyhd8ed1ab_0.conda - version: 2.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + version: '4.1' - category: main dependencies: - boto3: '>=1.19.5,<2' - jsonschema: '>=3.2,<5' - pydantic: ~=1.10.2 - python: '>=3.7' - typing_extensions: ~=4.4.0 + boto3: ~=1.5 + jsonschema: ~=3.2 + python: '>=3.6' + six: ~=1.15 hash: - md5: 1136b4bb3893069daeb272a3d6aecd7b - sha256: 9d9316f995fa2aedd97a8495b1a8b87265d3d8fc0771c8a0e51da7c3c1a0571c + md5: 6a8ad721f4edea85a40070c78f379dd4 + sha256: d9b2ff5fdf1e8de7cf80f2a14a7cb76c65c0bae18a2fe51700e6ed3c71fdb5b5 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.60.1-pyhd8ed1ab_0.conda - version: 1.60.1 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.55.0-pyhd8ed1ab_0.conda + version: 1.55.0 - category: main dependencies: azure-core: '>=1.11.0,<2.0.0' @@ -5539,14 +5216,14 @@ package: python: '' typing_extensions: '' hash: - md5: 0665225dcc452177ebf284917328c4c1 - sha256: b03ab85abbac40c456ae8447d8a03345f54a6c7690efc1e1cf687db0ace600b8 + md5: 72b6b21dfad72737aab3d4988b51244f + sha256: 77179ed8be45e06e010dc0143bf56201aa028ba59d573e4216be8c1a49ff372b manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.88-pyhd8ed1ab_0.conda - version: 1.26.88 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.90-pyhd8ed1ab_0.conda + version: 1.26.90 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5687,74 +5364,43 @@ package: werkzeug: <2.2.0,>=0.5 xmltodict: '' hash: - md5: 24a19f3ea233ebd0cc0b8e6e0bc5df58 - sha256: 55e3f4fd163518afd72e926d88011cc47933779c97523b4d64b3680f99bd787b + md5: 7b8eaea28d5c08c8539c3b35a07fe3d1 + sha256: 47f8f38a9eff042ebd7754fa6c36739021c0e6cdca1848cc4b0138cfc4043ace manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.3-pyhd8ed1ab_0.conda - version: 4.1.3 -- dependencies: {} - hash: - sha256: ae88eca3024bb34bb3430f964beab71226e761f51b912de5133470b649d82344 - manager: pip - name: bcrypt - platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/aa/48/fd2b197a9741fa790ba0b88a9b10b5e88e62ff5cf3e1bc96d8354d7ce613/bcrypt-4.0.1-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 4.0.1 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.4-pyhd8ed1ab_0.conda + version: 4.1.4 - category: main dependencies: {} hash: - sha256: 122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62 + sha256: c41cfb1e99ba5d341fbcc5308836e7d7c9786d302f995b2c271ce2144dece9eb manager: pip name: mock optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/5c/03/b7e605db4a57c0f6fba744b11ef3ddf4ddebcada35022927a2b5fc623fdf/mock-4.0.3-py3-none-any.whl - version: 4.0.3 -- category: main - dependencies: {} - hash: - sha256: 9967365f2037ac8fd43ff678ad1b72c82b184b2498440579d5cfae9d63e5b0f9 - manager: pip - name: mypy-boto3-ec2 - optional: false - platform: linux-64 - url: https://files.pythonhosted.org/packages/a4/60/815ee785b017d49e09f42175e791a3a3495293b0dbce7d18c74f43a1e8a4/mypy_boto3_ec2-1.21.9-py3-none-any.whl - version: 1.21.9 -- dependencies: {} - hash: - sha256: 0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398 - manager: pip - name: numpy - platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/3d/17/2cc40e1ed44f37b0bab7d62e0c6ba88362da23f48e52833ffdd1b9dfc220/numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 1.24.1 + url: https://files.pythonhosted.org/packages/e6/88/8a05e7ad0bb823246b2add3d2e97f990c41c71a40762c8db77a4bd78eedf/mock-5.0.1-py3-none-any.whl + version: 5.0.1 - dependencies: {} hash: sha256: f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 manager: pip name: pyyaml platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl version: '6.0' - category: main dependencies: six: '*' hash: - sha256: e3305297c744ae53ffa032c45dc347286165e4ffce6875dc662b205db0623d86 + sha256: 6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c manager: pip name: asttokens optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/2d/1b/fdbdf82b86e07ca90985740ac160a1dd4ab09cb81071ec12d71c701e1138/asttokens-2.0.8-py2.py3-none-any.whl - version: 2.0.8 + url: https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl + version: 2.2.1 - category: main dependencies: numpy: '*' @@ -5764,7 +5410,6 @@ package: name: gdspy optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/1d/e4/97b8add92fbec2a9890ad4777272e9a9e4d7a0ceeac42b7e1febe94f0e86/gdspy-1.4.zip version: '1.4' - category: main @@ -5777,7 +5422,6 @@ package: name: paramiko-ng optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/9f/53/1ac75eab589149b1e02e38185ecebf09e1b805fc3fdeadbc16d1a2b7d208/paramiko_ng-2.8.10-py2.py3-none-any.whl version: 2.8.10 - dependencies: @@ -5787,7 +5431,6 @@ package: manager: pip name: ruamel.yaml platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/9e/cb/938214ac358fbef7058343b3765c79a1b7ed0c366f7f992ce7ff38335652/ruamel.yaml-0.17.21-py3-none-any.whl version: 0.17.21 - category: main @@ -5795,14 +5438,13 @@ package: mock: '*' six: '*' hash: - sha256: 34ae88c846046742ef074036bf311dc90ab152b7bc09c342b281cebf676727a2 + sha256: c8fc6fabc0e7f6984eeabb942540e45646e5bef0bb99fe59e02da634e4d4b9ca manager: pip name: sure optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/c7/ee/043531858afab5f312ca02867de51189c0c1dd76ba652f1d95ffa13d07f7/sure-2.0.0.tar.gz - version: 2.0.0 + url: https://files.pythonhosted.org/packages/dd/ae/eb28ee3b6768e51cb938abcf521cb678217203f33385a2df54d3f23331c5/sure-2.0.1.tar.gz + version: 2.0.1 - category: main dependencies: paramiko-ng: '*' @@ -5813,7 +5455,6 @@ package: name: fab-classic optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/6b/0f/efc537eebfd2a2c470250c0ac8bd8a05ffc13d95a7fb22021367890d7c46/fab_classic-1.19.2-py2.py3-none-any.whl version: 1.19.2 - category: main @@ -5824,14 +5465,13 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: f476c58c84d01bda7a642b09514a4ecd798503fdd47fe466b83a7945d44fcb93 + sha256: 1e4b942c42a2292f2e6140fc8df51edc8fd5f8a5c7141e471ecb1d6676fe0bb6 manager: pip name: hammer-vlsi optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/85/0f/7fcab088a5e2780d165bbea5ea3974b0f2286ddc98499e98aa29609bd0ee/hammer_vlsi-1.0.1-py3-none-any.whl - version: 1.0.1 + url: https://files.pythonhosted.org/packages/86/15/6643fe3965aabde680eab7f64eef1e3967b516640c756858cd246dd0b427/hammer_vlsi-1.0.5-py3-none-any.whl + version: 1.0.5 - category: main dependencies: asttokens: '>=2,<3' @@ -5842,7 +5482,6 @@ package: name: icontract optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/d8/91/9756e7cf0b155e80bf9a62beffdd1dec4afce43cc6ab7f432f2267c62762/icontract-2.6.2-py3-none-any.whl version: 2.6.2 - category: main @@ -5850,12 +5489,11 @@ package: icontract: '>=2.0.1,<3' typing-extensions: '>=3.6.6' hash: - sha256: e5608063e3f6122db255acde636255f9c0da3a8e6b7edd35498b95280ff18961 + sha256: a70437fea7bca647c0e98161e1006ef49970267999c571b499760f1c43c6ba10 manager: pip name: pylddwrap optional: false platform: linux-64 - source: null - url: https://files.pythonhosted.org/packages/6b/4e/aebc1cff19a572dbcc7e60d8e74f38fd568ef9185650b39f72fde9ff84d1/pylddwrap-1.2.1.tar.gz - version: 1.2.1 + url: https://files.pythonhosted.org/packages/c9/12/4afd6542c43cd20271f0e53bf0211decc10079a76a41e53c0288025a7b85/pylddwrap-1.2.2.tar.gz + version: 1.2.2 version: 1 diff --git a/conda-reqs/esp-tools.yaml b/conda-reqs/esp-tools.yaml index 9603f747..39b5b3bf 100644 --- a/conda-reqs/esp-tools.yaml +++ b/conda-reqs/esp-tools.yaml @@ -1,5 +1,6 @@ channels: - ucb-bar + - litex-hub - conda-forge - nodefaults diff --git a/conda-reqs/riscv-tools.yaml b/conda-reqs/riscv-tools.yaml index cffe3239..5213b1e1 100644 --- a/conda-reqs/riscv-tools.yaml +++ b/conda-reqs/riscv-tools.yaml @@ -1,5 +1,6 @@ channels: - ucb-bar + - litex-hub - conda-forge - nodefaults diff --git a/docs/VLSI/ASAP7-Tutorial.rst b/docs/VLSI/ASAP7-Tutorial.rst index ddeda299..5544a4ae 100644 --- a/docs/VLSI/ASAP7-Tutorial.rst +++ b/docs/VLSI/ASAP7-Tutorial.rst @@ -126,9 +126,9 @@ To run DRC & LVS, and view the results in Calibre: .. code-block:: shell make drc CONFIG=TinyRocketConfig - ./build/drc-rundir/generated-scripts/view-drc + ./build/chipyard.TestHarness.TinyRocketConfig-ChipTop/drc-rundir/generated-scripts/view-drc make lvs CONFIG=TinyRocketConfig - ./build/lvs-rundir/generated-scripts/view-lvs + ./build/chipyard.TestHarness.TinyRocketConfig-ChipTop/lvs-rundir/generated-scripts/view-lvs Some DRC errors are expected from this PDK, as explained in the `ASAP7 plugin readme `__. Furthermore, the dummy SRAMs that are provided in this tutorial and PDK do not have any geometry inside, so will certainly cause DRC errors. diff --git a/docs/VLSI/Sky130-Commercial-Tutorial.rst b/docs/VLSI/Sky130-Commercial-Tutorial.rst index 8cbdd629..b6b28338 100644 --- a/docs/VLSI/Sky130-Commercial-Tutorial.rst +++ b/docs/VLSI/Sky130-Commercial-Tutorial.rst @@ -1,7 +1,7 @@ .. _sky130-commercial-tutorial: -Sky130 Tutorial -=============== +Sky130 Commercial Tutorial +========================== The ``vlsi`` folder of this repository contains an example Hammer flow with the TinyRocketConfig from Chipyard. This example tutorial uses the built-in Sky130 technology plugin and requires access to the included Cadence and Mentor tool plugin submodules. Cadence is necessary for synthesis & place-and-route, while Mentor is needed for DRC & LVS. Project Structure @@ -47,7 +47,23 @@ Prerequisites * Python 3.9+ * Genus, Innovus, Voltus, VCS, and Calibre licenses -* Sky130 PDK, install using `these directions `__ +* Sky130A PDK, install `using conda `__ or `these directions `__ +* `Sram22 Sky130 SRAM macros `__ + + * These SRAM macros were generated using the `Sram22 SRAM generator `__ (still very heavily under development) + +Quick Prerequisite Setup +^^^^^^^^^^^^^^^^^^^^^^^^ +As of recently, the Sky130A PDK may be installed via conda. +The prerequisite setup for this tutorial may eventually be scripted, but for now the directions to set them up are below. + +.. code-block:: shell + + # 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 + git clone https://github.com/rahulk29/sram22_sky130_macros ~/sram22_sky130_macros + Initial Setup ------------- @@ -59,6 +75,38 @@ In the Chipyard root, ensure that you have the Chipyard conda environment activa to pull and install the plugin submodules. Note that for technologies other than ``sky130`` or ``asap7``, the tech submodule must be added in the ``vlsi`` folder first. +Now navigate to the ``vlsi`` directory. The remainder of the tutorial will assume you are in this directory. +We will summarize a few files in this directory that will be important for the rest of the tutorial. + +.. code-block:: shell + + cd ~chipyard/vlsi + +example-vlsi-sky130 +^^^^^^^^^^^^^^^^^^^ +This is the entry script with placeholders for hooks. In the ``ExampleDriver`` class, a list of hooks is passed in the ``get_extra_par_hooks``. Hooks are additional snippets of python and TCL (via ``x.append()``) to extend the Hammer APIs. Hooks can be inserted using the ``make_pre/post/replacement_hook`` methods as shown in this example. Refer to the Hammer documentation on hooks for a detailed description of how these are injected into the VLSI flow. + + +example-sky130.yml +^^^^^^^^^^^^^^^^^^ +This contains the Hammer configuration for this example project. Example clock constraints, power straps definitions, placement constraints, and pin constraints are given. Additional configuration for the extra libraries and tools are at the bottom. + +Add the following YAML keys to the top of this file to specify the location of the Sky130A PDK and SRAM macros. + +.. code-block:: yaml + + # all ~ should be replaced with absolute paths to these directories + # technology paths + technology.sky130.sky130A: ~/.conda-sky130/share/pdk/sky130A + technology.sky130.sram22_sky130_macros: ~/sram22_sky130_macros + + +example-tools.yml +^^^^^^^^^^^^^^^^^ +This contains the Hammer configuration for a commercial tool flow. +It selects tools for synthesis (Cadence Genus), place and route (Cadence Innovus), DRC and LVS (Mentor Calibre). + + Building the Design -------------------- To elaborate the ``TinyRocketConfig`` and set up all prerequisites for the build system to push the design and SRAM macros through the flow: @@ -71,12 +119,21 @@ The command ``make buildfile`` generates a set of Make targets in ``build/hammer It needs to be re-run if environment variables are changed. It is recommended that you edit these variables directly in the Makefile rather than exporting them to your shell environment. +The ``buildfile`` make target has dependencies on both (1) the Verilog that is elaborated from all Chisel sources +and (2) the mapping of memory instances in the design to SRAM macros; +all files related to these two steps reside in the ``generated-src/chipyard.TestHarness.TinyRocketConfig-ChipTop`` directory. +Note that the files in ``generated-src`` vary for each tool/technology flow. +This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows +(due to the ``ENABLE_YOSYS_FLOW`` flag present for the OpenROAD flow), so these flows should be run in separate +chipyard installations. If the wrong sources are generated, simply run ``make buildfile -B`` to rebuild all targets correctly. + + For the purpose of brevity, in this tutorial we will set the Make variable ``tutorial=sky130-commercial``, which will cause additional variables to be set in ``tutorial.mk``, a few of which are summarized as follows: * ``CONFIG=TinyRocketConfig`` selects the target generator config in the same manner as the rest of the Chipyard framework. This elaborates a stripped-down Rocket Chip in the interest of minimizing tool runtime. * ``tech_name=sky130`` sets a few more necessary paths in the ``Makefile``, such as the appropriate Hammer plugin -* ``TOOLS_CONF`` and ``TECH_CONF`` select the approproate YAML configuration files, ``example-tools.yml`` and ``example-sky130.yml``, which are described below +* ``TOOLS_CONF`` and ``TECH_CONF`` select the approproate YAML configuration files, ``example-tools.yml`` and ``example-sky130.yml``, which are described above * ``DESIGN_CONF`` and ``EXTRA_CONFS`` allow for additonal design-specific overrides of the Hammer IR in ``example-sky130.yml`` * ``VLSI_OBJ_DIR=build-sky130-commercial`` gives the build directory a unique name to allow running multiple flows in the same repo. Note that for the rest of the tutorial we will still refer to this directory in file paths as ``build``, again for brevity. * ``VLSI_TOP`` is by default ``ChipTop``, which is the name of the top-level Verilog module generated in the Chipyard SoC configs. By instead setting ``VLSI_TOP=Rocket``, we can use the Rocket core as the top-level module for the VLSI flow, which consists only of a single RISC-V core (and no caches, peripherals, buses, etc). This is useful to run through this tutorial quickly, and does not rely on any SRAMs. @@ -84,24 +141,6 @@ which will cause additional variables to be set in ``tutorial.mk``, a few of whi Running the VLSI Flow --------------------- -example-vlsi-sky130 -^^^^^^^^^^^^^^^^^^^ -This is the entry script with placeholders for hooks. In the ``ExampleDriver`` class, a list of hooks is passed in the ``get_extra_par_hooks``. Hooks are additional snippets of python and TCL (via ``x.append()``) to extend the Hammer APIs. Hooks can be inserted using the ``make_pre/post/replacement_hook`` methods as shown in this example. Refer to the Hammer documentation on hooks for a detailed description of how these are injected into the VLSI flow. - - -example-sky130.yml -^^^^^^^^^^^^^^^^^^ -This contains the Hammer configuration for this example project. Example clock constraints, power straps definitions, placement constraints, and pin constraints are given. Additional configuration for the extra libraries and tools are at the bottom. - -First, set ``technology.sky130.sky130A/sky130_nda/openram_lib`` to the absolute path of the respective directories containing the Sky130 PDK and SRAM files. See the -`Sky130 Hammer plugin README `__ -for details about the PDK setup. - -example-tools.yml -^^^^^^^^^^^^^^^^^ -This contains the Hammer configuration for a commercial tool flow. -It selects tools for synthesis (Cadence Genus), place and route (Cadence Innovus), DRC and LVS (Mentor Calibre). - Synthesis ^^^^^^^^^ .. code-block:: shell @@ -160,3 +199,20 @@ Post-P&R power and rail (IR drop) analysis is supported with Voltus: If you append the ``BINARY`` variable to the command, it will use the activity file generated from a ``sim--debug`` run and report dynamic power & IR drop from the toggles encoded in the waveform. To bypass gate-level simulation, you will need to run the power tool manually (see the generated commands in the generated ``hammer.d`` buildfile). Static and active (vectorless) power & IR drop will be reported. + + +VLSI Flow Control +^^^^^^^^^^^^^^^^^ +Firt, refer to the :ref:`VLSI/Hammer:VLSI Flow Control` documentation. The below examples use the ``redo-par`` Make target to re-run only place-and-route. ``redo-`` may be prepended to any of the VLSI flow actions to re-run only that action. + +.. code-block:: shell + + # the following two statements are equivalent because the + # extraction step immediately precedes the write_design step + make redo-par HAMMER_EXTRA_ARGS="--start_after_step extraction" + make redo-par HAMMER_EXTRA_ARGS="--start_before_step write_design" + + # example of re-running only floorplanning to test out a new floorplan configuration + # the "-p file.yml" causes file.yml to override any previous yaml/json configurations + make redo-par \ + HAMMER_EXTRA_ARGS="--only_step floorplan_design -p example-designs/sky130-openroad.yml" diff --git a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst index 4518e853..882429d7 100644 --- a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst +++ b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst @@ -20,7 +20,7 @@ This example gives a suggested file structure and build system. The ``vlsi/`` fo * ``env.yml`` - * A template file for tool environment configuration. Fill in the install and license server paths for your environment. For SLICE and BWRC affiliates, example environment configs are found `here `__. + * This file is not used in this tutorial, but is required for the commercial tool flow. A template file for tool environment configuration. Fill in the install and license server paths for your environment. For SLICE and BWRC affiliates, example environment configs are found `here `__. * ``example-vlsi-sky130`` @@ -28,7 +28,7 @@ This example gives a suggested file structure and build system. The ``vlsi/`` fo * ``example-sky130.yml``, ``example-openroad.yml``, ``example-designs/sky130-openroad.yml`` - * Hammer IR for this tutorial. For SLICE and BWRC affiliates, an example ASAP7 config is found `here `__. + * Hammer IR for this tutorial. For SLICE and BWRC affiliates, an example Sky130 config is found `here `__. * ``example-design.yml``, ``example-asap7.yml``, ``example-tech.yml`` @@ -48,12 +48,35 @@ Prerequisites * Python 3.9+ * OpenROAD flow tools: - * Yosys (synthesis), install `from source `__ or `using conda `__ - * OpenROAD (place-and-route), install `from source `__ - * Magic (DRC), install `from source `__ - * NetGen (LVS), install `from source `__ or `using conda `__ + * Yosys (synthesis), install `using conda `__ or `from source `__ + * OpenROAD (place-and-route), install `using conda `__ (note that GUI is disabled in conda package) or `from source `__ + * KLayout (DEF to GDSII conversion), install `using conda `__ or `from source `__ + * Magic (DRC), , install `using conda `__ or `from source `__ + * NetGen (LVS), , install `using conda `__ or `from source `__ -* Sky130 PDK, install using `these directions `__ +* Sky130A PDK, install `using conda `__ or `these directions `__ +* `Sram22 Sky130 SRAM macros `__ + + * These SRAM macros were generated using the `Sram22 SRAM generator `__ (still very heavily under development) + +Quick Prerequisite Setup +^^^^^^^^^^^^^^^^^^^^^^^^ +As of recently, most of the prerequisites of this tutorial may now be installed as conda packages. +The prerequisite setup for this tutorial may eventually be scripted, but for now the directions to set them up are below. +Note that we create a new conda environment for each tool because some of them have conflicting dependencies. + +.. code-block:: shell + + # 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 + git clone https://github.com/rahulk29/sram22_sky130_macros ~/sram22_sky130_macros + + # install all VLSI tools + conda create -c litex-hub --prefix ~/.conda-yosys yosys=0.27_4_gb58664d44 + conda create -c litex-hub --prefix ~/.conda-openroad openroad=2.0_7070_g0264023b6 + 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 Initial Setup ------------- @@ -66,31 +89,13 @@ In the Chipyard root, ensure that you have the Chipyard conda environment activa to pull and install the plugin submodules. Note that for technologies other than ``sky130`` or ``asap7``, the tech submodule is cloned in the ``vlsi`` folder, and for the commercial tool flow (set up by omitting the ``openroad`` argument), the tool plugin submodules are cloned into the ``vlsi`` folder. -Building the Design --------------------- -To elaborate the ``TinyRocketConfig`` and set up all prerequisites for the build system to push the design and SRAM macros through the flow: +Now navigate to the ``vlsi`` directory. The remainder of the tutorial will assume you are in this directory. +We will summarize a few files in this directory that will be important for the rest of the tutorial. .. code-block:: shell - make buildfile tutorial=sky130-openroad + cd ~chipyard/vlsi -The command ``make buildfile`` generates a set of Make targets in ``build/hammer.d``. -It needs to be re-run if environment variables are changed. -It is recommended that you edit these variables directly in the Makefile rather than exporting them to your shell environment. - -For the purpose of brevity, in this tutorial we will set the Make variable ``tutorial=sky130-openroad``, -which will cause additional variables to be set in ``tutorial.mk``, a few of which are summarized as follows: - -* ``CONFIG=TinyRocketConfig`` selects the target generator config in the same manner as the rest of the Chipyard framework. This elaborates a stripped-down Rocket Chip in the interest of minimizing tool runtime. -* ``tech_name=sky130`` sets a few more necessary paths in the ``Makefile``, such as the appropriate Hammer plugin -* ``TOOLS_CONF`` and ``TECH_CONF`` select the approproate YAML configuration files, ``example-openroad.yml`` and ``example-sky130.yml``, which are described below -* ``DESIGN_CONF`` and ``EXTRA_CONFS`` allow for additonal design-specific overrides of the Hammer IR in ``example-sky130.yml`` -* ``VLSI_OBJ_DIR=build-sky130-openroad`` gives the build directory a unique name to allow running multiple flows in the same repo. Note that for the rest of the tutorial we will still refer to this directory in file paths as ``build``, again for brevity. -* ``VLSI_TOP`` is by default ``ChipTop``, which is the name of the top-level Verilog module generated in the Chipyard SoC configs. By instead setting ``VLSI_TOP=Rocket``, we can use the Rocket core as the top-level module for the VLSI flow, which consists only of a single RISC-V core (and no caches, peripherals, buses, etc). This is useful to run through this tutorial quickly, and does not rely on any SRAMs. -* ``ENABLE_CUSTOM_FIRRTL_PASS = 1`` is required for synthesis through Yosys. This reverts to the Scala FIRRTL Compiler so that unsupported multidimensional arrays are not generated in the Verilog. - -Running the VLSI Flow ---------------------- example-vlsi-sky130 ^^^^^^^^^^^^^^^^^^^ @@ -101,16 +106,70 @@ example-sky130.yml ^^^^^^^^^^^^^^^^^^ This contains the Hammer configuration for this example project. Example clock constraints, power straps definitions, placement constraints, and pin constraints are given. Additional configuration for the extra libraries and tools are at the bottom. -First, set ``technology.sky130.`` to the absolute path of the respective directories containing the Sky130 PDK and SRAM files. See the -`Sky130 Hammer plugin README `__ -for details about the PDK setup. +Add the following YAML keys to the top of this file to specify the location of the Sky130A PDK and SRAM macros. +.. code-block:: yaml + + # all ~ should be replaced with absolute paths to these directories + # technology paths + technology.sky130.sky130A: ~/.conda-sky130/share/pdk/sky130A + technology.sky130.sram22_sky130_macros: ~/sram22_sky130_macros 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). +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. + +.. code-block:: yaml + + # all ~ should be replaced with absolute paths to these directories + # 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 + drc.magic.magic_bin: ~/.conda-signoff/bin/magic + lvs.netgen.netgen_bin: ~/.conda-signoff/bin/netgen + + +Building the Design +-------------------- + +To elaborate the ``TinyRocketConfig`` and set up all prerequisites for the build system to push the design and SRAM macros through the flow: + +.. code-block:: shell + + make buildfile tutorial=sky130-openroad + +The command ``make buildfile`` generates a set of Make targets in ``build/hammer.d``. +It needs to be re-run if environment variables are changed. +It is recommended that you edit these variables directly in the Makefile rather than exporting them to your shell environment. + +The ``buildfile`` make target has dependencies on both (1) the Verilog that is elaborated from all Chisel sources +and (2) the mapping of memory instances in the design to SRAM macros; +all files related to these two steps reside in the ``generated-src/chipyard.TestHarness.TinyRocketConfig-ChipTop`` directory. +Note that the files in ``generated-src`` vary for each tool/technology flow. +This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows +(due to the ``ENABLE_YOSYS_FLOW`` flag, explained below), so these flows should be run in separate +chipyard installations. If the wrong sources are generated, simply run ``make buildfile -B`` to rebuild all targets correctly. + + +For the sake of brevity, in this tutorial we will set the Make variable ``tutorial=sky130-openroad``, +which will cause additional variables to be set in ``tutorial.mk``, a few of which are summarized as follows: + +* ``CONFIG=TinyRocketConfig`` selects the target generator config in the same manner as the rest of the Chipyard framework. This elaborates a stripped-down Rocket Chip in the interest of minimizing tool runtime. +* ``tech_name=sky130`` sets a few more necessary paths in the ``Makefile``, such as the appropriate Hammer plugin +* ``TOOLS_CONF`` and ``TECH_CONF`` select the approproate YAML configuration files, ``example-openroad.yml`` and ``example-sky130.yml``, which are described above +* ``DESIGN_CONF`` and ``EXTRA_CONFS`` allow for additonal design-specific overrides of the Hammer IR in ``example-sky130.yml`` +* ``VLSI_OBJ_DIR=build-sky130-openroad`` gives the build directory a unique name to allow running multiple flows in the same repo. Note that for the rest of the tutorial we will still refer to this directory in file paths as ``build``, again for brevity. +* ``VLSI_TOP`` is by default ``ChipTop``, which is the name of the top-level Verilog module generated in the Chipyard SoC configs. By instead setting ``VLSI_TOP=Rocket``, we can use the Rocket core as the top-level module for the VLSI flow, which consists only of a single RISC-V core (and no caches, peripherals, buses, etc). This is useful to run through this tutorial quickly, and does not rely on any SRAMs. +* ``ENABLE_YOSYS_FLOW = 1`` is required for synthesis through Yosys. This reverts to the Scala FIRRTL Compiler so that unsupported multidimensional arrays are not generated in the Verilog. + +Running the VLSI Flow +--------------------- + Synthesis ^^^^^^^^^ @@ -128,38 +187,79 @@ Place-and-Route make par tutorial=sky130-openroad +Note that sometimes OpenROAD freezes on commands following the ``detailed_route`` step, +so for now we recomment running place-and-route until the ``extraction`` step, +then re-starting the flow at this step. See the :ref:`VLSI/Sky130-OpenROAD-Tutorial:VLSI Flow Control` documentation +below for how to break up the flow into these steps. + After completion, the final database can be opened in an interactive OpenROAD session. +Hammer generates a convenient script to launch these sessions .. code-block:: shell - cd ./build/par-rundir + cd ./build/chipyard.TestHarness.TinyRocketConfig-ChipTop/par-rundir ./generated-scripts/open_chip +Note that the conda OpenROAD package was compiled with the GUI disabled, so in order to view the layout, +you will need to install OpenROAD from source. Below is the post-PnR layout for the TinyRocketConfig in Sky130 generated by OpenROAD. .. image:: ../_static/images/vlsi-openroad-par-tinyrocketconfig.png -Intermediate databases are written in ``build/par-rundir`` between each step of the ``par`` action. These databases can be restored in an interactive OpenROAD session as desired for debugging purposes. +Intermediate databases are written in ``build/par-rundir`` between each step of the ``par`` action, +These databases can be restored using the same ``open_chip`` script for debugging purposes. .. code-block:: shell - openroad # launch OpenROAD tool - openroad> read_db pre_global_route + cd build/chipyard.TestHarness.TinyRocketConfig-ChipTop/par-rundir + ./generated_scripts/open_chip -h + " + Usage: ./generated-scripts/open_chip [-t] [openroad_db_name] -.. Timing reports are found in ``build/par-rundir/timingReports``. They are gzipped text files. + Options + openroad_db_name : Name of database to load (default=latest) + -t, --timing : Load timing info (default=disabled because of slow load time) + -h, --help : Display this message + " + # load pre-global route database without timing information + ./generated_scripts/open_chip pre_global_route + + # load post-clock tree database with timing inforamtion + ./generated_scripts/open_chip -t post_clock_tree + +Various reports, including timing reports, are found in ``build/par-rundir/reports``. + +See the `OpenROAD tool plugin `__ for the full list of OpenROAD tool steps and their implementations. DRC & LVS ^^^^^^^^^ -To run 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 `__ +and `Netgen tool plugin `__. + +To run DRC & LVS in Magic & Netgen, respectively: .. code-block:: shell make drc tutorial=sky130-openroad + ./build/chipyard.TestHarness.TinyRocketConfig-ChipTop/drc-rundir/generated-scripts/view_drc make lvs tutorial=sky130-openroad + ./build/chipyard.TestHarness.TinyRocketConfig-ChipTop/lvs-rundir/generated-scripts/view_lvs -Some DRC errors are expected from this PDK, especially with regards to the SRAMs, as explained in the -`Sky130 Hammer plugin README `__. +Note that in ``sky130-openroad.yml`` we have set the following YAML keys: + +.. code-block:: yaml + + drc.magic.generate_only: true + lvs.netgen.generate_only: true + +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. VLSI Flow Control @@ -168,15 +268,20 @@ Firt, refer to the :ref:`VLSI/Hammer:VLSI Flow Control` documentation. The below .. code-block:: shell - # the following two statements are equivalent because the - # extraction step immediately precedes the write_design step + # the following two commands run the entire flow, using the pre_extraction + # database to save and reload a checkpoint of the design + make par HAMMER_EXTRA_ARGS="--stop_after_step extraction" + make redo-par HAMMER_EXTRA_ARGS="--start_before_step extraction" + + # the following two commands are equivalent because the extraction + # step immediately precedes the write_design step make redo-par HAMMER_EXTRA_ARGS="--start_after_step extraction" make redo-par HAMMER_EXTRA_ARGS="--start_before_step write_design" # example of re-running only floorplanning to test out a new floorplan configuration - make redo-par HAMMER_EXTRA_ARGS="--only_step floorplan_design -p example-sky130.yml" - -See the `OpenROAD tool plugin `__ for the full list of OpenROAD tool steps and their implementations. + # the "-p file.yml" causes file.yml to override any previous yaml/json configurations + make redo-par \ + HAMMER_EXTRA_ARGS="--only_step floorplan_design -p example-designs/sky130-openroad.yml" Documentation ------------- diff --git a/docs/_static/images/vlsi-openroad-par-tinyrocketconfig.png b/docs/_static/images/vlsi-openroad-par-tinyrocketconfig.png index 0d8ce137..2f399e2b 100644 Binary files a/docs/_static/images/vlsi-openroad-par-tinyrocketconfig.png and b/docs/_static/images/vlsi-openroad-par-tinyrocketconfig.png differ diff --git a/vlsi/example-asap7.yml b/vlsi/example-asap7.yml index 8aafe8c0..dbcadab0 100644 --- a/vlsi/example-asap7.yml +++ b/vlsi/example-asap7.yml @@ -37,54 +37,47 @@ vlsi.inputs.placement_constraints: right: 0 top: 0 bottom: 0 - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_0" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_0" type: hardmacro x: 550 y: 25 orientation: "r0" top_layer: "M4" master: "SRAM1RW4096x8" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_1" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_1" type: hardmacro x: 550 y: 270 orientation: "r0" top_layer: "M4" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_2" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_2" type: hardmacro x: 675 y: 25 orientation: "r0" top_layer: "M4" master: "SRAM1RW4096x8" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_3" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_3" type: hardmacro x: 675 y: 270 orientation: "r0" top_layer: "M4" master: "SRAM1RW4096x8" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/frontend/icache/tag_array/tag_array_ext/mem_0_0" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/tag_array_0/tag_array_0_ext/mem_0_0" type: hardmacro x: 125 y: 150 orientation: "my" top_layer: "M4" master: "SRAM1RW64x21" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/frontend/icache/data_arrays_0/data_arrays_0_0_ext/mem_0_0" + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 0 y: 25 orientation: "my" top_layer: "M4" master: "SRAM1RW1024x32" - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_0" - type: hardmacro - x: 0 - y: 260 - orientation: "my" - top_layer: "M4" - master: "SRAM1RW1024x37" # Pin placement constraints vlsi.inputs.pin_mode: generated diff --git a/vlsi/example-designs/sky130-commercial.yml b/vlsi/example-designs/sky130-commercial.yml index 6edca4d6..b2ecfb26 100644 --- a/vlsi/example-designs/sky130-commercial.yml +++ b/vlsi/example-designs/sky130-commercial.yml @@ -2,149 +2,18 @@ # Specify clock signals vlsi.inputs.clocks: [ - {name: "clock_clock", period: "5ns", uncertainty: "1ns"} + {name: "clock_clock", period: "30ns", uncertainty: "2ns"} ] -# Power Straps -par.power_straps_mode: generate -par.generate_power_straps_method: by_tracks -par.blockage_spacing: 40.0 -par.blockage_spacing_top_layer: met4 -par.generate_power_straps_options: - by_tracks: - strap_layers: - - met4 - - met5 - pin_layers: - - met5 - blockage_spacing_met2: 4.0 - blockage_spacing_met4: 2.0 - track_width: 3 - track_width_met5: 1 - track_spacing: 5 - track_start: 10 - track_start_met5: 1 - power_utilization: 0.1 - power_utilization_met4: 0.1 - power_utilization_met5: 0.1 - # Placement Constraints -vlsi.inputs.placement_constraints: - - path: "ChipTop" - type: toplevel - x: 0 - y: 0 - width: 4000 - height: 2500 - margins: - left: 0 - right: 0 - top: 0 - bottom: 0 - - # Place data cache SRAM instances - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_0" - type: hardmacro - x: 50 - y: 100 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_1_0" - type: hardmacro - x: 50 - y: 700 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_2_0" - type: hardmacro - x: 50 - y: 1300 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_3_0" - type: hardmacro - x: 50 - y: 1900 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_4_0" - type: hardmacro - x: 1000 - y: 1900 - orientation: r0 - - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_5_0" - type: hardmacro - x: 1000 - y: 1300 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_6_0" - type: hardmacro - x: 1000 - y: 700 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_7_0" - type: hardmacro - x: 1000 - y: 100 - orientation: r0 - - # Place instruction cache SRAM instances - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/frontend/icache/data_arrays_0/data_arrays_0_0_ext/mem_0_0" - type: hardmacro - x: 3250 - y: 100 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/frontend/icache/data_arrays_0/data_arrays_0_0_ext/mem_1_0" - type: hardmacro - x: 3250 - y: 700 - orientation: r0 - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/frontend/icache/tag_array/tag_array_ext/mem_0_0" - type: hardmacro - x: 3450 - y: 1300 - orientation: r0 - - # Place L2 TLB SRAM instances - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_0" - type: hardmacro - x: 2000 - y: 1300 - orientation: "r0" - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_1" - type: hardmacro - x: 2000 - y: 1900 - orientation: "r0" - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_2" - type: hardmacro - x: 2750 - y: 1300 - orientation: "r0" - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_3" - type: hardmacro - x: 2750 - y: 1900 - orientation: "r0" - - - path: "ChipTop/system/tile_prci_domain/tile_reset_domain/tile/ptw/l2_tlb_ram/l2_tlb_ram_ext/mem_0_4" - type: hardmacro - x: 3460 - y: 1900 - orientation: "r0" - -# Pin placement constraints -vlsi.inputs.pin_mode: generated -vlsi.inputs.pin.generate_mode: semi_auto -vlsi.inputs.pin.assignments: [ - {pins: "*", layers: ["met2", "met4"], side: "bottom"} -] +# If overriding the placement constraints in example-sky130.yml, +# ensure one of the toplevel margin sides corresponding with the power pin metal layers +# is set to 0 so that Innovus actually creates those pins (otherwise LVS will fail). +# For example, in example-sky130.yml we set +# par.generate_power_straps_options.by_tracks.pin_layers: 'met5' # horizontal layer +# therefore we must also set: +# vlsi.inputs.placement_constraints: +# - path: "ChipTop" +# ... +# margins: +# right: 0 # or left: 0 \ No newline at end of file diff --git a/vlsi/example-designs/sky130-openroad-rockettile.yml b/vlsi/example-designs/sky130-openroad-rockettile.yml new file mode 100644 index 00000000..752facfd --- /dev/null +++ b/vlsi/example-designs/sky130-openroad-rockettile.yml @@ -0,0 +1,60 @@ +# Override configurations in ../example-sky130.yml and example-designs + +# Specify clock signals +# Rocket/RocketTile names clock signal "clock" instead of "clock_clock" +vlsi.inputs.clocks: [ + {name: "clock", period: "30ns", uncertainty: "3ns"} +] + +# Placement Constraints +# Placement Constraints +vlsi.inputs.placement_constraints: + - path: "RocketTile" + type: toplevel + x: 0 + y: 0 + width: 4000 + height: 3000 + margins: + left: 10 + right: 0 + top: 10 + bottom: 10 + + # Place SRAM memory instances + # SRAM paths and configurations are slightly different due to ENABLE_YOSYS_FLOW flag + # data cache + - path: "RocketTile/dcache/data/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 50 + orientation: r90 + - path: "RocketTile/dcache/data/data_arrays_0_1/data_arrays_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 450 + orientation: r90 + - path: "RocketTile/dcache/data/data_arrays_0_2/data_arrays_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 850 + orientation: r90 + - path: "RocketTile/dcache/data/data_arrays_0_3/data_arrays_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 1250 + orientation: r90 + + # tag array + - path: "RocketTile/frontend/icache/tag_array_0/tag_array_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 1600 + orientation: r90 + + # instruction cache + - path: "RocketTile/frontend/icache/data_arrays_0_0/data_arrays_0_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 2100 + orientation: r90 diff --git a/vlsi/example-designs/sky130-openroad.yml b/vlsi/example-designs/sky130-openroad.yml index 62c2aca4..b52266b4 100644 --- a/vlsi/example-designs/sky130-openroad.yml +++ b/vlsi/example-designs/sky130-openroad.yml @@ -3,9 +3,42 @@ # Specify clock signals # Relax the clock period for OpenROAD to meet timing vlsi.inputs.clocks: [ - {name: "clock_clock", period: "30ns", uncertainty: "1ns"} + {name: "clock_clock", period: "50ns", uncertainty: "2ns"} ] +# Flow parameters that yield a routable design with reasonable timing +par.openroad: + timing_driven: true # set to false to drastically speed up runs + create_archive_mode: none + + write_reports: true # set to false to slightly speed up runs + + floorplan_mode: generate + + macro_placement.halo: [50, 50] + + global_placement.timing_driven: true + global_placement.routability_driven: true + + global_placement.placement_padding: 6 + detailed_placement.placement_padding: 4 + clock_tree.placement_padding: 2 + clock_tree_resize.placement_padding: 0 + + clock_tree_resize.setup_margin: 0.0 + clock_tree_resize.hold_margin: 0.20 + global_route_resize.hold_margin: 0.60 + clock_tree_resize.hold_max_buffer_percent: 80 + + global_placement.routing_adjustment: 0.5 + global_route.routing_adjustment: 0.3 + global_route_resize.routing_adjustment: 0.2 + +# DRC/LVS configuration +drc.magic.generate_only: true +lvs.netgen.generate_only: true + + # Placement Constraints vlsi.inputs.placement_constraints: - path: "ChipTop" @@ -13,78 +46,47 @@ vlsi.inputs.placement_constraints: x: 0 y: 0 width: 4000 - height: 2500 + height: 3000 margins: left: 10 - right: 10 + right: 0 top: 10 bottom: 10 - # Place data cache SRAM instances - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_0" + # Place SRAM memory instances + # SRAM paths and configurations are slightly different due to ENABLE_YOSYS_FLOW flag + # data cache + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 - y: 100 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_0" + y: 50 + orientation: r90 + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0_1/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 - y: 700 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_0" + y: 450 + orientation: r90 + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0_2/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 - y: 1300 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_0" + y: 850 + orientation: r90 + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0_3/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 - y: 1900 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_4_0" + y: 1250 + orientation: r90 + + # tag array + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/tag_array_0/tag_array_0_ext/mem_0_0" type: hardmacro - x: 1000 - y: 1900 - orientation: r0 + x: 50 + y: 1600 + orientation: r90 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_5_0" + # instruction cache + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/data_arrays_0_0/data_arrays_0_0_0_ext/mem_0_0" type: hardmacro - x: 1000 - y: 1300 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_6_0" - type: hardmacro - x: 1000 - y: 700 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_7_0" - type: hardmacro - x: 1000 - y: 100 - orientation: r0 - - # Place instruction cache SRAM instances - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_0_0" - type: hardmacro - x: 3250 - y: 100 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_1_0" - type: hardmacro - x: 3250 - y: 700 - orientation: r0 - - - path: "ChipTop/system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.tag_array.tag_array_ext.mem_0_0" - type: hardmacro - x: 3450 - y: 1300 - orientation: r0 + x: 50 + y: 2100 + orientation: r90 diff --git a/vlsi/example-sky130.yml b/vlsi/example-sky130.yml index 39a31c01..5481c4a8 100644 --- a/vlsi/example-sky130.yml +++ b/vlsi/example-sky130.yml @@ -7,7 +7,7 @@ vlsi.core.max_threads: 12 # Technology paths technology.sky130: sky130A: "/path/to/sky130A" - openram_lib: "/path/to/sky130_sram_macros" + sram22_sky130_macros: "/path/to/sram22_sky130_macros" # this key is OPTIONAL, no NDA files will be used if it does not point to a valid path sky130_nda: "/path/to/skywater-src-nda" @@ -20,31 +20,55 @@ vlsi.inputs.power_spec_type: "cpf" # Specify clock signals vlsi.inputs.clocks: [ - {name: "clock_clock", period: "10ns", uncertainty: "1ns"} + {name: "clock_clock", period: "20ns", uncertainty: "1ns"} ] # Generate Make include to aid in flow vlsi.core.build_system: make + # Placement Constraints vlsi.inputs.placement_constraints: - path: "ChipTop" type: toplevel x: 0 y: 0 - width: 3500 - height: 2500 + width: 4000 + height: 3000 margins: left: 10 - right: 10 + right: 0 top: 10 bottom: 10 + # Place SRAM memory instances + # data cache + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 50 + orientation: r90 + + # tag array + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/tag_array_0/tag_array_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 1600 + orientation: r90 + + # instruction cache + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" + type: hardmacro + x: 50 + y: 2100 + orientation: r90 + + # Power Straps par.power_straps_mode: generate par.generate_power_straps_method: by_tracks -par.blockage_spacing: 40.0 -par.blockage_spacing_top_layer: met4 +par.blockage_spacing: 2.0 +par.blockage_spacing_top_layer: met3 par.generate_power_straps_options: by_tracks: strap_layers: @@ -63,6 +87,7 @@ par.generate_power_straps_options: power_utilization_met4: 0.1 power_utilization_met5: 0.1 + # Pin placement constraints vlsi.inputs.pin_mode: generated vlsi.inputs.pin.generate_mode: semi_auto @@ -70,5 +95,6 @@ vlsi.inputs.pin.assignments: [ {pins: "*", layers: ["met2", "met4"], side: "bottom"} ] + # SRAM Compiler compiler options vlsi.core.sram_generator_tool: "hammer.technology.sky130.sram_compiler" diff --git a/vlsi/hammer-cadence-plugins b/vlsi/hammer-cadence-plugins index f9e323bd..902657b8 160000 --- a/vlsi/hammer-cadence-plugins +++ b/vlsi/hammer-cadence-plugins @@ -1 +1 @@ -Subproject commit f9e323bd64b8cc79ab810b9761226e9de768f237 +Subproject commit 902657b8bdba7aec12726d6d3c85a2639a4030ad diff --git a/vlsi/tutorial.mk b/vlsi/tutorial.mk index b3d88741..6b970fcb 100644 --- a/vlsi/tutorial.mk +++ b/vlsi/tutorial.mk @@ -1,10 +1,8 @@ ######################################################################################### # makefile variables for Hammer tutorials ######################################################################################### -# tutorial ?= none -tutorial ?= sky130-openroad - -extra ?= +tutorial ?= none +EXTRA_CONFS ?= # TODO: eventually have asap7 commercial/openroad tutorial flavors ifeq ($(tutorial),asap7) @@ -12,7 +10,7 @@ ifeq ($(tutorial),asap7) CONFIG ?= TinyRocketConfig TOOLS_CONF ?= example-tools.yml TECH_CONF ?= example-asap7.yml - INPUT_CONFS ?= $(EXTRA_CONFS) $(TOOLS_CONF) $(TECH_CONF) + DESIGN_CONFS ?= VLSI_OBJ_DIR ?= build-asap7-commercial endif @@ -21,9 +19,9 @@ ifeq ($(tutorial),sky130-commercial) CONFIG ?= TinyRocketConfig TOOLS_CONF ?= example-tools.yml TECH_CONF ?= example-sky130.yml - DESIGN_CONF ?= example-designs/sky130-commercial.yml - EXTRA_CONFS ?= $(if $(filter $(VLSI_TOP),Rocket), example-designs/sky130-rocket.yml, ) - INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONF) $(EXTRA_CONFS) + DESIGN_CONFS ?= example-designs/sky130-commercial.yml \ + $(if $(filter $(VLSI_TOP),Rocket), \ + example-designs/sky130-rocket.yml, ) VLSI_OBJ_DIR ?= build-sky130-commercial endif @@ -32,12 +30,14 @@ ifeq ($(tutorial),sky130-openroad) CONFIG ?= TinyRocketConfig TOOLS_CONF ?= example-openroad.yml TECH_CONF ?= example-sky130.yml - DESIGN_CONF ?= example-designs/sky130-openroad.yml - EXTRA_CONFS ?= $(if $(filter $(VLSI_TOP),Rocket), example-designs/sky130-rocket.yml, ) - INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONF) $(EXTRA_CONFS) + DESIGN_CONFS ?= example-designs/sky130-openroad.yml \ + $(if $(filter $(VLSI_TOP),Rocket), \ + example-designs/sky130-rocket.yml) \ + $(if $(filter $(VLSI_TOP),RocketTile), \ + example-designs/sky130-openroad-rockettile.yml, ) VLSI_OBJ_DIR ?= build-sky130-openroad # Yosys compatibility for CIRCT-generated Verilog, at the expense of elaboration time. ENABLE_YOSYS_FLOW = 1 endif -HAMMER_EXTRA_ARGS ?= -p $(TOOLS_CONF) -p $(TECH_CONF) -p $(DESIGN_CONF) $(extra) +INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS)