Merge branch 'vlsi-tutorial' of https://github.com/ucb-bar/chipyard into openroad

This commit is contained in:
Nayiri Krzysztofowicz
2023-03-12 12:29:07 -07:00
10 changed files with 190 additions and 263 deletions

View File

@@ -107,6 +107,51 @@ 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
export tutorial=sky130-openroad
# TODO: consider setting VLSI_TOP=RocketTile
# 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
echo "" >> example-sky130.yml
echo "# tutorial configs" >> example-sky130.yml
echo "technology.sky130.sky130A: $PWD/.conda-sky130/share/pdk/sky130A" >> example-sky130.yml
echo "technology.sky130.sram22_sky130_macros: $PWD/sram22_sky130_macros" >> example-sky130.yml
# 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 "" >> example-openroad.yml
echo "# tutorial configs" >> example-openroad.yml
echo "synthesis.yosys.yosys_bin: $PWD/.conda-yosys/bin/yosys" >> example-openroad.yml
echo "par.openroad.openroad_bin: $PWD/.conda-openroad/bin/openroad" >> example-openroad.yml
echo "par.openroad.klayout_bin: $PWD/.conda-klayout/bin/klayout" >> example-openroad.yml
echo "drc.magic.magic_bin: $PWD/.conda-signoff/bin/magic" >> example-openroad.yml
echo "lvs.netgen.netgen_bin: $PWD/.conda-signoff/bin/netgen" >> example-openroad.yml
conda config --remove channels litex-hub
conda config --remove channels defaults
make buildfile
make syn
make par
make drc
make lvs
cleanup:
name: cleanup

View File

@@ -103,7 +103,7 @@ dependencies:
# hammer packages
- sty
- pip:
- hammer-vlsi[asap7]==1.0.1
- hammer-vlsi[asap7]==1.0.4
# doc requirements
- sphinx

View File

@@ -21,7 +21,7 @@ metadata:
- url: nodefaults
used_env_vars: []
content_hash:
linux-64: 9bd3b3b16bcfb572bdf13d61fd0396b9b21a5b53c4885e1ab7519a54f016cea2
linux-64: 54c064cc392aed21ebf9caa5c4333f9d4a072c30165d37a56916a3c39dd86eb9
platforms:
- linux-64
sources:
@@ -2466,20 +2466,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'
@@ -2759,18 +2745,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'
@@ -2783,18 +2757,6 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
version: 1.9.6
- category: main
dependencies:
python: '>=3.6'
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.8'
@@ -3226,14 +3188,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'
@@ -3968,19 +3930,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'
@@ -4051,16 +4000,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'
@@ -4283,20 +4232,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'
@@ -4501,14 +4449,14 @@ package:
types-awscrt: ''
typing_extensions: ''
hash:
md5: 1284ea7cf431f599298c3e86922cb6ef
sha256: 949071f4ffaada1a7df890a0eca82507446f427d913272bae109c39f42b03361
md5: 038f7d8f0f0b7cae4aee87bfbd09bd06
sha256: 4c3babde56c86a3d0f83add59002275f8e8fd328acf432377c86ceb82b693131
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.88-pyhd8ed1ab_0.conda
version: 1.29.88
- category: main
dependencies:
clang-format: 15.0.7 default_had23c3d_1
@@ -4580,22 +4528,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'
@@ -4640,19 +4572,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'
@@ -4889,22 +4819,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'
@@ -4946,14 +4874,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'
@@ -5321,20 +5249,19 @@ package:
version: 2.0.0
- 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'
@@ -5506,14 +5433,14 @@ 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
url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.4-pyhd8ed1ab_0.conda
version: 4.1.4
- category: main
dependencies: {}
hash:
@@ -5607,13 +5534,13 @@ package:
pyyaml: '>=6.0,<7.0'
ruamel.yaml: '>=0.17.21,<0.18.0'
hash:
sha256: f476c58c84d01bda7a642b09514a4ecd798503fdd47fe466b83a7945d44fcb93
sha256: 6bcd6cef086b6b6b6ab00822699d436451ef5f8f8460e07cad7c05ab6d05bfcf
manager: pip
name: hammer-vlsi
optional: false
platform: linux-64
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/65/f8/5ec3f1e3c629724fec4613e13c3da9be114b306ae452cd1e0f75eaf694a6/hammer_vlsi-1.0.4-py3-none-any.whl
version: 1.0.4
- category: main
dependencies:
asttokens: '>=2,<3'

View File

@@ -21,7 +21,7 @@ metadata:
- url: nodefaults
used_env_vars: []
content_hash:
linux-64: 3ef38211139adc6c0c849eaed6fd59c2a3c880282f0f47f25fe54bc05c510201
linux-64: 01a33092d9b6501c87e830b4dd22683af0a3c8f5ede87d42d7a079b5c345161b
platforms:
- linux-64
sources:
@@ -2449,20 +2449,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'
@@ -2742,18 +2728,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'
@@ -2766,18 +2740,6 @@ package:
platform: linux-64
url: https://conda.anaconda.org/conda-forge/noarch/pkginfo-1.9.6-pyhd8ed1ab_0.conda
version: 1.9.6
- category: main
dependencies:
python: '>=3.6'
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.8'
@@ -3226,14 +3188,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'
@@ -3968,19 +3930,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'
@@ -4051,16 +4000,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'
@@ -4283,20 +4232,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'
@@ -4501,14 +4449,14 @@ package:
types-awscrt: ''
typing_extensions: ''
hash:
md5: 1284ea7cf431f599298c3e86922cb6ef
sha256: 949071f4ffaada1a7df890a0eca82507446f427d913272bae109c39f42b03361
md5: 038f7d8f0f0b7cae4aee87bfbd09bd06
sha256: 4c3babde56c86a3d0f83add59002275f8e8fd328acf432377c86ceb82b693131
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.88-pyhd8ed1ab_0.conda
version: 1.29.88
- category: main
dependencies:
clang-format: 15.0.7 default_had23c3d_1
@@ -4580,22 +4528,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'
@@ -4640,19 +4572,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'
@@ -4889,22 +4819,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'
@@ -4946,14 +4874,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'
@@ -5321,20 +5249,19 @@ package:
version: 2.0.0
- 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'
@@ -5506,14 +5433,14 @@ 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
url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.4-pyhd8ed1ab_0.conda
version: 4.1.4
- category: main
dependencies: {}
hash:
@@ -5607,13 +5534,13 @@ package:
pyyaml: '>=6.0,<7.0'
ruamel.yaml: '>=0.17.21,<0.18.0'
hash:
sha256: f476c58c84d01bda7a642b09514a4ecd798503fdd47fe466b83a7945d44fcb93
sha256: 6bcd6cef086b6b6b6ab00822699d436451ef5f8f8460e07cad7c05ab6d05bfcf
manager: pip
name: hammer-vlsi
optional: false
platform: linux-64
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/65/f8/5ec3f1e3c629724fec4613e13c3da9be114b306ae452cd1e0f75eaf694a6/hammer_vlsi-1.0.4-py3-none-any.whl
version: 1.0.4
- category: main
dependencies:
asttokens: '>=2,<3'

View File

@@ -10,15 +10,18 @@ Transforms are a powerful tool to take in the FIRRTL IR that is emitted from Chi
The Scala FIRRTL Compiler and the MLIR FIRRTL Compiler
------------------------------------------------------
In Chipyard, two FIRRTL compilers work together to compile Chisel into Verilog. The Scala FIRRTL compiler(SFC) and the MLIR FIRRTL compiler(MFC).
They are basically doing the same thing, except that MFC is written in C++ which makes compilation much faster. In the default setting, the SFC will compile Chisel into CHIRRTL and MFC will
compile CHIRRTL into Verilog(as of now, we are using SFC as a backup for cases when MFC doesn't work, e.g., when the design is using Fixed types). By setting the ``ENABLE_CUSTOM_FIRRTL_PASS`` env variable to a non-zero value, we can make the SFC compile Chisel into LowFIRRTL so that our custom FIRRTL passes are applied.
In Chipyard, two FIRRTL compilers work together to compile Chisel into Verilog. The Scala FIRRTL compiler (SFC) and the MLIR FIRRTL compiler (MFC).
They are basically doing the same thing, except that MFC is written in C++ which makes compilation much faster (the generated Verilog will be different). In the default setting, the SFC will compile Chisel into CHIRRTL and MFC will
compile CHIRRTL into Verilog (as of now, we are using SFC as a backup for cases when MFC doesn't work, e.g., when the design is using Fixed types). By setting the ``ENABLE_CUSTOM_FIRRTL_PASS`` env variable to a non-zero value,
we can make the SFC compile Chisel into LowFIRRTL so that our custom FIRRTL passes are applied.
For more information on MLIR FIRRTL Compiler, please visit https://mlir.llvm.org/ and https://circt.llvm.org/.
Where to add transforms
-----------------------
In Chipyard, the FIRRTL compiler is called multiple times to create a "Top" file that contains the DUT and a "Harness" file containing the test harness, which instantiates the DUT.
The "Harness" file does not contain the DUT's module definition or any of its submodules.
In Chipyard, the FIRRTL compiler is called multiple times to create a "Top" file that contains the DUT and a "Model" file containing the test harness, which instantiates the DUT.
The "Model" file does not contain the DUT's module definition or any of its submodules.
This is done by the ``tapeout`` SBT project (located in ``tools/barstools/tapeout``) which calls ``GenerateModelStageMain`` (a function that wraps the multiple FIRRTL compiler calls and extra transforms).
.. literalinclude:: ../../common.mk

View File

@@ -3,8 +3,10 @@ FIRRTL
`FIRRTL <https://github.com/freechipsproject/firrtl>`__ is an intermediate representation of your circuit.
It is emitted by the Chisel compiler and is used to translate Chisel source files into another representation such as Verilog.
Without going into too much detail, FIRRTL is consumed by a FIRRTL compiler (another Scala program) which passes the circuit through a series of circuit-level transformations.
Without going into too much detail, FIRRTL is consumed by FIRRTL compilers which passes the circuit through a series of circuit-level transformations.
An example of a FIRRTL pass (transformation) is one that optimizes out unused signals.
Once the transformations are done, a Verilog file is emitted and the build process is done.
For more information on please visit their `website <https://chisel-lang.org/firrtl/>`__.
To see how FIRRTL is transformed to Verilog in Chipyard, please visit the :ref:`firrtl-transforms` section.
For more information on FIRRTL, please visit their `website <https://chisel-lang.org/firrtl/>`__.

View File

@@ -242,3 +242,14 @@ class WithDefaultFireSimBridges extends Config(
new WithTracerVBridge ++
new WithFireSimIOCellModels
)
// Shorthand to register all of the provided mmio-only bridges above
class WithDefaultMMIOOnlyFireSimBridges extends Config(
new WithSerialBridge ++
new WithUARTBridge ++
new WithBlockDeviceBridge ++
new WithFASEDBridge ++
new WithFireSimMultiCycleRegfile ++
new WithFireSimFAME5 ++
new WithFireSimIOCellModels
)

View File

@@ -282,3 +282,9 @@ class FireSimNoMemPortConfig extends Config(
new testchipip.WithBackingScratchpad ++
new WithFireSimConfigTweaks ++
new chipyard.RocketConfig)
class FireSimRocketMMIOOnlyConfig extends Config(
new WithDefaultMMIOOnlyFireSimBridges ++
new WithDefaultMemModel ++
new WithFireSimConfigTweaks ++
new chipyard.RocketConfig)

View File

@@ -46,9 +46,9 @@ VLSI_MODEL_DUT_NAME ?= chiptop
# If overriding, this should be relative to $(vlsi_dir)
VLSI_OBJ_DIR ?= build
ifneq ($(CUSTOM_VLOG),)
OBJ_DIR ?= $(vlsi_dir)/$(VLSI_OBJ_DIR)/custom-$(VLSI_TOP)
OBJ_DIR ?= $(vlsi_dir)/$(VLSI_OBJ_DIR)/$(VLSI_TOP)
else
OBJ_DIR ?= $(vlsi_dir)/$(VLSI_OBJ_DIR)/$(long_name)-$(VLSI_TOP)
OBJ_DIR ?= $(vlsi_dir)/$(VLSI_OBJ_DIR)/$(long_name)-$(TOP)
endif
#########################################################################################
@@ -118,6 +118,12 @@ endif
$(SYN_CONF): $(VLSI_RTL)
mkdir -p $(dir $@)
echo "sim.inputs:" > $@
echo " input_files:" >> $@
for x in $$(cat $(VLSI_RTL)); do \
echo ' - "'$$x'"' >> $@; \
done
echo " input_files_meta: 'append'" >> $@
echo "synthesis.inputs:" >> $@
echo " top_module: $(VLSI_TOP)" >> $@
echo " input_files:" >> $@

View File

@@ -10,7 +10,7 @@ $(SIM_CONF): $(sim_common_files)
echo " top_module: $(VLSI_TOP)" >> $@
echo " tb_name: ''" >> $@ # don't specify -top
echo " input_files:" >> $@
for x in $$(cat $(sim_common_files)); do \
for x in $$(comm -23 <(cat $(MODEL_MODS_FILELIST) $(MODEL_BB_MODS_FILELIST) | sort -u) <(sort $(VLSI_RTL))) $(MODEL_SMEMS_FILE) $(SIM_FILE_REQS); do \
echo ' - "'$$x'"' >> $@; \
done
echo " input_files_meta: 'append'" >> $@