diff --git a/conda-reqs/conda-reqs.conda-lock.yml b/conda-reqs/conda-reqs.conda-lock.yml index d3fe3505..d4b4ccf6 100644 --- a/conda-reqs/conda-reqs.conda-lock.yml +++ b/conda-reqs/conda-reqs.conda-lock.yml @@ -7,7 +7,7 @@ # Install this environment as "YOURENV" with: # conda-lock install -n YOURENV --file conda-reqs.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-reqs.conda-lock.yml --update PACKAGE +# conda-lock lock --lockfile conda-reqs.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/firesim/conda-reqs/firesim.yaml -f /scratch/abejgonza/firesim/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/fs-typing/conda-reqs/firesim.yaml -f /scratch/abejgonza/fs-typing/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/al2-fs/conda-reqs/firesim.yaml -f /scratch/abejgonza/al2-fs/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/fs-buildafi-ci/conda-reqs/firesim.yaml -f /scratch/abejgonza/fs-buildafi-ci/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/cy-check/sims/firesim/conda-reqs/firesim.yaml -f /scratch/abejgonza/cy-check/sims/firesim/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/fs-rcbump/conda-reqs/firesim.yaml -f /scratch/abejgonza/fs-rcbump/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/new-cy/sims/firesim/conda-reqs/firesim.yaml -f /scratch/abejgonza/new-cy/sims/firesim/conda-reqs/ci-shared.yaml -f /scratch/abejgonza/fs-bump-vivado/conda-reqs/firesim.yaml -f /scratch/abejgonza/fs-bump-vivado/conda-reqs/ci-shared.yaml --lockfile conda-reqs.conda-lock.yml metadata: @@ -19,7 +19,7 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: dd2c20d18653250bbb1aa7ea8b364a8b51b849d07de34ca5465d9cd56610f7b1 + linux-64: daa2b8c01e96b127a3eb7ba2e48a17bf5d3ba02ce17eae4b7691ad7a4684547d platforms: - linux-64 sources: @@ -409,7 +409,6 @@ package: libstdcxx-ng: '>=12' hash: md5: 6bfb79319763a11c7423c9d0e0ee00b7 - sha256: null manager: conda name: dromajo optional: false @@ -886,14 +885,14 @@ package: ca-certificates: '' libgcc-ng: '>=12' hash: - md5: 2e1d7b458ac8f1e3ca4e18b77add6277 - sha256: 407d655643389bdb49266842a816815c981ae98f3513a6a2059b908b3abb380a + md5: e5ac5227582d6c83ccf247288c0eb095 + sha256: b113fbac327c90cdc29c2fac0f2a2e5cc0d1918b2a5ffa7abd49b695b9b3c6e9 manager: conda name: openssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.1-hd590300_1.conda - version: 3.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.2-hd590300_0.conda + version: 3.1.2 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -934,13 +933,13 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 899f432216154b3c60164667c1c598a0 - sha256: 737b7024a8ba17eb1c6740b7752b2064ede61905dd0b443415b145fb1f5b6739 + md5: 4cabe3858a856bff08d9a0992e413084 + sha256: 475f68cac8981ff2b10c56e53c2f376fc3c805fbc7ec30d22f870cd88f1479ba manager: conda name: rhash optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.3-hd590300_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.3-hd590300_2.conda version: 1.4.3 - category: main dependencies: @@ -1335,14 +1334,14 @@ package: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: fdaae20a1cf7cd62130a0973190a31b7 - sha256: 72e958870f49174ebc0ddcd4129e9a9f48de815f20aa3b553f136b514f29bb3a + md5: 903fa782a9067d5934210df6d79220f6 + sha256: e715fab7ec6b3f3df2a5962ef372ff0f871d215fe819482dcd80357999513652 manager: conda name: libsqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.42.0-h2797004_0.conda - version: 3.42.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.0-h2797004_0.conda + version: 3.43.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1566,14 +1565,14 @@ package: libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 32ae18eb2a687912fc9e92a501c0a11b - sha256: a7f7e765dfb7af5265a38080e46f18cb07cfeecf81fe28fad23c4538e7d521c3 + md5: 04b88013080254850d6c01ed54810589 + sha256: 607cbeb1a533be98ba96cf5cdf0ddbb101c78019f1fda063261871dad6248609 manager: conda name: zstd optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-hfc55251_7.conda - version: 1.5.2 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.5-hfc55251_0.conda + version: 1.5.5 - category: main dependencies: libgcc-ng: '>=12' @@ -1593,13 +1592,13 @@ package: libgcc-ng: '>=12' readline: '>=8.2,<9.0a0' hash: - md5: 23b559a791d63ba4f51906763eb6bc53 - sha256: a7b2ea50068d86ac6e3749f76b118b15947d3f5ce48535eb5ab2ff7e22659c49 + md5: 91824b6e55d580d39050fa4ff8e26edd + sha256: 20aed66138e13e1906ea925ee9ad661749492fc57762d2b4b6d631635274be7d manager: conda name: bash optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.2.15-hfbf034d_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.2.15-h7f99829_1.conda version: 5.2.15 - category: main dependencies: @@ -1842,18 +1841,18 @@ package: libgcc-ng: '>=12' libjpeg-turbo: '>=2.1.5.1,<3.0a0' libstdcxx-ng: '>=12' - libwebp-base: '>=1.3.0,<2.0a0' + libwebp-base: '>=1.3.1,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: - md5: 8ad377fb60abab446a9f02c62b3c2190 - sha256: 920943ad46869938bd070ccd4c0117594e07538bc6b27b75462594c67b6f215d + md5: 5b09e13d732dda1a2bc9adc711164f4d + sha256: 631ccfdd460eda9661b6371aa459fe5ce174816365873deb5af955c9e10bf8c2 manager: conda name: libtiff optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.1-h8b53f26_1.conda version: 4.5.1 - category: main dependencies: @@ -1934,19 +1933,19 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libsqlite: 3.42.0 h2797004_0 + libsqlite: 3.43.0 h2797004_0 libzlib: '>=1.2.13,<1.3.0a0' - ncurses: '>=6.3,<7.0a0' + ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' hash: - md5: 1192f6ec654a5bc4ee1d64bdc4a3e5cc - sha256: 9cf59fa9891248e0e3a86a41041156cec367653d423e5d8a09b4c8ab98441a27 + md5: 713f9eac95d051abe14c3774376854fe + sha256: b3db86c1ae67bca79328a5d517330e1c95cf4e1f666e46ac9a90e64caf86449d manager: conda name: sqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.42.0-h2c6b66d_0.conda - version: 3.42.0 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.0-h2c6b66d_0.conda + version: 3.43.0 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -2133,14 +2132,14 @@ package: __unix: '' python: '>=3.8' hash: - md5: 64dbb3b205546691a61204d1cfb208e3 - sha256: 73392cf4851bf7c89e99518effea01d531360a4894c4218e768d5e03e89d7943 + md5: f3ad426304898027fc619827ff428eca + sha256: f0016cbab6ac4138a429e28dbcb904a90305b34b3fe41a9b89d697c90401caec manager: conda name: click optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.6-unix_pyh707e725_0.conda - version: 8.1.6 + url: https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda + version: 8.1.7 - category: main dependencies: python: '>=3.6' @@ -2232,26 +2231,26 @@ package: dependencies: python: '>=3.7' hash: - md5: de4cb3384374e1411f0454edcf546cdb - sha256: 7b23ea0169fa6e7c3a0867d96d9eacd312759f83e5d83ad0fcc93e85379c16ae + md5: e6518222753f519e911e83136d2158d9 + sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315 manager: conda name: exceptiongroup optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.2-pyhd8ed1ab_0.conda - version: 1.1.2 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda + version: 1.1.3 - category: main dependencies: python: '>=3.7' hash: - md5: 53522ec72e6adae42bd373ef58357230 - sha256: 1cbae9f05860f2e566e2977f14dfcd5494beb22c028b0a853ade4ec381d9de71 + md5: 3104cf0ab9fb9de393051bf92b10dbe9 + sha256: 47635be45aa6cbfd6af65c13b5f649aef84c484e1897aef625e4ad717663eebc manager: conda name: filelock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.2-pyhd8ed1ab_0.conda - version: 3.12.2 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.3-pyhd8ed1ab_0.conda + version: 3.12.3 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -2471,14 +2470,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: ad5647e517ba68e2868ef2e6e6ff7723 - sha256: f56d1772472b90ddda6fd0963a80dcf1960f1277b9653667a9bde62ae125f972 + md5: 741385a84f6a1b6623eb39226cc669e8 + sha256: 54bdf1fe6fdcd382d0a1c4b275aa3d3c2737bcfe4d869644ce0f351c96f995f3 manager: conda name: kiwisolver optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py310hbf28c38_1.tar.bz2 - version: 1.4.4 + url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_0.conda + version: 1.4.5 - category: main dependencies: libgcc-ng: '>=12' @@ -2655,14 +2654,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 0c99f4c67b2744030d73c074cdaf2ed4 - sha256: 06d9244eb2cac341abaf1e320065761d125ffeb1dff29af59b8f2d72092cbc23 + md5: 8549fafed0351bbfaa1ddaa15fdf9b4e + sha256: 07ce65497dec537e490992758934ddbc4fb5ed9285b41387a7cca966f1a98a0f manager: conda name: more-itertools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.0.0-pyhd8ed1ab_1.conda - version: 10.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/more-itertools-10.1.0-pyhd8ed1ab_0.conda + version: 10.1.0 - category: main dependencies: python: '>=3.6' @@ -2732,14 +2731,14 @@ package: dependencies: python: '>=3.8' hash: - md5: bb45ff9deddb045331fd039949f39650 - sha256: a8e3531fdb6f9acfde885dd94c8639c020013215dab98ff4ed82db7aa745277a + md5: 254f787d5068bc89f578bf63893ce8b4 + sha256: 6b955c8530985fa727ad3323653a54af44ecf453cfdb1b549b3edff609bd3728 manager: conda name: networkx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.8-pyhd8ed1ab_0.tar.bz2 - version: 2.8.8 + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + version: '3.1' - category: main dependencies: libblas: '>=3.9.0,<4.0a0' @@ -2750,14 +2749,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 3810cbf2635cb1d0edb97715d4ad74e7 - sha256: 38ec15fe0afe9fb90bd50314ccd506f0e7d1642db0c7eb2b77627d448aa9ee6c + md5: 188e72aa313da668464e35309e9a32b0 + sha256: 81bba557f0f6109f7a1cb8f4d739e5c9ef310a49f8a2842f1fc67bd3545067b0 manager: conda name: numpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.25.1-py310ha4c1d20_0.conda - version: 1.25.1 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.25.2-py310ha4c1d20_0.conda + version: 1.25.2 - category: main dependencies: libgcc-ng: '>=12' @@ -2838,14 +2837,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 7263924c642d22e311d9e59b839f1b33 - sha256: ff1f70e0bd50693be7e2bad0efb2539f5dcc5ec4d638e787e703f28098e72de4 + md5: 2390bd10bed1f3fdc7a537fb5a447d8d + sha256: 7bf2ad9d747e71f1e93d0863c2c8061dd0f2fe1e582f28d292abfb40264a2eb5 manager: conda name: pluggy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.2.0-pyhd8ed1ab_0.conda - version: 1.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.3.0-pyhd8ed1ab_0.conda + version: 1.3.0 - category: main dependencies: python: '>=3.10,<3.11.0a0' @@ -2927,14 +2926,14 @@ package: dependencies: python: '>=3.7' hash: - md5: d316679235612869eba305aa7d41d9bf - sha256: 1bddeb54863c77ed5613b535a3e06a3a16b55786301a5e28c9bf011656bda686 + md5: 40e5cb18165466773619e5c963f00a7b + sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389 manager: conda name: pygments optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda - version: 2.15.1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda + version: 2.16.1 - category: main dependencies: python: '>=3.9,<3.10.0a0' @@ -2976,14 +2975,14 @@ package: dependencies: python: '>=3.6' hash: - md5: e8fbc1b54b25f4b08281467bc13b70cc - sha256: 4acc7151cef5920d130f2e0a7615559cce8bfb037aeecb14d4d359ae3d9bc51b + md5: 176f7d56f0cfe9008bdf1bccd7de02fb + sha256: 4a1332d634b6c2501a973655d68f08c9c42c0bd509c349239127b10572b8354b manager: conda name: pyparsing optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2 - version: 3.0.9 + url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.1-pyhd8ed1ab_0.conda + version: 3.1.1 - category: main dependencies: libgcc-ng: '>=12' @@ -3055,28 +3054,28 @@ package: python_abi: 3.10.* *_cp310 yaml: '>=0.2.5,<0.3.0a0' hash: - md5: 9e68d2ff6d98737c855b65f48dd3c597 - sha256: 602d68ee4544274b12fb6d13b8d5fc61d0ebbee190292c21d8be10a4e68185bd + md5: 511120451bf728d52bb37c73d4069e57 + sha256: 134f2bf206e21eff1b075c35b43e28dd97a9070ebc6879166629a7bac690348b manager: conda name: pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py310h5764c6d_5.tar.bz2 - version: '6.0' + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py310h2372a71_0.conda + version: 6.0.1 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: a517e66e6a1a5db5c34eb0b3bf3fc7cb - sha256: f78e1bd538a7aa10abaa599bed313bb99867016b63e9f9afb76aa15ad315fac1 + md5: 5312e9c375fbe6a45e5537ce12c8a98e + sha256: cfe6c65db315e0b5860d9cb2bb7b838a575bdb65447182f3865fe4026b521b8d manager: conda name: regex optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.6.3-py310h2372a71_0.conda - version: 2023.6.3 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.8.8-py310h2372a71_0.conda + version: 2023.8.8 - category: main dependencies: __glibc: '>=2.17,<3.0.a0' @@ -3129,14 +3128,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 5a7739d0f57ee64133c9d32e6507c46d - sha256: 083a0913f5b56644051f31ac40b4eeea762a88c00aa12437817191b85a753cec + md5: 4fe12573bf499ff85a0a364e00cc5c53 + sha256: dc5a777597e05ceddefc87d2f96389b7ae0afb097e558307af83a453db3e3887 manager: conda name: setuptools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.0.0-pyhd8ed1ab_0.conda - version: 68.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda + version: 68.1.2 - category: main dependencies: python: '' @@ -3177,74 +3176,14 @@ package: dependencies: python: '>=3.5' hash: - md5: 5a31a7d564f551d0e6dff52fd8cb5b16 - sha256: 802810d8321d55e5666806d565e72949eabf77ad510fe2758ce1da2441675ef1 - manager: conda - name: sphinxcontrib-applehelp - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.4-pyhd8ed1ab_0.conda - version: 1.0.4 -- category: main - dependencies: - python: '>=3.5' - hash: - md5: 68e01cac9d38d0e717cd5c87bc3d2cc9 - sha256: 66cca7eccb7f92eee53f9f5a552e3e1d643daa3a1ebd03c185e2819e5c491576 - manager: conda - name: sphinxcontrib-devhelp - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2 - version: 1.0.2 -- category: main - dependencies: - python: '>=3.5' - hash: - md5: 6c8c4d6eb2325e59290ac6dbbeacd5f0 - sha256: aeff20be994e6f9520a91fc177a33cb3e4d0911cdf8d27e575d001f00afa33fd - manager: conda - name: sphinxcontrib-htmlhelp - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.1-pyhd8ed1ab_0.conda - version: 2.0.1 -- category: main - dependencies: - python: '>=3.5' - hash: - md5: 67cd9d9c0382d37479b4d306c369a2d4 - sha256: a42415fc789e9f6ae2e18f07ac143d2e9ce73a35a55ecf1dd1b3d055dd1e6dbe + md5: da1d979339e2714c30a8e806a33ec087 + sha256: d4337d83b8edba688547766fc80f1ac86d6ec86ceeeda93f376acc04079c5ce2 manager: conda name: sphinxcontrib-jsmath optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-pyhd8ed1ab_0.conda version: 1.0.1 -- category: main - dependencies: - python: '>=3.5' - hash: - md5: d01180388e6d1838c3e1ad029590aa7a - sha256: 35d8f01fc798d38b72ae003c040d2dee650d315f904268a1f793d4d59460d1e2 - manager: conda - name: sphinxcontrib-qthelp - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2 - version: 1.0.3 -- category: main - dependencies: - python: '>=3.5' - hash: - md5: 9ff55a0901cf952f05c654394de76bf7 - sha256: 890bbf815cff114ddbb618b9876d492fce07d02956c1d7b3d46cb7f835f563f6 - manager: conda - name: sphinxcontrib-serializinghtml - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2 - version: 1.1.5 - category: main dependencies: python: '>=2.7' @@ -3311,14 +3250,14 @@ package: dependencies: python: '>=3.6' hash: - md5: 2010a97e7298197221abc6295790ff62 - sha256: 5fb56cd0652e7cffc1141c66b09644f1dde588ef6dddcb47849a62d7b0186846 + md5: 1b133b01430fc4d03efba737aae0054f + sha256: 272505b7f8acc7dad0a32efc17e7241c18938f98c0055c5d5fb2530a32e34fe1 manager: conda name: types-pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.0-pyhd8ed1ab_0.conda - version: 2023.3.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.1-pyhd8ed1ab_0.conda + version: 2023.3.0.1 - category: main dependencies: python: '>=3.6' @@ -3431,28 +3370,28 @@ package: version: 0.5.1 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' hash: - md5: c34d9325a609381a0b0e8a5b4f325147 - sha256: c71cb65ac49692adb33735f3114b99a96c0c5140db1d56cf4ccef4fe92ea9a4c + md5: 23f16ffe9711ac76b391c60ce4ea4656 + sha256: 93aecd1b6b0fcb0ffbf96e367e56713824e648f6c02c9daaaedfef5f8e03caa9 manager: conda name: websocket-client optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.1-pyhd8ed1ab_0.conda - version: 1.6.1 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.2-pyhd8ed1ab_0.conda + version: 1.6.2 - category: main dependencies: python: '>=3.7' hash: - md5: 66beb36a1fa7e0dc9d9bf843a80eb82c - sha256: c35e6b6c8100e9e42ed0968aef99680b1d1ec5358d4ca0d2b2175f68c6b21dd6 + md5: 1ccd092478b3e0ee10d7a891adbf8a4f + sha256: 21bcec5373b04d739ab65252b5532b04a08d229865ebb24b5b94902d6d0a77b0 manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.0-pyhd8ed1ab_0.conda - version: 0.41.0 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda + version: 0.41.2 - category: main dependencies: libgcc-ng: '>=12' @@ -3666,16 +3605,16 @@ package: - category: main dependencies: click: '' - python: '>=3.6' + python: '>=2.7' hash: - md5: 72a46ffc25701c173932fd55cf0965d3 - sha256: 7384b6c194f9822d7cc2c9d82409b2fd571fad96f95e6e27c9098f63772d36fd + md5: 7c2b6931f9b3548ed78478332095c3e9 + sha256: b36e35d735ddd29d7c592eb3de4b3979e13a9f76f1b4bc939f2cb4402758d6d0 manager: conda name: click-default-group optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.2-pyhd8ed1ab_1.tar.bz2 - version: 1.2.2 + url: https://conda.anaconda.org/conda-forge/noarch/click-default-group-1.2.4-pyhd8ed1ab_0.conda + version: 1.2.4 - category: main dependencies: pastel: '>=0.2.0,<0.3.0' @@ -3701,7 +3640,7 @@ package: libuv: '' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.3,<7.0a0' - rhash: '' + rhash: <=1.4.3 xz: '>=5.2.6,<6.0a0' zlib: '' zstd: '>=1.5.2,<1.6.0a0' @@ -3819,14 +3758,14 @@ package: python_abi: 3.10.* *_cp310 unicodedata2: '>=14.0.0' hash: - md5: 069bfb5db1e67f62e9ffad0629b3d860 - sha256: 423dae19f4c5fdc38334a509bec72807eb7ae142830271a3f19412d568cd690d + md5: 1f18231ffab82f236ce074b2aaa07e54 + sha256: 63c6f5a5b94e6eb8a567e8e187761fea0edab749422aabfe85906a92062bcbe3 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.41.1-py310h2372a71_0.conda - version: 4.41.1 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.1-py310h2372a71_0.conda + version: 4.42.1 - category: main dependencies: python: '>=3.4' @@ -4008,14 +3947,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=3.10' hash: - md5: b5750d448bc0ce0d0a10da0bb7bd9d96 - sha256: 5322d2c5cb45a1abfb7807ac1190cc949654c9fd91e0ae5a2b70f4279be995db + md5: 9b8878a92795d51dd78c40ee0f36f19a + sha256: d334188ba5268af085d7ad5cb763825ee977c3f464447b2e0404d53b10f3ed79 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.4.1-py310h2372a71_0.conda - version: 1.4.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.5.1-py310h2372a71_0.conda + version: 1.5.1 - category: main dependencies: freetype: '>=2.12.1,<3.0a0' @@ -4165,14 +4104,14 @@ package: colorama: '' python: '>=3.7' hash: - md5: ed792aff3acb977d09c7013358097f83 - sha256: b35f185a678109940d34f68ac5781c3cbda9b118b8d9886b8f68ab5be6afd4fc + md5: 03c97908b976498dcae97eb4e4f3149c + sha256: b61c9222af05e8c5ff27e4a4d2eb81870c21ffd7478346be3ef644b7a3759cc4 manager: conda name: tqdm optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.65.0-pyhd8ed1ab_1.conda - version: 4.65.0 + url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.66.1-pyhd8ed1ab_0.conda + version: 4.66.1 - category: main dependencies: python: '>=3.6' @@ -4223,14 +4162,14 @@ package: markupsafe: '>=2.1.1' python: '>=3.8' hash: - md5: 55fbbb3e67185820ee2007395bfe0073 - sha256: 28515f7ddb8a20f1436b9ac3a6ba2aa9be337995e4ee63c72d0f5d0efd6a2062 + md5: e41528da0d8b8bbf4acc7255192132e3 + sha256: b426b0fcb6137ef858746ef86bddee7f0c881a9c84b67ed40b2feb1b5b47f5b6 manager: conda name: werkzeug optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.3.6-pyhd8ed1ab_0.conda - version: 2.3.6 + url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.3.7-pyhd8ed1ab_0.conda + version: 2.3.7 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4278,17 +4217,17 @@ package: version: 0.5.0 - category: main dependencies: - python: '>=3.6' + python: '>=3.7' typing-extensions: '>=3.6.5' hash: - md5: 25e79f9a1133556671becbd65a170c78 - sha256: a08b78e6fadee1ffac0f255363d2a08a0c589c7403fd2a71c1c0b6aafd5e0737 + md5: 3ce482ec3066e6d809dbbb1d1679f215 + sha256: bd8b698e7f037a9c6107216646f1191f4f7a7fc6da6c34d1a6d4c211bcca8979 manager: conda name: async-timeout optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.2-pyhd8ed1ab_0.tar.bz2 - version: 4.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/async-timeout-4.0.3-pyhd8ed1ab_0.conda + version: 4.0.3 - category: main dependencies: cffi: '>=1.1' @@ -4375,16 +4314,16 @@ package: itsdangerous: '>=2.1.2' jinja2: '>=3.1.2' python: '>=3.8' - werkzeug: '>=2.3.3' + werkzeug: '>=2.3.7' hash: - md5: 816d75d4c0f2e41b5765d17498c57a2e - sha256: f93246be286f2d0f93e85c4f08f9ce48f3eed875a79225e2ea119e70c0237421 + md5: 9b0d29067484a8dfacfae85b8fba81bc + sha256: 4f84ffdc5471236e8225db86c7508426b46aa2c3802d58ca40b3c3e174533b39 manager: conda name: flask optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/flask-2.3.2-pyhd8ed1ab_0.conda - version: 2.3.2 + url: https://conda.anaconda.org/conda-forge/noarch/flask-2.3.3-pyhd8ed1ab_0.conda + version: 2.3.3 - category: main dependencies: curl: '' @@ -4393,18 +4332,18 @@ package: libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.1,<4.0a0' + openssl: '>=3.1.2,<4.0a0' pcre2: '>=10.40,<10.41.0a0' perl: 5.* hash: - md5: 14f8341e26b274362b026bbdc72b14fb - sha256: 46aac096868527843ad7083c254e32b5451fc1e304036dcac4243b66c08a8517 + md5: 96ad24c67e0056d171385859c43218a2 + sha256: 6f6b3d60da46f53f1e1708a63d6ce5f119e6aba0f5243326b7ecaf3b0cdbc6d4 manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.41.0-pl5321h86e50cf_0.conda - version: 2.41.0 + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda + version: 2.42.0 - category: main dependencies: gitdb: '>=4.0.1,<5' @@ -4487,7 +4426,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 5b3ed39ee3809d63d347b649de0a45f8 - sha256: null manager: conda name: libdwarf optional: false @@ -4507,39 +4445,39 @@ package: numpy: '>=1.21.6,<2.0a0' packaging: '>=20.0' pillow: '>=6.2.0' - pyparsing: '>=2.3.1,<3.1' + pyparsing: '>=2.3.1' python: '>=3.10,<3.11.0a0' python-dateutil: '>=2.7' python_abi: 3.10.* *_cp310 tk: '>=8.6.12,<8.7.0a0' hash: - md5: 9b55c9041c5a7f80f184a2cb05ec9663 - sha256: 28ff078d33e18b52a455d58d24ab7b959b4db98411470afd5869f30fbb54250b + md5: 68b2dd34c69d08b05a9db5e3596fe3ee + sha256: d2be8ac0a90aa12ba808f8777d1837b5aa983fc3c7c60c600e8fe6bd9352541c manager: conda name: matplotlib-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.2-py310hf38f957_0.conda - version: 3.7.2 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.1-py310he60537e_0.conda + version: 3.7.1 - category: main dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - numpy: '>=1.21.6,<2.0a0' + numpy: '>=1.22.4,<2.0a0' python: '>=3.10,<3.11.0a0' python-dateutil: '>=2.8.1' python-tzdata: '>=2022a' python_abi: 3.10.* *_cp310 pytz: '>=2020.1' hash: - md5: 11e0099d4571b4974c04386e4ce679ed - sha256: e8937c160b6eb469c5d80971046b25ed305fd97a8b1d6880de7c4a660cd245c3 + md5: 6c92da4ec4e301d09a365c0584e632c8 + sha256: 6e545eeee4e7d223c0bd7efe6a1e5b6f054228e9bfd8b151b24c257fcfe0c893 manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.0.3-py310h7cbd5c2_1.conda - version: 2.0.3 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.0-py310hcc13569_0.conda + version: 2.1.0 - category: main dependencies: pip: '' @@ -4558,14 +4496,14 @@ package: python: '>=3.7' typing-extensions: '>=4.6.3' hash: - md5: 044e7a1e0ad42c4e67110bd078150a63 - sha256: 885611bd528abaf3e31bc0bfaad3a619cfe89db61d886b53c2a9ec9ff50edebe + md5: 0809187ef9b89a3d94a5c24d13936236 + sha256: 1b5c0ca2f4260c7dd8cfccd8a641c1e41876c79dc594506be379cde08f5b471e manager: conda name: platformdirs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.9.1-pyhd8ed1ab_0.conda - version: 3.9.1 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.10.0-pyhd8ed1ab_0.conda + version: 3.10.0 - category: main dependencies: libgcc-ng: '>=12' @@ -4644,14 +4582,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: bba4a7d08e725714db0b8eff72efbd8f - sha256: 7fa139b57dc407fcee551a380983a1af130ba05fe46d035f9521a619710885ff + md5: 6f590190c5393999bbc399ff15096bc3 + sha256: 000ed005cc95397866267072230e2f08407f5898ba2ac469200018492e73a875 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.17.0-pyhd8ed1ab_0.conda - version: 0.17.0 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.1-pyhd8ed1ab_0.conda + version: 0.19.1 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4671,19 +4609,18 @@ package: version: 1.2.3 - category: main dependencies: - cffi: '>=1.11' + cffi: '>=1.8' libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - zstd: '>=1.5.2,<1.6.0a0' hash: - md5: a2b48edcd52593cdf007158ce10e1520 - sha256: 76a443ffcda1c290dbcc8c0bbe15a0f0ee0b57009cf842940f3382672780ddd8 + md5: 74ea667169b1296fb31bb86f13abfa49 + sha256: 958e22d2b24204e08ca0d64db55d63520583db99852cecc82d22c1a3832b23a2 manager: conda name: zstandard optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.19.0-py310h1275a96_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.19.0-py310h5764c6d_0.tar.bz2 version: 0.19.0 - category: main dependencies: @@ -4708,18 +4645,18 @@ package: version: 3.8.5 - category: main dependencies: - python: '>=3.6' + python: '>=3.7,<4.0' types-awscrt: '' - typing_extensions: '' + typing_extensions: '>=4.1.0' hash: - md5: ed2c7f0b32e85ea82f1318e7b072beb1 - sha256: 5a04fb85e32840be1b814ff253790c6010188cd8e0d12d1f7cc635ae0819b009 + md5: cf040fc34e879dc41f53cedc9dddee0b + sha256: 553a256cb38510a0fcd972faad6073c2eb8c462ce60d2f87b534739a11eeb98a manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.15-pyhd8ed1ab_0.conda - version: 1.31.15 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.38-pyhd8ed1ab_0.conda + version: 1.31.38 - category: main dependencies: clang-format: 16.0.3 default_h1cdf331_2 @@ -4742,14 +4679,14 @@ package: python: '>=3.7' zstandard: '>=0.15' hash: - md5: ebe3230a4c1e135954eee4fb6ef8cded - sha256: a437007aa798f6d1c9f079f4dbb2a38685ac306d5a5ce3d1ee797c2de9f7d6e9 + md5: 38253361efb303deead3eab39ae9269b + sha256: 654a2488f77bf43555787d952dbffdc5d97956ff4aa9e0414a7131bb741dcf4c manager: conda name: conda-package-streaming optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.8.0-pyhd8ed1ab_0.conda - version: 0.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda + version: 0.9.0 - category: main dependencies: flask: '>=0.9' @@ -4801,7 +4738,6 @@ package: libzlib: '>=1.2.12,<1.3.0a0' hash: md5: 899c511688e6c41cb51c2921a8d25e63 - sha256: null manager: conda name: libdwarf-dev optional: false @@ -4895,14 +4831,14 @@ package: pynacl: '>=1.5' python: '>=3.6' hash: - md5: f212c7eb95e909df4795297f73690993 - sha256: e425a03e5e2ef2ec5a78711686c59cfceeeeec3a98165fbc7d186bd6a5cb78de + md5: 8d4563992b27cdb8e673d1ca16962c9d + sha256: 9139c13cb7ea5729af862db5fb0523daa5900b9b4fa36637cd7f9c01be665f80 manager: conda name: paramiko optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.2.0-pyhd8ed1ab_0.conda - version: 3.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.3.1-pyhd8ed1ab_0.conda + version: 3.3.1 - category: main dependencies: cryptography: '>=38.0.0,<42,!=40.0.0,!=40.0.1' @@ -4983,27 +4919,28 @@ package: platformdirs: <4,>=3.9.1 python: '>=3.8' hash: - md5: a218f3be8ab6185a475c8168a86e18ae - sha256: 3e508638077bcba79db4d26037c8e97bf6b7b43d156a06c9c25cdd2136468459 + md5: c3feaf947264a59a125e8c26e98c3c5a + sha256: 85c96449202ca87ec12783d8675b3655b4cd7b7afe49f2dc37d743adb0ed177f manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.2-pyhd8ed1ab_0.conda - version: 20.24.2 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda + version: 20.24.4 - category: main dependencies: - conda-package-streaming: '>=0.7.0' + conda-package-streaming: '>=0.9.0' python: '>=3.7' + zstandard: '>=0.15' hash: - md5: 44800e9bd13143292097c65e57323038 - sha256: c453b2a648e7a059f26326d476069cf81627c9a3fa12da4ab22eb39e7bfdc095 + md5: 8a3ae7f6318376aa08ea753367bb7dd6 + sha256: 9a221808405d813d8c555efce6944379b907d36d79e77d526d573efa6b996d26 manager: conda name: conda-package-handling optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.0.2-pyh38be061_0.conda - version: 2.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda + version: 2.2.0 - category: main dependencies: atk-1.0: '>=2.36.0' @@ -5095,14 +5032,14 @@ package: __unix: '' openjdk: '>=8' hash: - md5: 4278da40cd2d14c6a5ef24d41cb9e05d - sha256: 2f2a6ddaa75d2076cf7cf93da3229edf32f9a5afd268f27b3495b264c32c8f98 + md5: a46fac25dff2221c873bfceab88fcb47 + sha256: 08012e6a1ab95c56b86fe76ca76d236db8aa60f6cb4a47db6ef307671aeb2c1b manager: conda name: sbt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sbt-1.9.3-h707e725_0.conda - version: 1.9.3 + url: https://conda.anaconda.org/conda-forge/noarch/sbt-1.9.4-h707e725_0.conda + version: 1.9.4 - category: main dependencies: brotlipy: '>=0.6.0' @@ -5128,14 +5065,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 1b414ead620346abb93df2959a58fa6e - sha256: fbdc7654b1b9a5ab90e075ce21e64f0ab16bd2dc7f1e3c509d8e8d941bbfef85 + md5: ada73bbd028a76a6d57ab681408b5601 + sha256: 04888e2e646920b89c079461bfd26f114f0fad42decc30f1dab272a8e19c0635 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.15-pyhd8ed1ab_0.conda - version: 1.31.15 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.37-pyhd8ed1ab_0.conda + version: 1.31.37 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5219,14 +5156,14 @@ package: six: '>=1.11.0' typing-extensions: '>=4.0.1' hash: - md5: 3f61696f5c09ca1e7001d042c9968c1d - sha256: da22c5d95a9ed937509b696568cd51580f3becec90febf0e5b1aca1096bf4c24 + md5: d336f70469313f6c1eaf3c645b071961 + sha256: 826fb6bf9e20fd7afa4ec971ad0c343cc39b7bd872709d3c4d11a0c397006ed6 manager: conda name: azure-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.28.0-pyhd8ed1ab_0.conda - version: 1.28.0 + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.29.3-pyhd8ed1ab_0.conda + version: 1.29.3 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -5258,14 +5195,14 @@ package: toolz: '>=0.8.1' tqdm: '>=4' hash: - md5: c5d666e682ca57f5853304d1fe82c131 - sha256: bd89b661853b2f2646b17bc8a27a0c74dcebd0e7e932bc5163f350438a8c7cee + md5: f31c3517413898e0429d44a1c848f1fd + sha256: 111119742c7e25b6241c89a026f07c11d4668e6a6f1ce21216ed322a549b09e8 manager: conda name: conda optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-23.7.2-py310hff52083_0.conda - version: 23.7.2 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-23.7.3-py310hff52083_0.conda + version: 23.7.3 - category: main dependencies: packaging: '>=14.0' @@ -5323,14 +5260,14 @@ package: python: '>=3.7' requests: '>=2.14.0' hash: - md5: cca62ab0c14c9ad408e1dedc8c7189a0 - sha256: 16a331ffe0fb58ba04c5ec327f67df78617a406bbd3412e373fe6fe7d034a4ed + md5: 7b5aa5462b9f9a728cd0da5fb6d91b58 + sha256: 94b0a0b0264f6fba21fc33fc3276775eda7809bd216497a90f172bc8fef8efc6 manager: conda name: pygithub optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygithub-1.59.0-pyhd8ed1ab_0.conda - version: 1.59.0 + url: https://conda.anaconda.org/conda-forge/noarch/pygithub-1.59.1-pyhd8ed1ab_0.conda + version: 1.59.1 - category: main dependencies: graphviz: '>=2.46.1' @@ -5380,46 +5317,17 @@ package: botocore: '>=1.12.36,<2.0a.0' python: '>=3.7' hash: - md5: b19a857ac845097e9c823c9f4d35f80e - sha256: 99512bf4f4e297cc7565c94eee8ccc908411f836b341668e2b5d064273e21762 + md5: f57096b122c78f7d8bd6885f52db1077 + sha256: 636453288a2436016235b86ec9bdf6c965aabe2114a68c51809874014255db71 manager: conda name: s3transfer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.6.1-pyhd8ed1ab_0.conda - version: 0.6.1 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.6.2-pyhd8ed1ab_0.conda + version: 0.6.2 - category: main dependencies: - alabaster: '>=0.7,<0.8' - babel: '>=1.3' - colorama: '>=0.3.5' - docutils: '>=0.14,<0.20' - imagesize: '' - importlib-metadata: '>=4.4' - jinja2: '>=2.3' - packaging: '' - pygments: '>=2.0' - python: '>=3.7' - requests: '>=2.5.0' - snowballstemmer: '>=1.1' - sphinxcontrib-applehelp: '' - sphinxcontrib-devhelp: '' - sphinxcontrib-htmlhelp: '>=2.0.0' - sphinxcontrib-jsmath: '' - sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.5' - hash: - md5: cd1129e88f6278787212624e1b7a8001 - sha256: 9d614432deff37f90ba406855fd9a21799ef09ab43ec27f5af12ac810fcd1dd1 - manager: conda - name: sphinx - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyhd8ed1ab_1.tar.bz2 - version: 5.1.1 -- category: main - dependencies: - botocore: 1.31.15 + botocore: 1.31.37 colorama: '>=0.2.5,<0.4.5' docutils: '>=0.10,<0.17' python: '>=3.10,<3.11.0a0' @@ -5428,14 +5336,14 @@ package: rsa: '>=3.1.2,<4.8' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 1819e1167e4e7147633d1bcf371654d2 - sha256: ab0c4177d89cf91a6f7cab7b70a984312371429da96f05744cd6f3cfce3d0969 + md5: 1ba0f22a379c8742bab2c80857ee0935 + sha256: 19ee1b3ff4f14479fbc2a6245caed00a475fdbec0f0356b76a0e9e61d09e024a manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.29.15-py310hff52083_0.conda - version: 1.29.15 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.29.37-py310hff52083_0.conda + version: 1.29.37 - category: main dependencies: azure-core: <2.0.0,>=1.26.2 @@ -5451,19 +5359,19 @@ package: version: 1.4.0 - category: main dependencies: - botocore: '>=1.31.15,<1.32.0' + botocore: '>=1.31.37,<1.32.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 1582f77143c8dd4798ca2ae42933553f - sha256: 3de338700ada2b6aad38d572e206157627c715d16e1a5da71ac54dec69e83fab + md5: db83e3f7822415ab1782a327ffab2d18 + sha256: 4b77591d272220cd273421c8324a42dd5d03ba9a246676183cc7f1380ead4b44 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.15-pyhd8ed1ab_0.conda - version: 1.28.15 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.37-pyhd8ed1ab_0.conda + version: 1.28.37 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5498,18 +5406,19 @@ package: __unix: '' conda: '>=4.6' conda-standalone: '' + jinja2: '' pillow: '>=3.1' python: '>=3.7' ruamel.yaml: '>=0.11.14,<0.18' hash: - md5: 6935bda357fb4052a82a8c3ce17b176a - sha256: 7cdc83ef761fa4e8dff316e49f7b2c839a5a87cd3516762de2a36c4082af5109 + md5: 874c9c92cfcb27369d5620eb65f9ec9c + sha256: cad7b6bdf433da141dabcbb7c138e8665db20382e000ff9629b6d0c9141528b0 manager: conda name: constructor optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.4.4-pyh55f8243_0.conda - version: 3.4.4 + url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.4.5-pyh55f8243_0.conda + version: 3.4.5 - category: main dependencies: msal: '>=0.4.1,<2.0' @@ -5541,19 +5450,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/msrest-0.7.1-pyhd8ed1ab_0.tar.bz2 version: 0.7.1 -- category: main - dependencies: - python: '>=2.7' - sphinx: '>=1.8' - hash: - md5: 914897066d5873acfb13e75705276ad1 - sha256: 2e5f16a2d58f9a31443ffbb8ce3852cfccf533a6349045828cd2e994ef0679ca - manager: conda - name: sphinxcontrib-jquery - optional: false - platform: linux-64 - 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' @@ -5562,14 +5458,14 @@ package: python: '>=3.7' typing_extensions: '>=4.4.0,<5' hash: - md5: e8626fbe4927c8ff91046c69a53e85b1 - sha256: 8ec742faf22a0480b4e527e404d38dd2da56ac9e6212b8b5d0c5c9088548b11a + md5: 2f1c7e055a216b95454484d831cc60b3 + sha256: ad418000db6c5105416a87be77026944450cd5b922dd46da0d39782fad35ba33 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.72.0-pyhd8ed1ab_0.conda - version: 1.72.0 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.73.0-pyhd8ed1ab_0.conda + version: 1.73.0 - category: main dependencies: azure-core: '>=1.11.0,<2.0.0' @@ -5639,14 +5535,14 @@ package: python: '' typing_extensions: '' hash: - md5: e17411f5fd284effa5c22b3e5a057b42 - sha256: 9d66120f62477e3b2d37c44cf8a1990a9aa52dac8488f9aec4f2623df4afa85d + md5: 0639df5a36d28358c4baf385f63cf16f + sha256: c8e4ff6cf699e1925a777f980f7481ac609fd347d817bffc235b45ba77338da0 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.15.post1-pyhd8ed1ab_0.conda - version: 1.28.15.post1 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.37-pyhd8ed1ab_0.conda + version: 1.28.37 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5687,28 +5583,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: 7783f63b4d3b1755e08c268efc4340ff - sha256: 92ae281387cead901e33d7a6aac067d445c80c7b8e97216b6fa99d11a21d841b + md5: 7654bffc34df00bef7662f5aaede6024 + sha256: 0bb7792dbb38eaf3a75fe5ae547aaf62197b140feb5a624e80adc028f9fbc864 manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.15.post1-pyhd8ed1ab_0.conda - version: 1.28.15.post1 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.36-pyhd8ed1ab_0.conda + version: 1.28.36 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 84d0f7bec4027ed80ec4fd17f32e359a - sha256: fbf43754b34157a131344e8ac077a366f88e679bc46617c2c9888a895403af53 + md5: 2df3c6e4418b3aeb259dc4c063d028a7 + sha256: 36b4168bc115df8a3204f11c4f82638fb35cd487d850682e1af642338b4d4fe5 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.15.post1-pyhd8ed1ab_0.conda - version: 1.28.15.post1 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.36-pyhd8ed1ab_0.conda + version: 1.28.36 - category: main dependencies: boto3: '' @@ -5725,41 +5621,26 @@ package: version: 0.4.2 - category: main dependencies: - docutils: <0.19 - python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*' - sphinx: '>=1.6,<7' - sphinxcontrib-jquery: '>=4,<5' - hash: - md5: 5ef6aaf2cfb3b656cdadb431daed6a9f - sha256: 129cab0a4cddd57fa58930c306ca8363c8ac2c40bd40b784210603b17abb5639 - manager: conda - name: sphinx_rtd_theme - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.2.2-pyha770c72_0.conda - version: 1.2.2 -- category: main - dependencies: - aws-sam-translator: '>=1.70.0' - jschema-to-python: ~=1.2.3 + aws-sam-translator: '>=1.71.0' + jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' - jsonschema: <4.18,>=3.0 - junit-xml: ~=1.9 - networkx: ~=2.4,<4 - python: '>=3.7' + jsonschema: '>=3.0,<4.18' + junit-xml: '>=1.9,<2.dev0' + networkx: '>=2.4,<4' + python: '>=3.7,<4.0' pyyaml: '>5.4' regex: '' - sarif-om: ~=1.0.4 + sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: ee8a8cc440ae8b2df83b046bd981b414 - sha256: 90c439cedcdf9ce5ed4f3d368cf1db7ce4ba12227c38d216c4e8f7ab25999db4 + md5: 8b89f35f5318741d66116c9038e86596 + sha256: a18e6484df199556e2c52e1661ea7072883338eab5af3a5084b3ab5981f75a34 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.79.5-pyhd8ed1ab_0.conda - version: 0.79.5 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.79.7-pyhd8ed1ab_1.conda + version: 0.79.7 - category: main dependencies: aws-xray-sdk: '!=0.96,>=0.93' @@ -5789,14 +5670,136 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: f5f07ac7435c82ce5daa20aa2e2ed522 - sha256: 329e2db3705ee0f29b821a9a06eb80564490898a76a8882ec048fc4eaac64d96 + md5: eeb35bed38f8ccdd225219f4c5c79b91 + sha256: d6dc5bb5a19eefaa22aa9e15f8684644efab15f4e6ca9da34d355420bdad19b3 manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.13-pyhd8ed1ab_0.conda - version: 4.1.13 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.0-pyhd8ed1ab_0.conda + version: 4.2.0 +- category: main + dependencies: + python: '>=3.9' + sphinx: '>=5' + hash: + md5: aebfabcb60c33a89c1f9290cab49bc93 + sha256: 67e2b386c7b3c858ead88fa71fe4fa5eb1f4f59d7994d167b3910a744db392d3 + manager: conda + name: sphinxcontrib-applehelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.7-pyhd8ed1ab_0.conda + version: 1.0.7 +- category: main + dependencies: + python: '>=3.9' + sphinx: '>=5' + hash: + md5: ebf08f5184d8eaa486697bc060031953 + sha256: 770e13ebfef321426c09ec51d95c57755512db160518b2922a4337546ee51672 + manager: conda + name: sphinxcontrib-devhelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.5-pyhd8ed1ab_0.conda + version: 1.0.5 +- category: main + dependencies: + python: '>=3.9' + sphinx: '>=5' + hash: + md5: a9a89000dfd19656ad004b937eeb6828 + sha256: 5f09cd4a08a6c194c11999871a8c7cedc2cd7edd9ff7ceb6f0667b6698be4cc5 + manager: conda + name: sphinxcontrib-htmlhelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.4-pyhd8ed1ab_0.conda + version: 2.0.4 +- category: main + dependencies: + python: '>=2.7' + sphinx: '>=1.8' + hash: + md5: 914897066d5873acfb13e75705276ad1 + sha256: 2e5f16a2d58f9a31443ffbb8ce3852cfccf533a6349045828cd2e994ef0679ca + manager: conda + name: sphinxcontrib-jquery + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jquery-4.1-pyhd8ed1ab_0.conda + version: '4.1' +- category: main + dependencies: + docutils: <0.19 + python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*' + sphinx: '>=1.6,<8' + sphinxcontrib-jquery: '>=4,<5' + hash: + md5: a615c369167e508293d8409973b34863 + sha256: 1288aac6167e320b576d89855262f05b1903e446c3dfc92cc67b12b39fb62502 + manager: conda + name: sphinx_rtd_theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-1.3.0-pyha770c72_0.conda + version: 1.3.0 +- category: main + dependencies: + python: '>=3.9' + sphinx: '>=5' + hash: + md5: cf5c9649272c677a964a7313279e3a9b + sha256: 9ba5cea9cbab64106e8b5a9b19add855dcb52b8fbb1674398c715bccdbc04471 + manager: conda + name: sphinxcontrib-qthelp + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.6-pyhd8ed1ab_0.conda + version: 1.0.6 +- category: main + dependencies: + alabaster: '>=0.7,<0.8' + babel: '>=1.3' + colorama: '>=0.3.5' + docutils: '>=0.14,<0.20' + imagesize: '' + importlib-metadata: '>=4.4' + jinja2: '>=2.3' + packaging: '' + pygments: '>=2.0' + python: '>=3.7' + requests: '>=2.5.0' + snowballstemmer: '>=1.1' + sphinxcontrib-applehelp: '' + sphinxcontrib-devhelp: '' + sphinxcontrib-htmlhelp: '>=2.0.0' + sphinxcontrib-jsmath: '' + sphinxcontrib-qthelp: '' + sphinxcontrib-serializinghtml: '>=1.1.5' + hash: + md5: cd1129e88f6278787212624e1b7a8001 + sha256: 9d614432deff37f90ba406855fd9a21799ef09ab43ec27f5af12ac810fcd1dd1 + manager: conda + name: sphinx + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.1.1-pyhd8ed1ab_1.tar.bz2 + version: 5.1.1 +- category: main + dependencies: + python: '>=3.9' + sphinx: '>=5' + hash: + md5: 0612e497d7860728f2cda421ea2aec09 + sha256: c5710ae7bb7465f25a29cc845d9fb6ad0ea561972d796d379fcb48d801e96d6d + manager: conda + name: sphinxcontrib-serializinghtml + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.9-pyhd8ed1ab_0.conda + version: 1.1.9 - category: main dependencies: {} hash: @@ -5805,7 +5808,6 @@ package: name: mock optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/e6/88/8a05e7ad0bb823246b2add3d2e97f990c41c71a40762c8db77a4bd78eedf/mock-5.0.1-py3-none-any.whl version: 5.0.1 - category: main @@ -5817,7 +5819,6 @@ package: name: asttokens optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl version: 2.2.1 - category: main @@ -5831,7 +5832,6 @@ package: name: azure-mgmt-resourcegraph optional: false platform: linux-64 - source: null url: https://files.pythonhosted.org/packages/bd/16/63c37bffdce5082c9997ad7783921b02ed534b5971e5bdbd1ae617a5b2e3/azure_mgmt_resourcegraph-8.0.0-py2.py3-none-any.whl version: 8.0.0 - category: main @@ -5844,7 +5844,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 - category: main @@ -5857,7 +5856,6 @@ package: 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 - category: main @@ -5870,7 +5868,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 @@ -5883,7 +5880,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 @@ -5896,7 +5892,6 @@ package: 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 version: 1 diff --git a/conda-reqs/firesim.yaml b/conda-reqs/firesim.yaml index 79a386eb..6b4dc213 100644 --- a/conda-reqs/firesim.yaml +++ b/conda-reqs/firesim.yaml @@ -29,7 +29,6 @@ dependencies: - conda-gcc-specs - binutils - - dromajo # from ucb-bar channel - https://github.com/riscv-boom/dromajo - riscv-tools==1.0.3 # from ucb-bar channel - https://github.com/ucb-bar/riscv-tools-feedstock # firemarshal deps diff --git a/deploy/runtools/runtime_config.py b/deploy/runtools/runtime_config.py index bb3dc5fa..3157f0bd 100644 --- a/deploy/runtools/runtime_config.py +++ b/deploy/runtools/runtime_config.py @@ -371,7 +371,6 @@ class RuntimeHWConfig: command_linklatencies = array_to_plusargs(all_linklatencies, "+linklatency") command_netbws = array_to_plusargs(all_netbws, "+netbw") command_shmemportnames = array_to_plusargs(all_shmemportnames, "+shmemportname") - command_dromajo = "+drj_dtb=" + all_bootbinaries[0] + ".dtb" + " +drj_bin=" + all_bootbinaries[0] + " +drj_rom=" + all_bootbinaries[0] + ".rom" command_niclogs = array_to_lognames(all_macs, "niclog") command_blkdev_logs = array_to_lognames(all_rootfses, "blkdev-log") @@ -399,7 +398,6 @@ class RuntimeHWConfig: permissive_driver_args += command_blkdev_logs permissive_driver_args += [f"{tracefile}", f"+trace-select={tracerv_config.select}", f"+trace-start={tracerv_config.start}", f"+trace-end={tracerv_config.end}", f"+trace-output-format={tracerv_config.output_format}", dwarf_file_name] permissive_driver_args += [f"+autocounter-readrate={autocounter_config.readrate}", autocounterfile] - permissive_driver_args += [command_dromajo] permissive_driver_args += [print_cycle_prefix, f"+print-start={synthprint_config.start}", f"+print-end={synthprint_config.end}"] permissive_driver_args += command_linklatencies permissive_driver_args += command_netbws diff --git a/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Cospike.rst b/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Cospike.rst new file mode 100644 index 00000000..a6448840 --- /dev/null +++ b/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Cospike.rst @@ -0,0 +1,39 @@ +.. _spike: + +Spike Co-simulation with BOOM designs +================================================== + +Instead of using TracerV to provide a cycle-by-cycle trace of a target +CPU's architectural state, you can use the `Spike co-simulator `_ to verify +the functionality of a BOOM design. + +.. note:: This work currently only works for single core BOOM designs with a commit width of 1 or 2. + +.. _cospike-bridge: + +Building a Design with Cospike +------------------------------- + +In all FireChip designs, TracerV is included by default. +To enable Cospike, you just need to add the Cospike bridge (``WithCospikeBridge``) to your BOOM target design config (default configs. located in ``$CHIPYARD/generators/firechip/src/main/scala/TargetConfigs.scala``). +An example configuration with Cospike is shown below: + +.. code-block:: scala + + class FireSimLargeBoomConfig extends Config( + new WithCospikeBridge ++ // add Cospike bridge to simulation + new WithDefaultFireSimBridges ++ + new WithDefaultMemModel ++ + new WithFireSimConfigTweaks ++ + new chipyard.LargeBoomConfig) + +At this point, you should run the ``firesim buildbitstream`` command for the BOOM config wanted. +At this point you are ready to run the simulation with Cospike by default enabled. + +Troubleshooting Cospike Simulations with Meta-Simulations +---------------------------------------------------------- + +If FPGA simulation fails with Cospike, you can use metasimulation to determine if your Cospike setup is correct. +First refer to :ref:`metasimulation` for more information on metasimulation. + +.. note:: Sometimes simulations in VCS will diverge unless a ``+define+RANDOM=0`` is added to the VCS flags in ``sim/midas/src/main/cc/rtlsim/Makefrag-vcs``. diff --git a/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Dromajo.rst b/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Dromajo.rst deleted file mode 100644 index 967fdaed..00000000 --- a/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/Dromajo.rst +++ /dev/null @@ -1,111 +0,0 @@ -.. _dromajo: - -Dromajo Co-simulation with BOOM designs -================================================== - -Instead of using TracerV to provide a cycle-by-cycle trace of a target -CPU's architectural state, you can use the `Dromajo co-simulator `_ to verify -the functionality of a BOOM design. - -.. note:: This work is highly experimental. We hope to integrate this into FireSim in a cleaner fashion at a later point. - -.. note:: This work currently only works for single core BOOM designs. - -.. _dromajo-bridge: - -Building a Design with Dromajo -------------------------------- - -In all FireChip designs, TracerV is included by default. -To enable Dromajo, you just need to add the Dromajo bridge (``WithDromajoBridge``) to your BOOM target design config (default configs. located in ``$CHIPYARD/generators/firechip/src/main/scala/TargetConfigs.scala``). -An example configuration with Dromajo is shown below: - -.. code-block:: scala - - class FireSimLargeBoomConfig extends Config( - new WithDromajoBridge ++ // add Dromajo bridge to simulation - new WithDefaultFireSimBridges ++ - new WithDefaultMemModel ++ - new WithFireSimConfigTweaks ++ - new chipyard.LargeBoomConfig) - -At this point, you should run the ``firesim buildbitstream`` command for the BOOM config wanted. - -Running a FireSim Simulation ----------------------------- - -To run a simulation with Dromajo, you must modify the workload ``json`` to support Dromajo. -The following is an example using the base Linux workload generated from FireMarshal and modifying it for Dromajo. -Here is the modified workload json (renamed to ``br-base-dromajo`` from ``br-base``): - -.. code-block:: json - - { - "benchmark_name": "br-base-dromajo", - "common_simulation_outputs": [ - "uartlog", - "dromajo_snap.re_regs" - ], - "common_bootbinary": "../../../../../software/firemarshal/images/firechip/br-base/br-base-bin", - "common_rootfs": "../../../../../software/firemarshal/images/firechip/br-base/br-base.img", - "common_simulation_inputs": [ - "br-base-bin.rom", - "br-base-bin.dtb" - ] - } - -You will notice there are two extra simulation inputs needed compared to the "base" unmodified -``br-base`` workload: a bootrom (``rom``) and a device tree blob (``dtb``). -Both files are found in your generated sources and should be moved into the workload directory (i.e. ``workloads/br-base-dromajo``). - -.. code-block:: shell - - cd $CHIPYARD - - # copy/rename the rom file and put in the proper folder - cp sim/generated-src/f1//.rom $FIRESIM/deploy/workloads/br-base-dromajo/br-base-bin.rom - - # copy/rename the dtb file and put in the proper folder - cp sim/generated-src/f1//.dtb $FIRESIM/deploy/workloads/br-base-dromajo/br-base-bin.dtb - -After this process, you should see the following ``workloads/br-base-dromajo`` folder layout: - -.. code-block:: shell - - br-base-dromajo/ - br-base-bin.rom - br-base-bin.dtb - README - -.. note:: The name of the ``rom`` and ``dtb`` files must match the name of the workload binary i.e. ``common_bootbinary``. - -At this point you are ready to run the simulation with Dromajo. -The commit log trace will by default print to the ``uartlog``. -However, you can avoid printing it out by changing ``verbose == false`` in the ``dromajo_cosim.cpp`` file -located in ``$CHIPYARD/tools/dromajo/dromajo-src/src/`` folder. - -Troubleshooting Dromajo Simulations with Meta-Simulations ----------------------------------------------------------- - -If FPGA simulation fails with Dromajo, you can use metasimulation to determine if your Dromajo setup is correct. -First refer to :ref:`metasimulation` for more information on metasimulation. -The main difference between those instructions and simulations with Dromajo is that you need to manually point to the ``dtb``, ``rom``, and binary files when invoking the simulator. -Here is an example of a ``make`` command that can be run to check for a correct setup. - -.. code-block:: shell - - # enter simulation directory - cd $FIRESIM/sim/ - - # make command to run a binary - # - absolute path to binary - # - absolute path to dtb file - # - absolute path to rom file - # - Single-core BOOM configuration to test - make TARGET_CONFIG= SIM_BINARY= EXTRA_SIM_ARGS="+drj_dtb= +drj_rom= +drj_bin=" run-vcs - -It is important to have the ``+drj_*`` arguments, otherwise Dromajo will not match the simulation running on the DUT. - -.. note:: Sometimes simulations in VCS will diverge unless a ``+define+RANDOM=0`` is added to the VCS flags in ``sim/midas/src/main/cc/rtlsim/Makefrag-vcs``. - -.. warning:: Dromajo currently only works in VCS and FireSim simulations. diff --git a/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/index.rst b/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/index.rst index c9b6aec0..d742424b 100644 --- a/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/index.rst +++ b/docs/Advanced-Usage/Debugging-and-Profiling-on-FPGA/index.rst @@ -17,5 +17,5 @@ features. Debugging-Hardware-Using-ILA.rst AutoCounter.rst TracerV-with-FlameGraph.rst - Dromajo.rst + Cospike.rst Debugging-Hanging-Simulators.rst diff --git a/docs/Developer-Docs/GoldenGate-and-Driver-Development.rst b/docs/Developer-Docs/GoldenGate-and-Driver-Development.rst index f0246801..8da427b8 100644 --- a/docs/Developer-Docs/GoldenGate-and-Driver-Development.rst +++ b/docs/Developer-Docs/GoldenGate-and-Driver-Development.rst @@ -27,6 +27,9 @@ Single tests may be run directly out of :gh-file-ref:`sim/` as follows:: # Run a specific integration test (desired) make testOnly TARGET_PROJECT=midasexamples SCALA_TEST=firesim.midasexamples.GCDF1Test + # note: you can disable certain subsets of tests by using a + # TEST_DISABLE_{VERILATOR,VCS,VIVADO}=1 environment variable + These tests may be run from the SBT console continuously, and SBT will rerun them on Scala changes (but not driver changes). Out of :gh-file-ref:`sim/`:: @@ -170,7 +173,7 @@ Scala guidelines The Scala sources are formatted using both ``Scalafmt`` and ``Scalafix``. All submitted pull-requests must be formatted prior to being accepted and merged. The configuration files -are found here: `Scalafmt config `_, -`Scalafix config `_. Run +are found here: `Scalafmt config `_, +`Scalafix config `_. Run ``make -C sim scala-lint-check`` to check your code for compliance. Run ``make -C sim scala-lint`` to -automatically apply fixes. \ No newline at end of file +automatically apply fixes. diff --git a/scripts/generate-conda-lockfile.sh b/scripts/generate-conda-lockfile.sh index c1806f19..4ac3a32d 100755 --- a/scripts/generate-conda-lockfile.sh +++ b/scripts/generate-conda-lockfile.sh @@ -6,4 +6,4 @@ if [ ! -d "$REQS_DIR" ]; then echo "$REQS_DIR does not exist, make sure you're calling this script from firesim/" exit 1 fi -conda-lock --conda $(which conda) -f "$REQS_DIR/firesim.yaml" -f "$REQS_DIR/ci-shared.yaml" -p linux-64 --lockfile "$REQS_DIR/conda-reqs.conda-lock.yml" +conda-lock -f "$REQS_DIR/firesim.yaml" -f "$REQS_DIR/ci-shared.yaml" -p linux-64 --lockfile "$REQS_DIR/conda-reqs.conda-lock.yml" diff --git a/sim/.scalafmt.conf b/sim/.scalafmt.conf index da76b742..152e704d 100644 --- a/sim/.scalafmt.conf +++ b/sim/.scalafmt.conf @@ -7,7 +7,6 @@ project { ] excludePaths = [ "glob:**firesim-lib/src/main/scala/bridges/BlockDevBridge.scala", - "glob:**firesim-lib/src/main/scala/bridges/DromajoBridge.scala", "glob:**firesim-lib/src/main/scala/bridges/GroundTestBridge.scala", "glob:**firesim-lib/src/main/scala/bridges/TSIBridge.scala", "glob:**firesim-lib/src/main/scala/bridges/SimpleNICBridge.scala", diff --git a/sim/firesim-lib/src/main/cc/bridges/cospike.cc b/sim/firesim-lib/src/main/cc/bridges/cospike.cc new file mode 100644 index 00000000..a57c5b85 --- /dev/null +++ b/sim/firesim-lib/src/main/cc/bridges/cospike.cc @@ -0,0 +1,245 @@ +// See LICENSE for license details + +#include "cospike.h" +#include "cospike_impl.h" + +#include +#include +#include +#include +#include +#include + +// Create bitmask macro +#define BIT_MASK(__ITYPE__, __ONE_COUNT__) \ + (((__ITYPE__)(-((__ONE_COUNT__) != 0))) & \ + (((__ITYPE__)-1) >> ((sizeof(__ITYPE__) * CHAR_BIT) - (__ONE_COUNT__)))) +#define TO_BYTES(__BITS__) ((__BITS__) / 8) + +#define DEBUG + +char cospike_t::KIND; + +/** + * Constructor for cospike + */ +cospike_t::cospike_t(simif_t &sim, + StreamEngine &stream, + int cospikeno, + std::vector &args, + uint32_t iaddr_width, + uint32_t insn_width, + uint32_t cause_width, + uint32_t wdata_width, + uint32_t num_commit_insts, + uint32_t bits_per_trace, + const char *isa, + uint32_t vlen, + const char *priv, + uint32_t pmp_regions, + uint64_t mem0_base, + uint64_t mem0_size, + uint32_t nharts, + const char *bootrom, + uint32_t hartid, + uint32_t stream_idx, + uint32_t stream_depth) + : streaming_bridge_driver_t(sim, stream, &KIND), args(args), _isa(isa), + _vlen(vlen), _priv(priv), _pmp_regions(pmp_regions), + _mem0_base(mem0_base), _mem0_size(mem0_size), _nharts(nharts), + _bootrom(bootrom), _hartid(hartid), _num_commit_insts(num_commit_insts), + _bits_per_trace(bits_per_trace), stream_idx(stream_idx), + stream_depth(stream_depth) { + this->_valid_width = 1; + this->_iaddr_width = TO_BYTES(iaddr_width); + this->_insn_width = TO_BYTES(insn_width); + this->_exception_width = 1; + this->_interrupt_width = 1; + this->_cause_width = TO_BYTES(cause_width); + this->_wdata_width = TO_BYTES(wdata_width); + this->_priv_width = 1; + + // must align with how the trace is composed + this->_valid_offset = 0; + this->_iaddr_offset = this->_valid_offset + this->_valid_width; + this->_insn_offset = this->_iaddr_offset + this->_iaddr_width; + this->_priv_offset = this->_insn_offset + this->_insn_width; + this->_exception_offset = this->_priv_offset + this->_priv_width; + this->_interrupt_offset = this->_exception_offset + this->_exception_width; + this->_cause_offset = this->_interrupt_offset + this->_interrupt_width; + this->_wdata_offset = this->_cause_offset + this->_cause_width; + + this->cospike_failed = false; + this->cospike_exit_code = 0; +} + +/** + * Setup simulation and initialize cospike cosimulation + */ +void cospike_t::init() { + printf("[INFO] Cospike: Attached cospike to a single instruction trace with " + "%d instructions.\n", + this->_num_commit_insts); + + cospike_set_sysinfo((char *)this->_isa, + this->_vlen, + (char *)this->_priv, + this->_pmp_regions, + this->_mem0_base, + this->_mem0_size, + this->_nharts, + (char *)this->_bootrom, + this->args); +} + +#define SHIFT_BITS(__RTYPE__, __BYTE_WIDTH__) \ + ((sizeof(__RTYPE__) - (__BYTE_WIDTH__)) * 8) +#define SIGNED_EXTRACT_NON_ALIGNED( \ + __ITYPE__, __RTYPE__, __BUF__, __BYTE_WIDTH__, __BYTE_OFFSET__) \ + (*((__ITYPE__ *)((__BUF__) + (__BYTE_OFFSET__))) & \ + BIT_MASK(__RTYPE__, (__BYTE_WIDTH__)*8)) +#define EXTRACT_ALIGNED( \ + __ITYPE__, __RTYPE__, __BUF__, __BYTE_WIDTH__, __BYTE_OFFSET__) \ + ((((__ITYPE__)SIGNED_EXTRACT_NON_ALIGNED( \ + __ITYPE__, __RTYPE__, __BUF__, __BYTE_WIDTH__, __BYTE_OFFSET__)) \ + << SHIFT_BITS(__RTYPE__, __BYTE_WIDTH__)) >> \ + SHIFT_BITS(__RTYPE__, __BYTE_WIDTH__)) + +/** + * Call cospike co-sim functions with an aligned buffer. + * This returns the return code of the co-sim functions. + */ +int cospike_t::invoke_cospike(uint8_t *buf) { + bool valid = buf[0]; + // this crazy to extract the right value then sign extend within the size + uint64_t iaddr = EXTRACT_ALIGNED(int64_t, + uint64_t, + buf, + this->_iaddr_width, + this->_iaddr_offset); // aka the pc + uint32_t insn = EXTRACT_ALIGNED( + int32_t, uint32_t, buf, this->_insn_width, this->_insn_offset); + bool exception = buf[this->_exception_offset]; + bool interrupt = buf[this->_interrupt_offset]; + uint64_t cause = EXTRACT_ALIGNED( + int64_t, uint64_t, buf, this->_cause_width, this->_cause_offset); + uint64_t wdata = + this->_wdata_width != 0 + ? EXTRACT_ALIGNED( + int64_t, uint64_t, buf, this->_wdata_width, this->_wdata_offset) + : 0; + uint8_t priv = buf[this->_priv_offset]; + +#ifdef DEBUG + fprintf(stderr, + "C[%d] V(%d) PC(0x%lx) Insn(0x%x) EIC(%d:%d:%ld) Wdata(%d:0x%lx) " + "Priv(%d)\n", + this->_hartid, + valid, + iaddr, + insn, + exception, + interrupt, + cause, + (this->_wdata_width != 0), + wdata, + priv); +#endif + + if (valid || exception || cause) { + return cospike_cosim(0, // TODO: No cycle given + this->_hartid, + (this->_wdata_width != 0), + valid, + iaddr, + insn, + exception, + interrupt, + cause, + wdata, + priv); + } else { + return 0; + } +} + +/** + * Read queue and co-simulate + */ +size_t cospike_t::process_tokens(int num_beats, size_t minimum_batch_beats) { + const size_t maximum_batch_bytes = num_beats * STREAM_WIDTH_BYTES; + const size_t minimum_batch_bytes = minimum_batch_beats * STREAM_WIDTH_BYTES; + // TODO: as opt can mmap file and just load directly into it. + page_aligned_sized_array(OUTBUF, maximum_batch_bytes); + auto bytes_received = + pull(stream_idx, OUTBUF, maximum_batch_bytes, minimum_batch_bytes); + const size_t bytes_per_trace = this->_bits_per_trace / 8; + + for (uint32_t offset = 0; offset < bytes_received; + offset += bytes_per_trace) { +#ifdef DEBUG + fprintf(stderr, + "Off(%d/%ld:%lu) token(", + offset, + bytes_received, + offset / bytes_per_trace); + + for (int32_t i = STREAM_WIDTH_BYTES - 1; i >= 0; --i) { + fprintf(stderr, "%02x", (OUTBUF + offset)[i]); + if (i == bytes_per_trace) + fprintf(stderr, " "); + } + fprintf(stderr, ")\n"); +#endif + + // invoke cospike (requires that buffer is aligned properly) + int rval = this->invoke_cospike(((uint8_t *)OUTBUF) + offset); + if (rval) { + cospike_failed = true; + cospike_exit_code = rval; + printf("[ERROR] Cospike: Errored during simulation with %d\n", rval); + +#ifdef DEBUG + fprintf(stderr, "Off(%lu) token(", offset / bytes_per_trace); + + for (int32_t i = STREAM_WIDTH_BYTES - 1; i >= 0; --i) { + fprintf(stderr, "%02x", (OUTBUF + offset)[i]); + if (i == bytes_per_trace) + fprintf(stderr, " "); + } + fprintf(stderr, ")\n"); + + fprintf(stderr, "get_next_token token("); + auto next_off = offset + STREAM_WIDTH_BYTES; + + for (auto i = STREAM_WIDTH_BYTES - 1; i >= 0; --i) { + fprintf(stderr, "%02x", (OUTBUF + next_off)[i]); + if (i == bytes_per_trace) + fprintf(stderr, " "); + } + fprintf(stderr, ")\n"); +#endif + + break; + } + } + + return bytes_received; +} + +/** + * Move forward the simulation + */ +void cospike_t::tick() { + this->process_tokens(this->stream_depth, this->stream_depth); +} + +/** + * Pull in any remaining tokens and use them (if the simulation hasn't already + * failed) + */ +void cospike_t::flush() { + // only flush if there wasn't a failure before + while (!cospike_failed && (this->process_tokens(this->stream_depth, 0) > 0)) + ; +} diff --git a/sim/firesim-lib/src/main/cc/bridges/cospike.h b/sim/firesim-lib/src/main/cc/bridges/cospike.h new file mode 100644 index 00000000..2e4f2ec6 --- /dev/null +++ b/sim/firesim-lib/src/main/cc/bridges/cospike.h @@ -0,0 +1,94 @@ +// See LICENSE for license details +#ifndef __COSPIKE_H +#define __COSPIKE_H + +#include "core/bridge_driver.h" +#include +#include + +class cospike_t : public streaming_bridge_driver_t { +public: + /// The identifier for the bridge type used for casts. + static char KIND; + + cospike_t(simif_t &sim, + StreamEngine &stream, + int cospikeno, + std::vector &args, + uint32_t iaddr_width, + uint32_t insn_width, + uint32_t cause_width, + uint32_t wdata_width, + uint32_t num_commit_insts, + uint32_t bits_per_trace, + const char *isa, + uint32_t vlen, + const char *priv, + uint32_t pmp_regions, + uint64_t mem0_base, + uint64_t mem0_size, + uint32_t nharts, + const char *bootrom, + uint32_t hartid, + uint32_t stream_idx, + uint32_t stream_depth); + + ~cospike_t() override = default; + + void init() override; + void tick() override; + bool terminate() override { return cospike_failed; }; + int exit_code() override { return (cospike_failed) ? cospike_exit_code : 0; }; + void finish() override { this->flush(); }; + +private: + int invoke_cospike(uint8_t *buf); + size_t process_tokens(int num_beats, size_t minimum_batch_beats); + void flush(); + + std::vector args; + + // in bytes + uint32_t _valid_width; + uint32_t _iaddr_width; + uint32_t _insn_width; + uint32_t _wdata_width; + uint32_t _priv_width; + uint32_t _exception_width; + uint32_t _interrupt_width; + uint32_t _cause_width; + uint32_t _tval_width; + + // in bytes + uint32_t _valid_offset; + uint32_t _iaddr_offset; + uint32_t _insn_offset; + uint32_t _wdata_offset; + uint32_t _priv_offset; + uint32_t _exception_offset; + uint32_t _interrupt_offset; + uint32_t _cause_offset; + uint32_t _tval_offset; + + const char *_isa; + uint32_t _vlen; + const char *_priv; + uint32_t _pmp_regions; + uint64_t _mem0_base; + uint64_t _mem0_size; + uint32_t _nharts; + const char *_bootrom; + uint32_t _hartid; + + // other misc members + uint32_t _num_commit_insts; + uint32_t _bits_per_trace; + bool cospike_failed; + int cospike_exit_code; + + // stream config + int stream_idx; + int stream_depth; +}; + +#endif // __COSPIKE_H diff --git a/sim/firesim-lib/src/main/cc/bridges/dromajo.cc b/sim/firesim-lib/src/main/cc/bridges/dromajo.cc deleted file mode 100644 index 268392e0..00000000 --- a/sim/firesim-lib/src/main/cc/bridges/dromajo.cc +++ /dev/null @@ -1,306 +0,0 @@ -// See LICENSE for license details - -#include "dromajo.h" - -#include -#include -#include -#include -#include - -// Create bitmask macro -#define BIT_MASK(__TYPE__, __ONE_COUNT__) \ - ((__TYPE__)(-((__ONE_COUNT__) != 0))) & \ - (((__TYPE__)-1) >> ((sizeof(__TYPE__) * CHAR_BIT) - (__ONE_COUNT__))) - -// #define DEBUG - -char dromajo_t::KIND; - -/** - * Constructor for Dromajo - */ -dromajo_t::dromajo_t(simif_t &sim, - StreamEngine &stream, - std::vector &args, - const DROMAJOBRIDGEMODULE_struct &mmio_addrs, - const dromajo_config_t &config, - int iaddr_width, - int insn_width, - int wdata_width, - int cause_width, - int tval_width, - int num_traces, - int stream_idx, - int stream_depth) - : streaming_bridge_driver_t(sim, stream, &KIND), mmio_addrs(mmio_addrs), - config(config), stream_idx(stream_idx), stream_depth(stream_depth) { - // setup max constants given from the RTL - this->_num_traces = num_traces; - - this->_valid_width = 1; - this->_iaddr_width = iaddr_width / 8; - this->_insn_width = insn_width / 8; - this->_wdata_width = wdata_width / 8; - this->_priv_width = 1; - this->_exception_width = 1; - this->_interrupt_width = 1; - this->_cause_width = cause_width / 8; - this->_tval_width = tval_width / 8; - this->_valid_offset = 0; - this->_iaddr_offset = this->_valid_offset + this->_valid_width; - ; - this->_insn_offset = this->_iaddr_offset + this->_iaddr_width; - this->_wdata_offset = this->_insn_offset + this->_insn_width; - this->_priv_offset = this->_wdata_offset + this->_wdata_width; - this->_exception_offset = this->_priv_offset + this->_priv_width; - this->_interrupt_offset = this->_exception_offset + this->_exception_width; - this->_cause_offset = this->_interrupt_offset + this->_interrupt_width; - this->_tval_offset = this->_cause_offset + this->_cause_width; - - // setup misc. state variables - this->_trace_idx = 0; - this->dromajo_failed = false; - this->dromajo_exit_code = 0; - this->dromajo_state = NULL; - this->dromajo_cosim = true; // by default enable cosim - this->saw_int_excp = false; // used to not trigger interrupts multiple times - - // setup dromajo variables - std::string dromajo_dtb_arg = std::string("+drj_dtb="); - std::string dromajo_bin_arg = std::string("+drj_bin="); - std::string dromajo_rom_arg = std::string("+drj_rom="); - bool dtb_found = false; - bool bin_found = false; - bool bootrom_found = false; - this->dromajo_dtb = ""; - this->dromajo_bootrom = ""; - this->dromajo_bin = ""; - const char *d_rom = NULL; - const char *d_dtb = NULL; - const char *d_bin = NULL; - - for (auto &arg : args) { - if (arg.find(dromajo_dtb_arg) == 0) { - d_dtb = const_cast(arg.c_str()) + dromajo_dtb_arg.length(); - this->dromajo_dtb = std::string(d_dtb); - dtb_found = true; - } - if (arg.find(dromajo_rom_arg) == 0) { - d_rom = const_cast(arg.c_str()) + dromajo_rom_arg.length(); - this->dromajo_bootrom = std::string(d_rom); - bootrom_found = true; - } - if (arg.find(dromajo_bin_arg) == 0) { - d_bin = const_cast(arg.c_str()) + dromajo_bin_arg.length(); - this->dromajo_bin = std::string(d_bin); - bin_found = true; - } - } - - if (!dtb_found || !bin_found || !bootrom_found) { - printf("[WARNING] Missing Dromajo input file(s) (make sure you have a dtb, " - "bin, and bootrom passed in)\n"); - printf("[WARNING] Disabling Dromajo Bridge\n"); - this->dromajo_cosim = false; - } -} - -/** - * Destructor for Dromajo - */ -dromajo_t::~dromajo_t() { - if (this->dromajo_state) - dromajo_cosim_fini(this->dromajo_state); -} - -/** - * Setup simulation and initialize Dromajo cosimulation - */ -void dromajo_t::init() { - // skip if co-sim not enabled - if (!this->dromajo_cosim) - return; - - printf("[INFO] Dromajo: Attached Dromajo to %d instruction traces\n", - this->_num_traces); - - // setup arguments - std::vector dromajo_args{ - "./dromajo", - "--compact_bootrom", - "--custom_extension", - "--clear_ids", - "--reset_vector", - config.resetVector, - "--bootrom", - dromajo_bootrom, - "--mmio_range", - std::string(config.mmioStart) + ":" + config.mmioEnd, - "--plic", - std::string(config.plicBase) + ":" + config.plicSize, - "--clint", - std::string(config.clintBase) + ":" + config.clintSize, - "--memory_size", - config.memSize, - "--save", - "dromajo_snap", - "--dtb", - dromajo_dtb, - dromajo_bin}; - - printf("[INFO] Dromajo command: \n"); - char *dromajo_argv[dromajo_args.size()]; - for (size_t i = 0; i < dromajo_args.size(); ++i) { - dromajo_argv[i] = const_cast(dromajo_args[i].c_str()); - printf("%s ", dromajo_argv[i]); - } - printf("\n"); - - this->dromajo_state = dromajo_cosim_init(dromajo_args.size(), dromajo_argv); - if (this->dromajo_state == NULL) { - printf("[ERROR] Error setting up Dromajo\n"); - exit(1); - } -} - -/** - * Call Dromajo co-sim functions with an aligned buffer. - * This returns the return code of the co-sim functions. - */ -int dromajo_t::invoke_dromajo(uint8_t *buf) { - bool valid = buf[0]; - int hartid = 0; // only works for single core - // this crazy to extract the right value then sign extend within the size - uint64_t pc = ((int64_t)(*((int64_t *)(buf + this->_iaddr_offset)) & - BIT_MASK(uint64_t, this->_iaddr_width * 8)) - << (sizeof(uint64_t) - this->_iaddr_width) * 8) >> - (sizeof(uint64_t) - this->_iaddr_width) * 8; - uint32_t insn = ((int32_t)(*((int32_t *)(buf + this->_insn_offset)) & - BIT_MASK(uint32_t, this->_insn_width * 8)) - << (sizeof(uint32_t) - this->_insn_width) * 8) >> - (sizeof(uint32_t) - this->_insn_width) * 8; - uint64_t wdata = ((int64_t)(*((int64_t *)(buf + this->_wdata_offset)) & - BIT_MASK(uint64_t, this->_wdata_width * 8)) - << (sizeof(uint64_t) - this->_wdata_width) * 8) >> - (sizeof(uint64_t) - this->_wdata_width) * 8; - uint64_t mstatus = 0; // default not checked - bool check = true; // default check all - bool interrupt = buf[this->_interrupt_offset]; - bool exception = buf[this->_exception_offset]; - int64_t cause = (*((uint64_t *)(buf + this->_cause_offset)) & - BIT_MASK(uint64_t, this->_cause_width * 8)) | - ((uint64_t)interrupt << 63); - - if (valid) { -#ifdef DEBUG - if (interrupt || exception) - fprintf( - stderr, "[DEBUG] INT/EXCEP raised (on valid): cause = %lx\n", cause); -#endif - return dromajo_cosim_step( - this->dromajo_state, hartid, pc, insn, wdata, mstatus, check); - } - - if ((interrupt || exception) && !(this->saw_int_excp)) { -#ifdef DEBUG - fprintf(stderr, "[DEBUG] INT/EXCEP raised (normal): cause = %lx\n", cause); -#endif - dromajo_cosim_raise_trap(this->dromajo_state, hartid, cause); - this->saw_int_excp = true; - } - - return 0; -} - -/** - * Read queue and co-simulate - */ -size_t dromajo_t::process_tokens(int num_beats, size_t minimum_batch_beats) { - size_t maximum_batch_bytes = num_beats * STREAM_WIDTH_BYTES; - size_t minimum_batch_bytes = minimum_batch_beats * STREAM_WIDTH_BYTES; - // TODO: as opt can mmap file and just load directly into it. - page_aligned_sized_array(OUTBUF, maximum_batch_bytes); - auto bytes_received = - pull(stream_idx, OUTBUF, maximum_batch_bytes, minimum_batch_bytes); - - // skip if co-sim not enabled - if (!this->dromajo_cosim) - return bytes_received; - - for (uint32_t offset = 0; offset < bytes_received; - offset += STREAM_WIDTH_BYTES / 2) { - // invoke dromajo (requires that buffer is aligned properly) - int rval = this->invoke_dromajo(((uint8_t *)OUTBUF) + offset); - if (rval) { - dromajo_failed = true; - dromajo_exit_code = rval; - printf("[ERROR] Dromajo: Errored during simulation with %d\n", rval); - -#ifdef DEBUG - fprintf(stderr, - "C[%d] off(%d) token(", - this->_trace_idx, - offset / (STREAM_WIDTH_BYTES / 2)); - - for (int32_t i = STREAM_WIDTH_BYTES - 1; i >= 0; --i) { - fprintf(stderr, "%02x", (OUTBUF + offset)[i]); - if (i == STREAM_WIDTH_BYTES / 2) - fprintf(stderr, " "); - } - fprintf(stderr, ")\n"); - - fprintf(stderr, "get_next_token token("); - uint32_t next_off = offset += STREAM_WIDTH_BYTES; - - for (int32_t i = STREAM_WIDTH_BYTES - 1; i >= 0; --i) { - fprintf(stderr, "%02x", (OUTBUF + next_off)[i]); - if (i == STREAM_WIDTH_BYTES / 2) - fprintf(stderr, " "); - } - fprintf(stderr, ")\n"); -#endif - - return bytes_received; - } - - // move to next inst. trace - this->_trace_idx = (this->_trace_idx + 1) % this->_num_traces; - - // if int/excp was found in this set of commit traces... reset on next set - // of commit traces - if (this->_trace_idx == 0) { - this->saw_int_excp = false; - } - - // add an extra STREAM_WIDTH_BYTES if there is an odd amount of traces - if (this->_trace_idx == 0 && (this->_num_traces % 2 == 1)) { -#ifdef DEBUG - fprintf(stderr, - "off(%d + 1) = %d\n", - offset / (STREAM_WIDTH_BYTES / 2), - (offset + STREAM_WIDTH_BYTES / 2) / (STREAM_WIDTH_BYTES / 2)); -#endif - offset += STREAM_WIDTH_BYTES / 2; - } - } - - return bytes_received; -} - -/** - * Move forward the simulation - */ -void dromajo_t::tick() { - this->process_tokens(this->stream_depth, this->stream_depth); -} - -/** - * Pull in any remaining tokens and use them (if the simulation hasn't already - * failed) - */ -void dromajo_t::flush() { - // only flush if there wasn't a failure before - while (!dromajo_failed && (this->process_tokens(this->stream_depth, 0) > 0)) - ; -} diff --git a/sim/firesim-lib/src/main/cc/bridges/dromajo.h b/sim/firesim-lib/src/main/cc/bridges/dromajo.h deleted file mode 100644 index f3fd7685..00000000 --- a/sim/firesim-lib/src/main/cc/bridges/dromajo.h +++ /dev/null @@ -1,100 +0,0 @@ -// See LICENSE for license details -#ifndef __DROMAJO_H -#define __DROMAJO_H - -#include "core/bridge_driver.h" -#include "dromajo_cosim.h" -#include -#include - -struct DROMAJOBRIDGEMODULE_struct {}; - -struct dromajo_config_t { - const char *resetVector; - const char *mmioStart; - const char *mmioEnd; - const char *memSize; - const char *plicBase; - const char *plicSize; - const char *clintBase; - const char *clintSize; -}; - -class dromajo_t : public streaming_bridge_driver_t { -public: - /// The identifier for the bridge type used for casts. - static char KIND; - - dromajo_t(simif_t &sim, - StreamEngine &stream, - std::vector &args, - const DROMAJOBRIDGEMODULE_struct &mmio_addrs, - const dromajo_config_t &config, - int iaddr_width, - int insn_width, - int wdata_width, - int cause_width, - int tval_width, - int num_traces, - int stream_idx, - int stream_depth); - ~dromajo_t(); - - virtual void init(); - virtual void tick(); - virtual bool terminate() { return dromajo_failed; }; - virtual int exit_code() { return (dromajo_failed) ? dromajo_exit_code : 0; }; - virtual void finish() { this->flush(); }; - -private: - const DROMAJOBRIDGEMODULE_struct mmio_addrs; - const dromajo_config_t config; - simif_t *_sim; - - int invoke_dromajo(uint8_t *buf); - int beats_available_stable(); - size_t process_tokens(int num_beats, size_t minimum_batch_beats); - void flush(); - - // in bytes - uint32_t _valid_width; - uint32_t _iaddr_width; - uint32_t _insn_width; - uint32_t _wdata_width; - uint32_t _priv_width; - uint32_t _exception_width; - uint32_t _interrupt_width; - uint32_t _cause_width; - uint32_t _tval_width; - - // in bytes - uint32_t _valid_offset; - uint32_t _iaddr_offset; - uint32_t _insn_offset; - uint32_t _wdata_offset; - uint32_t _priv_offset; - uint32_t _exception_offset; - uint32_t _interrupt_offset; - uint32_t _cause_offset; - uint32_t _tval_offset; - - // other misc members - uint32_t _num_traces; - uint8_t _trace_idx; - bool dromajo_failed; - int dromajo_exit_code; - bool dromajo_cosim; - bool saw_int_excp; - - // dromajo specific - std::string dromajo_dtb; - std::string dromajo_bootrom; - std::string dromajo_bin; - dromajo_cosim_state_t *dromajo_state; - - // stream config - int stream_idx; - int stream_depth; -}; - -#endif // __DROMAJO_H diff --git a/sim/firesim-lib/src/main/scala/bridges/CospikeBridge.scala b/sim/firesim-lib/src/main/scala/bridges/CospikeBridge.scala new file mode 100644 index 00000000..4a80fc40 --- /dev/null +++ b/sim/firesim-lib/src/main/scala/bridges/CospikeBridge.scala @@ -0,0 +1,210 @@ +//See LICENSE for license details +package firesim.bridges + +import chisel3._ +import chisel3.util._ +import org.chipsalliance.cde.config.Parameters +import freechips.rocketchip.util.DecoupledHelper + +import testchipip.{SerializableTileTraceIO, SpikeCosimConfig, TileTraceIO, TraceBundleWidths} + +import midas.widgets._ + +case class CospikeBridgeParams( + widths: TraceBundleWidths, + hartid: Int, + cfg: SpikeCosimConfig, +) + +class CospikeTargetIO(widths: TraceBundleWidths) extends Bundle { + val trace = Input(new SerializableTileTraceIO(widths)) +} + +/** Blackbox that is instantiated in the target + */ +class CospikeBridge(params: CospikeBridgeParams) + extends BlackBox + with Bridge[HostPortIO[CospikeTargetIO], CospikeBridgeModule] { + val io = IO(new CospikeTargetIO(params.widths)) + val bridgeIO = HostPort(io) + + // give the Cospike params to the GG module + val constructorArg = Some(params) + + // generate annotations to pass to GG + generateAnnotations() +} + +/** Helper function to connect blackbox + */ +object CospikeBridge { + def apply(trace: TileTraceIO, hartid: Int, cfg: SpikeCosimConfig) = { + val params = new CospikeBridgeParams(trace.traceBundleWidths, hartid, cfg) + val cosim = withClockAndReset(trace.clock, trace.reset) { + Module(new CospikeBridge(params)) + } + cosim.io.trace.trace.insns.map(t => { + t := DontCare + t.valid := false.B + }) + cosim.io.trace := trace.asSerializableTileTrace + cosim + } +} + +//************************************************* +//* GOLDEN GATE MODULE +//* This lives in the host (still runs on the FPGA) +//************************************************* + +class CospikeBridgeModule(params: CospikeBridgeParams)(implicit p: Parameters) + extends BridgeModule[HostPortIO[CospikeTargetIO]]()(p) + with StreamToHostCPU { + // CONSTANTS: DMA Parameters + val toHostCPUQueueDepth = 6144 + + lazy val module = new BridgeModuleImp(this) { + + // setup io + val io = IO(new WidgetIO) + val hPort = IO(HostPort(new CospikeTargetIO(params.widths))) + + // helper to get number to round up to nearest multiple + def roundUp(num: Int, mult: Int): Int = { (num.toFloat / mult).ceil.toInt * mult } + + // get the traces + val traces = hPort.hBits.trace.trace.insns.map({ unmasked => + val masked = WireDefault(unmasked) + masked.valid := unmasked.valid && !hPort.hBits.trace.reset + masked + }) + private val iaddrWidth = roundUp(traces.map(_.iaddr.getWidth).max, 8) + private val insnWidth = roundUp(traces.map(_.insn.getWidth).max, 8) + private val causeWidth = roundUp(traces.map(_.cause.getWidth).max, 8) + private val wdataWidth = roundUp(traces.map(t => if (t.wdata.isDefined) t.wdata.get.getWidth else 0).max, 8) + + // hack since for some reason padding a bool doesn't work... + def boolPad(in: Bool, size: Int): UInt = { + val temp = Wire(UInt(size.W)) + temp := in.asUInt + temp + } + + // matches order of TracedInstruction in CSR.scala + val paddedTraces = traces.map { trace => + val pre_cat = Cat( + trace.cause.pad(causeWidth), + boolPad(trace.interrupt, 8), + boolPad(trace.exception, 8), + trace.priv.asUInt.pad(8), + trace.insn.pad(insnWidth), + trace.iaddr.pad(iaddrWidth), + boolPad(trace.valid, 8), + ) + + if (wdataWidth == 0) { + pre_cat + } else { + Cat(trace.wdata.get.pad(wdataWidth), pre_cat) + } + } + + val maxTraceSize = paddedTraces.map(t => t.getWidth).max + val outDataSzBits = streamEnq.bits.getWidth + val totalTracesPerToken = (outDataSzBits / maxTraceSize).toInt + val bitsPerTrace = roundUp(outDataSzBits / totalTracesPerToken, 8) + + require( + maxTraceSize < bitsPerTrace, + f"All instruction trace bits (i.e. valid, pc, instBits...) (${maxTraceSize}b) must fit in ${bitsPerTrace}b", + ) + require( + bitsPerTrace * totalTracesPerToken <= outDataSzBits, + f"All traces must fit in single token (${bitsPerTrace * totalTracesPerToken} > ${outDataSzBits})", + ) + + val armCount = (traces.length + totalTracesPerToken - 1) / totalTracesPerToken + + // Literally each arm of the mux, these are directly the bits that get put into the bump + val allStreamBits = + paddedTraces.grouped(totalTracesPerToken).toSeq.map(grp => Cat(grp.map(t => t.asUInt.pad(bitsPerTrace)).reverse)) + + // Number of bits to use for the counter, the +1 is required because the counter will count 1 past the number of arms + val counterBits = log2Ceil(armCount + 1) + + // This counter acts to select the mux arm + val counter = RegInit(0.U(counterBits.W)) + + // The main mux where the input arms are different possible valid traces, and the output goes to streamEnq + val streamMux = MuxLookup(counter, allStreamBits(0), Seq.tabulate(armCount)(x => x.U -> allStreamBits(x))) + + // a parallel set of arms to a parallel mux, true if any instructions in the arm are valid (OR reduction) + val anyValid = + traces + .grouped(totalTracesPerToken) + .toSeq + .map(arm => arm.map(trace => trace.valid | trace.exception | (trace.cause =/= 0.U)).reduce((a, b) => (a | b))) + + // all of the valids of the larger indexed arms are OR reduced + val anyValidRemain = + Seq.tabulate(armCount)(idx => (idx until armCount).map(x => anyValid(x)).reduce((a, b) => (a | b))) + val anyValidRemainMux = MuxLookup(counter, false.B, Seq.tabulate(armCount)(x => x.U -> anyValidRemain(x))) + + streamEnq.bits := streamMux + + val maybeFire = !anyValidRemainMux || (counter === (armCount - 1).U) + val maybeEnq = anyValidRemainMux + + val commonPredicates = Seq(hPort.toHost.hValid, streamEnq.ready) + val do_enq_helper = DecoupledHelper((maybeEnq +: commonPredicates): _*) + val do_fire_helper = DecoupledHelper((maybeFire +: commonPredicates): _*) + + // Note, if we dequeue a token that wins out over the increment below + when(do_fire_helper.fire()) { + counter := 0.U + }.elsewhen(do_enq_helper.fire()) { + counter := counter + 1.U + } + + streamEnq.valid := do_enq_helper.fire(streamEnq.ready) + hPort.toHost.hReady := do_fire_helper.fire(hPort.toHost.hValid) + hPort.fromHost.hValid := true.B // this is uni-directional. we don't drive tokens back to target + + genCRFile() + + // modify the output header file + override def genHeader(base: BigInt, memoryRegions: Map[String, BigInt], sb: StringBuilder): Unit = { + genConstructor( + base, + sb, + "cospike_t", + "cospike", + Seq( + UInt32(iaddrWidth), + UInt32(insnWidth), + UInt32(causeWidth), + UInt32(wdataWidth), + UInt32(traces.length), + UInt32(bitsPerTrace), + CStrLit(params.cfg.isa), + UInt32(params.cfg.vlen), + CStrLit(params.cfg.priv), + UInt32(params.cfg.pmpregions), + UInt64(params.cfg.mem0_base), + UInt64(params.cfg.mem0_size), + UInt32(params.cfg.nharts), + CStrLit(params.cfg.bootrom), + UInt32(params.hartid), + UInt32(toHostStreamIdx), + UInt32(toHostCPUQueueDepth), + ), + hasStreams = true, + ) + } + + // general information printout + println(s"Cospike Bridge Information") + println(s" Total Inst. Traces (i.e. Commit Width): ${traces.length}") + println(s" Total Traces Per Token: ${totalTracesPerToken}") + } +} diff --git a/sim/firesim-lib/src/main/scala/bridges/DromajoBridge.scala b/sim/firesim-lib/src/main/scala/bridges/DromajoBridge.scala deleted file mode 100644 index 1c253cb7..00000000 --- a/sim/firesim-lib/src/main/scala/bridges/DromajoBridge.scala +++ /dev/null @@ -1,145 +0,0 @@ -//See LICENSE for license details -package firesim.bridges - -import chisel3._ -import chisel3.util._ -import org.chipsalliance.cde.config.Parameters -import freechips.rocketchip.util._ - -import testchipip.{TileTraceIO, TraceBundleWidths, SerializableTileTraceIO} - -import midas.widgets._ - -/** - * Blackbox that is instantiated in the target - */ -class DromajoBridge(widths: TraceBundleWidths) extends BlackBox - with Bridge[HostPortIO[SerializableTileTraceIO], DromajoBridgeModule] -{ - val io = IO(new SerializableTileTraceIO(widths)) - val bridgeIO = HostPort(io) - - // give the Dromajo key to the GG module - val constructorArg = Some(widths) - - // generate annotations to pass to GG - generateAnnotations() -} - -/** - * Helper function to connect blackbox - */ -object DromajoBridge { - def apply(tracedInsns: TileTraceIO)(implicit p: Parameters): DromajoBridge = { - val b = Module(new DromajoBridge(tracedInsns.traceBundleWidths)) - b.io.trace := tracedInsns.asSerializableTileTrace - b - } -} - -//************************************************* -//* GOLDEN GATE MODULE -//* This lives in the host (still runs on the FPGA) -//************************************************* - -class DromajoBridgeModule(key: TraceBundleWidths)(implicit p: Parameters) extends BridgeModule[HostPortIO[SerializableTileTraceIO]]()(p) - with StreamToHostCPU -{ - // CONSTANTS: DMA Parameters - val toHostCPUQueueDepth = 6144 - - lazy val module = new BridgeModuleImp(this) { - - // setup io - val io = IO(new WidgetIO) - val hPort = IO(HostPort(new SerializableTileTraceIO(key))) - - // helper to get number to round up to nearest multiple - def roundUp(num: Int, mult: Int): Int = { (num/mult).ceil.toInt * mult } - - // get the traces - val traces = hPort.hBits.trace.insns.map({ unmasked => - val masked = WireDefault(unmasked) - masked.valid := unmasked.valid && !hPort.hBits.reset - masked - }) - private val iaddrWidth = roundUp(traces.map(_.iaddr.getWidth).max, 8) - private val insnWidth = roundUp(traces.map(_.insn.getWidth).max, 8) - private val wdataWidth = roundUp(traces.map(_.wdata.get.getWidth).max, 8) - private val causeWidth = roundUp(traces.map(_.cause.getWidth).max, 8) - private val tvalWidth = roundUp(traces.map(_.tval.getWidth).max, 8) - - // hack since for some reason padding a bool doesn't work... - def boolPad(in: Bool, size: Int): UInt = { - val temp = Wire(UInt(size.W)) - temp := in.asUInt - temp - } - - val paddedTraces = traces.map { trace => - Cat( - trace.tval.pad(tvalWidth), - trace.cause.pad(causeWidth), - boolPad(trace.interrupt, 8), - boolPad(trace.exception, 8), - trace.priv.asUInt.pad(8), - trace.wdata.get.pad(wdataWidth), - trace.insn.pad(insnWidth), - trace.iaddr.pad(iaddrWidth), - boolPad(trace.valid, 8) - ) - } - - val maxTraceSize = paddedTraces.map(t => t.getWidth).max - val outDataSzBits = streamEnq.bits.getWidth - - // constant - val totalTracesPerToken = 2 // minTraceSz==190b so round up to nearest is 256b - // constant - - require(maxTraceSize < (outDataSzBits / totalTracesPerToken), "All instruction trace bits (i.e. valid, pc, instBits...) must fit in 256b") - - // how many traces being sent over - val numTraces = traces.size - // num tokens needed to display full set of instructions from one cycle - val numTokenForAll = ((numTraces - 1) / totalTracesPerToken) + 1 - - // only inc the counter when the something is sent (this implies that the input is valid and output is avail on the other side) - val counterFire = streamEnq.fire - val (cnt, wrap) = Counter(counterFire, numTokenForAll) - - val paddedTracesAligned = paddedTraces.map(t => t.asUInt.pad(outDataSzBits/totalTracesPerToken)) - val paddedTracesTruncated = if (numTraces == 1) { - (paddedTracesAligned.asUInt >> (outDataSzBits.U * cnt)) - } else { - (paddedTracesAligned.asUInt >> (outDataSzBits.U * cnt))(outDataSzBits-1, 0) - } - - streamEnq.valid := hPort.toHost.hValid - streamEnq.bits := paddedTracesTruncated - - // tell the host that you are ready to get more - hPort.toHost.hReady := streamEnq.ready && wrap - - // This is uni-directional. We don't drive tokens back to the target. - hPort.fromHost.hValid := true.B - - genCRFile() - - // modify the output header file - override def genHeader(base: BigInt, memoryRegions: Map[String, BigInt], sb: StringBuilder): Unit = { - genConstructor(base, sb, "dromajo_t", "dromajo", Seq( - UInt32(iaddrWidth), - UInt32(insnWidth), - UInt32(wdataWidth), - UInt32(causeWidth), - UInt32(tvalWidth), - UInt32(numTraces) - )) - } - - // general information printout - println(s"Dromajo Bridge Information") - println(s" Total Inst. Traces / Commit Width: ${numTraces}") - } -} diff --git a/sim/make/cpp-lint.mk b/sim/make/cpp-lint.mk index de198dd0..83eb2ae5 100644 --- a/sim/make/cpp-lint.mk +++ b/sim/make/cpp-lint.mk @@ -12,7 +12,6 @@ clang_tidy_files := $(shell \ | grep -v TestPointerChaser.cc \ | grep -v simif_ \ | grep -v tracerv \ - | grep -v dromajo \ | grep -v tsibridge \ | grep -v fesvr \ | grep -v generated-src \ diff --git a/sim/src/main/makefrag/firesim/driver.mk b/sim/src/main/makefrag/firesim/driver.mk index 8faf50dc..c06e810b 100644 --- a/sim/src/main/makefrag/firesim/driver.mk +++ b/sim/src/main/makefrag/firesim/driver.mk @@ -5,44 +5,21 @@ # Driver Sources & Flags # ########################## -# dromajo modifications -DROMAJO_LIB_DIR ?= $(CONDA_PREFIX)/lib -DROMAJO_INCLUDE_DIR ?= $(CONDA_PREFIX)/include - -DROMAJO_LIB_NAME = dromajo_cosim - -DROMAJO_H = $(GENERATED_DIR)/dromajo_params.h -DROMAJO_LONG_H = $(GENERATED_DIR)/$(long_name).dromajo_params.h - TESTCHIPIP_CSRC_DIR = $(chipyard_dir)/generators/testchipip/src/main/resources/testchipip/csrc -CHIPYARD_ROM = $(chipyard_dir)/generators/testchipip/bootrom/bootrom.rv64.img -DROMAJO_ROM = $(GENERATED_DIR)/$(long_name).rom - -DTS_FILE = $(GENERATED_DIR)/$(long_name).dts -DROMAJO_DTB = $(GENERATED_DIR)/$(long_name).dtb - -$(DROMAJO_LONG_H) $(DTS_FILE): $(simulator_verilog) - -$(DROMAJO_H): $(DROMAJO_LONG_H) - rm -rf $(DROMAJO_H) - ln -s $(DROMAJO_LONG_H) $(DROMAJO_H) - -$(DROMAJO_DTB): $(DTS_FILE) - dtc -I dts -O dtb -o $(DROMAJO_DTB) $(DTS_FILE) - -$(DROMAJO_ROM): $(CHIPYARD_ROM) - rm -rf $(DROMAJO_ROM) - ln -s $(CHIPYARD_ROM) $(DROMAJO_ROM) - -DROMAJO_REQS = $(DROMAJO_H) $(DROMAJO_ROM) $(DROMAJO_DTB) +ifeq (,$(wildcard $(RISCV)/lib/libriscv.so)) +$(warning libriscv not found) +LRISCV= +else +LRISCV=-lriscv +endif firesim_lib_dir = $(firesim_base_dir)/firesim-lib/src/main/cc driver_dir = $(firesim_base_dir)/src/main/cc DRIVER_H = \ $(shell find $(driver_dir) -name "*.h") \ $(shell find $(firesim_lib_dir) -name "*.h") \ - $(DROMAJO_REQS) \ + $(TESTCHIPIP_CSRC_DIR)/cospike_impl.h \ $(TESTCHIPIP_CSRC_DIR)/testchip_tsi.h \ $(TESTCHIPIP_CSRC_DIR)/testchip_htif.h @@ -50,7 +27,7 @@ DRIVER_CC = \ $(addprefix $(driver_dir)/firesim/, $(addsuffix .cc, firesim_top)) \ $(wildcard $(addprefix $(firesim_lib_dir)/, $(addsuffix .cc, bridges/* fesvr/* bridges/tracerv/*))) \ $(RISCV)/lib/libfesvr.a \ - $(DROMAJO_LIB_DIR)/lib$(DROMAJO_LIB_NAME).a \ + $(TESTCHIPIP_CSRC_DIR)/cospike_impl.cc \ $(TESTCHIPIP_CSRC_DIR)/testchip_tsi.cc \ $(TESTCHIPIP_CSRC_DIR)/testchip_htif.cc @@ -58,10 +35,9 @@ DRIVER_CC = \ TARGET_CXX_FLAGS += -g \ -isystem $(RISCV)/include \ -isystem $(TESTCHIPIP_CSRC_DIR) \ - -isystem $(DROMAJO_INCLUDE_DIR) \ -I$(driver_dir)/firesim \ -I$(firesim_lib_dir) \ -I$(GENERATED_DIR) \ -Wno-inconsistent-missing-override -TARGET_LD_FLAGS += -L$(CONDA_PREFIX)/lib -l:libdwarf.so -l:libelf.so -lz +TARGET_LD_FLAGS += -L$(CONDA_PREFIX)/lib -l:libdwarf.so -l:libelf.so -lz -L$(RISCV)/lib -Wl,-rpath,$(RISCV)/lib $(LRISCV) # DOC include end: Bridge Build System Changes diff --git a/target-design/chipyard b/target-design/chipyard index 074c995a..55415826 160000 --- a/target-design/chipyard +++ b/target-design/chipyard @@ -1 +1 @@ -Subproject commit 074c995a31ec04e1a920d4e8c353de8e84f34f4e +Subproject commit 5541582639f8c5feb578b91b75e5d660e37ed006