From 8c3a586c738926c886b83e9383bc30616b7386be Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 20 Sep 2023 15:53:13 -0700 Subject: [PATCH 001/184] Add NarrowRocketCache config fragment For configs with wide SBUS, a narrow rocket cache is easier to PD, and does not incur any performance loss usually --- .../src/main/scala/config/fragments/TileFragments.scala | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index 17eaa3f0..abd26769 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -66,6 +66,15 @@ class WithNPMPs(n: Int = 8) extends Config((site, here, up) => { } }) +class WithRocketCacheRowBits(rowBits: Int = 64) extends Config((site, here, up) => { + case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem)) map { + case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy( + dcache = tp.tileParams.dcache.map(_.copy(rowBits = rowBits)), + icache = tp.tileParams.icache.map(_.copy(rowBits = rowBits)) + )) + } +}) + class WithRocketICacheScratchpad extends Config((site, here, up) => { case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map { case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy( From f3c7ecf8baebd392a5679f06d24c3d02b142cdf6 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Sat, 23 Sep 2023 19:17:54 -0700 Subject: [PATCH 002/184] REFACTOR: change bootaddr and reset vector address --- .../src/main/scala/config/fragments/PeripheralFragments.scala | 2 +- generators/testchipip | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala b/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala index 8f52be74..51d31094 100644 --- a/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala @@ -29,7 +29,7 @@ import chipyard.{ExtTLMem} * @param hang the power-on reset vector, i.e. the program counter will be set to this value on reset * @param contentFileName the path to the BootROM image */ -class WithBootROM(address: BigInt = 0x10000, size: Int = 0x10000, hang: BigInt = 0x10040) extends Config((site, here, up) => { +class WithBootROM(address: BigInt = 0x10000, size: Int = 0x10000, hang: BigInt = 0x10000) extends Config((site, here, up) => { case BootROMLocated(x) => up(BootROMLocated(x), site) .map(_.copy( address = address, diff --git a/generators/testchipip b/generators/testchipip index 177e3071..4be9e328 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 177e3071991421bdb042fec8411c51463477c7fc +Subproject commit 4be9e3288b72ea9c1f36b5022647c3931a72706c From 8fa8be566914ab331b3d998baf85aa4da98e7006 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Wed, 27 Sep 2023 10:54:57 -0700 Subject: [PATCH 003/184] ADD: bump testchipip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index 4be9e328..307fca3c 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 4be9e3288b72ea9c1f36b5022647c3931a72706c +Subproject commit 307fca3c3ec4484d071744df6752bbbb77be7ddb From 6b70dd6d39bc02e328b5ec3e2cdfe9fd963e7a6f Mon Sep 17 00:00:00 2001 From: JL102 Date: Thu, 5 Oct 2023 02:17:25 -0400 Subject: [PATCH 004/184] Added "try-catch" to all build-setup steps This was the only way I knew how to display the step at which the build-setup process failed. I've personally experienced failures at multiple of the build steps, and before I got used to Chipyard, it was hard to figure out which step was the culprit. With this, users should have a bit more info to troubleshoot their issues. For some of the build steps that required multiple lines, I figured it made more sense to put them into a sub-script, rather than putting a && at the end of each line. But for the firesim one for example, since it was two .sh calls, I just put a && after the first one, inside of the try block, to make sure both lines run. --- scripts/build-setup.sh | 110 ++++++++++++------ scripts/build-step-init-conda-environment.sh | 21 ++++ .../build-step-precompile-chipyard-scala.sh | 10 ++ .../build-step-precompile-firesim-scala.sh | 12 ++ scripts/utils.sh | 21 ++++ 5 files changed, 136 insertions(+), 38 deletions(-) create mode 100755 scripts/build-step-init-conda-environment.sh create mode 100644 scripts/build-step-precompile-chipyard-scala.sh create mode 100644 scripts/build-step-precompile-firesim-scala.sh diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index c95056db..080b79af 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -111,22 +111,13 @@ fi # setup and install conda environment if run_step "1"; then - # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 - CONDA_REQS=$CYDIR/conda-reqs - CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs - # must match with the file generated by generate-conda-lockfile.sh - LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml - - if [ "$USE_UNPINNED_DEPS" = true ]; then - # auto-gen the lockfiles - $CYDIR/scripts/generate-conda-lockfiles.sh - fi - - # use conda-lock to create env - conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE - - source $CYDIR/.conda-env/etc/profile.d/conda.sh - conda activate $CYDIR/.conda-env + try; ( + source $CYDIR/scripts/build-step-init-conda-environment.sh + ) + catch || { + echo "Build script exited with exit code $? at step 1: conda environment setup. Check the above logs for more details on the error." + exit $? + } fi if [ -z "$FORCE_FLAG" ]; then @@ -138,7 +129,13 @@ fi # initialize all submodules (without the toolchain submodules) if run_step "2"; then - $CYDIR/scripts/init-submodules-no-riscv-tools.sh $FORCE_FLAG + try; ( + $CYDIR/scripts/init-submodules-no-riscv-tools.sh $FORCE_FLAG + ) + catch || { + echo "Build script exited with exit code $? at step 2: submodule initialization. Check the above logs for more details on the error." + exit $? + } fi # build extra toolchain collateral (i.e. spike, pk, riscv-tests, libgloss) @@ -152,58 +149,95 @@ if run_step "3"; then fi PREFIX=$RISCV fi - $CYDIR/scripts/build-toolchain-extra.sh $TOOLCHAIN_TYPE -p $PREFIX + try; ( + $CYDIR/scripts/build-toolchain-extra.sh $TOOLCHAIN_TYPE -p $PREFIX + ) + catch || { + echo "Build script exited with exit code $? at step 3: toolchain collateral. Check the above logs for more details on the error." + exit $? + } fi # run ctags for code navigation if run_step "4"; then - $CYDIR/scripts/gen-tags.sh + try; ( + $CYDIR/scripts/gen-tags.sh + ) + catch || { + echo "Build script exited with exit code $? at step 4: ctags generation. Check the above logs for more details on the error." + exit $? + } fi # precompile chipyard scala sources if run_step "5"; then - pushd $CYDIR/sims/verilator - make launch-sbt SBT_COMMAND=";project chipyard; compile" - make launch-sbt SBT_COMMAND=";project tapeout; compile" - popd + try; ( + source $CYDIR/scripts/build-step-precompile-chipyard-scala.sh + ) + catch || { + echo "Build script exited with exit code $? at step 5: chipyard pre-compile sources. Check the above logs for more details on the error." + exit $? + } fi # setup firesim if run_step "6"; then - $CYDIR/scripts/firesim-setup.sh - $CYDIR/sims/firesim/gen-tags.sh + try; ( + $CYDIR/scripts/firesim-setup.sh && + $CYDIR/sims/firesim/gen-tags.sh + ) + catch || { + echo "Build script exited with exit code $? at step 6: firesim setup. Check the above logs for more details on the error." + exit $? + } # precompile firesim scala sources if run_step "7"; then - pushd $CYDIR/sims/firesim - ( - echo $CYDIR - source sourceme-manager.sh --skip-ssh-setup - pushd sim - make sbt SBT_COMMAND="project {file:$CYDIR}firechip; compile" TARGET_PROJECT=firesim - popd + try; ( + source $CYDIR/scripts/build-step-precompile-firesim-scala.sh ) - popd + catch || { + echo "Build script exited with exit code $? at step 7: firesim pre-compile sources. Check the above logs for more details on the error." + exit $? + } fi fi # setup firemarshal if run_step "8"; then pushd $CYDIR/software/firemarshal - ./init-submodules.sh + try; ( + ./init-submodules.sh + ) + catch || { + echo "Build script exited with exit code $? at step 8: firemarshal setup. Check the above logs for more details on the error." + exit $? + } # precompile firemarshal buildroot sources if run_step "9"; then - source $CYDIR/scripts/fix-open-files.sh - ./marshal $VERBOSE_FLAG build br-base.json - ./marshal $VERBOSE_FLAG clean br-base.json + try; ( + source $CYDIR/scripts/fix-open-files.sh && + ./marshal $VERBOSE_FLAG build br-base.json && + ./marshal $VERBOSE_FLAG clean br-base.json + ) + catch || { + echo "Build script exited with exit code $? at step 9: firemarshal pre-compile buildroot sources. Check the above logs for more details on the error." + exit $? + } fi popd fi # do misc. cleanup for a "clean" git status if run_step "10"; then - $CYDIR/scripts/repo-clean.sh + try; ( + $CYDIR/scripts/repo-clean.sh + ) + catch || { + echo "Build script exited with exit code $? at step 10: repository cleanup. Check the above logs for more details on the error." + exit $? + } fi cat <> env.sh diff --git a/scripts/build-step-init-conda-environment.sh b/scripts/build-step-init-conda-environment.sh new file mode 100755 index 00000000..2ba4a344 --- /dev/null +++ b/scripts/build-step-init-conda-environment.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +# This script is intended to be used as a sub-step of build-setup.sh. + +# note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 +set -e +CONDA_REQS=$CYDIR/conda-reqs +CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs +# must match with the file generated by generate-conda-lockfile.sh +LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml + +if [ "$USE_UNPINNED_DEPS" = true ]; then + # auto-gen the lockfiles + $CYDIR/scripts/generate-conda-lockfiles.sh +fi + +# use conda-lock to create env +conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE + +source $CYDIR/.conda-env/etc/profile.d/conda.sh +conda activate $CYDIR/.conda-env diff --git a/scripts/build-step-precompile-chipyard-scala.sh b/scripts/build-step-precompile-chipyard-scala.sh new file mode 100644 index 00000000..807b6d8a --- /dev/null +++ b/scripts/build-step-precompile-chipyard-scala.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +# This script is intended to be used as a sub-step of build-setup.sh. + +set -e +pushd $CYDIR/sims/verilator +make launch-sbt SBT_COMMAND=";project chipyard; compile" +make launch-sbt SBT_COMMAND=";project tapeout; compile" +popd + diff --git a/scripts/build-step-precompile-firesim-scala.sh b/scripts/build-step-precompile-firesim-scala.sh new file mode 100644 index 00000000..4c9aeb33 --- /dev/null +++ b/scripts/build-step-precompile-firesim-scala.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# This script is intended to be used as a sub-step of build-setup.sh. +pushd $CYDIR/sims/firesim +( + echo $CYDIR + source sourceme-manager.sh --skip-ssh-setup + pushd sim + make sbt SBT_COMMAND="project {file:$CYDIR}firechip; compile" TARGET_PROJECT=firesim + popd +) +popd diff --git a/scripts/utils.sh b/scripts/utils.sh index 30d3e092..6f0fc5f7 100755 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -53,3 +53,24 @@ function restore_bash_options { set +vx; eval "$OLDSTATE" } + +####################################### +# Basic try-catch block implementation +# for bash scripts. +# Usage: try; ( run commands ) +# catch || { handle error } +# Source: https://stackoverflow.com/a/25180186/5121242 +####################################### +function try() +{ + [[ $- = *e* ]]; SAVED_OPT_E=$? + set +e +} + +function catch() +{ + export ex_code=$? + (( $SAVED_OPT_E )) && set +e + return $ex_code +} + From 6eacd0aa753983f375ccd2ac1dfb7faa518c02d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20Milovanovi=C4=87?= Date: Wed, 4 Oct 2023 22:51:59 +0200 Subject: [PATCH 005/184] Bump dsptools. --- tools/dsptools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/dsptools b/tools/dsptools index 7bd039fb..8f433663 160000 --- a/tools/dsptools +++ b/tools/dsptools @@ -1 +1 @@ -Subproject commit 7bd039fb5f28ce2f31ed4420deb9a2220542838d +Subproject commit 8f4336639578d2e2dbaf61e542ee1f0fa8d79e63 From 9a9e201507031971e466c3374637c04b2e2b7b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20Milovanovi=C4=87?= Date: Wed, 4 Oct 2023 22:52:34 +0200 Subject: [PATCH 006/184] Bump fixedpoint. --- tools/fixedpoint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fixedpoint b/tools/fixedpoint index 35dda166..36ce43c9 160000 --- a/tools/fixedpoint +++ b/tools/fixedpoint @@ -1 +1 @@ -Subproject commit 35dda166f58f021cc32d00a2e76a5a33691c2b20 +Subproject commit 36ce43c90ce9cfc63e7698fa1e27fd122c878e9e From 3c9818024b5e37f2ee580894d34a09d778a468d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20Milovanovi=C4=87?= Date: Wed, 4 Oct 2023 22:52:53 +0200 Subject: [PATCH 007/184] Bump rocket-dsp-utils. --- tools/rocket-dsp-utils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/rocket-dsp-utils b/tools/rocket-dsp-utils index 341e9198..19445522 160000 --- a/tools/rocket-dsp-utils +++ b/tools/rocket-dsp-utils @@ -1 +1 @@ -Subproject commit 341e91985fdda7cce7eb30566fe58482a6f5aa40 +Subproject commit 194455223aa75f400d2ac76bfd71e61e3c2a9533 From 7debb5f52dd6d1b4ae8d08e3e2cd62857983417b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20Milovanovi=C4=87?= Date: Wed, 4 Oct 2023 23:39:35 +0200 Subject: [PATCH 008/184] Bump fpga-shells. --- fpga/fpga-shells | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/fpga-shells b/fpga/fpga-shells index 7d0b79f8..2ce3e6f3 160000 --- a/fpga/fpga-shells +++ b/fpga/fpga-shells @@ -1 +1 @@ -Subproject commit 7d0b79f8559b9bcea1bde8d0293576a502a7a896 +Subproject commit 2ce3e6f3df06d64c858bc1073ba1c75e7eb71a07 From 3d96cf5bc98c6b86a84e35f7e6d6da62103a4b93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladimir=20Milovanovi=C4=87?= Date: Thu, 5 Oct 2023 23:01:29 +0200 Subject: [PATCH 009/184] Adds initial Nexys Video board support. Co-authored-by: pznikola --- .github/scripts/defaults.sh | 7 +- docs/Prototyping/Arty.rst | 20 ++-- docs/Prototyping/General.rst | 2 +- docs/Prototyping/NexysVideo.rst | 49 ++++++++++ docs/Prototyping/index.rst | 7 +- fpga/Makefile | 15 +++ fpga/src/main/scala/nexysvideo/Configs.scala | 72 +++++++++++++++ fpga/src/main/scala/nexysvideo/Harness.scala | 92 +++++++++++++++++++ .../scala/nexysvideo/HarnessBinders.scala | 43 +++++++++ 9 files changed, 290 insertions(+), 17 deletions(-) create mode 100644 docs/Prototyping/NexysVideo.rst create mode 100644 fpga/src/main/scala/nexysvideo/Configs.scala create mode 100644 fpga/src/main/scala/nexysvideo/Harness.scala create mode 100644 fpga/src/main/scala/nexysvideo/HarnessBinders.scala diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 1028960e..08637428 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -34,7 +34,7 @@ grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipya grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar" -grouping["group-fpga"]="arty vcu118 vc707 arty100t" +grouping["group-fpga"]="arty arty100t nexysvideo vc707 vcu118" # key value store to get the build strings declare -A mapping @@ -79,6 +79,7 @@ mapping["rocketchip-tlwidth"]="SUB_PROJECT=rocketchip CONFIG=TLWidthUnitTestConf mapping["rocketchip-tlxbar"]="SUB_PROJECT=rocketchip CONFIG=TLXbarUnitTestConfig" mapping["arty"]="SUB_PROJECT=arty verilog" -mapping["vcu118"]="SUB_PROJECT=vcu118 verilog" -mapping["vc707"]="SUB_PROJECT=vc707 verilog" mapping["arty100t"]="SUB_PROJECT=arty100t verilog" +mapping["nexysvideo"]="SUB_PROJECT=nexysvideo verilog" +mapping["vc707"]="SUB_PROJECT=vc707 verilog" +mapping["vcu118"]="SUB_PROJECT=vcu118 verilog" diff --git a/docs/Prototyping/Arty.rst b/docs/Prototyping/Arty.rst index 15347cf8..0575d811 100644 --- a/docs/Prototyping/Arty.rst +++ b/docs/Prototyping/Arty.rst @@ -2,18 +2,18 @@ Running a Design on Arty ======================== Arty100T Instructions ----------------------- +--------------------- -The default Xilinx Arty 100T harness uses a TSI-over-UART adapter to bringup the FPGA. -A user can connect to the Arty 100T target using a special ``uart_tsi`` program that opens a UART TTY. +The default Digilent Arty A7-100T harness uses a TSI-over-UART adapter to bringup the FPGA. +A user can connect to the Arty A7-100T target using a special ``uart_tsi`` program that opens a UART TTY. The interface for the ``uart_tsi`` program provides unique functionality that is useful for bringing up test chips. -To build the design, run: +To build the design (Vivado should be added to the ``PATH``), run: .. code-block:: shell cd fpga/ - make SUB_PROJECT=arty100t + make SUB_PROJECT=arty100t bitstream To build the UART-based frontend server, run: @@ -58,7 +58,7 @@ Run a design at a higher baud rate than default (For example, if ``CONFIG=UART92 Arty35T Legacy Instructions --------------------------- -The default Xilinx Arty 35T harness is setup to have JTAG available over the board's PMOD pins, and UART available over its FTDI serial USB adapter. The pin mappings for JTAG signals are identical to those described in the `SiFive Freedom E310 Arty 35T Getting Started Guide `__. +The default Digilent Arty A7-35T harness is setup to have JTAG available over the board's PMOD pins, and UART available over its FTDI serial USB adapter. The pin mappings for JTAG signals are identical to those described in the `SiFive Freedom E310 Arty 35T Getting Started Guide `__. The JTAG interface allows a user to connect to the core via OpenOCD, run bare-metal applications, and debug these applications with gdb. UART allows a user to communicate with the core over a USB connection and serial console running on a PC. To extend this design, a user may create their own Chipyard configuration and add the ``WithArtyTweaks`` located in ``fpga/src/main/scala/arty/Configs.scala``. Adding this config. fragment will enable and connect the JTAG and UART interfaces to your Chipyard design. @@ -68,13 +68,13 @@ Adding this config. fragment will enable and connect the JTAG and UART interface :start-after: DOC include start: AbstractArty and Rocket :end-before: DOC include end: AbstractArty and Rocket -Future peripherals to be supported include the Arty 35T SPI Flash EEPROM, and I2C/PWM/SPI over the Arty 35T GPIO pins. These peripherals are available as part of sifive-blocks. +Future peripherals to be supported include the Arty A7-35T SPI Flash EEPROM, and I2C/PWM/SPI over the Arty A7-35T GPIO pins. These peripherals are available as part of sifive-blocks. Brief Implementation Description and Guidance for Adding/Changing Xilinx Collateral ----------------------------------------------------------------------------------- -Like the VCU118, the basis for the Arty 35T design is the creation of a special test harness that connects the external IO (which exist as Xilinx IP blackboxes) to the Chipyard design. -This is done with the ``ArtyTestHarness`` in the basic default Arty 35T target. However, unlike the ``VCU118TestHarness``, the ``ArtyTestHarness`` uses no ``Overlays``, and instead directly connects chip top IO to the ports of the external IO blackboxes, using functions such as ``IOBUF`` provided by ``fpga-shells``. -Unlike the VCU118 and other more complicated test harnesses, the Arty 35T Vivado collateral is not generated by ``Overlays``, but rather are a static collection of ``create_ip`` and ``set_properties`` statements located in the files within ``fpga/fpga-shells/xilinx/arty/tcl`` and ``fpga/fpga-shells/xilinx/arty/constraints``. +Like the VCU118, the basis for the Arty A7-35T design is the creation of a special test harness that connects the external IO (which exist as Xilinx IP blackboxes) to the Chipyard design. +This is done with the ``ArtyTestHarness`` in the basic default Arty A7-35T target. However, unlike the ``VCU118TestHarness``, the ``ArtyTestHarness`` uses no ``Overlays``, and instead directly connects chip top IO to the ports of the external IO blackboxes, using functions such as ``IOBUF`` provided by ``fpga-shells``. +Unlike the VCU118 and other more complicated test harnesses, the Arty A7-35T Vivado collateral is not generated by ``Overlays``, but rather are a static collection of ``create_ip`` and ``set_properties`` statements located in the files within ``fpga/fpga-shells/xilinx/arty/tcl`` and ``fpga/fpga-shells/xilinx/arty/constraints``. If the user wishes to re-map FPGA package pins to different harness-level IO, this may be changed within ``fpga/fpga-shells/xilinx/arty/constraints/arty-master.xdc``. The addition of new Xilinx IP blocks may be done in ``fpga-shells/xilinx/arty/tcl/ip.tcl``, mapped to harness-level IOs in ``arty-master.xdc``, and wired through from the test harness to the chip top using ``HarnessBinders`` and ``IOBinders``. Examples of a simple ``IOBinder`` and ``HarnessBinder`` for routing signals (in this case the debug and JTAG resets) from the core to the test harness are the ``WithResetPassthrough`` and ``WithArtyResetHarnessBinder``. diff --git a/docs/Prototyping/General.rst b/docs/Prototyping/General.rst index 2b7a7332..051cbcf8 100644 --- a/docs/Prototyping/General.rst +++ b/docs/Prototyping/General.rst @@ -2,7 +2,7 @@ General Setup and Usage ============================== Sources ---------------------------- +------- All FPGA prototyping-related collateral and sources are located in the ``fpga`` top-level Chipyard directory. This includes the ``fpga-shells`` submodule and the ``src`` directory that hold both Scala, TCL and other collateral. diff --git a/docs/Prototyping/NexysVideo.rst b/docs/Prototyping/NexysVideo.rst new file mode 100644 index 00000000..773084b9 --- /dev/null +++ b/docs/Prototyping/NexysVideo.rst @@ -0,0 +1,49 @@ +Running a Design on Nexys Video +=============================== + +Nexys Video Instructions +------------------------ + +The default Digilent Nexys Video harness uses a TSI-over-UART adapter to bringup the FPGA. +A user can connect to the Nexys Video target using a special ``uart_tsi`` program that opens a UART TTY. +The interface for the ``uart_tsi`` program provides unique functionality that is useful for bringing up test chips. + +To build the design (Vivado should be added to the ``PATH``), run: + +.. code-block:: shell + + cd fpga/ + make SUB_PROJECT=nexysvideo bitstream + +To build the UART-based frontend server, run: + +.. code-block:: shell + + cd generators/testchipip/uart_tsi + make + +After programming the bitstream, and connecting the Nexys Video's UART to a host PC via the USB cable, the ``uart_tsi`` program can be run to interact with the target. + +Running a program: + +.. code-block:: shell + + ./uart_tsi +tty=/dev/ttyUSBX dhrystone.riscv + +Probe an address on the target system: + +.. code-block:: shell + + ./uart_tsi +tty=/dev/ttyUSBX +init_read=0x10040 none + +Write some address before running a program: + +.. code-block:: shell + + ./uart_tsi +tty=/dev/ttyUSBX +init_write=0x80000000:0xdeadbeef none + +Self-check that binary loading proceeded correctly: + +.. code-block:: shell + + ./uart_tsi +tty=/dev/ttyUSBX +selfcheck dhrystone.riscv diff --git a/docs/Prototyping/index.rst b/docs/Prototyping/index.rst index ba0dff49..a2332a25 100644 --- a/docs/Prototyping/index.rst +++ b/docs/Prototyping/index.rst @@ -2,10 +2,10 @@ Prototyping Flow ================ Chipyard supports FPGA prototyping for local FPGAs supported by `fpga-shells `__. -This includes popular FPGAs such as the Xilinx VCU118 and the Xilinx Arty 35T board. +This includes popular FPGAs such as the Xilinx VCU118 and the Digilent Arty A7-35T/A7-100T board. -.. Note:: While ``fpga-shells`` provides harnesses for other FPGA development boards such as the Xilinx VC707 and some MicroSemi PolarFire, only harnesses for the Xilinx VCU118 and Xilinx Arty 35T boards are currently supported in Chipyard. - However, the VCU118 and Arty 35T examples demonstrate how a user may implement support for other harnesses provided by fpga-shells. +.. Note:: While ``fpga-shells`` provides harnesses for other FPGA development boards such as the Xilinx VC707 and some MicroSemi PolarFire, only harnesses for the Xilinx VCU118 and Digilent Arty A7-35T/A7-100T boards are currently supported in Chipyard. + However, the VCU118 and Arty A7-35T/A7-100T examples demonstrate how a user may implement support for other harnesses provided by fpga-shells. .. toctree:: :maxdepth: 2 @@ -14,3 +14,4 @@ This includes popular FPGAs such as the Xilinx VCU118 and the Xilinx Arty 35T bo General VCU118 Arty + NexysVideo diff --git a/fpga/Makefile b/fpga/Makefile index 7521b1ed..3d3caf1c 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -57,6 +57,21 @@ ifeq ($(SUB_PROJECT),bringup) BOARD ?= vcu118 FPGA_BRAND ?= xilinx endif + +ifeq ($(SUB_PROJECT),nexysvideo) + SBT_PROJECT ?= fpga_platforms + MODEL ?= NexysVideoHarness + VLOG_MODEL ?= NexysVideoHarness + MODEL_PACKAGE ?= chipyard.fpga.nexysvideo + CONFIG ?= RocketNexysVideoConfig + CONFIG_PACKAGE ?= chipyard.fpga.nexysvideo + GENERATOR_PACKAGE ?= chipyard + TB ?= none # unused + TOP ?= ChipTop + BOARD ?= nexys_video + FPGA_BRAND ?= xilinx +endif + ifeq ($(SUB_PROJECT),arty) # TODO: Fix with Arty SBT_PROJECT ?= fpga_platforms diff --git a/fpga/src/main/scala/nexysvideo/Configs.scala b/fpga/src/main/scala/nexysvideo/Configs.scala new file mode 100644 index 00000000..f31e38d1 --- /dev/null +++ b/fpga/src/main/scala/nexysvideo/Configs.scala @@ -0,0 +1,72 @@ +// See LICENSE for license details. +package chipyard.fpga.nexysvideo + +import org.chipsalliance.cde.config._ +import freechips.rocketchip.subsystem._ +import freechips.rocketchip.devices.debug._ +import freechips.rocketchip.devices.tilelink._ +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.system._ +import freechips.rocketchip.tile._ + +import sifive.blocks.devices.uart._ +import sifive.fpgashells.shell.{DesignKey} + +import testchipip.{SerialTLKey} + +import chipyard.{BuildSystem} + +// don't use FPGAShell's DesignKey +class WithNoDesignKey extends Config((site, here, up) => { + case DesignKey => (p: Parameters) => new SimpleLazyModule()(p) +}) + +// DOC include start: WithNexysVideoTweaks and Rocket +class WithNexysVideoTweaks extends Config( + new WithNexysVideoUARTTSI ++ + new WithNexysVideoDDRTL ++ + new WithNoDesignKey ++ + new testchipip.WithUARTTSIClient ++ + new chipyard.harness.WithSerialTLTiedOff ++ + new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ + new chipyard.config.WithMemoryBusFrequency(50.0) ++ + new chipyard.config.WithFrontBusFrequency(50.0) ++ + new chipyard.config.WithSystemBusFrequency(50.0) ++ + new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ + new chipyard.clocking.WithPassthroughClockGenerator ++ + new chipyard.config.WithNoDebug ++ // no jtag + new chipyard.config.WithNoUART ++ // use UART for the UART-TSI thing instad + new chipyard.config.WithTLBackingMemory ++ // FPGA-shells converts the AXI to TL for us + new freechips.rocketchip.subsystem.WithExtMemSize(BigInt(512) << 20) ++ // 512mb on Nexys Video + new freechips.rocketchip.subsystem.WithoutTLMonitors) + +class RocketNexysVideoConfig extends Config( + new WithNexysVideoTweaks ++ + new chipyard.config.WithBroadcastManager ++ // no l2 + new chipyard.RocketConfig) +// DOC include end: WithNexysVideoTweaks and Rocket + +// DOC include start: WithTinyNexysVideoTweaks and Rocket +class WithTinyNexysVideoTweaks extends Config( + new WithNexysVideoUARTTSI ++ + new WithNoDesignKey ++ + new sifive.fpgashells.shell.xilinx.WithNoNexysVideoShellDDR ++ // no DDR + new testchipip.WithUARTTSIClient ++ + new chipyard.harness.WithSerialTLTiedOff ++ + new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ + new chipyard.config.WithMemoryBusFrequency(50.0) ++ + new chipyard.config.WithFrontBusFrequency(50.0) ++ + new chipyard.config.WithSystemBusFrequency(50.0) ++ + new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ + new chipyard.clocking.WithPassthroughClockGenerator ++ + new chipyard.config.WithNoDebug ++ // no jtag + new chipyard.config.WithNoUART ++ // use UART for the UART-TSI thing instad + new freechips.rocketchip.subsystem.WithoutTLMonitors) + +class TinyRocketNexysVideoConfig extends Config( + new WithTinyNexysVideoTweaks ++ + new chipyard.config.WithBroadcastManager ++ // no l2 + new chipyard.TinyRocketConfig) + // DOC include end: WithTinyNexysVideoTweaks and Rocket \ No newline at end of file diff --git a/fpga/src/main/scala/nexysvideo/Harness.scala b/fpga/src/main/scala/nexysvideo/Harness.scala new file mode 100644 index 00000000..0cfb7110 --- /dev/null +++ b/fpga/src/main/scala/nexysvideo/Harness.scala @@ -0,0 +1,92 @@ +// See LICENSE for license details. +package chipyard.fpga.nexysvideo + +import chisel3._ +import chisel3.util._ +import freechips.rocketchip.diplomacy._ +import org.chipsalliance.cde.config.{Parameters} +import freechips.rocketchip.tilelink._ +import freechips.rocketchip.subsystem.{SystemBusKey} + +import sifive.fpgashells.shell.xilinx._ +import sifive.fpgashells.shell._ +import sifive.fpgashells.clocks.{ClockGroup, ClockSinkNode, PLLFactoryKey, ResetWrangler} + +import sifive.blocks.devices.uart._ + +import chipyard._ +import chipyard.harness._ +import chipyard.iobinders.{HasIOBinders} + +class NexysVideoHarness(override implicit val p: Parameters) extends NexysVideoShell { + def dp = designParameters + + val clockOverlay = dp(ClockInputOverlayKey).map(_.place(ClockInputDesignInput())).head + val harnessSysPLL = dp(PLLFactoryKey) + val harnessSysPLLNode = harnessSysPLL() + val dutFreqMHz = (dp(SystemBusKey).dtsFrequency.get / (1000 * 1000)).toInt + val dutClock = ClockSinkNode(freqMHz = dutFreqMHz) + println(s"NexysVideo FPGA Base Clock Freq: ${dutFreqMHz} MHz") + val dutWrangler = LazyModule(new ResetWrangler()) + val dutGroup = ClockGroup() + dutClock := dutWrangler.node := dutGroup := harnessSysPLLNode + + harnessSysPLLNode := clockOverlay.overlayOutput.node + + val io_uart_bb = BundleBridgeSource(() => new UARTPortIO(dp(PeripheryUARTKey).headOption.getOrElse(UARTParams(0)))) + val uartOverlay = dp(UARTOverlayKey).head.place(UARTDesignInput(io_uart_bb)) + + // Optional DDR + val ddrOverlay = if (p(NexysVideoShellDDR)) Some(dp(DDROverlayKey).head.place(DDRDesignInput(dp(ExtTLMem).get.master.base, dutWrangler.node, harnessSysPLLNode)).asInstanceOf[DDRNexysVideoPlacedOverlay]) else None + val ddrClient = if (p(NexysVideoShellDDR)) Some(TLClientNode(Seq(TLMasterPortParameters.v1(Seq(TLMasterParameters.v1( + name = "chip_ddr", + sourceId = IdRange(0, 1 << dp(ExtTLMem).get.master.idBits) + )))))) else None + val ddrBlockDuringReset = if (p(NexysVideoShellDDR)) Some(LazyModule(new TLBlockDuringReset(4))) else None + if (p(NexysVideoShellDDR)) { ddrOverlay.get.overlayOutput.ddr := ddrBlockDuringReset.get.node := ddrClient.get } + + val ledOverlays = dp(LEDOverlayKey).map(_.place(LEDDesignInput())) + val all_leds = ledOverlays.map(_.overlayOutput.led) + val status_leds = all_leds.take(2) + val other_leds = all_leds.drop(2) + + + override lazy val module = new HarnessLikeImpl + + class HarnessLikeImpl extends Impl with HasHarnessInstantiators { + all_leds.foreach(_ := DontCare) + clockOverlay.overlayOutput.node.out(0)._1.reset := ~resetPin + + val clk_100mhz = clockOverlay.overlayOutput.node.out.head._1.clock + + // Blink the status LEDs for sanity + withClockAndReset(clk_100mhz, dutClock.in.head._1.reset) { + val period = (BigInt(100) << 20) / status_leds.size + val counter = RegInit(0.U(log2Ceil(period).W)) + val on = RegInit(0.U(log2Ceil(status_leds.size).W)) + status_leds.zipWithIndex.map { case (o,s) => o := on === s.U } + counter := Mux(counter === (period-1).U, 0.U, counter + 1.U) + when (counter === 0.U) { + on := Mux(on === (status_leds.size-1).U, 0.U, on + 1.U) + } + } + + other_leds(0) := resetPin + + harnessSysPLL.plls.foreach(_._1.getReset.get := pllReset) + + def referenceClockFreqMHz = dutFreqMHz + def referenceClock = dutClock.in.head._1.clock + def referenceReset = dutClock.in.head._1.reset + def success = { require(false, "Unused"); false.B } + + if (p(NexysVideoShellDDR)) { + ddrOverlay.get.mig.module.clock := harnessBinderClock + ddrOverlay.get.mig.module.reset := harnessBinderReset + ddrBlockDuringReset.get.module.clock := harnessBinderClock + ddrBlockDuringReset.get.module.reset := harnessBinderReset.asBool || !ddrOverlay.get.mig.module.io.port.init_calib_complete + } + + instantiateChipTops() + } +} diff --git a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala new file mode 100644 index 00000000..3a035a10 --- /dev/null +++ b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala @@ -0,0 +1,43 @@ +// See LICENSE for license details. +package chipyard.fpga.nexysvideo + +import chisel3._ + +import freechips.rocketchip.subsystem.{PeripheryBusKey} +import freechips.rocketchip.tilelink.{TLBundle} +import freechips.rocketchip.util.{HeterogeneousBag} +import freechips.rocketchip.diplomacy.{LazyRawModuleImp} + +import sifive.blocks.devices.uart.{UARTParams} + +import chipyard._ +import chipyard.harness._ + +import testchipip._ + +class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends OverrideHarnessBinder({ + (system: CanHavePeripheryUARTTSI, th: HasHarnessInstantiators, ports: Seq[UARTTSIIO]) => { + implicit val p = chipyard.iobinders.GetSystemParameters(system) + require(ports.size <= 1) + val nexysvideoth = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] + ports.map({ port => + nexysvideoth.io_uart_bb.bundle <> port.uart + nexysvideoth.other_leds(1) := port.dropped + nexysvideoth.other_leds(2) := port.tsi2tl_state(0) + nexysvideoth.other_leds(3) := port.tsi2tl_state(1) + nexysvideoth.other_leds(4) := port.tsi2tl_state(2) + nexysvideoth.other_leds(5) := port.tsi2tl_state(3) + }) + } +}) + +class WithNexysVideoDDRTL extends OverrideHarnessBinder({ + (system: CanHaveMasterTLMemPort, th: HasHarnessInstantiators, ports: Seq[HeterogeneousBag[TLBundle]]) => { + require(ports.size == 1) + val nexysTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] + val bundles = nexysTh.ddrClient.get.out.map(_._1) + val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) + bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } + ddrClientBundle <> ports.head + } +}) From eb3a0aecf4fe7ad2d382318e5d56da4162c5c2da Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 2 Oct 2023 17:30:13 -0700 Subject: [PATCH 010/184] Add PortAPI between IO and Harness blocks --- docs/Customization/IOBinders.rst | 2 +- fpga/src/main/scala/arty/Configs.scala | 3 +- fpga/src/main/scala/arty/HarnessBinders.scala | 113 ++-- fpga/src/main/scala/arty/IOBinders.scala | 4 +- .../main/scala/arty100t/HarnessBinders.scala | 29 +- fpga/src/main/scala/vc707/Configs.scala | 4 - .../src/main/scala/vc707/HarnessBinders.scala | 35 +- fpga/src/main/scala/vc707/IOBinders.scala | 53 -- fpga/src/main/scala/vcu118/Configs.scala | 3 - .../main/scala/vcu118/HarnessBinders.scala | 33 +- fpga/src/main/scala/vcu118/IOBinders.scala | 44 -- .../main/scala/vcu118/bringup/Configs.scala | 4 +- .../scala/vcu118/bringup/HarnessBinders.scala | 56 +- .../main/scala/vcu118/bringup/IOBinders.scala | 25 +- .../main/scala/clocking/ClockBinders.scala | 20 +- .../clocking/DividerOnlyClockGenerator.scala | 2 +- .../main/scala/config/AbstractConfig.scala | 10 +- .../main/scala/config/TracegenConfigs.scala | 3 +- .../src/main/scala/example/FlatChipTop.scala | 4 +- .../main/scala/example/FlatTestHarness.scala | 2 +- .../main/scala/harness/HarnessBinders.scala | 491 ++++++++---------- .../harness/HasHarnessInstantiators.scala | 2 +- .../scala/harness/MultiHarnessBinders.scala | 88 ++-- .../src/main/scala/harness/package.scala | 12 +- .../scala/{ => iobinders}/IOBinders.scala | 185 ++++--- .../src/main/scala/iobinders/Ports.scala | 94 ++++ .../src/main/scala/BridgeBinders.scala | 149 ++---- .../firechip/src/main/scala/FireSim.scala | 48 +- .../src/main/scala/TargetConfigs.scala | 13 +- generators/icenet | 2 +- generators/testchipip | 2 +- sims/firesim | 2 +- 32 files changed, 715 insertions(+), 822 deletions(-) delete mode 100644 fpga/src/main/scala/vc707/IOBinders.scala delete mode 100644 fpga/src/main/scala/vcu118/IOBinders.scala rename generators/chipyard/src/main/scala/{ => iobinders}/IOBinders.scala (70%) create mode 100644 generators/chipyard/src/main/scala/iobinders/Ports.scala diff --git a/docs/Customization/IOBinders.rst b/docs/Customization/IOBinders.rst index d3626a03..d7e65223 100644 --- a/docs/Customization/IOBinders.rst +++ b/docs/Customization/IOBinders.rst @@ -13,7 +13,7 @@ The ``IOBinder`` functions are responsible for instantiating IO cells and IOPort For example, the ``WithUARTIOCells`` IOBinder will, for any ``System`` that might have UART ports (``HasPeripheryUARTModuleImp``, generate ports within the ``ChipTop`` (``ports``) as well as IOCells with the appropriate type and direction (``cells2d``). This function returns a the list of generated ports, and the list of generated IOCells. The list of generated ports is passed to the ``HarnessBinders`` such that they can be connected to ``TestHarness`` devices. -.. literalinclude:: ../../generators/chipyard/src/main/scala/IOBinders.scala +.. literalinclude:: ../../generators/chipyard/src/main/scala/iobinders/IOBinders.scala :language: scala :start-after: DOC include start: WithUARTIOCells :end-before: DOC include end: WithUARTIOCells diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index 1cf7bfce..3e208060 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -17,7 +17,8 @@ import chipyard.{BuildSystem} // DOC include start: AbstractArty and Rocket class WithArtyTweaks extends Config( - new WithArtyResetHarnessBinder ++ + new WithArtyDebugResetHarnessBinder ++ + new WithArtyJTAGResetHarnessBinder ++ new WithArtyJTAGHarnessBinder ++ new WithArtyUARTHarnessBinder ++ new WithDebugResetPassthrough ++ diff --git a/fpga/src/main/scala/arty/HarnessBinders.scala b/fpga/src/main/scala/arty/HarnessBinders.scala index 1d96cecf..5cef5f80 100644 --- a/fpga/src/main/scala/arty/HarnessBinders.scala +++ b/fpga/src/main/scala/arty/HarnessBinders.scala @@ -11,68 +11,61 @@ import sifive.blocks.devices.pinctrl.{BasePin} import sifive.fpgashells.ip.xilinx.{IBUFG, IOBUF, PULLUP, PowerOnResetFPGAOnly} -import chipyard.harness.{ComposeHarnessBinder, OverrideHarnessBinder} -import chipyard.iobinders.JTAGChipIO +import chipyard.harness.{HarnessBinder} +import chipyard.iobinders._ -class WithArtyResetHarnessBinder extends ComposeHarnessBinder({ - (system: HasPeripheryDebug, th: ArtyFPGATestHarness, ports: Seq[Data]) => { - val resetPorts = ports.collect { case b: Bool => b } - require(resetPorts.size == 2) +class WithArtyDebugResetHarnessBinder extends HarnessBinder({ + case (th: ArtyFPGATestHarness, port: DebugResetPort) => { + th.dut_ndreset := port.io // Debug module reset + } +}) + +class WithArtyJTAGResetHarnessBinder extends HarnessBinder({ + case (th: ArtyFPGATestHarness, port: JTAGResetPort) => { + port.io := PowerOnResetFPGAOnly(th.clock_32MHz) // JTAG module reset + } +}) + +class WithArtyJTAGHarnessBinder extends HarnessBinder({ + case (th: ArtyFPGATestHarness, port: JTAGPort) => { + val jtag_wire = Wire(new JTAGIO) + jtag_wire.TDO.data := port.io.TDO + jtag_wire.TDO.driven := true.B + port.io.TCK := jtag_wire.TCK + port.io.TMS := jtag_wire.TMS + port.io.TDI := jtag_wire.TDI + + val io_jtag = Wire(new JTAGPins(() => new BasePin(), false)).suggestName("jtag") + + JTAGPinsFromPort(io_jtag, jtag_wire) + + io_jtag.TCK.i.ival := IBUFG(IOBUF(th.jd_2).asClock).asBool + + IOBUF(th.jd_5, io_jtag.TMS) + PULLUP(th.jd_5) + + IOBUF(th.jd_4, io_jtag.TDI) + PULLUP(th.jd_4) + + IOBUF(th.jd_0, io_jtag.TDO) + + // mimic putting a pullup on this line (part of reset vote) + th.SRST_n := IOBUF(th.jd_6) + PULLUP(th.jd_6) + + // ignore the po input + io_jtag.TCK.i.po.map(_ := DontCare) + io_jtag.TDI.i.po.map(_ := DontCare) + io_jtag.TMS.i.po.map(_ := DontCare) + io_jtag.TDO.i.po.map(_ := DontCare) + } +}) + +class WithArtyUARTHarnessBinder extends HarnessBinder({ + case (th: ArtyFPGATestHarness, port: UARTPort) => { withClockAndReset(th.clock_32MHz, th.ck_rst) { - // Debug module reset - th.dut_ndreset := resetPorts(0) - - // JTAG reset - resetPorts(1) := PowerOnResetFPGAOnly(th.clock_32MHz) - } - } -}) - -class WithArtyJTAGHarnessBinder extends OverrideHarnessBinder({ - (system: HasPeripheryDebug, th: ArtyFPGATestHarness, ports: Seq[Data]) => { - ports.map { - case j: JTAGChipIO => { - val jtag_wire = Wire(new JTAGIO) - jtag_wire.TDO.data := j.TDO - jtag_wire.TDO.driven := true.B - j.TCK := jtag_wire.TCK - j.TMS := jtag_wire.TMS - j.TDI := jtag_wire.TDI - - val io_jtag = Wire(new JTAGPins(() => new BasePin(), false)).suggestName("jtag") - - JTAGPinsFromPort(io_jtag, jtag_wire) - - io_jtag.TCK.i.ival := IBUFG(IOBUF(th.jd_2).asClock).asBool - - IOBUF(th.jd_5, io_jtag.TMS) - PULLUP(th.jd_5) - - IOBUF(th.jd_4, io_jtag.TDI) - PULLUP(th.jd_4) - - IOBUF(th.jd_0, io_jtag.TDO) - - // mimic putting a pullup on this line (part of reset vote) - th.SRST_n := IOBUF(th.jd_6) - PULLUP(th.jd_6) - - // ignore the po input - io_jtag.TCK.i.po.map(_ := DontCare) - io_jtag.TDI.i.po.map(_ := DontCare) - io_jtag.TMS.i.po.map(_ := DontCare) - io_jtag.TDO.i.po.map(_ := DontCare) - } - case b: Bool => - } - } -}) - -class WithArtyUARTHarnessBinder extends OverrideHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: ArtyFPGATestHarness, ports: Seq[UARTPortIO]) => { - withClockAndReset(th.clock_32MHz, th.ck_rst) { - IOBUF(th.uart_rxd_out, ports.head.txd) - ports.head.rxd := IOBUF(th.uart_txd_in) + IOBUF(th.uart_rxd_out, port.io.txd) + port.io.rxd := IOBUF(th.uart_txd_in) } } }) diff --git a/fpga/src/main/scala/arty/IOBinders.scala b/fpga/src/main/scala/arty/IOBinders.scala index da6c7318..c3929262 100644 --- a/fpga/src/main/scala/arty/IOBinders.scala +++ b/fpga/src/main/scala/arty/IOBinders.scala @@ -5,7 +5,7 @@ import chisel3.experimental.{IO} import freechips.rocketchip.devices.debug.{HasPeripheryDebug} -import chipyard.iobinders.{ComposeIOBinder} +import chipyard.iobinders.{ComposeIOBinder, DebugResetPort, JTAGResetPort} class WithDebugResetPassthrough extends ComposeIOBinder({ (system: HasPeripheryDebug) => { @@ -18,6 +18,6 @@ class WithDebugResetPassthrough extends ComposeIOBinder({ val io_sjtag_reset: Bool = IO(Input(Bool())).suggestName("sjtag_reset") sjtag.reset := io_sjtag_reset - (Seq(io_ndreset, io_sjtag_reset), Nil) + (Seq(DebugResetPort(io_ndreset), JTAGResetPort(io_sjtag_reset)), Nil) } }) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 060e3d8d..e313c6e1 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -16,33 +16,28 @@ import sifive.fpgashells.ip.xilinx.{IBUFG, IOBUF, PULLUP, PowerOnResetFPGAOnly} import chipyard._ import chipyard.harness._ -import chipyard.iobinders.JTAGChipIO +import chipyard.iobinders._ import testchipip._ -class WithArty100TUARTTSI(uartBaudRate: BigInt = 115200) extends OverrideHarnessBinder({ - (system: CanHavePeripheryUARTTSI, th: HasHarnessInstantiators, ports: Seq[UARTTSIIO]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - require(ports.size <= 1) +class WithArty100TUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] - ports.map({ port => - ath.io_uart_bb.bundle <> port.uart - ath.other_leds(1) := port.dropped - ath.other_leds(9) := port.tsi2tl_state(0) - ath.other_leds(10) := port.tsi2tl_state(1) - ath.other_leds(11) := port.tsi2tl_state(2) - ath.other_leds(12) := port.tsi2tl_state(3) - }) + ath.io_uart_bb.bundle <> port.io.uart + ath.other_leds(1) := port.io.dropped + ath.other_leds(9) := port.io.tsi2tl_state(0) + ath.other_leds(10) := port.io.tsi2tl_state(1) + ath.other_leds(11) := port.io.tsi2tl_state(2) + ath.other_leds(12) := port.io.tsi2tl_state(3) } }) -class WithArty100TDDRTL extends OverrideHarnessBinder({ - (system: CanHaveMasterTLMemPort, th: HasHarnessInstantiators, ports: Seq[HeterogeneousBag[TLBundle]]) => { - require(ports.size == 1) +class WithArty100TDDRTL extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: TLMemPort) => { val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val bundles = artyTh.ddrClient.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } - ddrClientBundle <> ports.head + ddrClientBundle <> port.io } }) diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index 55ce8e06..b37064ac 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -53,10 +53,6 @@ class WithVC707Tweaks extends Config ( new WithVC707UARTHarnessBinder ++ new WithVC707SPISDCardHarnessBinder ++ new WithVC707DDRMemHarnessBinder ++ - // io binders - new WithUARTIOPassthrough ++ - new WithSPIIOPassthrough ++ - new WithTLIOPassthrough ++ // other configuration new WithDefaultPeripherals ++ new chipyard.config.WithTLBackingMemory ++ // use TL backing memory diff --git a/fpga/src/main/scala/vc707/HarnessBinders.scala b/fpga/src/main/scala/vc707/HarnessBinders.scala index cf5bbb5e..25224d57 100644 --- a/fpga/src/main/scala/vc707/HarnessBinders.scala +++ b/fpga/src/main/scala/vc707/HarnessBinders.scala @@ -11,36 +11,29 @@ import sifive.blocks.devices.spi.{HasPeripherySPI, SPIPortIO} import sifive.fpgashells.devices.xilinx.xilinxvc707pciex1.{HasSystemXilinxVC707PCIeX1ModuleImp, XilinxVC707PCIeX1IO} import chipyard.{CanHaveMasterTLMemPort} -import chipyard.harness.{OverrideHarnessBinder} +import chipyard.harness.{HarnessBinder} +import chipyard.iobinders._ /*** UART ***/ -class WithVC707UARTHarnessBinder extends OverrideHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: BaseModule, ports: Seq[UARTPortIO]) => { - th match { case vc707th: VC707FPGATestHarnessImp => { - vc707th.vc707Outer.io_uart_bb.bundle <> ports.head - }} +class WithVC707UARTHarnessBinder extends HarnessBinder({ + case (th: VC707FPGATestHarnessImp, port: UARTPort) => { + th.vc707Outer.io_uart_bb.bundle <> port.io } }) /*** SPI ***/ -class WithVC707SPISDCardHarnessBinder extends OverrideHarnessBinder({ - (system: HasPeripherySPI, th: BaseModule, ports: Seq[SPIPortIO]) => { - th match { case vc707th: VC707FPGATestHarnessImp => { - vc707th.vc707Outer.io_spi_bb.bundle <> ports.head - }} +class WithVC707SPISDCardHarnessBinder extends HarnessBinder({ + case (th: VC707FPGATestHarnessImp, port: SPIPort) => { + th.vc707Outer.io_spi_bb.bundle <> port.io } }) /*** Experimental DDR ***/ -class WithVC707DDRMemHarnessBinder extends OverrideHarnessBinder({ - (system: CanHaveMasterTLMemPort, th: BaseModule, ports: Seq[HeterogeneousBag[TLBundle]]) => { - th match { case vc707th: VC707FPGATestHarnessImp => { - require(ports.size == 1) - - val bundles = vc707th.vc707Outer.ddrClient.out.map(_._1) - val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) - bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } - ddrClientBundle <> ports.head - }} +class WithVC707DDRMemHarnessBinder extends HarnessBinder({ + case (th: VC707FPGATestHarnessImp, port: TLMemPort) => { + val bundles = th.vc707Outer.ddrClient.out.map(_._1) + val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) + bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } + ddrClientBundle <> port.io } }) diff --git a/fpga/src/main/scala/vc707/IOBinders.scala b/fpga/src/main/scala/vc707/IOBinders.scala deleted file mode 100644 index ad485571..00000000 --- a/fpga/src/main/scala/vc707/IOBinders.scala +++ /dev/null @@ -1,53 +0,0 @@ -package chipyard.fpga.vc707 - -import chisel3._ -import chisel3.experimental.{IO, DataMirror} - -import freechips.rocketchip.diplomacy.{ResourceBinding, Resource, ResourceAddress, InModuleBody} -import freechips.rocketchip.subsystem.{BaseSubsystem} -import freechips.rocketchip.util.{HeterogeneousBag} -import freechips.rocketchip.tilelink.{TLBundle} - -import sifive.blocks.devices.uart.{HasPeripheryUARTModuleImp} -import sifive.blocks.devices.spi.{HasPeripherySPI, HasPeripherySPIModuleImp, MMCDevice} -import sifive.fpgashells.devices.xilinx.xilinxvc707pciex1.{HasSystemXilinxVC707PCIeX1ModuleImp} - -import chipyard.{CanHaveMasterTLMemPort} -import chipyard.iobinders.{OverrideIOBinder, OverrideLazyIOBinder} - -class WithUARTIOPassthrough extends OverrideIOBinder({ - (system: HasPeripheryUARTModuleImp) => { - val io_uart_pins_temp = system.uart.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"uart_$i") } - (io_uart_pins_temp zip system.uart).map { case (io, sysio) => - io <> sysio - } - (io_uart_pins_temp, Nil) - } -}) - -class WithSPIIOPassthrough extends OverrideLazyIOBinder({ - (system: HasPeripherySPI) => { - // attach resource to 1st SPI - ResourceBinding { - Resource(new MMCDevice(system.tlSpiNodes.head.device, 1), "reg").bind(ResourceAddress(0)) - } - - InModuleBody { - system.asInstanceOf[BaseSubsystem].module match { case system: HasPeripherySPIModuleImp => { - val io_spi_pins_temp = system.spi.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"spi_$i") } - (io_spi_pins_temp zip system.spi).map { case (io, sysio) => - io <> sysio - } - (io_spi_pins_temp, Nil) - } } - } - } -}) - -class WithTLIOPassthrough extends OverrideIOBinder({ - (system: CanHaveMasterTLMemPort) => { - val io_tl_mem_pins_temp = IO(DataMirror.internal.chiselTypeClone[HeterogeneousBag[TLBundle]](system.mem_tl)).suggestName("tl_slave") - io_tl_mem_pins_temp <> system.mem_tl - (Seq(io_tl_mem_pins_temp), Nil) - } -}) diff --git a/fpga/src/main/scala/vcu118/Configs.scala b/fpga/src/main/scala/vcu118/Configs.scala index bd48fb4e..35632961 100644 --- a/fpga/src/main/scala/vcu118/Configs.scala +++ b/fpga/src/main/scala/vcu118/Configs.scala @@ -52,9 +52,6 @@ class WithVCU118Tweaks extends Config( new WithUART ++ new WithSPISDCard ++ new WithDDRMem ++ - // io binders - new WithUARTIOPassthrough ++ - new WithSPIIOPassthrough ++ // other configuration new WithDefaultPeripherals ++ new chipyard.config.WithTLBackingMemory ++ // use TL backing memory diff --git a/fpga/src/main/scala/vcu118/HarnessBinders.scala b/fpga/src/main/scala/vcu118/HarnessBinders.scala index f17b654f..769e5b42 100644 --- a/fpga/src/main/scala/vcu118/HarnessBinders.scala +++ b/fpga/src/main/scala/vcu118/HarnessBinders.scala @@ -11,35 +11,28 @@ import sifive.blocks.devices.spi.{HasPeripherySPI, SPIPortIO} import chipyard._ import chipyard.harness._ +import chipyard.iobinders._ /*** UART ***/ -class WithUART extends OverrideHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: BaseModule with HasHarnessInstantiators, ports: Seq[UARTPortIO]) => { - th match { case vcu118th: VCU118FPGATestHarnessImp => { - vcu118th.vcu118Outer.io_uart_bb.bundle <> ports.head - } } +class WithUART extends HarnessBinder({ + case (th: VCU118FPGATestHarnessImp, port: UARTPort) => { + th.vcu118Outer.io_uart_bb.bundle <> port.io } }) /*** SPI ***/ -class WithSPISDCard extends OverrideHarnessBinder({ - (system: HasPeripherySPI, th: BaseModule with HasHarnessInstantiators, ports: Seq[SPIPortIO]) => { - th match { case vcu118th: VCU118FPGATestHarnessImp => { - vcu118th.vcu118Outer.io_spi_bb.bundle <> ports.head - } } +class WithSPISDCard extends HarnessBinder({ + case (th: VCU118FPGATestHarnessImp, port: SPIPort) => { + th.vcu118Outer.io_spi_bb.bundle <> port.io } }) /*** Experimental DDR ***/ -class WithDDRMem extends OverrideHarnessBinder({ - (system: CanHaveMasterTLMemPort, th: BaseModule with HasHarnessInstantiators, ports: Seq[HeterogeneousBag[TLBundle]]) => { - th match { case vcu118th: VCU118FPGATestHarnessImp => { - require(ports.size == 1) - - val bundles = vcu118th.vcu118Outer.ddrClient.out.map(_._1) - val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) - bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } - ddrClientBundle <> ports.head - } } +class WithDDRMem extends HarnessBinder({ + case (th: VCU118FPGATestHarnessImp, port: TLMemPort) => { + val bundles = th.vcu118Outer.ddrClient.out.map(_._1) + val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) + bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } + ddrClientBundle <> port.io } }) diff --git a/fpga/src/main/scala/vcu118/IOBinders.scala b/fpga/src/main/scala/vcu118/IOBinders.scala deleted file mode 100644 index 279f9865..00000000 --- a/fpga/src/main/scala/vcu118/IOBinders.scala +++ /dev/null @@ -1,44 +0,0 @@ -package chipyard.fpga.vcu118 - -import chisel3._ -import chisel3.experimental.{IO, DataMirror} - -import freechips.rocketchip.diplomacy.{ResourceBinding, Resource, ResourceAddress, InModuleBody} -import freechips.rocketchip.subsystem.{BaseSubsystem} -import freechips.rocketchip.util.{HeterogeneousBag} -import freechips.rocketchip.tilelink.{TLBundle} - -import sifive.blocks.devices.uart.{HasPeripheryUARTModuleImp} -import sifive.blocks.devices.spi.{HasPeripherySPI, HasPeripherySPIModuleImp, MMCDevice} - -import chipyard.{CanHaveMasterTLMemPort} -import chipyard.iobinders.{OverrideIOBinder, OverrideLazyIOBinder} - -class WithUARTIOPassthrough extends OverrideIOBinder({ - (system: HasPeripheryUARTModuleImp) => { - val io_uart_pins_temp = system.uart.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"uart_$i") } - (io_uart_pins_temp zip system.uart).map { case (io, sysio) => - io <> sysio - } - (io_uart_pins_temp, Nil) - } -}) - -class WithSPIIOPassthrough extends OverrideLazyIOBinder({ - (system: HasPeripherySPI) => { - // attach resource to 1st SPI - ResourceBinding { - Resource(new MMCDevice(system.tlSpiNodes.head.device, 1), "reg").bind(ResourceAddress(0)) - } - - InModuleBody { - system.asInstanceOf[BaseSubsystem].module match { case system: HasPeripherySPIModuleImp => { - val io_spi_pins_temp = system.spi.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"spi_$i") } - (io_spi_pins_temp zip system.spi).map { case (io, sysio) => - io <> sysio - } - (io_spi_pins_temp, Nil) - } } - } - } -}) diff --git a/fpga/src/main/scala/vcu118/bringup/Configs.scala b/fpga/src/main/scala/vcu118/bringup/Configs.scala index bff715dc..65a23a1f 100644 --- a/fpga/src/main/scala/vcu118/bringup/Configs.scala +++ b/fpga/src/main/scala/vcu118/bringup/Configs.scala @@ -20,6 +20,7 @@ import testchipip.{PeripheryTSIHostKey, TSIHostParams, TSIHostSerdesParams} import chipyard.{BuildSystem} import chipyard.fpga.vcu118.{WithVCU118Tweaks, WithFPGAFrequency, VCU118DDR2Size} +import chipyard.iobinders.{WithGPIOPunchthrough} class WithBringupPeripherals extends Config((site, here, up) => { case PeripheryUARTKey => up(PeripheryUARTKey, site) ++ List(UARTParams(address = BigInt(0x64003000L))) @@ -80,8 +81,7 @@ class WithBringupAdditions extends Config( new WithBringupGPIO ++ new WithBringupTSIHost ++ new WithTSITLIOPassthrough ++ - new WithI2CIOPassthrough ++ - new WithGPIOIOPassthrough ++ + new WithGPIOPunchthrough ++ new WithBringupPeripherals ++ new WithBringupVCU118System) diff --git a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala index 97d62ae2..d60de620 100644 --- a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala @@ -14,56 +14,38 @@ import sifive.blocks.devices.gpio.{HasPeripheryGPIOModuleImp, GPIOPortIO} import testchipip.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} import chipyard.harness._ +import chipyard.iobinders._ /*** UART ***/ -class WithBringupUART extends ComposeHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: BaseModule with HasHarnessInstantiators, ports: Seq[UARTPortIO]) => { - th match { case vcu118th: BringupVCU118FPGATestHarnessImp => { - require(ports.size == 2) - - vcu118th.bringupOuter.io_fmc_uart_bb.bundle <> ports.last - } } +class WithBringupUART extends HarnessBinder({ + case (th: BringupVCU118FPGATestHarnessImp, port: UARTPort) => { + th.bringupOuter.io_fmc_uart_bb.bundle <> port.io } }) /*** I2C ***/ -class WithBringupI2C extends OverrideHarnessBinder({ - (system: HasPeripheryI2CModuleImp, th: BaseModule with HasHarnessInstantiators, ports: Seq[I2CPort]) => { - th match { case vcu118th: BringupVCU118FPGATestHarnessImp => { - require(ports.size == 1) - - vcu118th.bringupOuter.io_i2c_bb.bundle <> ports.head - } } +class WithBringupI2C extends HarnessBinder({ + case (th: BringupVCU118FPGATestHarnessImp, port: chipyard.iobinders.I2CPort) => { + th.bringupOuter.io_i2c_bb.bundle <> port.io } }) /*** GPIO ***/ -class WithBringupGPIO extends OverrideHarnessBinder({ - (system: HasPeripheryGPIOModuleImp, th: BaseModule with HasHarnessInstantiators, ports: Seq[GPIOPortIO]) => { - th match { case vcu118th: BringupVCU118FPGATestHarnessImp => { - (vcu118th.bringupOuter.io_gpio_bb zip ports).map { case (bb_io, dut_io) => - bb_io.bundle <> dut_io - } - } } +class WithBringupGPIO extends HarnessBinder({ + case (th: BringupVCU118FPGATestHarnessImp, port: GPIOPort) => { + th.bringupOuter.io_gpio_bb(port.pinId).bundle <> port.io } }) /*** TSI Host Widget ***/ -class WithBringupTSIHost extends OverrideHarnessBinder({ - (system: HasPeripheryTSIHostWidget, th: BaseModule with HasHarnessInstantiators, ports: Seq[Data]) => { - th match { case vcu118th: BringupVCU118FPGATestHarnessImp => { - require(ports.size == 2) // 1st goes to the TL mem, 2nd goes to the serial link - - ports.head match { case tlPort: HeterogeneousBag[TLBundle] => - val tsiBundles = vcu118th.bringupOuter.tsiDdrClient.out.map(_._1) - val tsiDdrClientBundle = Wire(new HeterogeneousBag(tsiBundles.map(_.cloneType))) - tsiBundles.zip(tsiDdrClientBundle).foreach { case (bundle, io) => bundle <> io } - tsiDdrClientBundle <> tlPort - } - - ports.last match { case serialPort: TSIHostWidgetIO => - vcu118th.bringupOuter.io_tsi_serial_bb.bundle <> serialPort - } - } } +class WithBringupTSIHost extends HarnessBinder({ + case (th: BringupVCU118FPGATestHarnessImp, port: TLMemPort) => { + val tsiBundles = th.bringupOuter.tsiDdrClient.out.map(_._1) + val tsiDdrClientBundle = Wire(new HeterogeneousBag(tsiBundles.map(_.cloneType))) + tsiBundles.zip(tsiDdrClientBundle).foreach { case (bundle, io) => bundle <> io } + tsiDdrClientBundle <> port.io + } + case (th: BringupVCU118FPGATestHarnessImp, port: TSIHostWidgetPort) => { + th.bringupOuter.io_tsi_serial_bb.bundle <> port.io } }) diff --git a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala index 87763cde..69dfbce9 100644 --- a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala @@ -11,27 +11,10 @@ import sifive.blocks.devices.i2c.{HasPeripheryI2CModuleImp} import testchipip.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} -import chipyard.iobinders.{OverrideIOBinder} +import chipyard.iobinders.{OverrideIOBinder, Port, TLMemPort} -class WithGPIOIOPassthrough extends OverrideIOBinder({ - (system: HasPeripheryGPIOModuleImp) => { - val io_gpio_pins_temp = system.gpio.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"gpio_$i") } - (io_gpio_pins_temp zip system.gpio).map { case (io, sysio) => - io <> sysio - } - (io_gpio_pins_temp, Nil) - } -}) - -class WithI2CIOPassthrough extends OverrideIOBinder({ - (system: HasPeripheryI2CModuleImp) => { - val io_i2c_pins_temp = system.i2c.zipWithIndex.map { case (dio, i) => IO(dio.cloneType).suggestName(s"i2c_$i") } - (io_i2c_pins_temp zip system.i2c).map { case (io, sysio) => - io <> sysio - } - (io_i2c_pins_temp, Nil) - } -}) +case class TSIHostWidgetPort(val io: TSIHostWidgetIO) + extends Port[TSIHostWidgetIO] class WithTSITLIOPassthrough extends OverrideIOBinder({ (system: HasPeripheryTSIHostWidget) => { @@ -42,6 +25,6 @@ class WithTSITLIOPassthrough extends OverrideIOBinder({ require(system.tsiSerial.size == 1) val io_tsi_serial_pins_temp = IO(DataMirror.internal.chiselTypeClone[TSIHostWidgetIO](system.tsiSerial.head)).suggestName("tsi_serial") io_tsi_serial_pins_temp <> system.tsiSerial.head - (Seq(io_tsi_tl_mem_pins_temp, io_tsi_serial_pins_temp), Nil) + (Seq(TLMemPort(io_tsi_tl_mem_pins_temp), TSIHostWidgetPort(io_tsi_serial_pins_temp)), Nil) } }) diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala index 412dd43d..3ef8a61b 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -2,17 +2,13 @@ package chipyard.clocking import chisel3._ import chisel3.util._ -import chipyard.iobinders.{OverrideLazyIOBinder, GetSystemParameters, IOCellKey} +import chipyard.iobinders.{OverrideLazyIOBinder, GetSystemParameters, IOCellKey, ClockPort, ResetPort} import freechips.rocketchip.prci._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.tilelink._ import barstools.iocell.chisel._ -class ClockWithFreq(val freqMHz: Double) extends Bundle { - val clock = Clock() -} - // This uses the FakePLL, which uses a ClockAtFreq Verilog blackbox to generate // the requested clocks. This also adds TileLink ClockDivider and ClockSelector // blocks, which allow memory-mapped control of clock division, and clock muxing @@ -58,13 +54,13 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ pllCtrlSink := pllCtrl.ctrlNode InModuleBody { - val clock_wire = Wire(Input(new ClockWithFreq(100))) + val clock_wire = Wire(Input(Clock())) val reset_wire = Wire(Input(AsyncReset())) val (clock_io, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, "clock", p(IOCellKey)) val (reset_io, resetIOCell) = IOCell.generateIOFromSignal(reset_wire, "reset", p(IOCellKey)) slowClockSource.out.unzip._1.map { o => - o.clock := clock_wire.clock + o.clock := clock_wire o.reset := reset_wire } @@ -79,7 +75,7 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ o.reset := reset_wire } - (Seq(clock_io, reset_io), clockIOCell ++ resetIOCell) + (Seq(ClockPort(clock_io, 100), ResetPort(reset_io)), clockIOCell ++ resetIOCell) } } }) @@ -114,12 +110,12 @@ class WithPassthroughClockGenerator extends OverrideLazyIOBinder({ require(m.take.isDefined, s"""Clock ${m.name.get} has no requested frequency |Clocks: ${edge.sink.members.map(_.name.get)}""".stripMargin) val freq = m.take.get.freqMHz - val clock_io = IO(Input(new ClockWithFreq(freq))).suggestName(s"clock_${m.name.get}") - b.clock := clock_io.clock + val clock_io = IO(Input(Clock())).suggestName(s"clock_${m.name.get}") + b.clock := clock_io b.reset := reset_io - clock_io + ClockPort(clock_io, freq) }.toSeq - ((clock_ios :+ reset_io), Nil) + ((clock_ios :+ ResetPort(reset_io)), Nil) } } }) diff --git a/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala b/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala index e52ec674..42c45db6 100644 --- a/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala +++ b/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala @@ -51,7 +51,7 @@ object FrequencyUtils { require(!requestedOutputs.contains(0.0)) val requestedFreqs = requestedOutputs.map(_.freqMHz) val fastestFreq = requestedFreqs.max - require(fastestFreq <= maximumAllowableFreqMHz) + require(fastestFreq <= maximumAllowableFreqMHz, s"Fastest Freq $fastestFreq > Max Freq $maximumAllowableFreqMHz") val candidateFreqs = Seq.tabulate(Math.ceil(maximumAllowableFreqMHz / fastestFreq).toInt)(i => (i + 1) * fastestFreq) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 44235cbd..a08abb6d 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -15,7 +15,8 @@ class AbstractConfig extends Config( new chipyard.harness.WithUARTAdapter ++ // add UART adapter to display UART on stdout, if uart is present new chipyard.harness.WithBlackBoxSimMem ++ // add SimDRAM DRAM model for axi4 backing memory, if axi4 mem is enabled new chipyard.harness.WithSimTSIOverSerialTL ++ // add external serial-adapter and RAM - new chipyard.harness.WithSimDebug ++ // add SimJTAG or SimDTM adapters if debug module is enabled + new chipyard.harness.WithSimJTAGDebug ++ // add SimJTAG if JTAG for debug exposed + new chipyard.harness.WithSimDMI ++ // add SimJTAG if DMI exposed new chipyard.harness.WithGPIOTiedOff ++ // tie-off chiptop GPIOs, if GPIOs are present new chipyard.harness.WithSimSPIFlashModel ++ // add simulated SPI flash memory, if SPI is enabled new chipyard.harness.WithSimAXIMMIO ++ // add SimAXIMem for axi4 mmio port, if enabled @@ -23,7 +24,8 @@ class AbstractConfig extends Config( new chipyard.harness.WithTieOffL2FBusAXI ++ // tie-off external AXI4 master, if present new chipyard.harness.WithCustomBootPinPlusArg ++ // drive custom-boot pin with a plusarg, if custom-boot-pin is present new chipyard.harness.WithSimUARTToUARTTSI ++ // connect a SimUART to the UART-TSI port - new chipyard.harness.WithClockAndResetFromHarness ++ // all Clock/Reset I/O in ChipTop should be driven by harnessClockInstantiator + new chipyard.harness.WithClockFromHarness ++ // all Clock I/O in ChipTop should be driven by harnessClockInstantiator + new chipyard.harness.WithResetFromHarness ++ // reset controlled by harness new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ // generate clocks in harness with unsynthesizable ClockSourceAtFreqMHz // The IOBinders instantiate ChipTop IOs to match desired digital IOs @@ -32,11 +34,13 @@ class AbstractConfig extends Config( new chipyard.iobinders.WithDebugIOCells ++ new chipyard.iobinders.WithUARTIOCells ++ new chipyard.iobinders.WithGPIOCells ++ - new chipyard.iobinders.WithSPIIOCells ++ + new chipyard.iobinders.WithSPIFlashIOCells ++ new chipyard.iobinders.WithExtInterruptIOCells ++ new chipyard.iobinders.WithCustomBootPin ++ // The "punchthrough" IOBInders below don't generate IOCells, as these interfaces shouldn't really be mapped to ASIC IO // Instead, they directly pass through the DigitalTop ports to ports in the ChipTop + new chipyard.iobinders.WithI2CPunchthrough ++ + new chipyard.iobinders.WithSPIIOPunchthrough ++ new chipyard.iobinders.WithAXI4MemPunchthrough ++ new chipyard.iobinders.WithAXI4MMIOPunchthrough ++ new chipyard.iobinders.WithTLMemPunchthrough ++ diff --git a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala index ab00ad24..55cce1b8 100644 --- a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala @@ -7,7 +7,8 @@ class AbstractTraceGenConfig extends Config( new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ new chipyard.harness.WithBlackBoxSimMem ++ new chipyard.harness.WithTraceGenSuccess ++ - new chipyard.harness.WithClockAndResetFromHarness ++ + new chipyard.harness.WithClockFromHarness ++ + new chipyard.harness.WithResetFromHarness ++ new chipyard.iobinders.WithAXI4MemPunchthrough ++ new chipyard.iobinders.WithTraceGenSuccessPunchthrough ++ new chipyard.clocking.WithPassthroughClockGenerator ++ diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index 96e21611..a1a1aeaa 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -68,13 +68,13 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { l.reset := implicit_reset }} - val clock_wire = Wire(Input(new ClockWithFreq(80))) + val clock_wire = Wire(Input(Clock())) val reset_wire = Wire(Input(AsyncReset())) val (clock_pad, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, "clock", p(IOCellKey)) val (reset_pad, resetIOCell) = IOCell.generateIOFromSignal(reset_wire, "reset", p(IOCellKey)) slowClockSource.out.unzip._1.map { o => - o.clock := clock_wire.clock + o.clock := clock_wire o.reset := reset_wire } diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala index 56bc9a78..5b3168b3 100644 --- a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -30,7 +30,7 @@ class FlatTestHarness(implicit val p: Parameters) extends Module { val clock_source = Module(new ClockSourceAtFreqFromPlusArg("slow_clk_freq_mhz")) clock_source.io.power := true.B clock_source.io.gate := false.B - dut.clock_pad.clock := clock_source.io.clk + dut.clock_pad := clock_source.io.clk // Reset dut.reset_pad := reset.asAsyncReset diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index b670fd74..b6409a63 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -6,355 +6,284 @@ import chisel3.experimental.{Analog, BaseModule, DataMirror, Direction} import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImpLike} -import freechips.rocketchip.amba.axi4.{AXI4Bundle, AXI4SlaveNode, AXI4MasterNode, AXI4EdgeParameters} -import freechips.rocketchip.devices.debug._ -import freechips.rocketchip.jtag.{JTAGIO} import freechips.rocketchip.system.{SimAXIMem} import freechips.rocketchip.subsystem._ import freechips.rocketchip.util._ - -import sifive.blocks.devices.gpio._ -import sifive.blocks.devices.uart._ -import sifive.blocks.devices.spi._ - +import freechips.rocketchip.jtag.{JTAGIO} +import freechips.rocketchip.devices.debug.{SimJTAG} import barstools.iocell.chisel._ - import testchipip._ - +import icenet.{NicLoopback, SimNetwork} import chipyard._ -import chipyard.clocking.{HasChipyardPRCI, ClockWithFreq} -import chipyard.iobinders.{GetSystemParameters, JTAGChipIO} +import chipyard.clocking.{HasChipyardPRCI} +import chipyard.iobinders._ -import tracegen.{TraceGenSystemModuleImp} -import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} - -import scala.reflect.{ClassTag} - -case object HarnessBinders extends Field[HarnessBinderMap](HarnessBinderMapDefault) +case object HarnessBinders extends Field[HarnessBinderFunction]({case _ => }) object ApplyHarnessBinders { - def apply(th: HasHarnessInstantiators, sys: LazyModule, portMap: Map[String, Seq[Data]])(implicit p: Parameters): Unit = { - val pm = portMap.withDefaultValue(Nil) - p(HarnessBinders).foreach { case (s, f) => - f(sys, th, pm(s)) - f(sys.module, th, pm(s)) - } + def apply(th: HasHarnessInstantiators, ports: Seq[Port[_]])(implicit p: Parameters): Unit = { + ports.foreach(port => p(HarnessBinders)(th, port)) } } -// The ClassTags here are necessary to overcome issues arising from type erasure -class HarnessBinder[T, S <: HasHarnessInstantiators, U <: Data](composer: ((T, S, Seq[U]) => Unit) => (T, S, Seq[U]) => Unit)(implicit systemTag: ClassTag[T], harnessTag: ClassTag[S], portTag: ClassTag[U]) extends Config((site, here, up) => { - case HarnessBinders => up(HarnessBinders, site) + (systemTag.runtimeClass.toString -> - ((t: Any, th: HasHarnessInstantiators, ports: Seq[Data]) => { - val pts = ports.collect({case p: U => p}) - require (pts.length == ports.length, s"Port type mismatch between IOBinder and HarnessBinder: ${portTag}") - val upfn = up(HarnessBinders, site)(systemTag.runtimeClass.toString) - (th, t) match { - case (th: S, system: T) => composer(upfn)(system, th, pts) - case _ => - } - }) - ) +class HarnessBinder[T <: HasHarnessInstantiators, S <: Port[_]]( + fn: => HarnessBinderFunction +) extends Config((site, here, up) => { + case HarnessBinders => fn orElse up(HarnessBinders) }) -class OverrideHarnessBinder[T, S <: HasHarnessInstantiators, U <: Data](fn: => (T, S, Seq[U]) => Unit) - (implicit tag: ClassTag[T], thtag: ClassTag[S], ptag: ClassTag[U]) - extends HarnessBinder[T, S, U]((upfn: (T, S, Seq[U]) => Unit) => fn) -class ComposeHarnessBinder[T, S <: HasHarnessInstantiators, U <: Data](fn: => (T, S, Seq[U]) => Unit) - (implicit tag: ClassTag[T], thtag: ClassTag[S], ptag: ClassTag[U]) - extends HarnessBinder[T, S, U]((upfn: (T, S, Seq[U]) => Unit) => (t, th, p) => { - upfn(t, th, p) - fn(t, th, p) - }) - - -class WithGPIOTiedOff extends OverrideHarnessBinder({ - (system: HasPeripheryGPIOModuleImp, th: HasHarnessInstantiators, ports: Seq[Analog]) => { - ports.foreach { _ <> AnalogConst(0) } +class WithGPIOTiedOff extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: GPIOPort) => { + port.io <> AnalogConst(0) } }) // DOC include start: WithUARTAdapter -class WithUARTAdapter extends OverrideHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: HasHarnessInstantiators, ports: Seq[UARTPortIO]) => { - UARTAdapter.connect(ports)(system.p) +class WithUARTAdapter extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTPort) => { + val div = (th.getHarnessBinderClockFreqMHz / port.io.c.initBaudRate.toDouble).toInt + val uart_sim = Module(new UARTAdapter(port.uartNo, div, false)).suggestName(s"uart_sim_uartno${port.uartNo}") + uart_sim.io.uart.txd := port.io.txd + port.io.rxd := uart_sim.io.uart.rxd } }) // DOC include end: WithUARTAdapter -class WithSimSPIFlashModel(rdOnly: Boolean = true) extends OverrideHarnessBinder({ - (system: HasPeripherySPIFlashModuleImp, th: HasHarnessInstantiators, ports: Seq[SPIChipIO]) => { - SimSPIFlashModel.connect(ports, th.harnessBinderReset, rdOnly)(system.p) +class WithSimSPIFlashModel(rdOnly: Boolean = true) extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SPIFlashPort) => { + val spi_mem = Module(new SimSPIFlashModel(port.params.fSize, port.spiId, rdOnly)).suggestName(s"spi_mem${port.spiId}") + spi_mem.io.sck := port.io.sck + require(port.params.csWidth == 1, "I don't know what to do with your extra CS bits. Fix me please.") + spi_mem.io.cs(0) := port.io.cs(0) + spi_mem.io.dq.zip(port.io.dq).foreach { case (x, y) => x <> y } + spi_mem.io.reset := th.harnessBinderReset } }) -class WithSimBlockDevice extends OverrideHarnessBinder({ - (system: CanHavePeripheryBlockDevice, th: HasHarnessInstantiators, ports: Seq[ClockedIO[BlockDeviceIO]]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { b => SimBlockDevice.connect(b.clock, th.harnessBinderReset.asBool, Some(b.bits)) } +class WithSimBlockDevice extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: BlockDevicePort) => { + val sim_blkdev = Module(new SimBlockDevice(port.params)) + sim_blkdev.io.bdev <> port.io.bits + sim_blkdev.io.clock := port.io.clock + sim_blkdev.io.reset := th.harnessBinderReset } }) -class WithBlockDeviceModel extends OverrideHarnessBinder({ - (system: CanHavePeripheryBlockDevice, th: HasHarnessInstantiators, ports: Seq[ClockedIO[BlockDeviceIO]]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { b => BlockDeviceModel.connect(Some(b.bits)) } +class WithBlockDeviceModel extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: BlockDevicePort) => { + val blkdev_model = Module(new BlockDeviceModel(16, port.params)) + blkdev_model.io <> port.io.bits + blkdev_model.clock := port.io.clock + blkdev_model.reset := th.harnessBinderReset } }) -class WithLoopbackNIC extends OverrideHarnessBinder({ - (system: CanHavePeripheryIceNIC, th: HasHarnessInstantiators, ports: Seq[ClockedIO[NICIOvonly]]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { n => NicLoopback.connect(Some(n.bits), p(NICKey)) } +class WithLoopbackNIC extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: NICPort) => { + withClock(port.io.clock) { NicLoopback.connect(port.io.bits, port.params) } } }) -class WithSimNetwork extends OverrideHarnessBinder({ - (system: CanHavePeripheryIceNIC, th: BaseModule with HasHarnessInstantiators, ports: Seq[ClockedIO[NICIOvonly]]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { n => SimNetwork.connect(Some(n.bits), n.clock, th.harnessBinderReset.asBool) } +class WithSimNetwork extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: NICPort) => { + withClock(port.io.clock) { SimNetwork.connect(Some(port.io.bits), port.io.clock, th.harnessBinderReset.asBool) } } }) -class WithSimAXIMem extends OverrideHarnessBinder({ - (system: CanHaveMasterAXI4MemPort, th: HasHarnessInstantiators, ports: Seq[ClockedAndResetIO[AXI4Bundle]]) => { - val p: Parameters = chipyard.iobinders.GetSystemParameters(system) - (ports zip system.memAXI4Node.edges.in).map { case (port, edge) => - val mem = LazyModule(new SimAXIMem(edge, size=p(ExtMem).get.master.size)(p)) - Module(mem.module).suggestName("mem") - mem.io_axi4.head <> port.bits +class WithSimAXIMem extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: AXI4MemPort) => { + val mem = LazyModule(new SimAXIMem(port.edge, size=port.params.master.size)(Parameters.empty)) + withClock(port.io.clock) { Module(mem.module) } + mem.io_axi4.head <> port.io + } +}) + +class WithBlackBoxSimMem(additionalLatency: Int = 0) extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: AXI4MemPort) => { + // TODO FIX: This currently makes each SimDRAM contain the entire memory space + val memSize = port.params.master.size + val memBase = port.params.master.base + val lineSize = 64 // cache block size + val clockFreq = port.clockFreqMHz + val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, port.edge.bundle)).suggestName("simdram") + + mem.io.clock := port.io.clock + mem.io.reset := th.harnessBinderReset.asAsyncReset + mem.io.axi <> port.io.bits + // Bug in Chisel implementation. See https://github.com/chipsalliance/chisel3/pull/1781 + def Decoupled[T <: Data](irr: IrrevocableIO[T]): DecoupledIO[T] = { + require(DataMirror.directionOf(irr.bits) == Direction.Output, "Only safe to cast produced Irrevocable bits to Decoupled.") + val d = Wire(new DecoupledIO(chiselTypeOf(irr.bits))) + d.bits := irr.bits + d.valid := irr.valid + irr.ready := d.ready + d + } + if (additionalLatency > 0) { + withClock (port.io.clock) { + mem.io.axi.aw <> (0 until additionalLatency).foldLeft(Decoupled(port.io.bits.aw))((t, _) => Queue(t, 1, pipe=true)) + mem.io.axi.w <> (0 until additionalLatency).foldLeft(Decoupled(port.io.bits.w ))((t, _) => Queue(t, 1, pipe=true)) + port.io.bits.b <> (0 until additionalLatency).foldLeft(Decoupled(mem.io.axi.b ))((t, _) => Queue(t, 1, pipe=true)) + mem.io.axi.ar <> (0 until additionalLatency).foldLeft(Decoupled(port.io.bits.ar))((t, _) => Queue(t, 1, pipe=true)) + port.io.bits.r <> (0 until additionalLatency).foldLeft(Decoupled(mem.io.axi.r ))((t, _) => Queue(t, 1, pipe=true)) + } } } }) -class WithBlackBoxSimMem(additionalLatency: Int = 0) extends OverrideHarnessBinder({ - (system: CanHaveMasterAXI4MemPort, th: HasHarnessInstantiators, ports: Seq[ClockedAndResetIO[AXI4Bundle]]) => { - val p: Parameters = chipyard.iobinders.GetSystemParameters(system) - (ports zip system.memAXI4Node.edges.in).map { case (port, edge) => - // TODO FIX: This currently makes each SimDRAM contain the entire memory space - val memSize = p(ExtMem).get.master.size - val memBase = p(ExtMem).get.master.base - val lineSize = p(CacheBlockBytes) - val clockFreq = p(MemoryBusKey).dtsFrequency.get - val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, edge.bundle)).suggestName("simdram") - mem.io.axi <> port.bits - // Bug in Chisel implementation. See https://github.com/chipsalliance/chisel3/pull/1781 - def Decoupled[T <: Data](irr: IrrevocableIO[T]): DecoupledIO[T] = { - require(DataMirror.directionOf(irr.bits) == Direction.Output, "Only safe to cast produced Irrevocable bits to Decoupled.") - val d = Wire(new DecoupledIO(chiselTypeOf(irr.bits))) - d.bits := irr.bits - d.valid := irr.valid - irr.ready := d.ready - d - } - if (additionalLatency > 0) { - withClockAndReset (port.clock, port.reset) { - mem.io.axi.aw <> (0 until additionalLatency).foldLeft(Decoupled(port.bits.aw))((t, _) => Queue(t, 1, pipe=true)) - mem.io.axi.w <> (0 until additionalLatency).foldLeft(Decoupled(port.bits.w ))((t, _) => Queue(t, 1, pipe=true)) - port.bits.b <> (0 until additionalLatency).foldLeft(Decoupled(mem.io.axi.b))((t, _) => Queue(t, 1, pipe=true)) - mem.io.axi.ar <> (0 until additionalLatency).foldLeft(Decoupled(port.bits.ar))((t, _) => Queue(t, 1, pipe=true)) - port.bits.r <> (0 until additionalLatency).foldLeft(Decoupled(mem.io.axi.r))((t, _) => Queue(t, 1, pipe=true)) - } - } - mem.io.clock := port.clock - mem.io.reset := port.reset +class WithSimAXIMMIO extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: AXI4MMIOPort) => { + val mmio_mem = LazyModule(new SimAXIMem(port.edge, size = port.params.size)(Parameters.empty)) + withClock(port.io.clock) { Module(mmio_mem.module) } + mmio_mem.io_axi4.head <> port.io.bits + } +}) + +class WithTieOffInterrupts extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: ExtIntPort) => { + port.io := 0.U + } +}) + +class WithTieOffL2FBusAXI extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: AXI4InPort) => { + port.io := DontCare + port.io.bits.aw.valid := false.B + port.io.bits.w.valid := false.B + port.io.bits.b.ready := false.B + port.io.bits.ar.valid := false.B + port.io.bits.r.ready := false.B + } +}) + +class WithSimJTAGDebug extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: JTAGPort) => { + val dtm_success = WireInit(false.B) + when (dtm_success) { th.success := true.B } + val jtag_wire = Wire(new JTAGIO) + jtag_wire.TDO.data := port.io.TDO + jtag_wire.TDO.driven := true.B + port.io.TCK := jtag_wire.TCK + port.io.TMS := jtag_wire.TMS + port.io.TDI := jtag_wire.TDI + val jtag = Module(new SimJTAG(tickDelay=3)) + jtag.connect(jtag_wire, th.harnessBinderClock, th.harnessBinderReset.asBool, ~(th.harnessBinderReset.asBool), dtm_success) + } +}) + +class WithSimDMI extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: DMIPort) => { + val dtm_success = WireInit(false.B) + when (dtm_success) { th.success := true.B } + val dtm = Module(new TestchipSimDTM()(Parameters.empty)).connect(th.harnessBinderClock, th.harnessBinderReset.asBool, port.io, dtm_success) + } +}) + +class WithTiedOffJTAG extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: JTAGPort) => { + port.io.TCK := true.B.asClock + port.io.TMS := true.B + port.io.TDI := true.B + } +}) + +class WithTiedOffDMI extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: DMIPort) => { + port.io.dmi.req.valid := false.B + port.io.dmi.req.bits := DontCare + port.io.dmi.resp.ready := true.B + port.io.dmiClock := false.B.asClock + port.io.dmiReset := true.B + } +}) + +class WithSerialTLTiedOff extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SerialTLPort) => { + if (DataMirror.directionOf(port.io.clock) == Direction.Input) { + port.io.clock := false.B.asClock } + port.io.bits.out.ready := false.B + port.io.bits.in.valid := false.B + port.io.bits.in.bits := DontCare } }) -class WithSimAXIMMIO extends OverrideHarnessBinder({ - (system: CanHaveMasterAXI4MMIOPort, th: HasHarnessInstantiators, ports: Seq[ClockedAndResetIO[AXI4Bundle]]) => { - val p: Parameters = chipyard.iobinders.GetSystemParameters(system) - (ports zip system.mmioAXI4Node.edges.in).map { case (port, edge) => - val mmio_mem = LazyModule(new SimAXIMem(edge, size = p(ExtBus).get.size)(p)) - withClockAndReset(port.clock, port.reset) { - Module(mmio_mem.module).suggestName("mmio_mem") - } - mmio_mem.io_axi4.head <> port.bits +class WithSimTSIOverSerialTL extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SerialTLPort) => { + val bits = port.io.bits + if (DataMirror.directionOf(port.io.clock) == Direction.Input) { + port.io.clock := th.harnessBinderClock } + val ram = LazyModule(new SerialRAM(port.serdesser)(port.serdesser.p)) + Module(ram.module) + ram.module.io.ser <> port.io.bits + val tsi = Module(new SimTSI) + tsi.io.clock := th.harnessBinderClock + tsi.io.reset := th.harnessBinderReset + tsi.io.tsi <> ram.module.io.tsi + val exit = tsi.io.exit + val success = exit === 1.U + val error = exit >= 2.U + assert(!error, "*** FAILED *** (exit code = %d)\n", exit >> 1.U) + when (success) { th.success := true.B } } }) -class WithTieOffInterrupts extends OverrideHarnessBinder({ - (system: HasExtInterruptsModuleImp, th: HasHarnessInstantiators, ports: Seq[UInt]) => { - ports.foreach { _ := 0.U } +class WithSimUARTToUARTTSI extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTPort) => { + UARTAdapter.connect(Seq(port.io), + baudrate=port.io.c.initBaudRate, + clockFrequency=th.getHarnessBinderClockFreqHz.toInt, + forcePty=true) } }) -class WithTieOffL2FBusAXI extends OverrideHarnessBinder({ - (system: CanHaveSlaveAXI4Port, th: HasHarnessInstantiators, ports: Seq[ClockedIO[AXI4Bundle]]) => { - ports.foreach({ p => - p.bits := DontCare - p.bits.aw.valid := false.B - p.bits.w.valid := false.B - p.bits.b.ready := false.B - p.bits.ar.valid := false.B - p.bits.r.ready := false.B - }) +class WithSimTSIToUARTTSI extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTTSIPort) => { + val freq = th.getHarnessBinderClockFreqHz.toInt + val uart_to_serial = Module(new UARTToSerial(freq, port.io.uart.c)) + val serial_width_adapter = Module(new SerialWidthAdapter(8, TSI.WIDTH)) + val success = SimTSI.connect(Some(TSIIO(serial_width_adapter.io.wide)), th.harnessBinderClock, th.harnessBinderReset) + when (success) { th.success := true.B } + assert(!uart_to_serial.io.dropped) + serial_width_adapter.io.narrow.flipConnect(uart_to_serial.io.serial) + uart_to_serial.io.uart.rxd := port.io.uart.txd + port.io.uart.rxd := uart_to_serial.io.uart.txd } }) -class WithSimDebug extends OverrideHarnessBinder({ - (system: HasPeripheryDebug, th: HasHarnessInstantiators, ports: Seq[Data]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { - case d: ClockedDMIIO => - val dtm_success = WireInit(false.B) - when (dtm_success) { th.success := true.B } - val dtm = Module(new TestchipSimDTM).connect(th.harnessBinderClock, th.harnessBinderReset.asBool, d, dtm_success) - case j: JTAGChipIO => - val dtm_success = WireInit(false.B) - when (dtm_success) { th.success := true.B } - val jtag_wire = Wire(new JTAGIO) - jtag_wire.TDO.data := j.TDO - jtag_wire.TDO.driven := true.B - j.TCK := jtag_wire.TCK - j.TMS := jtag_wire.TMS - j.TDI := jtag_wire.TDI - val jtag = Module(new SimJTAG(tickDelay=3)) - jtag.connect(jtag_wire, th.harnessBinderClock, th.harnessBinderReset.asBool, ~(th.harnessBinderReset.asBool), dtm_success) - } +class WithTraceGenSuccess extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SuccessPort) => { + when (port.io) { th.success := true.B } } }) -class WithTiedOffDebug extends OverrideHarnessBinder({ - (system: HasPeripheryDebug, th: HasHarnessInstantiators, ports: Seq[Data]) => { - ports.map { - case j: JTAGChipIO => - j.TCK := true.B.asClock - j.TMS := true.B - j.TDI := true.B - case d: ClockedDMIIO => - d.dmi.req.valid := false.B - d.dmi.req.bits := DontCare - d.dmi.resp.ready := true.B - d.dmiClock := false.B.asClock - d.dmiReset := true.B - case a: ClockedAPBBundle => - a.pready := false.B - a.pslverr := false.B - a.prdata := 0.U - a.pduser := DontCare - a.clock := false.B.asClock - a.reset := true.B.asAsyncReset - a.psel := false.B - a.penable := false.B - } +class WithCospike extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: TracePort) => { + port.io.traces.zipWithIndex.map(t => SpikeCosim(t._1, t._2, port.cosimCfg)) } }) -class WithSerialTLTiedOff extends OverrideHarnessBinder({ - (system: CanHavePeripheryTLSerial, th: HasHarnessInstantiators, ports: Seq[ClockedIO[SerialIO]]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - ports.map({ port => - val bits = port.bits - if (DataMirror.directionOf(port.clock) == Direction.Input) { - port.clock := false.B.asClock - } - port.bits.out.ready := false.B - port.bits.in.valid := false.B - port.bits.in.bits := DontCare - }) - } -}) - -class WithSimTSIOverSerialTL extends OverrideHarnessBinder({ - (system: CanHavePeripheryTLSerial, th: HasHarnessInstantiators, ports: Seq[ClockedIO[SerialIO]]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - ports.map({ port => - val bits = port.bits - if (DataMirror.directionOf(port.clock) == Direction.Input) { - port.clock := th.harnessBinderClock - } - val ram = TSIHarness.connectRAM(system.serdesser.get, bits, th.harnessBinderReset) - val success = SimTSI.connect(Some(ram.module.io.tsi), th.harnessBinderClock, th.harnessBinderReset.asBool) - when (success) { th.success := true.B } - }) - } -}) - -class WithSimUARTToUARTTSI extends OverrideHarnessBinder({ - (system: CanHavePeripheryUARTTSI, th: HasHarnessInstantiators, ports: Seq[UARTTSIIO]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - require(ports.size <= 1) - ports.map { port => { - UARTAdapter.connect(Seq(port.uart), - baudrate=port.uartParams.initBaudRate, - clockFrequency=th.getHarnessBinderClockFreqHz.toInt, - forcePty=true) - assert(!port.dropped) - }} - } -}) - -class WithSimTSIToUARTTSI extends OverrideHarnessBinder({ - (system: CanHavePeripheryUARTTSI, th: HasHarnessInstantiators, ports: Seq[UARTTSIIO]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - require(ports.size <= 1) - ports.map({ port => - val freq = th.getHarnessBinderClockFreqHz.toInt - val uart_to_serial = Module(new UARTToSerial(freq, port.uartParams)) - val serial_width_adapter = Module(new SerialWidthAdapter(8, TSI.WIDTH)) - val success = SimTSI.connect(Some(TSIIO(serial_width_adapter.io.wide)), th.harnessBinderClock, th.harnessBinderReset) - when (success) { th.success := true.B } - assert(!uart_to_serial.io.dropped) - serial_width_adapter.io.narrow.flipConnect(uart_to_serial.io.serial) - uart_to_serial.io.uart.rxd := port.uart.txd - port.uart.rxd := uart_to_serial.io.uart.txd - }) - } -}) - - -class WithTraceGenSuccess extends OverrideHarnessBinder({ - (system: TraceGenSystemModuleImp, th: HasHarnessInstantiators, ports: Seq[Bool]) => { - ports.map { p => when (p) { th.success := true.B } } - } -}) - -class WithCospike extends ComposeHarnessBinder({ - (system: CanHaveTraceIOModuleImp, th: HasHarnessInstantiators, ports: Seq[TraceOutputTop]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - val chipyardSystem = system.asInstanceOf[ChipyardSystemModule[_]].outer.asInstanceOf[ChipyardSystem] - val tiles = chipyardSystem.tiles - val cfg = SpikeCosimConfig( - isa = tiles.headOption.map(_.isaDTS).getOrElse(""), - vlen = tiles.headOption.map(_.tileParams.core.vLen).getOrElse(0), - priv = tiles.headOption.map(t => if (t.usingUser) "MSU" else if (t.usingSupervisor) "MS" else "M").getOrElse(""), - mem0_base = p(ExtMem).map(_.master.base).getOrElse(BigInt(0)), - mem0_size = p(ExtMem).map(_.master.size).getOrElse(BigInt(0)), - pmpregions = tiles.headOption.map(_.tileParams.core.nPMPs).getOrElse(0), - nharts = tiles.size, - bootrom = chipyardSystem.bootROM.map(_.module.contents.toArray.mkString(" ")).getOrElse(""), - has_dtm = p(ExportDebug).protocols.contains(DMI) // assume that exposing clockeddmi means we will connect SimDTM - ) - ports.map { p => p.traces.zipWithIndex.map(t => SpikeCosim(t._1, t._2, cfg)) } - } -}) - - -class WithCustomBootPinPlusArg extends OverrideHarnessBinder({ - (system: CanHavePeripheryCustomBootPin, th: HasHarnessInstantiators, ports: Seq[Bool]) => { +class WithCustomBootPinPlusArg extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: CustomBootPort) => { val pin = PlusArg("custom_boot_pin", width=1) - ports.foreach(_ := pin) + port.io := pin } }) - -class WithClockAndResetFromHarness extends OverrideHarnessBinder({ - (system: HasChipyardPRCI, th: HasHarnessInstantiators, ports: Seq[Data]) => { - implicit val p = GetSystemParameters(system) - val clocks = ports.collect { case c: ClockWithFreq => c } +class WithClockFromHarness extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: ClockPort) => { // DOC include start: HarnessClockInstantiatorEx - ports.map ({ - case c: ClockWithFreq => { - val clock = th.harnessClockInstantiator.requestClockMHz(s"clock_${c.freqMHz.toInt}MHz", c.freqMHz) - c.clock := clock - } - case r: AsyncReset => r := th.referenceReset.asAsyncReset - }) + port.io := th.harnessClockInstantiator.requestClockMHz(s"clock_${port.freqMHz}MHz", port.freqMHz) // DOC include end: HarnessClockInstantiatorEx } }) + +class WithResetFromHarness extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: ResetPort) => { + port.io := th.referenceReset.asAsyncReset + } +}) + diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index e79b6c4e..9b607c1c 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -83,7 +83,7 @@ trait HasHarnessInstantiators { withClockAndReset (harnessBinderClock, harnessBinderReset) { lazyDuts.zipWithIndex.foreach { - case (d: HasIOBinders, i: Int) => ApplyHarnessBinders(this, d.lazySystem, d.portMap)(chipParameters(i)) + case (d: HasIOBinders, i: Int) => ApplyHarnessBinders(this, d.portMap.values.flatten.toSeq)(chipParameters(i)) case _ => } ApplyMultiHarnessBinders(this, lazyDuts) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index 1c057dff..399e64be 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -2,6 +2,7 @@ package chipyard.harness import chisel3._ import chisel3.util._ +import chisel3.experimental.{DataMirror, Direction} import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImpLike} @@ -12,67 +13,58 @@ import freechips.rocketchip.util._ import testchipip._ import chipyard._ -import chipyard.clocking.{HasChipyardPRCI, ClockWithFreq} -import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, HasIOBinders} +import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, HasIOBinders, Port, SerialTLPort} import scala.reflect.{ClassTag} -case class MultiHarnessBinders(c0: Int, c1: Int) extends Field[MultiHarnessBinderMap](MultiHarnessBinderMapDefault) - -class MultiHarnessBinder[T0, T1, S <: HasHarnessInstantiators, U0 <: Data, U1 <: Data] - (chip0: Int, chip1: Int, fn: => (T0, T1, S, Seq[U0], Seq[U1]) => Unit) - (implicit tag0: ClassTag[T0], tag1: ClassTag[T1], thtag: ClassTag[S], ptag0: ClassTag[U0], ptag1: ClassTag[U1]) - extends Config((site, here, up) => { - // Override any HarnessBinders for chip0/chip1 - case MultiChipParameters(`chip0`) => new Config( - new OverrideHarnessBinder[T0, S, U0]((system: T0, th: S, ports: Seq[U0]) => Nil) ++ - up(MultiChipParameters(chip0)) - ) - case MultiChipParameters(`chip1`) => new Config( - new OverrideHarnessBinder[T1, S, U1]((system: T1, th: S, ports: Seq[U1]) => Nil) ++ - up(MultiChipParameters(chip1)) - ) - // Set the multiharnessbinder key - case MultiHarnessBinders(`chip0`, `chip1`) => up(MultiHarnessBinders(chip0, chip1)) + - ((tag0.runtimeClass.toString, tag1.runtimeClass.toString) -> - ((c0: Any, c1: Any, th: HasHarnessInstantiators, ports0: Seq[Data], ports1: Seq[Data]) => { - val pts0 = ports0.map(_.asInstanceOf[U0]) - val pts1 = ports1.map(_.asInstanceOf[U1]) - require(pts0.size == pts1.size) - (c0, c1, th) match { - case (c0: T0, c1: T1, th: S) => fn(c0, c1, th, pts0, pts1) - case _ => - } - }) - ) - }) +case class MultiHarnessBinders(chip0: Int, chip1: Int) extends Field[Seq[MultiHarnessBinderFunction]](Nil) object ApplyMultiHarnessBinders { def apply(th: HasHarnessInstantiators, chips: Seq[LazyModule])(implicit p: Parameters): Unit = { Seq.tabulate(chips.size, chips.size) { case (i, j) => if (i != j) { (chips(i), chips(j)) match { - case (l0: HasIOBinders, l1: HasIOBinders) => p(MultiHarnessBinders(i, j)).foreach { - case ((s0, s1), f) => { - f(l0.lazySystem , l1.lazySystem , th, l0.portMap(s0), l1.portMap(s1)) - f(l0.lazySystem.module, l1.lazySystem.module, th, l0.portMap(s0), l1.portMap(s1)) - } + case (l0: HasIOBinders, l1: HasIOBinders) => p(MultiHarnessBinders(i, j)).foreach { f => + f(l0.portMap.values.flatten.toSeq, l1.portMap.values.flatten.toSeq) } - case _ => } }} } } -class WithMultiChipSerialTL(chip0: Int, chip1: Int) extends MultiHarnessBinder(chip0, chip1, ( - (system0: CanHavePeripheryTLSerial, system1: CanHavePeripheryTLSerial, - th: HasHarnessInstantiators, - ports0: Seq[ClockedIO[SerialIO]], ports1: Seq[ClockedIO[SerialIO]] - ) => { - require(ports0.size == ports1.size) - (ports0 zip ports1).map { case (l, r) => - l.clock <> r.clock - require(l.bits.w == r.bits.w) - l.bits.flipConnect(r.bits) +class MultiHarnessBinder[T <: Port[_]]( + chip0: Int, chip1: Int, + chip0portFn: T => Boolean, chip1portFn: T => Boolean, + connectFn: (T, T) => Unit +)(implicit tag: ClassTag[T]) extends Config((site, here, up) => { + // Override any HarnessBinders for chip0/chip1 + case MultiChipParameters(`chip0`) => new Config( + new HarnessBinder({case (th, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) + ) + case MultiChipParameters(`chip1`) => new Config( + new HarnessBinder({case (th, port: T) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) + ) + // Set the multiharnessbinder key + case MultiHarnessBinders(`chip0`, `chip1`) => up(MultiHarnessBinders(chip0, chip1)) :+ { + ((chip0Ports: Seq[Port[_]], chip1Ports: Seq[Port[_]]) => { + val chip0Port: Seq[T] = chip0Ports.collect { case (p: T) if chip0portFn(p) => p } + val chip1Port: Seq[T] = chip1Ports.collect { case (p: T) if chip1portFn(p) => p } + require(chip0Port.size == 1 && chip1Port.size == 1) + connectFn(chip0Port(0), chip1Port(0)) + }) } + }) + + +class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1portId: Int = 0) extends MultiHarnessBinder[SerialTLPort]( + chip0, chip1, + (p0: SerialTLPort) => p0.portId == chip0portId, + (p1: SerialTLPort) => p1.portId == chip1portId, + (p0: SerialTLPort, p1: SerialTLPort) => { + (DataMirror.directionOf(p0.io.clock), DataMirror.directionOf(p1.io.clock)) match { + case (Direction.Input, Direction.Output) => p0.io.clock := p1.io.clock + case (Direction.Output, Direction.Input) => p1.io.clock := p0.io.clock + } + p0.io.bits.in <> p1.io.bits.out + p1.io.bits.in <> p0.io.bits.out } -)) +) diff --git a/generators/chipyard/src/main/scala/harness/package.scala b/generators/chipyard/src/main/scala/harness/package.scala index 789d1595..258655a7 100644 --- a/generators/chipyard/src/main/scala/harness/package.scala +++ b/generators/chipyard/src/main/scala/harness/package.scala @@ -5,13 +5,7 @@ import scala.collection.immutable.ListMap package object harness { - type HarnessBinderFunction = (Any, HasHarnessInstantiators, Seq[Data]) => Unit - type HarnessBinderMap = Map[String, HarnessBinderFunction] - def HarnessBinderMapDefault: HarnessBinderMap = (new ListMap[String, HarnessBinderFunction]) - .withDefaultValue((t: Any, th: HasHarnessInstantiators, d: Seq[Data]) => ()) - - type MultiHarnessBinderFunction = (Any, Any, HasHarnessInstantiators, Seq[Data], Seq[Data]) => Unit - type MultiHarnessBinderMap = Map[(String, String), MultiHarnessBinderFunction] - def MultiHarnessBinderMapDefault: MultiHarnessBinderMap = (new ListMap[(String, String), MultiHarnessBinderFunction]) - .withDefaultValue((_: Any, _: Any, _: HasHarnessInstantiators, _: Seq[Data], _: Seq[Data]) => ()) + import chipyard.iobinders.Port + type HarnessBinderFunction = PartialFunction[(HasHarnessInstantiators, Port[_]), Unit] + type MultiHarnessBinderFunction = (Seq[Port[_]], Seq[Port[_]]) => Unit } diff --git a/generators/chipyard/src/main/scala/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala similarity index 70% rename from generators/chipyard/src/main/scala/IOBinders.scala rename to generators/chipyard/src/main/scala/iobinders/IOBinders.scala index b74d8f0e..2ce7c6f4 100644 --- a/generators/chipyard/src/main/scala/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -18,18 +18,19 @@ import freechips.rocketchip.tilelink.{TLBundle} import sifive.blocks.devices.gpio._ import sifive.blocks.devices.uart._ import sifive.blocks.devices.spi._ +import sifive.blocks.devices.i2c._ import tracegen.{TraceGenSystemModuleImp} import barstools.iocell.chisel._ import testchipip._ import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} -import chipyard.{CanHaveMasterTLMemPort} +import chipyard.{CanHaveMasterTLMemPort, ChipyardSystem, ChipyardSystemModule} import scala.reflect.{ClassTag} object IOBinderTypes { - type IOBinderTuple = (Seq[Data], Seq[IOCell]) + type IOBinderTuple = (Seq[Port[_]], Seq[IOCell]) type IOBinderFunction = (Boolean, => Any) => ModuleValue[IOBinderTuple] } import IOBinderTypes._ @@ -82,7 +83,7 @@ abstract trait HasIOBinders { this: LazyModule => InModuleBody { if (p(DontTouchIOBindersPorts)) { - portMap.values.foreach(_.foreach(dontTouch(_))) + portMap.values.flatten.foreach { case (port: Port[Data]) => dontTouch(port.io) } } println("IOCells generated by IOBinders:") @@ -171,29 +172,72 @@ class WithGPIOCells extends OverrideIOBinder({ iocell.io.ie := pin.o.ie pin.i.ival := iocell.io.i iocell.io.pad <> g - (g, iocell) + (GPIOPort(g, i, j), iocell) }).unzip }).unzip - val ports: Seq[Analog] = ports2d.flatten - (ports, cells2d.flatten) + (ports2d.flatten, cells2d.flatten) + } +}) + +class WithGPIOPunchthrough extends OverrideIOBinder({ + (system: HasPeripheryGPIOModuleImp) => { + val ports = system.gpio.zipWithIndex.map { case (gpio, i) => + val io_gpio = IO(gpio.cloneType).suggestName(s"gpio_$i") + io_gpio <> gpio + GPIOPinsPort(io_gpio, i) + } + (ports, Nil) + } +}) + +class WithI2CPunchthrough extends OverrideIOBinder({ + (system: HasPeripheryI2CModuleImp) => { + val ports = system.i2c.zipWithIndex.map { case (i2c, i) => + val io_i2c = IO(i2c.cloneType).suggestName(s"i2c_$i") + io_i2c <> i2c + I2CPort(i2c) + } + (ports, Nil) } }) // DOC include start: WithUARTIOCells class WithUARTIOCells extends OverrideIOBinder({ (system: HasPeripheryUARTModuleImp) => { - val (ports: Seq[UARTPortIO], cells2d) = system.uart.zipWithIndex.map({ case (u, i) => + val (ports: Seq[UARTPort], cells2d) = system.uart.zipWithIndex.map({ case (u, i) => val (port, ios) = IOCell.generateIOFromSignal(u, s"uart_${i}", system.p(IOCellKey), abstractResetAsAsync = true) - (port, ios) + val where = PBUS // TODO fix + val bus = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) + val freqMHz = bus.dtsFrequency.get.toInt / 1000000000 + (UARTPort(port, i, freqMHz), ios) }).unzip (ports, cells2d.flatten) } }) // DOC include end: WithUARTIOCells -class WithSPIIOCells extends OverrideIOBinder({ +class WithSPIIOPunchthrough extends OverrideLazyIOBinder({ + (system: HasPeripherySPI) => { + // attach resource to 1st SPI + if (system.tlSpiNodes.size > 0) ResourceBinding { + Resource(new MMCDevice(system.tlSpiNodes.head.device, 1), "reg").bind(ResourceAddress(0)) + } + InModuleBody { + val spi = system.asInstanceOf[BaseSubsystem].module.asInstanceOf[HasPeripherySPIBundle].spi + val ports = spi.zipWithIndex.map({ case (s, i) => + val io_spi = IO(s.cloneType).suggestName(s"spi_$i") + io_spi <> s + SPIPort(io_spi) + }) + (ports, Nil) + } + } +}) + +class WithSPIFlashIOCells extends OverrideIOBinder({ (system: HasPeripherySPIFlashModuleImp) => { - val (ports: Seq[SPIChipIO], cells2d) = system.qspi.zipWithIndex.map({ case (s, i) => + val (ports: Seq[SPIFlashPort], cells2d) = system.qspi.zipWithIndex.map({ case (s, i) => + val name = s"spi_${i}" val port = IO(new SPIChipIO(s.c.csWidth)).suggestName(name) val iocellBase = s"iocell_${name}" @@ -213,7 +257,7 @@ class WithSPIIOCells extends OverrideIOBinder({ iocell } - (port, dqIOs ++ csIOs ++ sckIOs) + (SPIFlashPort(port, system.p(PeripherySPIFlashKey)(i), i), dqIOs ++ csIOs ++ sckIOs) }).unzip (ports, cells2d.flatten) } @@ -223,7 +267,7 @@ class WithExtInterruptIOCells extends OverrideIOBinder({ (system: HasExtInterruptsModuleImp) => { if (system.outer.nExtInterrupts > 0) { val (port: UInt, cells) = IOCell.generateIOFromSignal(system.interrupts, "ext_interrupts", system.p(IOCellKey), abstractResetAsAsync = true) - (Seq(port), cells) + (Seq(ExtIntPort(port)), cells) } else { system.interrupts := DontCare // why do I have to drive this 0-wide wire??? (Nil, Nil) @@ -273,7 +317,8 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ // Add IOCells for the DMI/JTAG/APB ports val dmiTuple = debug.clockeddmi.map { d => - IOCell.generateIOFromSignal(d, "dmi", p(IOCellKey), abstractResetAsAsync = true) + val (port, cells) = IOCell.generateIOFromSignal(d, "dmi", p(IOCellKey), abstractResetAsAsync = true) + (DMIPort(port), cells) } val jtagTuple = debug.systemjtag.map { j => @@ -282,14 +327,13 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ j.jtag.TMS := jtag_wire.TMS j.jtag.TDI := jtag_wire.TDI jtag_wire.TDO := j.jtag.TDO.data - IOCell.generateIOFromSignal(jtag_wire, "jtag", p(IOCellKey), abstractResetAsAsync = true) + val (port, cells) = IOCell.generateIOFromSignal(jtag_wire, "jtag", p(IOCellKey), abstractResetAsAsync = true) + (JTAGPort(port), cells) } - val apbTuple = debug.apb.map { a => - IOCell.generateIOFromSignal(a, "apb", p(IOCellKey), abstractResetAsAsync = true) - } + require(!debug.apb.isDefined) - val allTuples = (dmiTuple ++ jtagTuple ++ apbTuple).toSeq + val allTuples = (dmiTuple ++ jtagTuple).toSeq (allTuples.map(_._1).toSeq, allTuples.flatMap(_._2).toSeq) }).getOrElse((Nil, Nil)) }}} @@ -297,20 +341,26 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ }) class WithSerialTLIOCells extends OverrideIOBinder({ - (system: CanHavePeripheryTLSerial) => system.serial_tl.map({ s => - val sys = system.asInstanceOf[BaseSubsystem] - val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, "serial_tl", sys.p(IOCellKey), abstractResetAsAsync = true) - (Seq(port), cells) - }).getOrElse((Nil, Nil)) + (system: CanHavePeripheryTLSerial) => { + val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => + val sys = system.asInstanceOf[BaseSubsystem] + val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, "serial_tl", sys.p(IOCellKey), abstractResetAsAsync = true) + (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), cells) + }).unzip + (ports.toSeq, cells.flatten.toSeq) + } }) class WithSerialTLPunchthrough extends OverrideIOBinder({ - (system: CanHavePeripheryTLSerial) => system.serial_tl.map({ s => - val sys = system.asInstanceOf[BaseSubsystem] - val port = IO(s.getWrappedValue.cloneType) - port <> s.getWrappedValue - (Seq(port), Nil) - }).getOrElse((Nil, Nil)) + (system: CanHavePeripheryTLSerial) => { + val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => + val sys = system.asInstanceOf[BaseSubsystem] + val port = IO(s.getWrappedValue.cloneType) + port <> s.getWrappedValue + (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), Nil) + }).unzip + (ports.toSeq, cells.flatten.toSeq) + } }) class WithAXI4MemPunchthrough extends OverrideLazyIOBinder({ @@ -321,12 +371,11 @@ class WithAXI4MemPunchthrough extends OverrideLazyIOBinder({ def clockBundle = clockSinkNode.get.in.head._1 InModuleBody { - val ports: Seq[ClockedAndResetIO[AXI4Bundle]] = system.mem_axi4.zipWithIndex.map({ case (m, i) => - val p = IO(new ClockedAndResetIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mem_${i}") - p.bits <> m - p.clock := clockBundle.clock - p.reset := clockBundle.reset - p + val ports: Seq[AXI4MemPort] = system.mem_axi4.zipWithIndex.map({ case (m, i) => + val port = IO(new ClockedIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mem_${i}") + port.bits <> m + port.clock := clockBundle.clock + AXI4MemPort(port, p(ExtMem).get, system.memAXI4Node.edges.in(i), p(MemoryBusKey).dtsFrequency.get.toInt) }).toSeq (ports, Nil) } @@ -341,12 +390,11 @@ class WithAXI4MMIOPunchthrough extends OverrideLazyIOBinder({ def clockBundle = clockSinkNode.get.in.head._1 InModuleBody { - val ports: Seq[ClockedAndResetIO[AXI4Bundle]] = system.mmio_axi4.zipWithIndex.map({ case (m, i) => - val p = IO(new ClockedAndResetIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mmio_${i}") - p.bits <> m - p.clock := clockBundle.clock - p.reset := clockBundle.reset - p + val ports: Seq[AXI4MMIOPort] = system.mmio_axi4.zipWithIndex.map({ case (m, i) => + val port = IO(new ClockedIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mmio_${i}") + port.bits <> m + port.clock := clockBundle.clock + AXI4MMIOPort(port, p(ExtBus).get, system.mmioAXI4Node.edges.in(i)) }).toSeq (ports, Nil) } @@ -361,11 +409,11 @@ class WithL2FBusAXI4Punchthrough extends OverrideLazyIOBinder({ def clockBundle = clockSinkNode.get.in.head._1 InModuleBody { - val ports: Seq[ClockedIO[AXI4Bundle]] = system.l2_frontend_bus_axi4.zipWithIndex.map({ case (m, i) => - val p = IO(new ClockedIO(Flipped(DataMirror.internal.chiselTypeClone[AXI4Bundle](m)))).suggestName(s"axi4_fbus_${i}") - m <> p.bits - p.clock := clockBundle.clock - p + val ports: Seq[AXI4InPort] = system.l2_frontend_bus_axi4.zipWithIndex.map({ case (m, i) => + val port = IO(new ClockedIO(Flipped(DataMirror.internal.chiselTypeClone[AXI4Bundle](m)))).suggestName(s"axi4_fbus_${i}") + m <> port.bits + port.clock := clockBundle.clock + AXI4InPort(port, p(ExtIn).get) }).toSeq (ports, Nil) } @@ -374,10 +422,12 @@ class WithL2FBusAXI4Punchthrough extends OverrideLazyIOBinder({ class WithBlockDeviceIOPunchthrough extends OverrideIOBinder({ (system: CanHavePeripheryBlockDevice) => { - val ports: Seq[ClockedIO[BlockDeviceIO]] = system.bdev.map({ bdev => - val p = IO(new ClockedIO(new BlockDeviceIO()(GetSystemParameters(system)))).suggestName("blockdev") - p <> bdev - p + val ports: Seq[BlockDevicePort] = system.bdev.map({ bdev => + val p = GetSystemParameters(system) + val bdParams = p(BlockDeviceKey).get + val port = IO(new ClockedIO(new BlockDeviceIO(bdParams))).suggestName("blockdev") + port <> bdev + BlockDevicePort(port, bdParams) }).toSeq (ports, Nil) } @@ -385,10 +435,11 @@ class WithBlockDeviceIOPunchthrough extends OverrideIOBinder({ class WithNICIOPunchthrough extends OverrideIOBinder({ (system: CanHavePeripheryIceNIC) => { - val ports: Seq[ClockedIO[NICIOvonly]] = system.icenicOpt.map({ n => - val p = IO(new ClockedIO(new NICIOvonly)).suggestName("nic") - p <> n - p + val ports: Seq[NICPort] = system.icenicOpt.map({ n => + val p = GetSystemParameters(system) + val port = IO(new ClockedIO(new NICIOvonly)).suggestName("nic") + port <> n + NICPort(port, p(NICKey).get) }).toSeq (ports, Nil) } @@ -398,16 +449,30 @@ class WithTraceGenSuccessPunchthrough extends OverrideIOBinder({ (system: TraceGenSystemModuleImp) => { val success: Bool = IO(Output(Bool())).suggestName("success") success := system.success - (Seq(success), Nil) + (Seq(SuccessPort(success)), Nil) } }) class WithTraceIOPunchthrough extends OverrideIOBinder({ (system: CanHaveTraceIOModuleImp) => { - val ports: Option[TraceOutputTop] = system.traceIO.map { t => + val ports: Option[TracePort] = system.traceIO.map { t => val trace = IO(DataMirror.internal.chiselTypeClone[TraceOutputTop](t)).suggestName("trace") trace <> t - trace + val p = GetSystemParameters(system) + val chipyardSystem = system.asInstanceOf[ChipyardSystemModule[_]].outer.asInstanceOf[ChipyardSystem] + val tiles = chipyardSystem.tiles + val cfg = SpikeCosimConfig( + isa = tiles.headOption.map(_.isaDTS).getOrElse(""), + vlen = tiles.headOption.map(_.tileParams.core.vLen).getOrElse(0), + priv = tiles.headOption.map(t => if (t.usingUser) "MSU" else if (t.usingSupervisor) "MS" else "M").getOrElse(""), + mem0_base = p(ExtMem).map(_.master.base).getOrElse(BigInt(0)), + mem0_size = p(ExtMem).map(_.master.size).getOrElse(BigInt(0)), + pmpregions = tiles.headOption.map(_.tileParams.core.nPMPs).getOrElse(0), + nharts = tiles.size, + bootrom = chipyardSystem.bootROM.map(_.module.contents.toArray.mkString(" ")).getOrElse(""), + has_dtm = p(ExportDebug).protocols.contains(DMI) // assume that exposing clockeddmi means we will connect SimDTM + ) + TracePort(trace, cfg) } (ports.toSeq, Nil) } @@ -417,7 +482,7 @@ class WithCustomBootPin extends OverrideIOBinder({ (system: CanHavePeripheryCustomBootPin) => system.custom_boot_pin.map({ p => val sys = system.asInstanceOf[BaseSubsystem] val (port, cells) = IOCell.generateIOFromSignal(p.getWrappedValue, "custom_boot", sys.p(IOCellKey), abstractResetAsAsync = true) - (Seq(port), cells) + (Seq(CustomBootPort(port)), cells) }).getOrElse((Nil, Nil)) }) @@ -426,7 +491,7 @@ class WithUARTTSIPunchthrough extends OverrideIOBinder({ val sys = system.asInstanceOf[BaseSubsystem] val uart_tsi = IO(new UARTTSIIO(p.uartParams)) uart_tsi <> p - (Seq(uart_tsi), Nil) + (Seq(UARTTSIPort(uart_tsi)), Nil) }).getOrElse((Nil, Nil)) }) @@ -434,7 +499,7 @@ class WithTLMemPunchthrough extends OverrideIOBinder({ (system: CanHaveMasterTLMemPort) => { val io_tl_mem_pins_temp = IO(DataMirror.internal.chiselTypeClone[HeterogeneousBag[TLBundle]](system.mem_tl)).suggestName("tl_slave") io_tl_mem_pins_temp <> system.mem_tl - (Seq(io_tl_mem_pins_temp), Nil) + (Seq(TLMemPort(io_tl_mem_pins_temp)), Nil) } }) diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala new file mode 100644 index 00000000..61c25a36 --- /dev/null +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -0,0 +1,94 @@ +package chipyard.iobinders + +import chisel3._ +import chisel3.experimental.{Analog} +import sifive.blocks.devices.uart.{UARTPortIO} +import sifive.blocks.devices.spi.{SPIFlashParams, SPIPortIO} +import sifive.blocks.devices.i2c.{I2CPort} +import sifive.blocks.devices.gpio.{GPIOPortIO} +import testchipip._ +import icenet.{NICIOvonly, NICConfig} +import org.chipsalliance.cde.config.{Parameters} +import freechips.rocketchip.amba.axi4.{AXI4Bundle, AXI4EdgeParameters} +import freechips.rocketchip.subsystem.{MemoryPortParams, MasterPortParams, SlavePortParams} +import freechips.rocketchip.devices.debug.{ClockedDMIIO} +import freechips.rocketchip.util.{HeterogeneousBag} +import freechips.rocketchip.tilelink.{TLBundle} + +trait Port[T <: Data] { + val io: T +} + +// These case classes are generated by IOBinders, and interpreted by HarnessBinders +case class GPIOPort (val io: Analog, val gpioId: Int, val pinId: Int) + extends Port[Analog] + +case class GPIOPinsPort (val io: GPIOPortIO, val gpioId: Int) + extends Port[GPIOPortIO] + +case class I2CPort (val io: sifive.blocks.devices.i2c.I2CPort) + extends Port[sifive.blocks.devices.i2c.I2CPort] + +case class UARTPort (val io: UARTPortIO, val uartNo: Int, val freqMHz: Int) + extends Port[UARTPortIO] + +case class SPIFlashPort (val io: SPIChipIO, val params: SPIFlashParams, val spiId: Int) + extends Port[SPIChipIO] + +case class SPIPort (val io: SPIPortIO) + extends Port[SPIPortIO] + +case class BlockDevicePort (val io: ClockedIO[BlockDeviceIO], val params: BlockDeviceConfig) + extends Port[ClockedIO[BlockDeviceIO]] + +case class NICPort (val io: ClockedIO[NICIOvonly], val params: NICConfig) + extends Port[ClockedIO[NICIOvonly]] + +case class AXI4MemPort (val io: ClockedIO[AXI4Bundle], val params: MemoryPortParams, val edge: AXI4EdgeParameters, val clockFreqMHz: Int) + extends Port[ClockedIO[AXI4Bundle]] + +case class AXI4MMIOPort (val io: ClockedIO[AXI4Bundle], val params: MasterPortParams, val edge: AXI4EdgeParameters) + extends Port[ClockedIO[AXI4Bundle]] + +case class AXI4InPort (val io: ClockedIO[AXI4Bundle], val params: SlavePortParams) + extends Port[ClockedIO[AXI4Bundle]] + +case class ExtIntPort (val io: UInt) + extends Port[UInt] + +case class DMIPort (val io: ClockedDMIIO) + extends Port[ClockedDMIIO] + +case class JTAGPort (val io: JTAGChipIO) + extends Port[JTAGChipIO] + +case class SerialTLPort (val io: ClockedIO[SerialIO], val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) + extends Port[ClockedIO[SerialIO]] + +case class UARTTSIPort (val io: UARTTSIIO) + extends Port[UARTTSIIO] + +case class SuccessPort (val io: Bool) + extends Port[Bool] + +case class TracePort (val io: TraceOutputTop, val cosimCfg: SpikeCosimConfig) + extends Port[TraceOutputTop] + +case class CustomBootPort (val io: Bool) + extends Port[Bool] + +case class ClockPort (val io: Clock, val freqMHz: Double) + extends Port[Clock] + +case class ResetPort (val io: AsyncReset) + extends Port[Reset] + +case class DebugResetPort (val io: Reset) + extends Port[Reset] + +case class JTAGResetPort (val io: Reset) + extends Port[Reset] + +case class TLMemPort (val io: HeterogeneousBag[TLBundle]) + extends Port[HeterogeneousBag[TLBundle]] + diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index db6ec2fb..a709ee4b 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -3,7 +3,6 @@ package firesim.firesim import chisel3._ -import chisel3.experimental.annotate import chisel3.experimental.{DataMirror, Direction} import chisel3.util.experimental.BoringUtils @@ -12,7 +11,6 @@ import freechips.rocketchip.diplomacy.{LazyModule} import freechips.rocketchip.devices.debug.{Debug, HasPeripheryDebug, ExportDebug, DMI} import freechips.rocketchip.amba.axi4.{AXI4Bundle} import freechips.rocketchip.subsystem._ -import freechips.rocketchip.tile.{RocketTile} import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters} import freechips.rocketchip.util.{ResetCatchAndSync} import sifive.blocks.devices.uart._ @@ -22,21 +20,19 @@ import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvon import junctions.{NastiKey, NastiParameters} import midas.models.{FASEDBridge, AXI4EdgeSummary, CompleteConfig} -import midas.targetutils.{MemModelAnnotation, EnableModelMultiThreadingAnnotation} import firesim.bridges._ import firesim.configs.MemModelKey import tracegen.{TraceGenSystemModuleImp} import cva6.CVA6Tile -import boom.common.{BoomTile} import barstools.iocell.chisel._ -import chipyard.iobinders.{IOBinders, OverrideIOBinder, ComposeIOBinder, GetSystemParameters, IOCellKey} +import chipyard.iobinders._ import chipyard._ import chipyard.harness._ object MainMemoryConsts { val regionNamePrefix = "MainMemory" - def globalName()(implicit p: Parameters) = s"${regionNamePrefix}_${p(MultiChipIdx)}" + def globalName(chipId: Int) = s"${regionNamePrefix}_$chipId" } trait Unsupported { @@ -69,130 +65,65 @@ class WithFireSimIOCellModels extends Config((site, here, up) => { case IOCellKey => FireSimIOCellParams() }) -class WithTSIBridgeAndHarnessRAMOverSerialTL extends OverrideHarnessBinder({ - (system: CanHavePeripheryTLSerial, th: FireSim, ports: Seq[ClockedIO[SerialIO]]) => { - ports.map { port => - implicit val p = GetSystemParameters(system) - val bits = port.bits - port.clock := th.harnessBinderClock - val ram = TSIHarness.connectRAM(system.serdesser.get, bits, th.harnessBinderReset) - TSIBridge(th.harnessBinderClock, ram.module.io.tsi, p(ExtMem).map(_ => MainMemoryConsts.globalName), th.harnessBinderReset.asBool) - } - Nil +class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ + case (th: FireSim, port: SerialTLPort) => { + val bits = port.io.bits + port.io.clock := th.harnessBinderClock + val ram = LazyModule(new SerialRAM(port.serdesser)(Parameters.empty)) + Module(ram.module) + ram.module.io.ser <> port.io.bits + TSIBridge(th.harnessBinderClock, ram.module.io.tsi, + port.params.serialTLManagerParams.map(_ => MainMemoryConsts.globalName(th.p(MultiChipIdx))), th.harnessBinderReset.asBool)(th.p) } }) -class WithNICBridge extends OverrideHarnessBinder({ - (system: CanHavePeripheryIceNIC, th: FireSim, ports: Seq[ClockedIO[NICIOvonly]]) => { - val p: Parameters = GetSystemParameters(system) - ports.map { n => NICBridge(n.clock, n.bits)(p) } - Nil +class WithNICBridge extends HarnessBinder({ + case (th: FireSim, port: NICPort) => { + NICBridge(port.io.clock, port.io.bits)(th.p) } }) -class WithUARTBridge extends OverrideHarnessBinder({ - (system: HasPeripheryUARTModuleImp, th: FireSim, ports: Seq[UARTPortIO]) => - val uartSyncClock = Wire(Clock()) - uartSyncClock := false.B.asClock - val pbusClockNode = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(PBUS).fixedClockNode - val pbusClock = pbusClockNode.in.head._1.clock - BoringUtils.bore(pbusClock, Seq(uartSyncClock)) - ports.map { p => UARTBridge(uartSyncClock, p, th.harnessBinderReset.asBool)(system.p) }; Nil +class WithUARTBridge extends HarnessBinder({ + case (th: FireSim, port: UARTPort) => + val uartSyncClock = th.harnessClockInstantiator.requestClockMHz("uart_clock", port.freqMHz) + UARTBridge(uartSyncClock, port.io, th.harnessBinderReset.asBool)(th.p) }) -class WithBlockDeviceBridge extends OverrideHarnessBinder({ - (system: CanHavePeripheryBlockDevice, th: FireSim, ports: Seq[ClockedIO[BlockDeviceIO]]) => { - implicit val p: Parameters = GetSystemParameters(system) - ports.map { b => BlockDevBridge(b.clock, b.bits, th.harnessBinderReset.asBool) } - Nil +class WithBlockDeviceBridge extends HarnessBinder({ + case (th: FireSim, port: BlockDevicePort) => { + BlockDevBridge(port.io.clock, port.io.bits, th.harnessBinderReset.asBool) } }) -class WithFASEDBridge extends OverrideHarnessBinder({ - (system: CanHaveMasterAXI4MemPort, th: FireSim, ports: Seq[ClockedAndResetIO[AXI4Bundle]]) => { - implicit val p: Parameters = GetSystemParameters(system) - (ports zip system.memAXI4Node.edges.in).map { case (axi4, edge) => - val nastiKey = NastiParameters(axi4.bits.r.bits.data.getWidth, - axi4.bits.ar.bits.addr.getWidth, - axi4.bits.ar.bits.id.getWidth) - system match { - case s: BaseSubsystem => FASEDBridge(axi4.clock, axi4.bits, axi4.reset.asBool, - CompleteConfig(p(firesim.configs.MemModelKey), - nastiKey, - Some(AXI4EdgeSummary(edge)), - Some(MainMemoryConsts.globalName))) - case _ => throw new Exception("Attempting to attach FASED Bridge to misconfigured design") - } - } - Nil +class WithFASEDBridge extends HarnessBinder({ + case (th: FireSim, port: AXI4MemPort) => { + val nastiKey = NastiParameters(port.io.bits.r.bits.data.getWidth, + port.io.bits.ar.bits.addr.getWidth, + port.io.bits.ar.bits.id.getWidth) + FASEDBridge(port.io.clock, port.io.bits, th.harnessBinderReset.asBool, + CompleteConfig(th.p(firesim.configs.MemModelKey), + nastiKey, + Some(AXI4EdgeSummary(port.edge)), + Some(MainMemoryConsts.globalName(th.p(MultiChipIdx)))))(th.p) } }) -class WithTracerVBridge extends ComposeHarnessBinder({ - (system: CanHaveTraceIOModuleImp, th: FireSim, ports: Seq[TraceOutputTop]) => { - ports.map { p => p.traces.map(tileTrace => TracerVBridge(tileTrace)(system.p)) } - Nil +class WithTracerVBridge extends HarnessBinder({ + case (th: FireSim, port: TracePort) => { + port.io.traces.map(tileTrace => TracerVBridge(tileTrace)(th.p)) } }) -class WithCospikeBridge extends ComposeHarnessBinder({ - (system: CanHaveTraceIOModuleImp, th: FireSim, ports: Seq[TraceOutputTop]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - val chipyardSystem = system.asInstanceOf[ChipyardSystemModule[_]].outer.asInstanceOf[ChipyardSystem] - val tiles = chipyardSystem.tiles - val cfg = SpikeCosimConfig( - isa = tiles.headOption.map(_.isaDTS).getOrElse(""), - vlen = tiles.headOption.map(_.tileParams.core.vLen).getOrElse(0), - priv = tiles.headOption.map(t => if (t.usingUser) "MSU" else if (t.usingSupervisor) "MS" else "M").getOrElse(""), - mem0_base = p(ExtMem).map(_.master.base).getOrElse(BigInt(0)), - mem0_size = p(ExtMem).map(_.master.size).getOrElse(BigInt(0)), - pmpregions = tiles.headOption.map(_.tileParams.core.nPMPs).getOrElse(0), - nharts = tiles.size, - bootrom = chipyardSystem.bootROM.map(_.module.contents.toArray.mkString(" ")).getOrElse(""), - has_dtm = p(ExportDebug).protocols.contains(DMI) // assume that exposing clockeddmi means we will connect SimDTM - ) - ports.map { p => p.traces.zipWithIndex.map(t => CospikeBridge(t._1, t._2, cfg)) } +class WithCospikeBridge extends HarnessBinder({ + case (th: FireSim, port: TracePort) => { + port.io.traces.zipWithIndex.map(t => CospikeBridge(t._1, t._2, port.cosimCfg)) } }) -class WithTraceGenBridge extends OverrideHarnessBinder({ - (system: TraceGenSystemModuleImp, th: FireSim, ports: Seq[Bool]) => - ports.map { p => GroundTestBridge(th.harnessBinderClock, p)(system.p) }; Nil -}) - -class WithFireSimMultiCycleRegfile extends ComposeIOBinder({ - (system: HasTilesModuleImp) => { - system.outer.tiles.map { - case r: RocketTile => { - annotate(MemModelAnnotation(r.module.core.rocketImpl.rf.rf)) - r.module.fpuOpt.foreach(fpu => annotate(MemModelAnnotation(fpu.fpuImpl.regfile))) - } - case b: BoomTile => { - val core = b.module.core - core.iregfile match { - case irf: boom.exu.RegisterFileSynthesizable => annotate(MemModelAnnotation(irf.regfile)) - } - if (core.fp_pipeline != null) core.fp_pipeline.fregfile match { - case frf: boom.exu.RegisterFileSynthesizable => annotate(MemModelAnnotation(frf.regfile)) - } - } - case _ => - } - (Nil, Nil) - } -}) - -class WithFireSimFAME5 extends ComposeIOBinder({ - (system: HasTilesModuleImp) => { - system.outer.tiles.map { - case b: BoomTile => - annotate(EnableModelMultiThreadingAnnotation(b.module)) - case r: RocketTile => - annotate(EnableModelMultiThreadingAnnotation(r.module)) - case _ => Nil - } - (Nil, Nil) +class WithSuccessBridge extends HarnessBinder({ + case (th: FireSim, port: SuccessPort) => { + GroundTestBridge(th.harnessBinderClock, port.io)(th.p) } }) diff --git a/generators/firechip/src/main/scala/FireSim.scala b/generators/firechip/src/main/scala/FireSim.scala index c20abca1..4cca7557 100644 --- a/generators/firechip/src/main/scala/FireSim.scala +++ b/generators/firechip/src/main/scala/FireSim.scala @@ -5,21 +5,26 @@ package firesim.firesim import scala.collection.mutable.{LinkedHashMap} import chisel3._ -import chisel3.experimental.{IO} +import chisel3.experimental.{IO, annotate} import freechips.rocketchip.prci._ -import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} +import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey, HasTiles} import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, InModuleBody, ValName} import freechips.rocketchip.util.{ResetCatchAndSync, RecordMap} +import freechips.rocketchip.tile.{RocketTile} +import boom.common.{BoomTile} import midas.widgets.{Bridge, PeekPokeBridge, RationalClockBridge, RationalClock, ResetPulseBridge, ResetPulseBridgeParameters} - +import midas.targetutils.{MemModelAnnotation, EnableModelMultiThreadingAnnotation} import chipyard._ import chipyard.harness._ import chipyard.iobinders._ import chipyard.clocking._ +case object FireSimMultiCycleRegFile extends Field[Boolean](false) +case object FireSimFAME5 extends Field[Boolean](false) + /** * Under FireSim's current multiclock implementation there can be only a * single clock bridge. This requires, therefore, that it be instantiated in @@ -85,11 +90,46 @@ class FireSim(implicit val p: Parameters) extends RawModule with HasHarnessInsta override val supportsMultiChip = true - instantiateChipTops() + val chiptops = instantiateChipTops() // Ensures FireSim-synthesized assertions and instrumentation is disabled // while resetBridge.io.reset is asserted. This ensures assertions do not fire at // time zero in the event their local reset is delayed (typically because it // has been pipelined) midas.targetutils.GlobalResetCondition(resetBridge.io.reset) + + + // FireSim multi-cycle regfile optimization + // FireSim ModelMultithreading + chiptops.foreach { + case c: ChipTop => c.lazySystem match { + case ls: HasTiles => { + if (p(FireSimMultiCycleRegFile)) ls.tiles.map { + case r: RocketTile => { + annotate(MemModelAnnotation(r.module.core.rocketImpl.rf.rf)) + r.module.fpuOpt.foreach(fpu => annotate(MemModelAnnotation(fpu.fpuImpl.regfile))) + } + case b: BoomTile => { + val core = b.module.core + core.iregfile match { + case irf: boom.exu.RegisterFileSynthesizable => annotate(MemModelAnnotation(irf.regfile)) + } + if (core.fp_pipeline != null) core.fp_pipeline.fregfile match { + case frf: boom.exu.RegisterFileSynthesizable => annotate(MemModelAnnotation(frf.regfile)) + } + } + case _ => + } + if (p(FireSimFAME5)) ls.tiles.map { + case b: BoomTile => + annotate(EnableModelMultiThreadingAnnotation(b.module)) + case r: RocketTile => + annotate(EnableModelMultiThreadingAnnotation(r.module)) + case _ => Nil + } + } + case _ => + } + case _ => + } } diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index c08a028d..9ef9b7bd 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -55,6 +55,16 @@ class WithScalaTestFeatures extends Config((site, here, up) => { case TracePortKey => up(TracePortKey, site).map(_.copy(print = true)) }) +// Multi-cycle regfile for rocket+boom +class WithFireSimMultiCycleRegfile extends Config((site, here, up) => { + case FireSimMultiCycleRegFile => true +}) + +// Model multithreading optimization +class WithFireSimFAME5 extends Config((site, here, up) => { + case FireSimFAME5 => true +}) + // FASED Config Aliases. This to enable config generation via "_" concatenation // which requires that all config classes be defined in the same package class DDR3FCFS extends FCFS16GBQuadRank @@ -72,7 +82,8 @@ class WithMinimalFireSimDesignTweaks extends Config( // Required*: Punch all clocks to FireSim's harness clock instantiator new WithFireSimHarnessClockBridgeInstantiator ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(1000.0) ++ - new chipyard.harness.WithClockAndResetFromHarness ++ + new chipyard.harness.WithClockFromHarness ++ + new chipyard.harness.WithResetFromHarness ++ new chipyard.clocking.WithPassthroughClockGenerator ++ // Required*: When using FireSim-as-top to provide a correct path to the target bootrom source new WithBootROM ++ diff --git a/generators/icenet b/generators/icenet index 68b4c7f3..18e88b57 160000 --- a/generators/icenet +++ b/generators/icenet @@ -1 +1 @@ -Subproject commit 68b4c7f30f0119fe5cfab7ea99fb6927a563e112 +Subproject commit 18e88b5779ffdd7d75ca62cf9909f0ffc6fda95b diff --git a/generators/testchipip b/generators/testchipip index 177e3071..6436959d 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 177e3071991421bdb042fec8411c51463477c7fc +Subproject commit 6436959d997d0bb578790d95078648b478ca049b diff --git a/sims/firesim b/sims/firesim index 08b565c8..f80c6031 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 08b565c8c69f125a1de292eb8efe03ee08408d2e +Subproject commit f80c60313c7c54733affb441773874fc54560ef3 From 8fb4ba5675a16ce425eaf694e2c97e5f1889da76 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 5 Oct 2023 21:03:34 -0700 Subject: [PATCH 011/184] Fix UARTPort freqMHz --- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 2ce7c6f4..7cbce516 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -208,7 +208,7 @@ class WithUARTIOCells extends OverrideIOBinder({ val (port, ios) = IOCell.generateIOFromSignal(u, s"uart_${i}", system.p(IOCellKey), abstractResetAsAsync = true) val where = PBUS // TODO fix val bus = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) - val freqMHz = bus.dtsFrequency.get.toInt / 1000000000 + val freqMHz = bus.dtsFrequency.get.toInt / 1000000 (UARTPort(port, i, freqMHz), ios) }).unzip (ports, cells2d.flatten) From e6203bb25c055e9135ee0371d95accb88108b0be Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 5 Oct 2023 23:56:29 -0700 Subject: [PATCH 012/184] Fix fsim supernode memmodel --- generators/firechip/src/main/scala/TargetConfigs.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 9ef9b7bd..6f2a0291 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -300,6 +300,7 @@ class FireSimLeanGemminiPrintfRocketConfig extends Config( //********************************************************************************** class SupernodeFireSimRocketConfig extends Config( new WithFireSimHarnessClockBridgeInstantiator ++ + new WithDefaultMemModel ++ // this is a global for all the multi-chip configs new chipyard.harness.WithHomogeneousMultiChip(n=4, new Config( new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 8L) ++ // 8GB DRAM per node new FireSimRocketConfig))) From a524adb1b927116550ef83b54360f1f8b6e32182 Mon Sep 17 00:00:00 2001 From: joonho hwangbo Date: Fri, 6 Oct 2023 08:34:15 -0700 Subject: [PATCH 013/184] Fix icenet-loopback clock and reset domain (#1612) * Fix * Bump icenet * revert icenet bump | fix harnessbinders --- .../chipyard/src/main/scala/harness/HarnessBinders.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index b670fd74..2b522884 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -106,7 +106,11 @@ class WithBlockDeviceModel extends OverrideHarnessBinder({ class WithLoopbackNIC extends OverrideHarnessBinder({ (system: CanHavePeripheryIceNIC, th: HasHarnessInstantiators, ports: Seq[ClockedIO[NICIOvonly]]) => { implicit val p: Parameters = GetSystemParameters(system) - ports.map { n => NicLoopback.connect(Some(n.bits), p(NICKey)) } + ports.map { n => + withClockAndReset(n.clock, th.harnessBinderReset.asBool) { + NicLoopback.connect(Some(n.bits), p(NICKey)) + } + } } }) From b76ab6b5b014cfc77284adf4920a96ccb10ce6e2 Mon Sep 17 00:00:00 2001 From: JL102 Date: Fri, 6 Oct 2023 18:43:52 -0400 Subject: [PATCH 014/184] Replaced "try-catch" with a more special-purpose set of functions This also fixed the weird issue I was experiencing where the try-catch in step 1 caused step 3 to break --- scripts/build-setup.sh | 150 ++++++++++++++++++++++------------------- scripts/utils.sh | 21 ------ 2 files changed, 80 insertions(+), 91 deletions(-) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 080b79af..c58ddd7b 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -109,15 +109,49 @@ if [ $TOOLCHAIN_TYPE == "esp-tools" ]; then done fi + +####################################### +###### BEGIN STEP-BY-STEP SETUP ####### +####################################### + +# In order to run code on error, we must handle errors manually +set +e; + +function begin_step +{ + thisStepNum=$1; + thisStepDesc=$2; + echo " ========== BEGINNING STEP $thisStepNum: $thisStepDesc ==========" +} +function exit_if_last_command_failed +{ + local exitcode=$?; + if [ $exitcode -ne 0 ]; then + die "Build script failed with exit code $exitcode at step $thisStepNum: $thisStepDesc" $exitcode; + fi +} + # setup and install conda environment if run_step "1"; then - try; ( - source $CYDIR/scripts/build-step-init-conda-environment.sh - ) - catch || { - echo "Build script exited with exit code $? at step 1: conda environment setup. Check the above logs for more details on the error." - exit $? - } + begin_step "1" "Conda environment setup" + # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 + CONDA_REQS=$CYDIR/conda-reqs + CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs + # must match with the file generated by generate-conda-lockfile.sh + LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml + + if [ "$USE_UNPINNED_DEPS" = true ]; then + # auto-gen the lockfiles + $CYDIR/scripts/generate-conda-lockfiles.sh + exit_if_last_command_failed + fi + + # use conda-lock to create env + conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE && + + source $CYDIR/.conda-env/etc/profile.d/conda.sh && + conda activate $CYDIR/.conda-env + exit_if_last_command_failed fi if [ -z "$FORCE_FLAG" ]; then @@ -129,17 +163,14 @@ fi # initialize all submodules (without the toolchain submodules) if run_step "2"; then - try; ( - $CYDIR/scripts/init-submodules-no-riscv-tools.sh $FORCE_FLAG - ) - catch || { - echo "Build script exited with exit code $? at step 2: submodule initialization. Check the above logs for more details on the error." - exit $? - } + begin_step "2" "Initializing Chipyard submodules" + $CYDIR/scripts/init-submodules-no-riscv-tools.sh $FORCE_FLAG + exit_if_last_command_failed fi # build extra toolchain collateral (i.e. spike, pk, riscv-tests, libgloss) if run_step "3"; then + begin_step "3" "Building toolchain collateral" if run_step "1"; then PREFIX=$CONDA_PREFIX/$TOOLCHAIN_TYPE else @@ -149,95 +180,74 @@ if run_step "3"; then fi PREFIX=$RISCV fi - try; ( - $CYDIR/scripts/build-toolchain-extra.sh $TOOLCHAIN_TYPE -p $PREFIX - ) - catch || { - echo "Build script exited with exit code $? at step 3: toolchain collateral. Check the above logs for more details on the error." - exit $? - } + $CYDIR/scripts/build-toolchain-extra.sh $TOOLCHAIN_TYPE -p $PREFIX + exit_if_last_command_failed fi # run ctags for code navigation if run_step "4"; then - try; ( + begin_step "4" "Running ctags for code navigation" $CYDIR/scripts/gen-tags.sh - ) - catch || { - echo "Build script exited with exit code $? at step 4: ctags generation. Check the above logs for more details on the error." - exit $? - } + exit_if_last_command_failed fi # precompile chipyard scala sources if run_step "5"; then - try; ( - source $CYDIR/scripts/build-step-precompile-chipyard-scala.sh - ) - catch || { - echo "Build script exited with exit code $? at step 5: chipyard pre-compile sources. Check the above logs for more details on the error." - exit $? - } + begin_step "5" "Pre-compiling Chipyard Scala sources" + pushd $CYDIR/sims/verilator + make launch-sbt SBT_COMMAND=";project chipyard; compile" + make launch-sbt SBT_COMMAND=";project tapeout; compile" + popd + exit_if_last_command_failed fi # setup firesim if run_step "6"; then - try; ( - $CYDIR/scripts/firesim-setup.sh && + begin_step "6" "Setting up FireSim" + $CYDIR/scripts/firesim-setup.sh $CYDIR/sims/firesim/gen-tags.sh - ) - catch || { - echo "Build script exited with exit code $? at step 6: firesim setup. Check the above logs for more details on the error." - exit $? - } + exit_if_last_command_failed # precompile firesim scala sources if run_step "7"; then - try; ( - source $CYDIR/scripts/build-step-precompile-firesim-scala.sh + begin_step "7" "Pre-compiling Firesim Scala sources" + pushd $CYDIR/sims/firesim + ( + set -e # Subshells un-set "set -e" so it must be re enabled + echo $CYDIR + source sourceme-manager.sh --skip-ssh-setup + pushd sim + make sbt SBT_COMMAND="project {file:$CYDIR}firechip; compile" TARGET_PROJECT=firesim + popd ) - catch || { - echo "Build script exited with exit code $? at step 7: firesim pre-compile sources. Check the above logs for more details on the error." - exit $? - } + exit_if_last_command_failed + popd fi fi # setup firemarshal if run_step "8"; then + begin_step "8" "Setting up FireMarshal" pushd $CYDIR/software/firemarshal - try; ( - ./init-submodules.sh - ) - catch || { - echo "Build script exited with exit code $? at step 8: firemarshal setup. Check the above logs for more details on the error." - exit $? - } + ./init-submodules.sh + exit_if_last_command_failed # precompile firemarshal buildroot sources if run_step "9"; then - try; ( - source $CYDIR/scripts/fix-open-files.sh && - ./marshal $VERBOSE_FLAG build br-base.json && - ./marshal $VERBOSE_FLAG clean br-base.json - ) - catch || { - echo "Build script exited with exit code $? at step 9: firemarshal pre-compile buildroot sources. Check the above logs for more details on the error." - exit $? - } + begin_step "9" "Pre-compiling FireMarshal buildroot sources" + source $CYDIR/scripts/fix-open-files.sh && + ./marshal $VERBOSE_FLAG build br-base.json && + ./marshal $VERBOSE_FLAG clean br-base.json + exit_if_last_command_failed fi popd fi # do misc. cleanup for a "clean" git status if run_step "10"; then - try; ( - $CYDIR/scripts/repo-clean.sh - ) - catch || { - echo "Build script exited with exit code $? at step 10: repository cleanup. Check the above logs for more details on the error." - exit $? - } + begin_step "10" "Cleaning up repository" + $CYDIR/scripts/repo-clean.sh + exit_if_last_command_failed fi cat <> env.sh diff --git a/scripts/utils.sh b/scripts/utils.sh index 6f0fc5f7..30d3e092 100755 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -53,24 +53,3 @@ function restore_bash_options { set +vx; eval "$OLDSTATE" } - -####################################### -# Basic try-catch block implementation -# for bash scripts. -# Usage: try; ( run commands ) -# catch || { handle error } -# Source: https://stackoverflow.com/a/25180186/5121242 -####################################### -function try() -{ - [[ $- = *e* ]]; SAVED_OPT_E=$? - set +e -} - -function catch() -{ - export ex_code=$? - (( $SAVED_OPT_E )) && set +e - return $ex_code -} - From aded25fee0537d60dd5eb5073f8ef08cf3cffa2b Mon Sep 17 00:00:00 2001 From: JL102 Date: Fri, 6 Oct 2023 18:49:10 -0400 Subject: [PATCH 015/184] Made indentation consistent --- scripts/build-setup.sh | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index c58ddd7b..35b19a82 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -134,23 +134,23 @@ function exit_if_last_command_failed # setup and install conda environment if run_step "1"; then begin_step "1" "Conda environment setup" - # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 - CONDA_REQS=$CYDIR/conda-reqs - CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs - # must match with the file generated by generate-conda-lockfile.sh - LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml + # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 + CONDA_REQS=$CYDIR/conda-reqs + CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs + # must match with the file generated by generate-conda-lockfile.sh + LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml - if [ "$USE_UNPINNED_DEPS" = true ]; then - # auto-gen the lockfiles - $CYDIR/scripts/generate-conda-lockfiles.sh - exit_if_last_command_failed - fi + if [ "$USE_UNPINNED_DEPS" = true ]; then + # auto-gen the lockfiles + $CYDIR/scripts/generate-conda-lockfiles.sh + exit_if_last_command_failed + fi - # use conda-lock to create env - conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE && + # use conda-lock to create env + conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE && - source $CYDIR/.conda-env/etc/profile.d/conda.sh && - conda activate $CYDIR/.conda-env + source $CYDIR/.conda-env/etc/profile.d/conda.sh && + conda activate $CYDIR/.conda-env exit_if_last_command_failed fi @@ -187,25 +187,25 @@ fi # run ctags for code navigation if run_step "4"; then begin_step "4" "Running ctags for code navigation" - $CYDIR/scripts/gen-tags.sh + $CYDIR/scripts/gen-tags.sh exit_if_last_command_failed fi # precompile chipyard scala sources if run_step "5"; then begin_step "5" "Pre-compiling Chipyard Scala sources" - pushd $CYDIR/sims/verilator - make launch-sbt SBT_COMMAND=";project chipyard; compile" - make launch-sbt SBT_COMMAND=";project tapeout; compile" - popd + pushd $CYDIR/sims/verilator + make launch-sbt SBT_COMMAND=";project chipyard; compile" + make launch-sbt SBT_COMMAND=";project tapeout; compile" + popd exit_if_last_command_failed fi # setup firesim if run_step "6"; then begin_step "6" "Setting up FireSim" - $CYDIR/scripts/firesim-setup.sh - $CYDIR/sims/firesim/gen-tags.sh + $CYDIR/scripts/firesim-setup.sh + $CYDIR/sims/firesim/gen-tags.sh exit_if_last_command_failed # precompile firesim scala sources From a7993db08e616f36bb3f9468524a06b60cba5010 Mon Sep 17 00:00:00 2001 From: JL102 Date: Fri, 6 Oct 2023 19:00:11 -0400 Subject: [PATCH 016/184] I think now I put `&&`s everywhere that is necessary --- scripts/build-setup.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 35b19a82..3624b5e7 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -194,9 +194,9 @@ fi # precompile chipyard scala sources if run_step "5"; then begin_step "5" "Pre-compiling Chipyard Scala sources" - pushd $CYDIR/sims/verilator - make launch-sbt SBT_COMMAND=";project chipyard; compile" - make launch-sbt SBT_COMMAND=";project tapeout; compile" + pushd $CYDIR/sims/verilator && + make launch-sbt SBT_COMMAND=";project chipyard; compile" && + make launch-sbt SBT_COMMAND=";project tapeout; compile" && popd exit_if_last_command_failed fi @@ -204,14 +204,14 @@ fi # setup firesim if run_step "6"; then begin_step "6" "Setting up FireSim" - $CYDIR/scripts/firesim-setup.sh + $CYDIR/scripts/firesim-setup.sh && $CYDIR/sims/firesim/gen-tags.sh exit_if_last_command_failed # precompile firesim scala sources if run_step "7"; then begin_step "7" "Pre-compiling Firesim Scala sources" - pushd $CYDIR/sims/firesim + pushd $CYDIR/sims/firesim && ( set -e # Subshells un-set "set -e" so it must be re enabled echo $CYDIR @@ -228,7 +228,7 @@ fi # setup firemarshal if run_step "8"; then begin_step "8" "Setting up FireMarshal" - pushd $CYDIR/software/firemarshal + pushd $CYDIR/software/firemarshal && ./init-submodules.sh exit_if_last_command_failed From 9b557227a35b65e3930535bded4d50bd08d7ce5c Mon Sep 17 00:00:00 2001 From: JL102 Date: Fri, 6 Oct 2023 19:01:47 -0400 Subject: [PATCH 017/184] Remove now-unused build-step scripts --- scripts/build-step-init-conda-environment.sh | 21 ------------------- .../build-step-precompile-chipyard-scala.sh | 10 --------- .../build-step-precompile-firesim-scala.sh | 12 ----------- 3 files changed, 43 deletions(-) delete mode 100755 scripts/build-step-init-conda-environment.sh delete mode 100644 scripts/build-step-precompile-chipyard-scala.sh delete mode 100644 scripts/build-step-precompile-firesim-scala.sh diff --git a/scripts/build-step-init-conda-environment.sh b/scripts/build-step-init-conda-environment.sh deleted file mode 100755 index 2ba4a344..00000000 --- a/scripts/build-step-init-conda-environment.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env bash - -# This script is intended to be used as a sub-step of build-setup.sh. - -# note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 -set -e -CONDA_REQS=$CYDIR/conda-reqs -CONDA_LOCK_REQS=$CONDA_REQS/conda-lock-reqs -# must match with the file generated by generate-conda-lockfile.sh -LOCKFILE=$CONDA_LOCK_REQS/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml - -if [ "$USE_UNPINNED_DEPS" = true ]; then - # auto-gen the lockfiles - $CYDIR/scripts/generate-conda-lockfiles.sh -fi - -# use conda-lock to create env -conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE - -source $CYDIR/.conda-env/etc/profile.d/conda.sh -conda activate $CYDIR/.conda-env diff --git a/scripts/build-step-precompile-chipyard-scala.sh b/scripts/build-step-precompile-chipyard-scala.sh deleted file mode 100644 index 807b6d8a..00000000 --- a/scripts/build-step-precompile-chipyard-scala.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# This script is intended to be used as a sub-step of build-setup.sh. - -set -e -pushd $CYDIR/sims/verilator -make launch-sbt SBT_COMMAND=";project chipyard; compile" -make launch-sbt SBT_COMMAND=";project tapeout; compile" -popd - diff --git a/scripts/build-step-precompile-firesim-scala.sh b/scripts/build-step-precompile-firesim-scala.sh deleted file mode 100644 index 4c9aeb33..00000000 --- a/scripts/build-step-precompile-firesim-scala.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -# This script is intended to be used as a sub-step of build-setup.sh. -pushd $CYDIR/sims/firesim -( - echo $CYDIR - source sourceme-manager.sh --skip-ssh-setup - pushd sim - make sbt SBT_COMMAND="project {file:$CYDIR}firechip; compile" TARGET_PROJECT=firesim - popd -) -popd From a4cb114657bece161410febaf50a3807b54bf090 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 6 Oct 2023 17:00:06 -0700 Subject: [PATCH 018/184] Fix UARTAdapter divisor --- generators/chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index b6409a63..32c31840 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -42,7 +42,7 @@ class WithGPIOTiedOff extends HarnessBinder({ // DOC include start: WithUARTAdapter class WithUARTAdapter extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTPort) => { - val div = (th.getHarnessBinderClockFreqMHz / port.io.c.initBaudRate.toDouble).toInt + val div = (th.getHarnessBinderClockFreqMHz * 1000000 / port.io.c.initBaudRate.toDouble).toInt val uart_sim = Module(new UARTAdapter(port.uartNo, div, false)).suggestName(s"uart_sim_uartno${port.uartNo}") uart_sim.io.uart.txd := port.io.txd port.io.rxd := uart_sim.io.uart.rxd From b949324d5aa031e405e0f2c8ad6bb318edba3e33 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 6 Oct 2023 17:55:14 -0700 Subject: [PATCH 019/184] Fix FireSim UARTBridge --- generators/firechip/src/main/scala/BridgeBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index a709ee4b..7982a75d 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -86,7 +86,7 @@ class WithNICBridge extends HarnessBinder({ class WithUARTBridge extends HarnessBinder({ case (th: FireSim, port: UARTPort) => val uartSyncClock = th.harnessClockInstantiator.requestClockMHz("uart_clock", port.freqMHz) - UARTBridge(uartSyncClock, port.io, th.harnessBinderReset.asBool)(th.p) + UARTBridge(uartSyncClock, port.io, th.harnessBinderReset.asBool, port.freqMHz)(th.p) }) class WithBlockDeviceBridge extends HarnessBinder({ From 5145f4f2435beb262e43d02e7451d4e69ed34fde Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 6 Oct 2023 17:55:49 -0700 Subject: [PATCH 020/184] Bump firesim --- sims/firesim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sims/firesim b/sims/firesim index f80c6031..73fe6a51 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit f80c60313c7c54733affb441773874fc54560ef3 +Subproject commit 73fe6a51b28a2dbbe3f307bdbc6ba2407b311a27 From 8d11dde7cb180d7ac776c71b158e4ce5da555711 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 7 Oct 2023 00:27:15 -0700 Subject: [PATCH 021/184] Fix UARTPort freqMHz --- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 7cbce516..773f3d39 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -208,8 +208,8 @@ class WithUARTIOCells extends OverrideIOBinder({ val (port, ios) = IOCell.generateIOFromSignal(u, s"uart_${i}", system.p(IOCellKey), abstractResetAsAsync = true) val where = PBUS // TODO fix val bus = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) - val freqMHz = bus.dtsFrequency.get.toInt / 1000000 - (UARTPort(port, i, freqMHz), ios) + val freqMHz = bus.dtsFrequency.get / 1000000 + (UARTPort(port, i, freqMHz.toInt), ios) }).unzip (ports, cells2d.flatten) } From 0ebab140ffefc7be845a90c5d2d25be57bc66389 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 9 Oct 2023 11:49:38 -0700 Subject: [PATCH 022/184] Update nexysvideo to Port api --- .../scala/nexysvideo/HarnessBinders.scala | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala index 3a035a10..4027cbcf 100644 --- a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala +++ b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala @@ -14,30 +14,26 @@ import chipyard._ import chipyard.harness._ import testchipip._ +import chipyard.iobinders._ -class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends OverrideHarnessBinder({ - (system: CanHavePeripheryUARTTSI, th: HasHarnessInstantiators, ports: Seq[UARTTSIIO]) => { - implicit val p = chipyard.iobinders.GetSystemParameters(system) - require(ports.size <= 1) +class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val nexysvideoth = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] - ports.map({ port => - nexysvideoth.io_uart_bb.bundle <> port.uart - nexysvideoth.other_leds(1) := port.dropped - nexysvideoth.other_leds(2) := port.tsi2tl_state(0) - nexysvideoth.other_leds(3) := port.tsi2tl_state(1) - nexysvideoth.other_leds(4) := port.tsi2tl_state(2) - nexysvideoth.other_leds(5) := port.tsi2tl_state(3) - }) + nexysvideoth.io_uart_bb.bundle <> port.io.uart + nexysvideoth.other_leds(1) := port.io.dropped + nexysvideoth.other_leds(2) := port.io.tsi2tl_state(0) + nexysvideoth.other_leds(3) := port.io.tsi2tl_state(1) + nexysvideoth.other_leds(4) := port.io.tsi2tl_state(2) + nexysvideoth.other_leds(5) := port.io.tsi2tl_state(3) } }) -class WithNexysVideoDDRTL extends OverrideHarnessBinder({ - (system: CanHaveMasterTLMemPort, th: HasHarnessInstantiators, ports: Seq[HeterogeneousBag[TLBundle]]) => { - require(ports.size == 1) +class WithNexysVideoDDRTL extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: TLMemPort) => { val nexysTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] val bundles = nexysTh.ddrClient.get.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } - ddrClientBundle <> ports.head + ddrClientBundle <> port.io } }) From 26d4e45b27c4f2ed92907240ac4a1d5983d4d9f5 Mon Sep 17 00:00:00 2001 From: raghav-g13 <58498249+raghav-g13@users.noreply.github.com> Date: Wed, 11 Oct 2023 01:43:36 +0000 Subject: [PATCH 023/184] bumping marshal for linux rng init fix --- software/firemarshal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/firemarshal b/software/firemarshal index 8b8eea35..97826983 160000 --- a/software/firemarshal +++ b/software/firemarshal @@ -1 +1 @@ -Subproject commit 8b8eea35f618b9418c850df7ed809a2285ee5d1c +Subproject commit 97826983438427b8fc40d9b66af2674ce7046bac From 894ee630619263fa0274277e3c83a036a12d972c Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 11 Oct 2023 14:59:49 -0700 Subject: [PATCH 024/184] Make chipParameters not private --- .../src/main/scala/harness/HasHarnessInstantiators.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index 9b607c1c..48f63e04 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -63,7 +63,7 @@ trait HasHarnessInstantiators { val supportsMultiChip: Boolean = false - private val chipParameters = p(MultiChipNChips) match { + val chipParameters = p(MultiChipNChips) match { case Some(n) => (0 until n).map { i => p(MultiChipParameters(i)).alterPartial { case TargetDirKey => p(TargetDirKey) // hacky fix case MultiChipIdx => i From 3cbcf6b6e82846274248ad6a52b50f43c0b15644 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 11 Oct 2023 15:01:39 -0700 Subject: [PATCH 025/184] Fix TSIBridge loadmem param --- generators/firechip/src/main/scala/BridgeBinders.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index 7982a75d..e4169ec2 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -72,8 +72,13 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ val ram = LazyModule(new SerialRAM(port.serdesser)(Parameters.empty)) Module(ram.module) ram.module.io.ser <> port.io.bits - TSIBridge(th.harnessBinderClock, ram.module.io.tsi, - port.params.serialTLManagerParams.map(_ => MainMemoryConsts.globalName(th.p(MultiChipIdx))), th.harnessBinderReset.asBool)(th.p) + + // This assumes that: + // If ExtMem for the target is defined, then FASED bridge will be attached + // If FASED bridge is attached, loadmem widget is present + val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined + val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) + TSIBridge(th.harnessBinderClock, ram.module.io.tsi, mainMemoryName, th.harnessBinderReset.asBool)(th.p) } }) From deab3b11b66119db896aa0c5ae763f56433d836b Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 12 Oct 2023 15:37:03 -0700 Subject: [PATCH 026/184] Fix UARTAdapter div bits --- generators/chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 32c31840..0446b783 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -42,7 +42,7 @@ class WithGPIOTiedOff extends HarnessBinder({ // DOC include start: WithUARTAdapter class WithUARTAdapter extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTPort) => { - val div = (th.getHarnessBinderClockFreqMHz * 1000000 / port.io.c.initBaudRate.toDouble).toInt + val div = (th.getHarnessBinderClockFreqMHz.toDouble * 1000000 / port.io.c.initBaudRate.toDouble).toInt val uart_sim = Module(new UARTAdapter(port.uartNo, div, false)).suggestName(s"uart_sim_uartno${port.uartNo}") uart_sim.io.uart.txd := port.io.txd port.io.rxd := uart_sim.io.uart.rxd From 6bd2e9dddbf4901bece51ae38408d101f3d8f1b4 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 13 Oct 2023 17:36:41 -0700 Subject: [PATCH 027/184] [ci skip] Re-add suggestName for axi4 mmio mem --- generators/chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 0446b783..8530bb33 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -135,7 +135,7 @@ class WithBlackBoxSimMem(additionalLatency: Int = 0) extends HarnessBinder({ class WithSimAXIMMIO extends HarnessBinder({ case (th: HasHarnessInstantiators, port: AXI4MMIOPort) => { val mmio_mem = LazyModule(new SimAXIMem(port.edge, size = port.params.size)(Parameters.empty)) - withClock(port.io.clock) { Module(mmio_mem.module) } + withClock(port.io.clock) { Module(mmio_mem.module).suggestName("mmio_mem") } mmio_mem.io_axi4.head <> port.io.bits } }) From b1f3119676179636eec1b4366d563ecf0eb89712 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Mon, 16 Oct 2023 16:18:42 -0700 Subject: [PATCH 028/184] Bump barstools --- tools/barstools | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/barstools b/tools/barstools index f5fe37c4..60a1be9b 160000 --- a/tools/barstools +++ b/tools/barstools @@ -1 +1 @@ -Subproject commit f5fe37c4bf0a37eb5033eeaf930c337895470607 +Subproject commit 60a1be9bfe344fccbddd4874524accb3c9d2ade9 From aa057239f2bc14d4001681ae01e4ea759e1b4c2e Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 17 Oct 2023 14:38:28 -0700 Subject: [PATCH 029/184] Bump rocket-chip + submodules for new clustered-tile API --- fpga/fpga-shells | 2 +- generators/bar-fetchers | 2 +- generators/boom | 2 +- .../chipyard/src/main/scala/ChipTop.scala | 1 - .../chipyard/src/main/scala/DigitalTop.scala | 1 - .../chipyard/src/main/scala/SpikeTile.scala | 35 ++++++++++--------- .../chipyard/src/main/scala/Subsystem.scala | 28 ++++++++------- .../chipyard/src/main/scala/System.scala | 7 ---- .../chipyard/src/main/scala/TestSuites.scala | 2 +- .../main/scala/clocking/ClockBinders.scala | 25 ++----------- .../main/scala/clocking/HasChipyardPRCI.scala | 31 +++++----------- .../main/scala/config/AbstractConfig.scala | 2 +- .../src/main/scala/config/RocketConfigs.scala | 8 +++++ .../main/scala/config/TracegenConfigs.scala | 2 +- .../config/fragments/ClockingFragments.scala | 4 +-- .../config/fragments/RoCCFragments.scala | 8 ++--- .../config/fragments/SubsystemFragments.scala | 4 +-- .../config/fragments/TileFragments.scala | 14 ++++---- .../src/main/scala/example/FlatChipTop.scala | 12 +------ .../chipyard/src/main/scala/example/GCD.scala | 2 +- .../src/main/scala/example/TutorialTile.scala | 19 +++++----- .../src/main/scala/iobinders/IOBinders.scala | 10 +++--- generators/cva6 | 2 +- .../firechip/src/main/scala/FireSim.scala | 8 ++--- generators/ibex | 2 +- generators/riscv-sodor | 2 +- generators/rocket-chip | 2 +- generators/shuttle | 2 +- generators/sifive-blocks | 2 +- generators/sifive-cache | 2 +- generators/testchipip | 2 +- .../tracegen/src/main/scala/Configs.scala | 18 +++++----- .../tracegen/src/main/scala/System.scala | 5 +-- 33 files changed, 116 insertions(+), 152 deletions(-) diff --git a/fpga/fpga-shells b/fpga/fpga-shells index 2ce3e6f3..19e0e87c 160000 --- a/fpga/fpga-shells +++ b/fpga/fpga-shells @@ -1 +1 @@ -Subproject commit 2ce3e6f3df06d64c858bc1073ba1c75e7eb71a07 +Subproject commit 19e0e87cedd438f8231bb7af420cc58792735473 diff --git a/generators/bar-fetchers b/generators/bar-fetchers index a5bd985d..12d1506f 160000 --- a/generators/bar-fetchers +++ b/generators/bar-fetchers @@ -1 +1 @@ -Subproject commit a5bd985d29b07940e326d78964b370fa1cefec71 +Subproject commit 12d1506f610048906d2407b40a706923cbe6571e diff --git a/generators/boom b/generators/boom index 96da674b..65b0d39b 160000 --- a/generators/boom +++ b/generators/boom @@ -1 +1 @@ -Subproject commit 96da674bc97955e7fa068f0a9a1d0a7a479d1d0b +Subproject commit 65b0d39b35bb5dbb3deba826979c5145846648ae diff --git a/generators/chipyard/src/main/scala/ChipTop.scala b/generators/chipyard/src/main/scala/ChipTop.scala index 150221b6..ec636dfb 100644 --- a/generators/chipyard/src/main/scala/ChipTop.scala +++ b/generators/chipyard/src/main/scala/ChipTop.scala @@ -5,7 +5,6 @@ import chisel3._ import scala.collection.mutable.{ArrayBuffer} import freechips.rocketchip.prci.{ClockGroupIdentityNode, ClockSinkParameters, ClockSinkNode, ClockGroup} -import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, LazyRawModuleImp, LazyModuleImpLike, BindingScope} import freechips.rocketchip.util.{ResetCatchAndSync} diff --git a/generators/chipyard/src/main/scala/DigitalTop.scala b/generators/chipyard/src/main/scala/DigitalTop.scala index d7263008..1dafe42d 100644 --- a/generators/chipyard/src/main/scala/DigitalTop.scala +++ b/generators/chipyard/src/main/scala/DigitalTop.scala @@ -40,7 +40,6 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem } class DigitalTopModule[+L <: DigitalTop](l: L) extends ChipyardSystemModule(l) - with testchipip.CanHaveTraceIOModuleImp with sifive.blocks.devices.i2c.HasPeripheryI2CModuleImp with sifive.blocks.devices.pwm.HasPeripheryPWMModuleImp with sifive.blocks.devices.uart.HasPeripheryUARTModuleImp diff --git a/generators/chipyard/src/main/scala/SpikeTile.scala b/generators/chipyard/src/main/scala/SpikeTile.scala index fc822c22..7778deb6 100644 --- a/generators/chipyard/src/main/scala/SpikeTile.scala +++ b/generators/chipyard/src/main/scala/SpikeTile.scala @@ -77,14 +77,15 @@ case class SpikeTileAttachParams( } case class SpikeTileParams( - hartId: Int = 0, + tileId: Int = 0, val core: SpikeCoreParams = SpikeCoreParams(), icacheParams: ICacheParams = ICacheParams(nWays = 32), dcacheParams: DCacheParams = DCacheParams(nWays = 32), tcmParams: Option[MasterPortParams] = None // tightly coupled memory ) extends InstantiableTileParams[SpikeTile] { - val name = Some("spike_tile") + val baseName = "spike_tile" + val uniqueName = s"${baseName}_$tileId" val beuAddr = None val blockerCtrlAddr = None val btb = None @@ -92,7 +93,7 @@ case class SpikeTileParams( val dcache = Some(dcacheParams) val icache = Some(icacheParams) val clockSinkParams = ClockSinkParameters() - def instantiate(crossing: TileCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters): SpikeTile = { + def instantiate(crossing: HierarchicalElementCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters): SpikeTile = { new SpikeTile(this, crossing, lookup) } } @@ -106,11 +107,11 @@ class SpikeTile( with SourcesExternalNotifications { // Private constructor ensures altered LazyModule.p is used implicitly - def this(params: SpikeTileParams, crossing: TileCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters) = + def this(params: SpikeTileParams, crossing: HierarchicalElementCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters) = this(params, crossing.crossingType, lookup, p) // Required TileLink nodes - val intOutwardNode = IntIdentityNode() + val intOutwardNode = Some(IntIdentityNode()) val masterNode = visibilityNode val slaveNode = TLIdentityNode() @@ -129,21 +130,21 @@ class SpikeTile( } ResourceBinding { - Resource(cpuDevice, "reg").bind(ResourceAddress(hartId)) + Resource(cpuDevice, "reg").bind(ResourceAddress(tileId)) } val icacheNode = TLClientNode(Seq(TLMasterPortParameters.v1(Seq(TLMasterParameters.v1( sourceId = IdRange(0, 1), - name = s"Core ${staticIdForMetadataUseOnly} ICache"))))) + name = s"Core ${tileId} ICache"))))) val dcacheNode = TLClientNode(Seq(TLMasterPortParameters.v1(Seq(TLMasterParameters.v1( - name = s"Core ${staticIdForMetadataUseOnly} DCache", + name = s"Core ${tileId} DCache", sourceId = IdRange(0, tileParams.dcache.get.nMSHRs), supportsProbe = TransferSizes(p(CacheBlockBytes), p(CacheBlockBytes))))))) val mmioNode = TLClientNode((Seq(TLMasterPortParameters.v1(Seq(TLMasterParameters.v1( - name = s"Core ${staticIdForMetadataUseOnly} MMIO", + name = s"Core ${tileId} MMIO", sourceId = IdRange(0, 1), requestFifo = true)))))) @@ -313,7 +314,7 @@ class SpikeBlackBox( } class SpikeTileModuleImp(outer: SpikeTile) extends BaseTileModuleImp(outer) { - + val tileParams = outer.tileParams // We create a bundle here and decode the interrupt. val int_bundle = Wire(new TileInterrupts()) outer.decodeCoreInterrupts(int_bundle) @@ -337,7 +338,7 @@ class SpikeTileModuleImp(outer: SpikeTile) extends BaseTileModuleImp(outer) { // then the DTM-based bringup with SimDTM will be used. This isn't required to be // true, but it usually is val useDTM = p(ExportDebug).protocols.contains(DMI) - val spike = Module(new SpikeBlackBox(hartId, isaDTS, tileParams.core.nPMPs, + val spike = Module(new SpikeBlackBox(outer.tileId, outer.isaDTS, tileParams.core.nPMPs, tileParams.icache.get.nSets, tileParams.icache.get.nWays, tileParams.dcache.get.nSets, tileParams.dcache.get.nWays, tileParams.dcache.get.nMSHRs, @@ -467,19 +468,21 @@ class SpikeTileModuleImp(outer: SpikeTile) extends BaseTileModuleImp(outer) { } } -class WithNSpikeCores(n: Int = 1, tileParams: SpikeTileParams = SpikeTileParams(), - overrideIdOffset: Option[Int] = None) extends Config((site, here, up) => { +class WithNSpikeCores(n: Int = 1, tileParams: SpikeTileParams = SpikeTileParams() +) extends Config((site, here, up) => { case TilesLocated(InSubsystem) => { // Calculate the next available hart ID (since hart ID cannot be duplicated) val prev = up(TilesLocated(InSubsystem), site) - val idOffset = overrideIdOffset.getOrElse(prev.size) + val idOffset = up(NumTiles) // Create TileAttachParams for every core to be instantiated (0 until n).map { i => SpikeTileAttachParams( - tileParams = tileParams.copy(hartId = i + idOffset) + tileParams = tileParams.copy(tileId = i + idOffset) ) } ++ prev } + case NumTiles => up(NumTiles) + n + }) class WithSpikeTCM extends Config((site, here, up) => { @@ -492,5 +495,5 @@ class WithSpikeTCM extends Config((site, here, up) => { ))) } case ExtMem => None - case BankedL2Key => up(BankedL2Key).copy(nBanks = 0) + case SubsystemBankedCoherenceKey => up(SubsystemBankedCoherenceKey).copy(nBanks = 0) }) diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index d25d4fa3..1a41ce81 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -71,18 +71,24 @@ trait CanHaveChosenInDTS { this: BaseSubsystem => } class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem - with HasTiles - with HasPeripheryDebug - with CanHaveHTIF - with CanHaveChosenInDTS + with InstantiatesHierarchicalElements + with HasTileNotificationSinks + with HasTileInputConstants + with CanHavePeripheryCLINT + with CanHavePeripheryPLIC + with HasPeripheryDebug + with HasHierarchicalElementsRootContext + with HasHierarchicalElements + with CanHaveHTIF + with CanHaveChosenInDTS { - def coreMonitorBundles = tiles.map { + def coreMonitorBundles = totalTiles.values.map { case r: RocketTile => r.module.core.rocketImpl.coreMonitorBundle case b: BoomTile => b.module.core.coreMonitorBundle }.toList // No-tile configs have to be handled specially. - if (tiles.size == 0) { + if (totalTiles.size == 0) { // no PLIC, so sink interrupts to nowhere require(!p(PLICKey).isDefined) val intNexus = IntNexusNode(sourceFn = x => x.head, sinkFn = x => x.head) @@ -96,10 +102,6 @@ class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem tileHaltXbarNode := IntSourceNode(IntSourcePortSimple()) tileWFIXbarNode := IntSourceNode(IntSourcePortSimple()) tileCeaseXbarNode := IntSourceNode(IntSourcePortSimple()) - - // Sink reset vectors to nowhere - val resetVectorSink = BundleBridgeSink[UInt](Some(() => UInt(28.W))) - resetVectorSink := tileResetVectorNode } // Relying on [[TLBusWrapperConnection]].driveClockFromMaster for @@ -107,7 +109,7 @@ class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem // ClockGroup. This makes it impossible to determine which clocks are driven // by which bus based on the member names, which is problematic when there is // a rational crossing between two buses. Instead, provide all bus clocks - // directly from the asyncClockGroupsNode in the subsystem to ensure bus + // directly from the allClockGroupsNode in the subsystem to ensure bus // names are always preserved in the top-level clock names. // // For example, using a RationalCrossing between the Sbus and Cbus, and @@ -116,12 +118,12 @@ class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem // Conversly, if an async crossing is used, they instead receive names of the // form "subsystem_cbus_[0-9]*". The assignment below provides the latter names in all cases. Seq(PBUS, FBUS, MBUS, CBUS).foreach { loc => - tlBusWrapperLocationMap.lift(loc).foreach { _.clockGroupNode := asyncClockGroupsNode } + tlBusWrapperLocationMap.lift(loc).foreach { _.clockGroupNode := allClockGroupsNode } } override lazy val module = new ChipyardSubsystemModuleImp(this) } class ChipyardSubsystemModuleImp[+L <: ChipyardSubsystem](_outer: L) extends BaseSubsystemModuleImp(_outer) - with HasTilesModuleImp + with HasHierarchicalElementsRootContextModuleImp { } diff --git a/generators/chipyard/src/main/scala/System.scala b/generators/chipyard/src/main/scala/System.scala index 5643e380..b8a04eac 100644 --- a/generators/chipyard/src/main/scala/System.scala +++ b/generators/chipyard/src/main/scala/System.scala @@ -32,13 +32,6 @@ class ChipyardSystem(implicit p: Parameters) extends ChipyardSubsystem val bootROM = p(BootROMLocated(location)).map { BootROM.attach(_, this, CBUS) } val maskROMs = p(MaskROMLocated(location)).map { MaskROM.attach(_, this, CBUS) } - // If there is no bootrom, the tile reset vector bundle will be tied to zero - if (bootROM.isEmpty) { - val fakeResetVectorSourceNode = BundleBridgeSource[UInt]() - InModuleBody { fakeResetVectorSourceNode.bundle := 0.U } - tileResetVectorNexusNode := fakeResetVectorSourceNode - } - override lazy val module = new ChipyardSystemModule(this) } diff --git a/generators/chipyard/src/main/scala/TestSuites.scala b/generators/chipyard/src/main/scala/TestSuites.scala index 0e4e3310..2a88ebb2 100644 --- a/generators/chipyard/src/main/scala/TestSuites.scala +++ b/generators/chipyard/src/main/scala/TestSuites.scala @@ -65,7 +65,7 @@ class TestSuiteHelper */ def addGenericTestSuites(tiles: Seq[TileParams])(implicit p: Parameters) = { val xlen = p(XLen) - tiles.find(_.hartId == 0).map { tileParams => + tiles.find(_.tileId == 0).map { tileParams => val coreParams = tileParams.core val vm = coreParams.useVM val env = if (vm) List("p","v") else List("p") diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala index 3ef8a61b..fa31163d 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -18,16 +18,6 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ (system: HasChipyardPRCI) => { // Connect the implicit clock implicit val p = GetSystemParameters(system) - val implicitClockSinkNode = ClockSinkNode(Seq(ClockSinkParameters(name = Some("implicit_clock")))) - system.connectImplicitClockSinkNode(implicitClockSinkNode) - InModuleBody { - val implicit_clock = implicitClockSinkNode.in.head._1.clock - val implicit_reset = implicitClockSinkNode.in.head._1.reset - system.asInstanceOf[BaseSubsystem].module match { case l: LazyModuleImp => { - l.clock := implicit_clock - l.reset := implicit_reset - }} - } val tlbus = system.asInstanceOf[BaseSubsystem].locateTLBusWrapper(system.prciParams.slaveWhere) val baseAddress = system.prciParams.baseAddress val clockDivider = system.prci_ctrl_domain { LazyModule(new TLClockDivider (baseAddress + 0x20000, tlbus.beatBytes)) } @@ -38,7 +28,7 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ clockSelector.tlNode := system.prci_ctrl_domain { TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := system.prci_ctrl_bus.get } pllCtrl.tlNode := system.prci_ctrl_domain { TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := system.prci_ctrl_bus.get } - system.allClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode + system.chiptopClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode // Connect all other requested clocks val slowClockSource = ClockSourceNode(Seq(ClockSourceParameters())) @@ -83,23 +73,12 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ // This passes all clocks through to the TestHarness class WithPassthroughClockGenerator extends OverrideLazyIOBinder({ (system: HasChipyardPRCI) => { - // Connect the implicit clock implicit val p = GetSystemParameters(system) - val implicitClockSinkNode = ClockSinkNode(Seq(ClockSinkParameters(name = Some("implicit_clock")))) - system.connectImplicitClockSinkNode(implicitClockSinkNode) - InModuleBody { - val implicit_clock = implicitClockSinkNode.in.head._1.clock - val implicit_reset = implicitClockSinkNode.in.head._1.reset - system.asInstanceOf[BaseSubsystem].module match { case l: LazyModuleImp => { - l.clock := implicit_clock - l.reset := implicit_reset - }} - } // This aggregate node should do nothing val clockGroupAggNode = ClockGroupAggregateNode("fake") val clockGroupsSourceNode = ClockGroupSourceNode(Seq(ClockGroupSourceParameters())) - system.allClockGroupsNode := clockGroupAggNode := clockGroupsSourceNode + system.chiptopClockGroupsNode := clockGroupAggNode := clockGroupsSourceNode InModuleBody { val reset_io = IO(Input(AsyncReset())) diff --git a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala index 356a0432..a9832806 100644 --- a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala +++ b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala @@ -29,8 +29,8 @@ case class ChipyardPRCIControlParams( case object ChipyardPRCIControlKey extends Field[ChipyardPRCIControlParams](ChipyardPRCIControlParams()) -trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesTiles => - require(p(SubsystemDriveAsyncClockGroupsKey).isEmpty, "Subsystem asyncClockGroups must be undriven") +trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesHierarchicalElementss => + require(!p(SubsystemDriveDriveClockGroupsFromIO), "Subsystem allClockGroups cannot be driven from implicit clocks") val prciParams = p(ChipyardPRCIControlKey) @@ -48,29 +48,13 @@ trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesTiles => // Aggregate all the clock groups into a single node val aggregator = LazyModule(new ClockGroupAggregator("allClocks")).node - val allClockGroupsNode = ClockGroupEphemeralNode() - // There are two "sets" of clocks which must be dealt with - - // 1. The implicit clock from the subsystem. RC is moving away from depending on this - // clock, but some modules still use it. Since the implicit clock sink node - // is created in the ChipTop (the hierarchy wrapping the subsystem), this function - // is provided to allow connecting that clock to the clock aggregator. This function - // should be called in the ChipTop context - def connectImplicitClockSinkNode(sink: ClockSinkNode) = { - val implicitClockGrouper = this { ClockGroup() } - (sink - := implicitClockGrouper - := aggregator) - } - - // 2. The rest of the diplomatic clocks in the subsystem are routed to this asyncClockGroupsNode + // The diplomatic clocks in the subsystem are routed to this allClockGroupsNode val clockNamePrefixer = ClockGroupNamePrefixer() - (asyncClockGroupsNode + (allClockGroupsNode :*= clockNamePrefixer :*= aggregator) - // Once all the clocks are gathered in the aggregator node, several steps remain // 1. Assign frequencies to any clock groups which did not specify a frequency. // 2. Combine duplicated clock groups (clock groups which physically should be in the same clock domain) @@ -91,7 +75,7 @@ trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesTiles => } } val tileResetSetter = Option.when(prciParams.enableTileResetSetting) { prci_ctrl_domain { val reset_setter = LazyModule(new TileResetSetter(prciParams.baseAddress + 0x10000, tlbus.beatBytes, - tile_prci_domains.map(_.tile_reset_domain.clockNode.portParams(0).name.get), Nil)) + tile_prci_domains.map(_._2.tile_reset_domain.clockNode.portParams(0).name.get).toSeq, Nil)) reset_setter.tlNode := TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := prci_ctrl_bus.get reset_setter } } @@ -115,11 +99,14 @@ RTL SIMULATORS, NAMELY VERILATOR. """ + Console.RESET) } + // The chiptopClockGroupsNode shouuld be what ClockBinders attach to + val chiptopClockGroupsNode = ClockGroupEphemeralNode() + (aggregator := frequencySpecifier := clockGroupCombiner := resetSynchronizer := tileClockGater.map(_.clockNode).getOrElse(ClockGroupEphemeralNode()(ValName("temp"))) := tileResetSetter.map(_.clockNode).getOrElse(ClockGroupEphemeralNode()(ValName("temp"))) - := allClockGroupsNode) + := chiptopClockGroupsNode) } diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index a08abb6d..0891a21d 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -66,7 +66,7 @@ class AbstractConfig extends Config( new chipyard.config.WithBootROM ++ // use default bootrom new chipyard.config.WithUART ++ // add a UART new chipyard.config.WithL2TLBs(1024) ++ // use L2 TLBs - new chipyard.config.WithNoSubsystemDrivenClocks ++ // drive the subsystem diplomatic clocks from ChipTop instead of using implicit clocks + new chipyard.config.WithNoSubsystemClockIO ++ // drive the subsystem diplomatic clocks from ChipTop instead of using implicit clocks new chipyard.config.WithInheritBusFrequencyAssignments ++ // Unspecified clocks within a bus will receive the bus frequency if set new freechips.rocketchip.subsystem.WithNMemoryChannels(1) ++ // Default 1 memory channels new freechips.rocketchip.subsystem.WithClockGateModel ++ // add default EICG_wrapper clock gate model diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index c45fb6f2..a9f87b28 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -2,6 +2,7 @@ package chipyard import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} +import freechips.rocketchip.subsystem.{InCluster} // -------------- // Rocket Configs @@ -110,3 +111,10 @@ class PrefetchingRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNonblockingL1(2) ++ // non-blocking L1D$, L1 prefetching only works with non-blocking L1D$ new freechips.rocketchip.subsystem.WithNBigCores(1) ++ // single rocket-core new chipyard.config.AbstractConfig) + +class ClusteredRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithNBigCores(4, location=InCluster(1)) ++ + new freechips.rocketchip.subsystem.WithNBigCores(4, location=InCluster(0)) ++ + new freechips.rocketchip.subsystem.WithCluster(1) ++ + new freechips.rocketchip.subsystem.WithCluster(0) ++ + new chipyard.config.AbstractConfig) diff --git a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala index 55cce1b8..78c815fb 100644 --- a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala @@ -14,7 +14,7 @@ class AbstractTraceGenConfig extends Config( new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "implicit"), Nil)) ++ new chipyard.config.WithTracegenSystem ++ - new chipyard.config.WithNoSubsystemDrivenClocks ++ + new chipyard.config.WithNoSubsystemClockIO ++ new chipyard.config.WithMemoryBusFrequency(1000.0) ++ new chipyard.config.WithSystemBusFrequency(1000.0) ++ new chipyard.config.WithPeripheryBusFrequency(1000.0) ++ diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 2da9fbf2..8ccc8afa 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -18,8 +18,8 @@ import chipyard.clocking._ // with the implicit clocks of Subsystem. Don't do that, instead we extend // the diplomacy graph upwards into the ChipTop, where we connect it to // our clock drivers -class WithNoSubsystemDrivenClocks extends Config((site, here, up) => { - case SubsystemDriveAsyncClockGroupsKey => None +class WithNoSubsystemClockIO extends Config((site, here, up) => { + case SubsystemDriveClockGroupsFromIO => false }) /** diff --git a/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala b/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala index 4680eeeb..c9f7fcdb 100644 --- a/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala @@ -12,15 +12,15 @@ import gemmini._ import chipyard.{TestSuitesKey, TestSuiteHelper} /** - * Map from a hartId to a particular RoCC accelerator + * Map from a tileId to a particular RoCC accelerator */ case object MultiRoCCKey extends Field[Map[Int, Seq[Parameters => LazyRoCC]]](Map.empty[Int, Seq[Parameters => LazyRoCC]]) /** - * Config fragment to enable different RoCCs based on the hartId + * Config fragment to enable different RoCCs based on the tileId */ class WithMultiRoCC extends Config((site, here, up) => { - case BuildRoCC => site(MultiRoCCKey).getOrElse(site(TileKey).hartId, Nil) + case BuildRoCC => site(MultiRoCCKey).getOrElse(site(TileKey).tileId, Nil) }) /** @@ -39,7 +39,7 @@ class WithMultiRoCCFromBuildRoCC(harts: Int*) extends Config((site, here, up) => * * For ex: * Core 0, 1, 2, 3 have been defined earlier - * with hartIds of 0, 1, 2, 3 respectively + * with tileIds of 0, 1, 2, 3 respectively * And you call WithMultiRoCCHwacha(0,1) * Then Core 0 and 1 will get a Hwacha * diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index 40f18d5d..4416a572 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -1,12 +1,12 @@ package chipyard.config import org.chipsalliance.cde.config.{Config} -import freechips.rocketchip.subsystem.{SystemBusKey, BankedL2Key, CoherenceManagerWrapper} +import freechips.rocketchip.subsystem.{SystemBusKey, SubsystemBankedCoherenceKey, CoherenceManagerWrapper} import freechips.rocketchip.diplomacy.{DTSTimebase} // Replaces the L2 with a broadcast manager for maintaining coherence class WithBroadcastManager extends Config((site, here, up) => { - case BankedL2Key => up(BankedL2Key, site).copy(coherenceManager = CoherenceManagerWrapper.broadcastManager) + case SubsystemBankedCoherenceKey => up(SubsystemBankedCoherenceKey, site).copy(coherenceManager = CoherenceManagerWrapper.broadcastManager) }) class WithSystemBusWidth(bitWidth: Int) extends Config((site, here, up) => { diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index 17eaa3f0..db104867 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -69,7 +69,7 @@ class WithNPMPs(n: Int = 8) extends Config((site, here, up) => { class WithRocketICacheScratchpad extends Config((site, here, up) => { case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map { case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy( - icache = tp.tileParams.icache.map(_.copy(itimAddr = Some(0x300000 + tp.tileParams.hartId * 0x10000))) + icache = tp.tileParams.icache.map(_.copy(itimAddr = Some(0x300000 + tp.tileParams.tileId * 0x10000))) )) } }) @@ -77,7 +77,7 @@ class WithRocketICacheScratchpad extends Config((site, here, up) => { class WithRocketDCacheScratchpad extends Config((site, here, up) => { case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map { case tp: RocketTileAttachParams => tp.copy(tileParams = tp.tileParams.copy( - dcache = tp.tileParams.dcache.map(_.copy(nSets = 32, nWays = 1, scratch = Some(0x200000 + tp.tileParams.hartId * 0x10000))) + dcache = tp.tileParams.dcache.map(_.copy(nSets = 32, nWays = 1, scratch = Some(0x200000 + tp.tileParams.tileId * 0x10000))) )) } }) @@ -85,14 +85,14 @@ class WithRocketDCacheScratchpad extends Config((site, here, up) => { class WithTilePrefetchers extends Config((site, here, up) => { case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem), site) map { case tp: RocketTileAttachParams => tp.copy(crossingParams = tp.crossingParams.copy( - master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) + master = TilePrefetchingMasterPortParams(tp.tileParams.tileId, tp.crossingParams.master))) case tp: BoomTileAttachParams => tp.copy(crossingParams = tp.crossingParams.copy( - master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) + master = TilePrefetchingMasterPortParams(tp.tileParams.tileId, tp.crossingParams.master))) case tp: SodorTileAttachParams => tp.copy(crossingParams = tp.crossingParams.copy( - master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) + master = TilePrefetchingMasterPortParams(tp.tileParams.tileId, tp.crossingParams.master))) case tp: IbexTileAttachParams => tp.copy(crossingParams = tp.crossingParams.copy( - master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) + master = TilePrefetchingMasterPortParams(tp.tileParams.tileId, tp.crossingParams.master))) case tp: CVA6TileAttachParams => tp.copy(crossingParams = tp.crossingParams.copy( - master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) + master = TilePrefetchingMasterPortParams(tp.tileParams.tileId, tp.crossingParams.master))) } }) diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index a1a1aeaa..954deec8 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -24,9 +24,6 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { //======================== // Diplomatic clock stuff //======================== - val implicitClockSinkNode = ClockSinkNode(Seq(ClockSinkParameters(name = Some("implicit_clock")))) - system.connectImplicitClockSinkNode(implicitClockSinkNode) - val tlbus = system.locateTLBusWrapper(system.prciParams.slaveWhere) val baseAddress = system.prciParams.baseAddress val clockDivider = system.prci_ctrl_domain { LazyModule(new TLClockDivider (baseAddress + 0x20000, tlbus.beatBytes)) } @@ -37,7 +34,7 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { tlbus.coupleTo("clock-sel-ctrl") { clockSelector.tlNode := TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := TLBuffer() := _ } tlbus.coupleTo("pll-ctrl") { pllCtrl.tlNode := TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := TLBuffer() := _ } - system.allClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode + system.chiptopClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode // Connect all other requested clocks val slowClockSource = ClockSourceNode(Seq(ClockSourceParameters())) @@ -61,13 +58,6 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { //========================= // Clock/reset //========================= - val implicit_clock = implicitClockSinkNode.in.head._1.clock - val implicit_reset = implicitClockSinkNode.in.head._1.reset - system.module match { case l: LazyModuleImp => { - l.clock := implicit_clock - l.reset := implicit_reset - }} - val clock_wire = Wire(Input(Clock())) val reset_wire = Wire(Input(AsyncReset())) val (clock_pad, clockIOCell) = IOCell.generateIOFromSignal(clock_wire, "clock", p(IOCellKey)) diff --git a/generators/chipyard/src/main/scala/example/GCD.scala b/generators/chipyard/src/main/scala/example/GCD.scala index 5e6c5d67..a92beb55 100644 --- a/generators/chipyard/src/main/scala/example/GCD.scala +++ b/generators/chipyard/src/main/scala/example/GCD.scala @@ -185,7 +185,7 @@ trait CanHavePeripheryGCD { this: BaseSubsystem => // DOC include end: GCD lazy trait // DOC include start: GCD imp trait -trait CanHavePeripheryGCDModuleImp extends LazyModuleImp { +trait CanHavePeripheryGCDModuleImp extends LazyRawModuleImp { val outer: CanHavePeripheryGCD val gcd_busy = outer.gcd match { case Some(gcd) => { diff --git a/generators/chipyard/src/main/scala/example/TutorialTile.scala b/generators/chipyard/src/main/scala/example/TutorialTile.scala index 38c8577a..54be0f8a 100644 --- a/generators/chipyard/src/main/scala/example/TutorialTile.scala +++ b/generators/chipyard/src/main/scala/example/TutorialTile.scala @@ -82,7 +82,7 @@ case class MyTileAttachParams( case class MyTileParams( name: Option[String] = Some("my_tile"), - hartId: Int = 0, + tileId: Int = 0, trace: Boolean = false, val core: MyCoreParams = MyCoreParams() ) extends InstantiableTileParams[MyTile] @@ -94,9 +94,11 @@ case class MyTileParams( val dcache: Option[DCacheParams] = Some(DCacheParams()) val icache: Option[ICacheParams] = Some(ICacheParams()) val clockSinkParams: ClockSinkParameters = ClockSinkParameters() - def instantiate(crossing: TileCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters): MyTile = { + def instantiate(crossing: HierarchicalElementCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters): MyTile = { new MyTile(this, crossing, lookup) } + val baseName = name.getOrElse("my_tile") + val uniqueName = s"${baseName}_$tileId" } // DOC include start: Tile class @@ -111,11 +113,11 @@ class MyTile( { // Private constructor ensures altered LazyModule.p is used implicitly - def this(params: MyTileParams, crossing: TileCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters) = + def this(params: MyTileParams, crossing: HierarchicalElementCrossingParamsLike, lookup: LookupByHartIdImpl)(implicit p: Parameters) = this(params, crossing.crossingType, lookup, p) // Require TileLink nodes - val intOutwardNode = IntIdentityNode() + val intOutwardNode = Some(IntIdentityNode()) val masterNode = visibilityNode val slaveNode = TLIdentityNode() @@ -135,7 +137,7 @@ class MyTile( } ResourceBinding { - Resource(cpuDevice, "reg").bind(ResourceAddress(hartId)) + Resource(cpuDevice, "reg").bind(ResourceAddress(tileId)) } // TODO: Create TileLink nodes and connections here. @@ -228,15 +230,15 @@ class MyTileModuleImp(outer: MyTile) extends BaseTileModuleImp(outer){ } // DOC include start: Config fragment -class WithNMyCores(n: Int = 1, overrideIdOffset: Option[Int] = None) extends Config((site, here, up) => { +class WithNMyCores(n: Int = 1) extends Config((site, here, up) => { case TilesLocated(InSubsystem) => { // Calculate the next available hart ID (since hart ID cannot be duplicated) val prev = up(TilesLocated(InSubsystem), site) - val idOffset = overrideIdOffset.getOrElse(prev.size) + val idOffset = up(NumTiles) // Create TileAttachParams for every core to be instantiated (0 until n).map { i => MyTileAttachParams( - tileParams = MyTileParams(hartId = i + idOffset), + tileParams = MyTileParams(tileId = i + idOffset), crossingParams = RocketCrossingParams() ) } ++ prev @@ -245,5 +247,6 @@ class WithNMyCores(n: Int = 1, overrideIdOffset: Option[Int] = None) extends Con case SystemBusKey => up(SystemBusKey, site).copy(beatBytes = 8) // The # of instruction bits. Use maximum # of bits if your core supports both 32 and 64 bits. case XLen => 64 + case NumTiles => up(NumTiles) + n }) // DOC include end: Config fragment diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 773f3d39..7fdc2a37 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -453,14 +453,14 @@ class WithTraceGenSuccessPunchthrough extends OverrideIOBinder({ } }) -class WithTraceIOPunchthrough extends OverrideIOBinder({ - (system: CanHaveTraceIOModuleImp) => { +class WithTraceIOPunchthrough extends OverrideLazyIOBinder({ + (system: CanHaveTraceIO) => InModuleBody { val ports: Option[TracePort] = system.traceIO.map { t => val trace = IO(DataMirror.internal.chiselTypeClone[TraceOutputTop](t)).suggestName("trace") trace <> t val p = GetSystemParameters(system) val chipyardSystem = system.asInstanceOf[ChipyardSystemModule[_]].outer.asInstanceOf[ChipyardSystem] - val tiles = chipyardSystem.tiles + val tiles = chipyardSystem.totalTiles.values val cfg = SpikeCosimConfig( isa = tiles.headOption.map(_.isaDTS).getOrElse(""), vlen = tiles.headOption.map(_.tileParams.core.vLen).getOrElse(0), @@ -509,8 +509,8 @@ class WithDontTouchPorts extends OverrideIOBinder({ }) class WithNMITiedOff extends ComposeIOBinder({ - (system: HasTilesModuleImp) => { - system.nmi.flatten.foreach { nmi => + (system: HasHierarchicalElementsRootContextModuleImp) => { + system.nmi.foreach { nmi => nmi.rnmi := false.B nmi.rnmi_interrupt_vector := 0.U nmi.rnmi_exception_vector := 0.U diff --git a/generators/cva6 b/generators/cva6 index 46323fcd..942d5aef 160000 --- a/generators/cva6 +++ b/generators/cva6 @@ -1 +1 @@ -Subproject commit 46323fcd7407544c751b353f52e356eb8f33e9d1 +Subproject commit 942d5aef13ab82ce12adfd5346b2a2716832d69d diff --git a/generators/firechip/src/main/scala/FireSim.scala b/generators/firechip/src/main/scala/FireSim.scala index 4cca7557..599788bc 100644 --- a/generators/firechip/src/main/scala/FireSim.scala +++ b/generators/firechip/src/main/scala/FireSim.scala @@ -8,7 +8,7 @@ import chisel3._ import chisel3.experimental.{IO, annotate} import freechips.rocketchip.prci._ -import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey, HasTiles} +import freechips.rocketchip.subsystem._ import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, InModuleBody, ValName} import freechips.rocketchip.util.{ResetCatchAndSync, RecordMap} @@ -103,8 +103,8 @@ class FireSim(implicit val p: Parameters) extends RawModule with HasHarnessInsta // FireSim ModelMultithreading chiptops.foreach { case c: ChipTop => c.lazySystem match { - case ls: HasTiles => { - if (p(FireSimMultiCycleRegFile)) ls.tiles.map { + case ls: InstantiatesHierarchicalElements => { + if (p(FireSimMultiCycleRegFile)) ls.totalTiles.values.map { case r: RocketTile => { annotate(MemModelAnnotation(r.module.core.rocketImpl.rf.rf)) r.module.fpuOpt.foreach(fpu => annotate(MemModelAnnotation(fpu.fpuImpl.regfile))) @@ -120,7 +120,7 @@ class FireSim(implicit val p: Parameters) extends RawModule with HasHarnessInsta } case _ => } - if (p(FireSimFAME5)) ls.tiles.map { + if (p(FireSimFAME5)) ls.totalTiles.values.map { case b: BoomTile => annotate(EnableModelMultiThreadingAnnotation(b.module)) case r: RocketTile => diff --git a/generators/ibex b/generators/ibex index 66ec6e56..b52a2d72 160000 --- a/generators/ibex +++ b/generators/ibex @@ -1 +1 @@ -Subproject commit 66ec6e56ed69df4e4af5383128cf21adf88b08fc +Subproject commit b52a2d721993d7b38982a0fa62b696798ac4dd9a diff --git a/generators/riscv-sodor b/generators/riscv-sodor index c1c809eb..ebb45b94 160000 --- a/generators/riscv-sodor +++ b/generators/riscv-sodor @@ -1 +1 @@ -Subproject commit c1c809ebd5c9a76cd60d8c3169cea4bf4b2fa8fd +Subproject commit ebb45b9439a19e2710ce0f2ee6e9ae2a192cbddf diff --git a/generators/rocket-chip b/generators/rocket-chip index 50adbdb3..e0ea9034 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit 50adbdb3e4e18c2b3de57693323f4174b60f9767 +Subproject commit e0ea90344e9edb6a4e24f84e7729d83c217c8859 diff --git a/generators/shuttle b/generators/shuttle index e628836c..924d269d 160000 --- a/generators/shuttle +++ b/generators/shuttle @@ -1 +1 @@ -Subproject commit e628836c3c4bfe29927cd9e1473801fab33dee6c +Subproject commit 924d269d1ef81adfeb263a3d898c82105f7d50ed diff --git a/generators/sifive-blocks b/generators/sifive-blocks index 5edd72e7..212c7b07 160000 --- a/generators/sifive-blocks +++ b/generators/sifive-blocks @@ -1 +1 @@ -Subproject commit 5edd72e793ccb534b1395d0d8c1831754fd72fec +Subproject commit 212c7b070bc7132f31a26deec6b2bde9e0b1b612 diff --git a/generators/sifive-cache b/generators/sifive-cache index 51d400bd..bcd248a2 160000 --- a/generators/sifive-cache +++ b/generators/sifive-cache @@ -1 +1 @@ -Subproject commit 51d400bd32131e8914c6713bfb71bef690f2fe70 +Subproject commit bcd248a2a2e86084a136c05d1844d88d9fba18e5 diff --git a/generators/testchipip b/generators/testchipip index 6436959d..24de6bca 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 6436959d997d0bb578790d95078648b478ca049b +Subproject commit 24de6bca032e730749535a75b37b30834cb23c28 diff --git a/generators/tracegen/src/main/scala/Configs.scala b/generators/tracegen/src/main/scala/Configs.scala index 5d4f0211..f51052c5 100644 --- a/generators/tracegen/src/main/scala/Configs.scala +++ b/generators/tracegen/src/main/scala/Configs.scala @@ -13,19 +13,18 @@ import scala.math.{max, min} class WithTraceGen( n: Int = 2, - overrideIdOffset: Option[Int] = None, overrideMemOffset: Option[BigInt] = None)( params: Seq[DCacheParams] = List.fill(n){ DCacheParams(nSets = 16, nWays = 1) }, nReqs: Int = 8192 ) extends Config((site, here, up) => { case TilesLocated(InSubsystem) => { val prev = up(TilesLocated(InSubsystem), site) - val idOffset = overrideIdOffset.getOrElse(prev.size) + val idOffset = up(NumTiles) val memOffset: BigInt = overrideMemOffset.orElse(site(ExtMem).map(_.master.base)).getOrElse(0x0L) params.zipWithIndex.map { case (dcp, i) => TraceGenTileAttachParams( tileParams = TraceGenParams( - hartId = i + idOffset, + tileId = i + idOffset, dcache = Some(dcp), wordBits = site(XLen), addrBits = 48, @@ -48,23 +47,23 @@ class WithTraceGen( ) } ++ prev } + case NumTiles => up(NumTiles) + n }) class WithBoomTraceGen( n: Int = 2, - overrideIdOffset: Option[Int] = None, overrideMemOffset: Option[BigInt] = None)( params: Seq[DCacheParams] = List.fill(n){ DCacheParams(nMSHRs = 4, nSets = 16, nWays = 2) }, nReqs: Int = 8192 ) extends Config((site, here, up) => { case TilesLocated(InSubsystem) => { val prev = up(TilesLocated(InSubsystem), site) - val idOffset = overrideIdOffset.getOrElse(prev.size) + val idOffset = up(NumTiles) val memOffset: BigInt = overrideMemOffset.orElse(site(ExtMem).map(_.master.base)).getOrElse(0x0L) params.zipWithIndex.map { case (dcp, i) => BoomTraceGenTileAttachParams( tileParams = BoomTraceGenParams( - hartId = i + idOffset, + tileId = i + idOffset, dcache = Some(dcp), wordBits = site(XLen), addrBits = 48, @@ -84,24 +83,24 @@ class WithBoomTraceGen( ) } ++ prev } + case NumTiles => up(NumTiles) + n }) class WithL2TraceGen( n: Int = 2, - overrideIdOffset: Option[Int] = None, overrideMemOffset: Option[BigInt] = None)( params: Seq[DCacheParams] = List.fill(n){ DCacheParams(nSets = 16, nWays = 1) }, nReqs: Int = 8192 ) extends Config((site, here, up) => { case TilesLocated(InSubsystem) => { val prev = up(TilesLocated(InSubsystem), site) - val idOffset = overrideIdOffset.getOrElse(prev.size) + val idOffset = up(NumTiles) val memOffset: BigInt = overrideMemOffset.orElse(site(ExtMem).map(_.master.base)).getOrElse(0x0L) params.zipWithIndex.map { case (dcp, i) => TraceGenTileAttachParams( tileParams = TraceGenParams( - hartId = i + idOffset, + tileId = i + idOffset, dcache = Some(dcp), wordBits = site(XLen), addrBits = 48, @@ -126,4 +125,5 @@ class WithL2TraceGen( ) } ++ prev } + case NumTiles => up(NumTiles) + n }) diff --git a/generators/tracegen/src/main/scala/System.scala b/generators/tracegen/src/main/scala/System.scala index 2a0ba3d5..5d3953cb 100644 --- a/generators/tracegen/src/main/scala/System.scala +++ b/generators/tracegen/src/main/scala/System.scala @@ -9,11 +9,12 @@ import freechips.rocketchip.subsystem._ import boom.lsu.BoomTraceGenTile class TraceGenSystem(implicit p: Parameters) extends BaseSubsystem - with HasTiles + with InstantiatesHierarchicalElements + with HasTileNotificationSinks with CanHaveMasterAXI4MemPort { def coreMonitorBundles = Nil - val tileStatusNodes = tiles.collect { + val tileStatusNodes = totalTiles.values.toSeq.collect { case t: GroundTestTile => t.statusNode.makeSink() case t: BoomTraceGenTile => t.statusNode.makeSink() } From 7cc03f40ebd01e8dc020eb3391ae73b5f0da39ab Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 17 Oct 2023 14:39:39 -0700 Subject: [PATCH 030/184] Add test for clustered-rocket config --- .github/scripts/defaults.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 08637428..e0337f30 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -33,7 +33,7 @@ grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboom chipyard-spif grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla" grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" -grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar" +grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar chipyard-clusters" grouping["group-fpga"]="arty arty100t nexysvideo vc707 vcu118" # key value store to get the build strings @@ -67,6 +67,7 @@ mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig" mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig" mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig" mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig" +mapping["chipyard-clusters"]=" CONFIG=ClusteredRocketConfig verilog" mapping["constellation"]=" SUB_PROJECT=constellation" mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" From 5f51da3db361331023c660aad7166043a5831e28 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 17 Oct 2023 15:56:22 -0700 Subject: [PATCH 031/184] Fix HasChipyardPRCI typos --- .../chipyard/src/main/scala/clocking/HasChipyardPRCI.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala index a9832806..1a85c9bb 100644 --- a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala +++ b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala @@ -29,8 +29,8 @@ case class ChipyardPRCIControlParams( case object ChipyardPRCIControlKey extends Field[ChipyardPRCIControlParams](ChipyardPRCIControlParams()) -trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesHierarchicalElementss => - require(!p(SubsystemDriveDriveClockGroupsFromIO), "Subsystem allClockGroups cannot be driven from implicit clocks") +trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesHierarchicalElements => + require(!p(SubsystemDriveClockGroupsFromIO), "Subsystem allClockGroups cannot be driven from implicit clocks") val prciParams = p(ChipyardPRCIControlKey) From e8aa68c65cdd3bf613b2d311b0b5cb0c075b9843 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 17 Oct 2023 17:05:45 -0700 Subject: [PATCH 032/184] Tiles do not generate interrupts --- generators/boom | 2 +- generators/chipyard/src/main/scala/SpikeTile.scala | 2 +- generators/chipyard/src/main/scala/example/TutorialTile.scala | 2 +- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 2 +- generators/cva6 | 2 +- generators/ibex | 2 +- generators/riscv-sodor | 2 +- generators/shuttle | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/generators/boom b/generators/boom index 65b0d39b..9459af0c 160000 --- a/generators/boom +++ b/generators/boom @@ -1 +1 @@ -Subproject commit 65b0d39b35bb5dbb3deba826979c5145846648ae +Subproject commit 9459af0c1f6847f8411622dac770ac78fe10847c diff --git a/generators/chipyard/src/main/scala/SpikeTile.scala b/generators/chipyard/src/main/scala/SpikeTile.scala index 7778deb6..6f211d8b 100644 --- a/generators/chipyard/src/main/scala/SpikeTile.scala +++ b/generators/chipyard/src/main/scala/SpikeTile.scala @@ -111,7 +111,7 @@ class SpikeTile( this(params, crossing.crossingType, lookup, p) // Required TileLink nodes - val intOutwardNode = Some(IntIdentityNode()) + val intOutwardNode = None val masterNode = visibilityNode val slaveNode = TLIdentityNode() diff --git a/generators/chipyard/src/main/scala/example/TutorialTile.scala b/generators/chipyard/src/main/scala/example/TutorialTile.scala index 54be0f8a..76b17273 100644 --- a/generators/chipyard/src/main/scala/example/TutorialTile.scala +++ b/generators/chipyard/src/main/scala/example/TutorialTile.scala @@ -117,7 +117,7 @@ class MyTile( this(params, crossing.crossingType, lookup, p) // Require TileLink nodes - val intOutwardNode = Some(IntIdentityNode()) + val intOutwardNode = None val masterNode = visibilityNode val slaveNode = TLIdentityNode() diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 7fdc2a37..b94c1e3c 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -459,7 +459,7 @@ class WithTraceIOPunchthrough extends OverrideLazyIOBinder({ val trace = IO(DataMirror.internal.chiselTypeClone[TraceOutputTop](t)).suggestName("trace") trace <> t val p = GetSystemParameters(system) - val chipyardSystem = system.asInstanceOf[ChipyardSystemModule[_]].outer.asInstanceOf[ChipyardSystem] + val chipyardSystem = system.asInstanceOf[ChipyardSystem] val tiles = chipyardSystem.totalTiles.values val cfg = SpikeCosimConfig( isa = tiles.headOption.map(_.isaDTS).getOrElse(""), diff --git a/generators/cva6 b/generators/cva6 index 942d5aef..9d1c1068 160000 --- a/generators/cva6 +++ b/generators/cva6 @@ -1 +1 @@ -Subproject commit 942d5aef13ab82ce12adfd5346b2a2716832d69d +Subproject commit 9d1c106834824ddb8052b7f60574b2b544b40395 diff --git a/generators/ibex b/generators/ibex index b52a2d72..c2174aba 160000 --- a/generators/ibex +++ b/generators/ibex @@ -1 +1 @@ -Subproject commit b52a2d721993d7b38982a0fa62b696798ac4dd9a +Subproject commit c2174aba4fb304c7565c248f2a673f7151be896b diff --git a/generators/riscv-sodor b/generators/riscv-sodor index ebb45b94..bbfc3c35 160000 --- a/generators/riscv-sodor +++ b/generators/riscv-sodor @@ -1 +1 @@ -Subproject commit ebb45b9439a19e2710ce0f2ee6e9ae2a192cbddf +Subproject commit bbfc3c35100329386314c49b62b49a7f42f65e87 diff --git a/generators/shuttle b/generators/shuttle index 924d269d..fd325d43 160000 --- a/generators/shuttle +++ b/generators/shuttle @@ -1 +1 @@ -Subproject commit 924d269d1ef81adfeb263a3d898c82105f7d50ed +Subproject commit fd325d43a162378dc1984e87297e6d710167db79 From 686d9a5f44bd074e9e28790cd982ebade7a57def Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 18 Oct 2023 00:27:05 -0700 Subject: [PATCH 033/184] Bump rocket-chip --- generators/rocket-chip | 2 +- generators/tracegen/src/main/scala/System.scala | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/generators/rocket-chip b/generators/rocket-chip index e0ea9034..d48b45da 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit e0ea90344e9edb6a4e24f84e7729d83c217c8859 +Subproject commit d48b45da568c0d370479325258018a8a5cf3369c diff --git a/generators/tracegen/src/main/scala/System.scala b/generators/tracegen/src/main/scala/System.scala index 5d3953cb..e7e3a033 100644 --- a/generators/tracegen/src/main/scala/System.scala +++ b/generators/tracegen/src/main/scala/System.scala @@ -11,14 +11,22 @@ import boom.lsu.BoomTraceGenTile class TraceGenSystem(implicit p: Parameters) extends BaseSubsystem with InstantiatesHierarchicalElements with HasTileNotificationSinks + with HasTileInputConstants + with HasHierarchicalElementsRootContext + with HasHierarchicalElements with CanHaveMasterAXI4MemPort { def coreMonitorBundles = Nil + val tileStatusNodes = totalTiles.values.toSeq.collect { case t: GroundTestTile => t.statusNode.makeSink() case t: BoomTraceGenTile => t.statusNode.makeSink() } - lazy val debugNode = IntSyncXbar() := NullIntSyncSource() + + lazy val clintOpt = None + lazy val debugOpt = None + lazy val plicOpt = None + override lazy val module = new TraceGenSystemModuleImp(this) } From 646ba4fba7ce1d2603460ceb709c4620b177897f Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 18 Oct 2023 00:38:52 -0700 Subject: [PATCH 034/184] Bump testchipip --- .../src/main/scala/config/AbstractConfig.scala | 13 +++++++++---- .../src/main/scala/config/ChipConfigs.scala | 2 +- .../main/scala/config/PeripheralDeviceConfigs.scala | 3 +++ .../src/main/scala/config/RocketConfigs.scala | 1 - .../scala/config/fragments/ClockingFragments.scala | 6 ++++++ .../scala/config/fragments/SubsystemFragments.scala | 6 +++++- .../src/main/scala/example/FlatChipTop.scala | 2 +- .../src/main/scala/example/FlatTestHarness.scala | 9 +++++---- .../src/main/scala/harness/HarnessBinders.scala | 4 ++-- .../src/main/scala/iobinders/IOBinders.scala | 10 +++++----- generators/testchipip | 2 +- 11 files changed, 38 insertions(+), 20 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index a08abb6d..06f9af3b 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -53,15 +53,20 @@ class AbstractConfig extends Config( // By default, punch out IOs to the Harness new chipyard.clocking.WithPassthroughClockGenerator ++ - new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ + new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus", "obus", "implicit"), Seq("tile"))) ++ new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Default 500 MHz pbus new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Default 500 MHz mbus + new chipyard.config.WithControlBusFrequency(500.0) ++ // Default 500 MHz cbus + new chipyard.config.WithSystemBusFrequency(500.0) ++ // Default 500 MHz sbus + new chipyard.config.WithFrontBusFrequency(500.0) ++ // Default 500 MHz fbus + new chipyard.config.WithOffchipBusFrequency(500.0) ++ // Default 500 MHz obus new testchipip.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address new testchipip.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address - new testchipip.WithSerialTLClientIdBits(4) ++ // support up to 1 << 4 simultaneous requests from serialTL port - new testchipip.WithSerialTLWidth(32) ++ // fatten the serialTL interface to improve testing performance - new testchipip.WithDefaultSerialTL ++ // use serialized tilelink port to external serialadapter/harnessRAM + new testchipip.WithSerialTL(Seq(testchipip.SerialTLParams( // add a serial-tilelink interface + client = Some(testchipip.SerialTLClientParams(idBits = 4)), // serial-tilelink interface will master the FBUS, and support 4 idBits + width = 32 // serial-tilelink interface with 32 lanes + ))) ++ new chipyard.config.WithDebugModuleAbstractDataWords(8) ++ // increase debug module data capacity new chipyard.config.WithBootROM ++ // use default bootrom new chipyard.config.WithUART ++ // add a UART diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index cc61794c..95b0149b 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -23,7 +23,7 @@ class ChipLikeRocketConfig extends Config( // Set up I/O //================================== new testchipip.WithSerialTLWidth(4) ++ // 4bit wide Serialized TL interface to minimize IO - new testchipip.WithSerialTLBackingMemory ++ // Configure the off-chip memory accessible over serial-tl as backing memory + new testchipip.WithSerialTLMem(size = (1 << 30) * 4L) ++ // Configure the off-chip memory accessible over serial-tl as backing memory new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 4L) ++ // 4GB max external memory new freechips.rocketchip.subsystem.WithNMemoryChannels(1) ++ // 1 memory channel diff --git a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala index 7ad7a1ac..790c6a0e 100644 --- a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala +++ b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala @@ -52,6 +52,9 @@ class MMIORocketConfig extends Config( new chipyard.config.AbstractConfig) class LBWIFRocketConfig extends Config( + new chipyard.config.WithOffchipBusFrequency(500) ++ + new testchipip.WithOffchipBusClient(MBUS) ++ + new testchipip.WithOffchipBus ++ new testchipip.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove AXI4 backing memory new freechips.rocketchip.subsystem.WithNBigCores(1) ++ diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index c45fb6f2..3a2c1b08 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -93,7 +93,6 @@ class MulticlockRocketConfig extends Config( new chipyard.config.WithFbusToSbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossing between FBUS and SBUS new chipyard.config.WithCbusToPbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossing between PBUS and CBUS new chipyard.config.WithSbusToMbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossings between backside of L2 and MBUS - new testchipip.WithAsynchronousSerialSlaveCrossing ++ // Add Async crossing between serial and MBUS. Its master-side is tied to the FBUS new chipyard.config.AbstractConfig) class CustomIOChipTopRocketConfig extends Config( diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 2da9fbf2..c34be1bb 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -14,6 +14,8 @@ import freechips.rocketchip.tilelink.{HasTLBusParams} import chipyard._ import chipyard.clocking._ +import testchipip.{OffchipBusKey} + // The default RocketChip BaseSubsystem drives its diplomatic clock graph // with the implicit clocks of Subsystem. Don't do that, instead we extend // the diplomacy graph upwards into the ChipTop, where we connect it to @@ -103,6 +105,10 @@ class WithFrontBusFrequency(freqMHz: Double) extends Config((site, here, up) => class WithControlBusFrequency(freqMHz: Double) extends Config((site, here, up) => { case ControlBusKey => up(ControlBusKey, site).copy(dtsFrequency = Some(BigInt((freqMHz * 1e6).toLong))) }) +class WithOffchipBusFrequency(freqMHz: Double) extends Config((site, here, up) => { + case OffchipBusKey => up(OffchipBusKey, site).copy(dtsFrequency = Some(BigInt((freqMHz * 1e6).toLong))) +}) + class WithRationalMemoryBusCrossing extends WithSbusToMbusCrossingType(RationalCrossing(Symmetric)) class WithAsynchrousMemoryBusCrossing extends WithSbusToMbusCrossingType(AsynchronousCrossing()) diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index 40f18d5d..51272e8a 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -1,7 +1,7 @@ package chipyard.config import org.chipsalliance.cde.config.{Config} -import freechips.rocketchip.subsystem.{SystemBusKey, BankedL2Key, CoherenceManagerWrapper} +import freechips.rocketchip.subsystem._ import freechips.rocketchip.diplomacy.{DTSTimebase} // Replaces the L2 with a broadcast manager for maintaining coherence @@ -9,6 +9,10 @@ class WithBroadcastManager extends Config((site, here, up) => { case BankedL2Key => up(BankedL2Key, site).copy(coherenceManager = CoherenceManagerWrapper.broadcastManager) }) +class WithBroadcastParams(params: BroadcastParams) extends Config((site, here, up) => { + case BroadcastKey => params +}) + class WithSystemBusWidth(bitWidth: Int) extends Config((site, here, up) => { case SystemBusKey => up(SystemBusKey, site).copy(beatBytes=bitWidth/8) }) diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index a1a1aeaa..a09bb06f 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -97,7 +97,7 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { //========================= // Serialized TileLink //========================= - val (serial_tl_pad, serialTLIOCells) = IOCell.generateIOFromSignal(system.serial_tl.get.getWrappedValue, "serial_tl", p(IOCellKey)) + val (serial_tl_pad, serialTLIOCells) = IOCell.generateIOFromSignal(system.serial_tls(0).getWrappedValue, "serial_tl", p(IOCellKey)) //========================= // JTAG/Debug diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala index 5b3168b3..5f6c69f1 100644 --- a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -39,8 +39,8 @@ class FlatTestHarness(implicit val p: Parameters) extends Module { dut.custom_boot_pad := PlusArg("custom_boot_pin", width=1) // Serialized TL - val sVal = p(SerialTLKey).get - val serialTLManagerParams = sVal.serialTLManagerParams.get + val sVal = p(SerialTLKey)(0) + val serialTLManagerParams = sVal.manager.get require(serialTLManagerParams.isMemoryDevice) withClockAndReset(clock, reset) { @@ -49,10 +49,11 @@ class FlatTestHarness(implicit val p: Parameters) extends Module { dut.serial_tl_pad.clock := clock } val harnessRAM = TSIHarness.connectRAM( - lazyDut.system.serdesser.get, + p(SerialTLKey)(0), + lazyDut.system.serdessers(0), serial_bits, reset) - io.success := SimTSI.connect(Some(harnessRAM.module.io.tsi), clock, reset) + io.success := SimTSI.connect(harnessRAM.module.io.tsi, clock, reset) } diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 8530bb33..94321506 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -215,13 +215,13 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ if (DataMirror.directionOf(port.io.clock) == Direction.Input) { port.io.clock := th.harnessBinderClock } - val ram = LazyModule(new SerialRAM(port.serdesser)(port.serdesser.p)) + val ram = LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)) Module(ram.module) ram.module.io.ser <> port.io.bits val tsi = Module(new SimTSI) tsi.io.clock := th.harnessBinderClock tsi.io.reset := th.harnessBinderReset - tsi.io.tsi <> ram.module.io.tsi + tsi.io.tsi <> ram.module.io.tsi.get val exit = tsi.io.exit val success = exit === 1.U val error = exit >= 2.U diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 773f3d39..6c1cf8d2 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -342,10 +342,10 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ class WithSerialTLIOCells extends OverrideIOBinder({ (system: CanHavePeripheryTLSerial) => { - val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => + val (ports, cells) = system.serial_tls.zipWithIndex.map({ case (s, id) => val sys = system.asInstanceOf[BaseSubsystem] - val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, "serial_tl", sys.p(IOCellKey), abstractResetAsAsync = true) - (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), cells) + val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, s"serial_tl_$id", sys.p(IOCellKey), abstractResetAsAsync = true) + (SerialTLPort(port, sys.p(SerialTLKey)(id), system.serdessers(id), id), cells) }).unzip (ports.toSeq, cells.flatten.toSeq) } @@ -353,11 +353,11 @@ class WithSerialTLIOCells extends OverrideIOBinder({ class WithSerialTLPunchthrough extends OverrideIOBinder({ (system: CanHavePeripheryTLSerial) => { - val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => + val (ports, cells) = system.serial_tls.zipWithIndex.map({ case (s, id) => val sys = system.asInstanceOf[BaseSubsystem] val port = IO(s.getWrappedValue.cloneType) port <> s.getWrappedValue - (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), Nil) + (SerialTLPort(port, sys.p(SerialTLKey)(id), system.serdessers(id), id), Nil) }).unzip (ports.toSeq, cells.flatten.toSeq) } diff --git a/generators/testchipip b/generators/testchipip index 6436959d..e1e1ee02 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 6436959d997d0bb578790d95078648b478ca049b +Subproject commit e1e1ee02884f457f62785c41af23406a6cf7738a From 1d9dba517b6b0f4c21e7930a607f20dc51d8b316 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 18 Oct 2023 18:59:22 -0700 Subject: [PATCH 035/184] Fix unassigned clocks due to removing implicit clock from BaseSubsystem --- .../chipyard/src/main/scala/clocking/HasChipyardPRCI.scala | 3 +-- .../chipyard/src/main/scala/config/AbstractConfig.scala | 1 + .../src/main/scala/example/dsptools/GenericFIR.scala | 7 ++++--- .../main/scala/example/dsptools/StreamingPassthrough.scala | 5 +++-- generators/fft-generator | 2 +- generators/icenet | 2 +- generators/rocket-chip | 2 +- generators/testchipip | 2 +- generators/tracegen/src/main/scala/System.scala | 2 ++ 9 files changed, 15 insertions(+), 11 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala index 1a85c9bb..1b5733c5 100644 --- a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala +++ b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala @@ -36,8 +36,7 @@ trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesHierarchicalElement // Set up clock domain private val tlbus = locateTLBusWrapper(prciParams.slaveWhere) - val prci_ctrl_domain = LazyModule(new ClockSinkDomain(name=Some("chipyard-prci-control"))) - prci_ctrl_domain.clockNode := tlbus.fixedClockNode + val prci_ctrl_domain = tlbus.generateSynchronousDomain.suggestName("chipyard_prcictrl_domain") val prci_ctrl_bus = Option.when(prciParams.generatePRCIXBar) { prci_ctrl_domain { TLXbar() } } prci_ctrl_bus.foreach(xbar => tlbus.coupleTo("prci_ctrl") { (xbar diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 0891a21d..140f74fb 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -55,6 +55,7 @@ class AbstractConfig extends Config( new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Default 500 MHz pbus + new chipyard.config.WithControlBusFrequency(500.0) ++ // Default 500 MHz cbus new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Default 500 MHz mbus new testchipip.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address diff --git a/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala b/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala index 01d72d24..df2ec35a 100644 --- a/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala +++ b/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala @@ -199,12 +199,13 @@ class TLGenericFIRChain[T<:Data:Ring] (genIn: T, genOut: T, coeffs: => Seq[T], p trait CanHavePeripheryStreamingFIR extends BaseSubsystem { val streamingFIR = p(GenericFIRKey) match { case Some(params) => { - val streamingFIR = LazyModule(new TLGenericFIRChain( + val domain = pbus.generateSynchronousDomain.suggestName("fir_domain") + val streamingFIR = domain { LazyModule(new TLGenericFIRChain( genIn = FixedPoint(8.W, 3.BP), genOut = FixedPoint(8.W, 3.BP), coeffs = Seq(1.U.asFixedPoint(0.BP), 2.U.asFixedPoint(0.BP), 3.U.asFixedPoint(0.BP)), - params = params)) - pbus.coupleTo("streamingFIR") { streamingFIR.mem.get := TLFIFOFixer() := TLFragmenter(pbus.beatBytes, pbus.blockBytes) := _ } + params = params)) } + pbus.coupleTo("streamingFIR") { domain { streamingFIR.mem.get := TLFIFOFixer() := TLFragmenter(pbus.beatBytes, pbus.blockBytes) } := _ } Some(streamingFIR) } case None => None diff --git a/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala b/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala index 45e05fc2..a2259ab1 100644 --- a/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala +++ b/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala @@ -131,8 +131,9 @@ class TLStreamingPassthroughChain[T<:Data:Ring](params: StreamingPassthroughPara trait CanHavePeripheryStreamingPassthrough { this: BaseSubsystem => val passthrough = p(StreamingPassthroughKey) match { case Some(params) => { - val streamingPassthroughChain = LazyModule(new TLStreamingPassthroughChain(params, UInt(32.W))) - pbus.coupleTo("streamingPassthrough") { streamingPassthroughChain.mem.get := TLFIFOFixer() := TLFragmenter(pbus.beatBytes, pbus.blockBytes) := _ } + val domain = pbus.generateSynchronousDomain.suggestName("streaming_passthrough_domain") + val streamingPassthroughChain = domain { LazyModule(new TLStreamingPassthroughChain(params, UInt(32.W))) } + pbus.coupleTo("streamingPassthrough") { domain { streamingPassthroughChain.mem.get := TLFIFOFixer() := TLFragmenter(pbus.beatBytes, pbus.blockBytes)} := _ } Some(streamingPassthroughChain) } case None => None diff --git a/generators/fft-generator b/generators/fft-generator index 811951b4..4e7e6cbb 160000 --- a/generators/fft-generator +++ b/generators/fft-generator @@ -1 +1 @@ -Subproject commit 811951b44a113f87710a6abaae4582120c1194ba +Subproject commit 4e7e6cbbbc6ed96d27dbaeb2413764cd446c50b3 diff --git a/generators/icenet b/generators/icenet index 18e88b57..d6a471f2 160000 --- a/generators/icenet +++ b/generators/icenet @@ -1 +1 @@ -Subproject commit 18e88b5779ffdd7d75ca62cf9909f0ffc6fda95b +Subproject commit d6a471f2187c0671eea6567c7ba29e86e830e8d4 diff --git a/generators/rocket-chip b/generators/rocket-chip index d48b45da..8881ccd1 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit d48b45da568c0d370479325258018a8a5cf3369c +Subproject commit 8881ccd1cab941ed0a0981c00361b1415027f8ce diff --git a/generators/testchipip b/generators/testchipip index 24de6bca..9785c266 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 24de6bca032e730749535a75b37b30834cb23c28 +Subproject commit 9785c2662d8153477f004be10faec0037e9949e9 diff --git a/generators/tracegen/src/main/scala/System.scala b/generators/tracegen/src/main/scala/System.scala index e7e3a033..b25225c7 100644 --- a/generators/tracegen/src/main/scala/System.scala +++ b/generators/tracegen/src/main/scala/System.scala @@ -26,6 +26,8 @@ class TraceGenSystem(implicit p: Parameters) extends BaseSubsystem lazy val clintOpt = None lazy val debugOpt = None lazy val plicOpt = None + lazy val clintDomainOpt = None + lazy val plicDomainOpt = None override lazy val module = new TraceGenSystemModuleImp(this) } From 77ee5906e258f0694e8a498670b908603d6ffa89 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 19 Oct 2023 11:19:56 -0700 Subject: [PATCH 036/184] [vlsi][ci skip] Fix INPUT_CONFS override in tutorial.mk --- vlsi/tutorial.mk | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vlsi/tutorial.mk b/vlsi/tutorial.mk index 6b970fcb..92ba0a98 100644 --- a/vlsi/tutorial.mk +++ b/vlsi/tutorial.mk @@ -12,6 +12,7 @@ ifeq ($(tutorial),asap7) TECH_CONF ?= example-asap7.yml DESIGN_CONFS ?= VLSI_OBJ_DIR ?= build-asap7-commercial + INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) endif ifeq ($(tutorial),sky130-commercial) @@ -23,6 +24,7 @@ ifeq ($(tutorial),sky130-commercial) $(if $(filter $(VLSI_TOP),Rocket), \ example-designs/sky130-rocket.yml, ) VLSI_OBJ_DIR ?= build-sky130-commercial + INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) endif ifeq ($(tutorial),sky130-openroad) @@ -36,8 +38,8 @@ ifeq ($(tutorial),sky130-openroad) $(if $(filter $(VLSI_TOP),RocketTile), \ example-designs/sky130-openroad-rockettile.yml, ) VLSI_OBJ_DIR ?= build-sky130-openroad + INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) # Yosys compatibility for CIRCT-generated Verilog, at the expense of elaboration time. ENABLE_YOSYS_FLOW = 1 endif -INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) From fba75e7a74d57beec00a91ff334dbdb8cf7af251 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 19 Oct 2023 23:40:33 -0700 Subject: [PATCH 037/184] Bump constellation with improved TL-noc --- .../src/main/scala/config/NoCConfigs.scala | 71 +++++++++++++++---- .../main/scala/config/TutorialConfigs.scala | 8 +-- generators/constellation | 2 +- 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index 0b6be558..166050c7 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -6,6 +6,7 @@ import freechips.rocketchip.subsystem.{SBUS, MBUS} import constellation.channel._ import constellation.routing._ +import constellation.router._ import constellation.topology._ import constellation.noc._ import constellation.soc.{GlobalNoCParams} @@ -62,19 +63,19 @@ import scala.collection.immutable.ListMap */ // DOC include start: MultiNoCConfig class MultiNoCConfig extends Config( - new constellation.soc.WithCbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithCbusNoC(constellation.protocol.SimpleTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "serial-tl" -> 0), outNodeMapping = ListMap( - "error" -> 1, "l2[0]" -> 2, "pbus" -> 3, "plic" -> 4, + "error" -> 1, "ctrls[0]" -> 2, "pbus" -> 3, "plic" -> 4, "clint" -> 5, "dmInner" -> 6, "bootrom" -> 7, "clock" -> 8)), NoCParams( topology = TerminalRouter(BidirectionalLine(9)), channelParamGen = (a, b) => UserChannelParams(Seq.fill(5) { UserVirtualChannelParams(4) }), routingRelation = NonblockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalLineRouting()), 5, 1)) )) ++ - new constellation.soc.WithMbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithMbusNoC(constellation.protocol.SimpleTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "L2 InclusiveCache[0]" -> 1, "L2 InclusiveCache[1]" -> 2, @@ -87,7 +88,7 @@ class MultiNoCConfig extends Config( channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }), routingRelation = BlockingVirtualSubnetworksRouting(TerminalRouterRouting(BidirectionalTorus1DShortestRouting()), 5, 2)) )) ++ - new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithSbusNoC(constellation.protocol.SimpleTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "Core 0" -> 1, "Core 1" -> 2, "Core 2" -> 4 , "Core 3" -> 7, @@ -162,15 +163,15 @@ class SharedNoCConfig extends Config( BidirectionalLineRouting()))), 10, 2) ) )) ++ - new constellation.soc.WithMbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithMbusNoC(constellation.protocol.GlobalTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "Cache[0]" -> 0, "Cache[1]" -> 2, "Cache[2]" -> 8, "Cache[3]" -> 6), outNodeMapping = ListMap( "system[0]" -> 3, "system[1]" -> 5, "serdesser" -> 9)) - ), true) ++ - new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( + )) ++ + new constellation.soc.WithSbusNoC(constellation.protocol.GlobalTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "serial-tl" -> 9, "Core 0" -> 2, @@ -179,7 +180,7 @@ class SharedNoCConfig extends Config( outNodeMapping = ListMap( "system[0]" -> 0, "system[1]" -> 2, "system[2]" -> 8, "system[3]" -> 6, "pbus" -> 4)) - ), true) ++ + )) ++ new freechips.rocketchip.subsystem.WithNBigCores(8) ++ new freechips.rocketchip.subsystem.WithNBanks(4) ++ new freechips.rocketchip.subsystem.WithNMemoryChannels(2) ++ @@ -188,7 +189,7 @@ class SharedNoCConfig extends Config( // DOC include end: SharedNoCConfig class SbusRingNoCConfig extends Config( - new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithSbusNoC(constellation.protocol.SplitACDxBETLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "Core 0" -> 0, @@ -206,12 +207,58 @@ class SbusRingNoCConfig extends Config( "system[2]" -> 11, "system[3]" -> 12, "pbus" -> 8)), // TSI is on the pbus, so serial-tl and pbus should be on the same node - NoCParams( + acdNoCParams = NoCParams( topology = UnidirectionalTorus1D(13), - channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }), - routingRelation = NonblockingVirtualSubnetworksRouting(UnidirectionalTorus1DDatelineRouting(), 5, 2)) + channelParamGen = (a, b) => UserChannelParams(Seq.fill(6) { UserVirtualChannelParams(4) }), + routingRelation = NonblockingVirtualSubnetworksRouting(UnidirectionalTorus1DDatelineRouting(), 3, 2)), + beNoCParams = NoCParams( + topology = UnidirectionalTorus1D(13), + channelParamGen = (a, b) => UserChannelParams(Seq.fill(4) { UserVirtualChannelParams(1) }), + routingRelation = NonblockingVirtualSubnetworksRouting(UnidirectionalTorus1DDatelineRouting(), 2, 2)) )) ++ new freechips.rocketchip.subsystem.WithNBigCores(8) ++ new freechips.rocketchip.subsystem.WithNBanks(4) ++ new chipyard.config.AbstractConfig ) + +class SbusMeshNoCConfig extends Config( + new constellation.soc.WithSbusNoC(constellation.protocol.SplitACDxBETLNoCParams( + constellation.protocol.DiplomaticNetworkNodeMapping( + inNodeMapping = ListMap( + "Core 0 " -> 0, + "Core 1 " -> 1, + "Core 2 " -> 2, + "Core 3 " -> 3, + "Core 4 " -> 4, + "Core 5 " -> 7, + "Core 6 " -> 8, + "Core 7 " -> 11, + "Core 8 " -> 12, + "Core 9 " -> 13, + "Core 10 " -> 14, + "Core 11 " -> 15, + "serial-tl" -> 0), + outNodeMapping = ListMap( + "system[0]" -> 5, + "system[1]" -> 6, + "system[2]" -> 9, + "system[3]" -> 10, + "pbus" -> 0)), // TSI is on the pbus, so serial-tl and pbus should be on the same node + acdNoCParams = NoCParams( + topology = Mesh2D(4, 4), + channelParamGen = (a, b) => UserChannelParams(Seq.fill(3) { UserVirtualChannelParams(3) }, unifiedBuffer = false), + routerParams = (i) => UserRouterParams(combineRCVA=true, combineSAST=true), + routingRelation = NonblockingVirtualSubnetworksRouting(Mesh2DDimensionOrderedRouting(), 3, 1)), + beNoCParams = NoCParams( + topology = Mesh2D(4, 4), + channelParamGen = (a, b) => UserChannelParams(Seq.fill(2) { UserVirtualChannelParams(3) }, unifiedBuffer = false), + routerParams = (i) => UserRouterParams(combineRCVA=true, combineSAST=true), + routingRelation = NonblockingVirtualSubnetworksRouting(Mesh2DDimensionOrderedRouting(), 2, 1)), + beDivision = 4 + )) ++ + new freechips.rocketchip.subsystem.WithNBigCores(12) ++ + new freechips.rocketchip.subsystem.WithNBanks(4) ++ + new chipyard.config.WithSystemBusWidth(128) ++ + new chipyard.config.AbstractConfig +) + diff --git a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala index daa08265..9803c935 100644 --- a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala @@ -90,14 +90,14 @@ class TutorialNoCConfig extends Config( // The inNodeMapping and outNodeMapping values are the physical identifiers of // routers on the topology to map the agents to. Try changing these to any // value within the range [0, topology.nNodes) - new constellation.soc.WithPbusNoC(constellation.protocol.TLNoCParams( + new constellation.soc.WithPbusNoC(constellation.protocol.GlobalTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap("Core" -> 7), outNodeMapping = ListMap( "pbus" -> 8, "uart" -> 9, "control" -> 10, "gcd" -> 11, "writeQueue[0]" -> 0, "writeQueue[1]" -> 1, "tailChain[0]" -> 2)) - ), true) ++ - new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( + )) ++ + new constellation.soc.WithSbusNoC(constellation.protocol.GlobalTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( "Core 0" -> 0, "Core 1" -> 1, @@ -105,7 +105,7 @@ class TutorialNoCConfig extends Config( outNodeMapping = ListMap( "system[0]" -> 3, "system[1]" -> 4, "system[2]" -> 5, "system[3]" -> 6, "pbus" -> 7)) - ), true) ++ + )) ++ new chipyard.example.WithGCD ++ new chipyard.harness.WithLoopbackNIC ++ new icenet.WithIceNIC ++ diff --git a/generators/constellation b/generators/constellation index 03ed9e4e..4eb05203 160000 --- a/generators/constellation +++ b/generators/constellation @@ -1 +1 @@ -Subproject commit 03ed9e4ecd31d71d4bd48f02b0e806bc2b8a7e6b +Subproject commit 4eb052037d00606f9642b8341f051a73b3e84aa0 From 127a7596296cea636dd891226f1c4544bcc31f62 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 20 Oct 2023 15:07:18 -0700 Subject: [PATCH 038/184] Bump rocket-chip --- .../chipyard/src/main/scala/config/AbstractConfig.scala | 2 +- .../chipyard/src/main/scala/config/TracegenConfigs.scala | 3 ++- generators/rocket-chip | 2 +- generators/tracegen/src/main/scala/System.scala | 6 ++++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 140f74fb..bc09862e 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -53,7 +53,7 @@ class AbstractConfig extends Config( // By default, punch out IOs to the Harness new chipyard.clocking.WithPassthroughClockGenerator ++ - new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ + new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus"), Seq("tile"))) ++ new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Default 500 MHz pbus new chipyard.config.WithControlBusFrequency(500.0) ++ // Default 500 MHz cbus new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Default 500 MHz mbus diff --git a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala index 78c815fb..77408a96 100644 --- a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala @@ -12,10 +12,11 @@ class AbstractTraceGenConfig extends Config( new chipyard.iobinders.WithAXI4MemPunchthrough ++ new chipyard.iobinders.WithTraceGenSuccessPunchthrough ++ new chipyard.clocking.WithPassthroughClockGenerator ++ - new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "implicit"), Nil)) ++ + new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus"), Nil)) ++ new chipyard.config.WithTracegenSystem ++ new chipyard.config.WithNoSubsystemClockIO ++ new chipyard.config.WithMemoryBusFrequency(1000.0) ++ + new chipyard.config.WithControlBusFrequency(1000.0) ++ new chipyard.config.WithSystemBusFrequency(1000.0) ++ new chipyard.config.WithPeripheryBusFrequency(1000.0) ++ new freechips.rocketchip.subsystem.WithCoherentBusTopology ++ diff --git a/generators/rocket-chip b/generators/rocket-chip index 8881ccd1..0e88fc06 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit 8881ccd1cab941ed0a0981c00361b1415027f8ce +Subproject commit 0e88fc066e293b0da45da7360afd4cd3e6399678 diff --git a/generators/tracegen/src/main/scala/System.scala b/generators/tracegen/src/main/scala/System.scala index b25225c7..488054d3 100644 --- a/generators/tracegen/src/main/scala/System.scala +++ b/generators/tracegen/src/main/scala/System.scala @@ -23,11 +23,13 @@ class TraceGenSystem(implicit p: Parameters) extends BaseSubsystem case t: BoomTraceGenTile => t.statusNode.makeSink() } + lazy val fakeClockDomain = sbus.generateSynchronousDomain + lazy val clintOpt = None lazy val debugOpt = None lazy val plicOpt = None - lazy val clintDomainOpt = None - lazy val plicDomainOpt = None + lazy val clintDomainOpt = Some(fakeClockDomain) + lazy val plicDomainOpt = Some(fakeClockDomain) override lazy val module = new TraceGenSystemModuleImp(this) } From 68f7c90938644c1f9f6889a29a5e4813ab9aaeea Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 20 Oct 2023 15:42:16 -0700 Subject: [PATCH 039/184] Fix SharedNoC config --- .../src/main/scala/config/NoCConfigs.scala | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index 0b6be558..2a5d2185 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -45,7 +45,7 @@ import scala.collection.immutable.ListMap * | SI:Core 2 | SO:system[0] | SO:system[1] | SI:Core 3 | * |(0)___________|(1)___________|(2)___________|(3)___________| * | FBus | Core 0 | Core 1 | Pbus | - * | SI:serial-tl | SI:Core 0 | SI:Core 1 | SO:pbus | + * | SI:serial_tl | SI:Core 0 | SI:Core 1 | SO:pbus | * |______________|______________|______________|______________| * * |(0)___________|(1)___________|(2)___________|(3)___________| @@ -65,7 +65,7 @@ class MultiNoCConfig extends Config( new constellation.soc.WithCbusNoC(constellation.protocol.TLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( - "serial-tl" -> 0), + "serial_tl" -> 0), outNodeMapping = ListMap( "error" -> 1, "l2[0]" -> 2, "pbus" -> 3, "plic" -> 4, "clint" -> 5, "dmInner" -> 6, "bootrom" -> 7, "clock" -> 8)), @@ -81,7 +81,7 @@ class MultiNoCConfig extends Config( "L2 InclusiveCache[2]" -> 5, "L2 InclusiveCache[3]" -> 6), outNodeMapping = ListMap( "system[0]" -> 0, "system[1]" -> 3, "system[2]" -> 4 , "system[3]" -> 7, - "serdesser" -> 0)), + "serial_tl_0" -> 0)), NoCParams( topology = TerminalRouter(BidirectionalTorus1D(8)), channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }), @@ -92,7 +92,7 @@ class MultiNoCConfig extends Config( inNodeMapping = ListMap( "Core 0" -> 1, "Core 1" -> 2, "Core 2" -> 4 , "Core 3" -> 7, "Core 4" -> 8, "Core 5" -> 11, "Core 6" -> 13, "Core 7" -> 14, - "serial-tl" -> 0), + "serial_tl" -> 0), outNodeMapping = ListMap( "system[0]" -> 5, "system[1]" -> 6, "system[2]" -> 9, "system[3]" -> 10, "pbus" -> 3)), @@ -133,7 +133,7 @@ class MultiNoCConfig extends Config( * Core 6 | SI | Core 6 | 16 * Core 7 | SI | Core 7 | 18 * Core 8 | SI | Core 8 | 19 - * fbus | SI | serial-tl | 9 + * fbus | SI | serial_tl | 9 * pbus | SO | pbus | 4 * L2 0 | SO | system[0] | 0 * L2 1 | SO | system[1] | 2 @@ -145,7 +145,7 @@ class MultiNoCConfig extends Config( * L2 3 | MI | Cache[3] | 6 * DRAM 0 | MO | system[0] | 3 * DRAM 1 | MO | system[1] | 5 - * extram | MO | serdesser | 9 + * extram | MO | serial_tl_0 | 9 */ // DOC include start: SharedNoCConfig class SharedNoCConfig extends Config( @@ -168,12 +168,12 @@ class SharedNoCConfig extends Config( "Cache[0]" -> 0, "Cache[1]" -> 2, "Cache[2]" -> 8, "Cache[3]" -> 6), outNodeMapping = ListMap( "system[0]" -> 3, "system[1]" -> 5, - "serdesser" -> 9)) + "serial_tl_0" -> 9)) ), true) ++ new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( inNodeMapping = ListMap( - "serial-tl" -> 9, "Core 0" -> 2, + "serial_tl" -> 9, "Core 0" -> 2, "Core 1" -> 10, "Core 2" -> 11, "Core 3" -> 13, "Core 4" -> 14, "Core 5" -> 15, "Core 6" -> 16, "Core 7" -> 18, "Core 8" -> 19), outNodeMapping = ListMap( @@ -199,13 +199,13 @@ class SbusRingNoCConfig extends Config( "Core 5" -> 5, "Core 6" -> 6, "Core 7" -> 7, - "serial-tl" -> 8), + "serial_tl" -> 8), outNodeMapping = ListMap( "system[0]" -> 9, "system[1]" -> 10, "system[2]" -> 11, "system[3]" -> 12, - "pbus" -> 8)), // TSI is on the pbus, so serial-tl and pbus should be on the same node + "pbus" -> 8)), // TSI is on the pbus, so serial_tl and pbus should be on the same node NoCParams( topology = UnidirectionalTorus1D(13), channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }), From bbf37b2e4b1adeff5a35f6b654121873838b1c2f Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 21 Oct 2023 12:38:21 -0700 Subject: [PATCH 040/184] Fix no-cores ibus null-connection --- generators/chipyard/src/main/scala/Subsystem.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index 1a41ce81..247a28c5 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -96,7 +96,7 @@ class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem intSink := intNexus :=* ibus.toPLIC // avoids a bug when there are no interrupt sources - ibus.fromAsync := NullIntSource() + ibus { ibus.fromAsync := NullIntSource() } // Need to have at least 1 driver to the tile notification sinks tileHaltXbarNode := IntSourceNode(IntSourcePortSimple()) From 2a6939cf0aff8f3107518188859ef05972a1f670 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 21 Oct 2023 14:15:32 -0700 Subject: [PATCH 041/184] Bump nvdla --- generators/nvdla | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/nvdla b/generators/nvdla index 730fad43..95697452 160000 --- a/generators/nvdla +++ b/generators/nvdla @@ -1 +1 @@ -Subproject commit 730fad4360e67b14b1a4656ac58aaa40cfd4fe6b +Subproject commit 95697452e51ad56230a6e631bb02b3351c4293c6 From 1e26618e8dab4a410a4d7c44994dff0c98d4bfbe Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 21 Oct 2023 15:48:01 -0700 Subject: [PATCH 042/184] Fix fpga platforms cbus freq --- fpga/src/main/scala/arty/Configs.scala | 1 + fpga/src/main/scala/arty100t/Configs.scala | 2 ++ fpga/src/main/scala/nexysvideo/Configs.scala | 4 +++- fpga/src/main/scala/vc707/Configs.scala | 2 ++ fpga/src/main/scala/vcu118/Configs.scala | 4 +++- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index 3e208060..cfbb146c 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -28,6 +28,7 @@ class WithArtyTweaks extends Config( new chipyard.config.WithDTSTimebase(32000) ++ new chipyard.config.WithSystemBusFrequency(32) ++ new chipyard.config.WithPeripheryBusFrequency(32) ++ + new chipyard.config.WithControlBusFrequency(32) ++ new testchipip.WithNoSerialTL ) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 4a0fb293..dbae2e3b 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -32,6 +32,7 @@ class WithArty100TTweaks extends Config( new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag @@ -62,5 +63,6 @@ class NoCoresArty100TConfig extends Config( new WithArty100TTweaks ++ new chipyard.config.WithMemoryBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ // Match the sbus and pbus frequency + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.NoCoresConfig) diff --git a/fpga/src/main/scala/nexysvideo/Configs.scala b/fpga/src/main/scala/nexysvideo/Configs.scala index f31e38d1..7b867500 100644 --- a/fpga/src/main/scala/nexysvideo/Configs.scala +++ b/fpga/src/main/scala/nexysvideo/Configs.scala @@ -33,6 +33,7 @@ class WithNexysVideoTweaks extends Config( new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag @@ -59,6 +60,7 @@ class WithTinyNexysVideoTweaks extends Config( new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag @@ -69,4 +71,4 @@ class TinyRocketNexysVideoConfig extends Config( new WithTinyNexysVideoTweaks ++ new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.TinyRocketConfig) - // DOC include end: WithTinyNexysVideoTweaks and Rocket \ No newline at end of file + // DOC include end: WithTinyNexysVideoTweaks and Rocket diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index b37064ac..1d43da2c 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -45,6 +45,7 @@ class WithVC707Tweaks extends Config ( new chipyard.config.WithMemoryBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ new WithFPGAFrequency(50) ++ // default 50MHz freq @@ -75,6 +76,7 @@ class BoomVC707Config extends Config ( class WithFPGAFrequency(fMHz: Double) extends Config ( new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ // assumes using PBUS as default freq. + new chipyard.config.WithControlBusFrequency(fMHz) ++ new chipyard.config.WithMemoryBusFrequency(fMHz) ) diff --git a/fpga/src/main/scala/vcu118/Configs.scala b/fpga/src/main/scala/vcu118/Configs.scala index 35632961..e7ea046e 100644 --- a/fpga/src/main/scala/vcu118/Configs.scala +++ b/fpga/src/main/scala/vcu118/Configs.scala @@ -47,6 +47,7 @@ class WithVCU118Tweaks extends Config( new chipyard.config.WithMemoryBusFrequency(100) ++ new chipyard.config.WithSystemBusFrequency(100) ++ new chipyard.config.WithPeripheryBusFrequency(100) ++ + new chipyard.config.WithControlBusFrequency(100) ++ new WithFPGAFrequency(100) ++ // default 100MHz freq // harness binders new WithUART ++ @@ -76,7 +77,8 @@ class BoomVCU118Config extends Config( class WithFPGAFrequency(fMHz: Double) extends Config( new chipyard.harness.WithHarnessBinderClockFreqMHz(fMHz) ++ new chipyard.config.WithSystemBusFrequency(fMHz) ++ - new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ // assumes using PBUS as default freq. + new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ + new chipyard.config.WithControlBusFrequency(fMHz) ++ new chipyard.config.WithMemoryBusFrequency(fMHz) ) From 2ffd52e2db5e65525b7e9855a4fffb7e4ef9cc2f Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 22 Oct 2023 14:08:51 -0700 Subject: [PATCH 043/184] Fix ChipBringupHostConfig cbus freq --- generators/chipyard/src/main/scala/config/ChipConfigs.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index cc61794c..4291ef37 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -85,6 +85,7 @@ class ChipBringupHostConfig extends Config( new chipyard.config.WithFrontBusFrequency(75.0) ++ // run all buses of this system at 75 MHz new chipyard.config.WithMemoryBusFrequency(75.0) ++ new chipyard.config.WithPeripheryBusFrequency(75.0) ++ + new chipyard.config.WithControlBusFrequency(75.0) ++ // Base is the no-cores config new chipyard.NoCoresConfig) From a4be70877143428a1b30acbe6a6366a077940799 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 22 Oct 2023 14:23:35 -0700 Subject: [PATCH 044/184] Fix firechip cbus freq --- generators/firechip/src/main/scala/TargetConfigs.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 6f2a0291..66c1dc09 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -121,6 +121,7 @@ class WithFireSimHighPerfClocking extends Config( // This frequency selection matches FireSim's legacy selection and is required // to support 200Gb NIC performance. You may select a smaller value. new chipyard.config.WithPeripheryBusFrequency(3200.0) ++ + new chipyard.config.WithControlBusFrequency(3200.0) ++ new chipyard.config.WithSystemBusFrequency(3200.0) ++ new chipyard.config.WithFrontBusFrequency(3200.0) ++ // Optional: These three configs put the DRAM memory system in it's own clock domain. @@ -140,6 +141,7 @@ class WithFireSimConfigTweaks extends Config( // to generate faithful DDR3 timing values. new chipyard.config.WithSystemBusFrequency(1000.0) ++ new chipyard.config.WithPeripheryBusFrequency(1000.0) ++ + new chipyard.config.WithControlBusFrequency(1000.0) ++ new chipyard.config.WithMemoryBusFrequency(1000.0) ++ new WithFireSimDesignTweaks ) @@ -185,7 +187,8 @@ class WithFireSimTestChipConfigTweaks extends Config( new chipyard.config.WithTileFrequency(1000.0) ++ // Realistic tile frequency for a test chip new chipyard.config.WithSystemBusFrequency(500.0) ++ // Realistic system bus frequency new chipyard.config.WithMemoryBusFrequency(1000.0) ++ // Needs to be 1000 MHz to model DDR performance accurately - new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Match the sbus and pbus frequency + new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Match the sbus/pbus/cbus freqs + new chipyard.config.WithControlBusFrequency(500.0) ++ new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ // Crossing specifications new chipyard.config.WithCbusToPbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossing between PBUS and CBUS @@ -247,6 +250,7 @@ class FireSimSmallSystemConfig extends Config( new WithDefaultMemModel ++ new WithBootROM ++ new chipyard.config.WithPeripheryBusFrequency(3200.0) ++ + new chipyard.config.WithControlBusFrequency(3200.0) ++ new WithoutClockGating ++ new WithoutTLMonitors ++ new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++ From b4d4e54f9ca9f6fd6d9e5c6201e8e349caae96e6 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 24 Oct 2023 18:24:44 -0700 Subject: [PATCH 045/184] Bump fpga-shells --- fpga/fpga-shells | 2 +- fpga/src/main/scala/arty100t/Configs.scala | 2 +- fpga/src/main/scala/arty100t/Harness.scala | 4 ++-- fpga/src/main/scala/nexysvideo/Configs.scala | 2 +- fpga/src/main/scala/nexysvideo/Harness.scala | 4 ++-- fpga/src/main/scala/vc707/TestHarness.scala | 4 +++- fpga/src/main/scala/vcu118/CustomOverlays.scala | 4 ++-- fpga/src/main/scala/vcu118/TestHarness.scala | 5 +++-- fpga/src/main/scala/vcu118/bringup/TestHarness.scala | 2 +- 9 files changed, 16 insertions(+), 13 deletions(-) diff --git a/fpga/fpga-shells b/fpga/fpga-shells index 19e0e87c..dec6398a 160000 --- a/fpga/fpga-shells +++ b/fpga/fpga-shells @@ -1 +1 @@ -Subproject commit 19e0e87cedd438f8231bb7af420cc58792735473 +Subproject commit dec6398a5c9bf7d9b80f12a9b991ee1a987337c6 diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index dbae2e3b..55ebcffb 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -18,7 +18,7 @@ import chipyard.{BuildSystem} // don't use FPGAShell's DesignKey class WithNoDesignKey extends Config((site, here, up) => { - case DesignKey => (p: Parameters) => new SimpleLazyModule()(p) + case DesignKey => (p: Parameters) => new SimpleLazyRawModule()(p) }) class WithArty100TTweaks extends Config( diff --git a/fpga/src/main/scala/arty100t/Harness.scala b/fpga/src/main/scala/arty100t/Harness.scala index 47ffe7e0..4303a23e 100644 --- a/fpga/src/main/scala/arty100t/Harness.scala +++ b/fpga/src/main/scala/arty100t/Harness.scala @@ -5,12 +5,12 @@ import chisel3.util._ import freechips.rocketchip.diplomacy._ import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink._ -import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters} +import freechips.rocketchip.prci._ import freechips.rocketchip.subsystem.{SystemBusKey} import sifive.fpgashells.shell.xilinx._ import sifive.fpgashells.shell._ -import sifive.fpgashells.clocks.{ClockGroup, ClockSinkNode, PLLFactoryKey, ResetWrangler} +import sifive.fpgashells.clocks._ import sifive.fpgashells.ip.xilinx.{IBUF, PowerOnResetFPGAOnly} import sifive.blocks.devices.uart._ diff --git a/fpga/src/main/scala/nexysvideo/Configs.scala b/fpga/src/main/scala/nexysvideo/Configs.scala index 7b867500..751115ec 100644 --- a/fpga/src/main/scala/nexysvideo/Configs.scala +++ b/fpga/src/main/scala/nexysvideo/Configs.scala @@ -18,7 +18,7 @@ import chipyard.{BuildSystem} // don't use FPGAShell's DesignKey class WithNoDesignKey extends Config((site, here, up) => { - case DesignKey => (p: Parameters) => new SimpleLazyModule()(p) + case DesignKey => (p: Parameters) => new SimpleLazyRawModule()(p) }) // DOC include start: WithNexysVideoTweaks and Rocket diff --git a/fpga/src/main/scala/nexysvideo/Harness.scala b/fpga/src/main/scala/nexysvideo/Harness.scala index 0cfb7110..cfc4b1cc 100644 --- a/fpga/src/main/scala/nexysvideo/Harness.scala +++ b/fpga/src/main/scala/nexysvideo/Harness.scala @@ -7,10 +7,10 @@ import freechips.rocketchip.diplomacy._ import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink._ import freechips.rocketchip.subsystem.{SystemBusKey} - +import freechips.rocketchip.prci._ import sifive.fpgashells.shell.xilinx._ import sifive.fpgashells.shell._ -import sifive.fpgashells.clocks.{ClockGroup, ClockSinkNode, PLLFactoryKey, ResetWrangler} +import sifive.fpgashells.clocks._ import sifive.blocks.devices.uart._ diff --git a/fpga/src/main/scala/vc707/TestHarness.scala b/fpga/src/main/scala/vc707/TestHarness.scala index 008e2399..75409697 100644 --- a/fpga/src/main/scala/vc707/TestHarness.scala +++ b/fpga/src/main/scala/vc707/TestHarness.scala @@ -7,11 +7,12 @@ import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink._ import freechips.rocketchip.subsystem.{SystemBusKey} import freechips.rocketchip.diplomacy.{IdRange, TransferSizes} +import freechips.rocketchip.prci._ import sifive.fpgashells.shell.xilinx.{VC707Shell, UARTVC707ShellPlacer, PCIeVC707ShellPlacer, ChipLinkVC707PlacedOverlay} import sifive.fpgashells.ip.xilinx.{IBUF, PowerOnResetFPGAOnly} import sifive.fpgashells.shell._ -import sifive.fpgashells.clocks.{ClockGroup, ClockSinkNode, PLLFactoryKey, ResetWrangler} +import sifive.fpgashells.clocks.{PLLFactoryKey} import sifive.fpgashells.devices.xilinx.xilinxvc707pciex1.{XilinxVC707PCIeX1IO} import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTPortIO} @@ -88,6 +89,7 @@ class VC707FPGATestHarness(override implicit val p: Parameters) extends VC707She } class VC707FPGATestHarnessImp(_outer: VC707FPGATestHarness) extends LazyRawModuleImp(_outer) with HasHarnessInstantiators { + override def provideImplicitClockToLazyChildren = true val vc707Outer = _outer val reset = IO(Input(Bool())).suggestName("reset") diff --git a/fpga/src/main/scala/vcu118/CustomOverlays.scala b/fpga/src/main/scala/vcu118/CustomOverlays.scala index 02669b79..473a015d 100644 --- a/fpga/src/main/scala/vcu118/CustomOverlays.scala +++ b/fpga/src/main/scala/vcu118/CustomOverlays.scala @@ -5,7 +5,7 @@ import chisel3._ import freechips.rocketchip.diplomacy._ import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.tilelink.{TLInwardNode, TLAsyncCrossingSink} - +import freechips.rocketchip.prci._ import sifive.fpgashells.shell._ import sifive.fpgashells.ip.xilinx._ import sifive.fpgashells.shell.xilinx._ @@ -79,7 +79,7 @@ class DDR2VCU118PlacedOverlay(val shell: VCU118FPGATestHarness, name: String, va ui.reset := /*!port.mmcm_locked ||*/ port.c0_ddr4_ui_clk_sync_rst port.c0_sys_clk_i := sys.clock.asUInt port.sys_rst := sys.reset // pllReset - port.c0_ddr4_aresetn := !ar.reset + port.c0_ddr4_aresetn := !(ar.reset.asBool) // This was just copied from the SiFive example, but it's hard to follow. // The pins are emitted in the following order: diff --git a/fpga/src/main/scala/vcu118/TestHarness.scala b/fpga/src/main/scala/vcu118/TestHarness.scala index 6bffc9a7..09aef9d8 100644 --- a/fpga/src/main/scala/vcu118/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/TestHarness.scala @@ -8,11 +8,11 @@ import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink._ import freechips.rocketchip.diplomacy.{IdRange, TransferSizes} import freechips.rocketchip.subsystem.{SystemBusKey} - +import freechips.rocketchip.prci._ import sifive.fpgashells.shell.xilinx._ import sifive.fpgashells.ip.xilinx.{IBUF, PowerOnResetFPGAOnly} import sifive.fpgashells.shell._ -import sifive.fpgashells.clocks.{ClockGroup, ClockSinkNode, PLLFactoryKey, ResetWrangler} +import sifive.fpgashells.clocks._ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTPortIO} import sifive.blocks.devices.spi.{PeripherySPIKey, SPIPortIO} @@ -91,6 +91,7 @@ class VCU118FPGATestHarness(override implicit val p: Parameters) extends VCU118S } class VCU118FPGATestHarnessImp(_outer: VCU118FPGATestHarness) extends LazyRawModuleImp(_outer) with HasHarnessInstantiators { + override def provideImplicitClockToLazyChildren = true val vcu118Outer = _outer val reset = IO(Input(Bool())).suggestName("reset") diff --git a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala index 12398d8f..f2ead9ed 100644 --- a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala @@ -5,7 +5,7 @@ import freechips.rocketchip.diplomacy._ import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.tilelink._ - +import freechips.rocketchip.prci._ import sifive.fpgashells.shell.xilinx._ import sifive.fpgashells.ip.xilinx._ import sifive.fpgashells.shell._ From d83f39573842e2077db758b150d33e9a53c394a1 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 24 Oct 2023 18:42:27 -0700 Subject: [PATCH 046/184] Update firechip for new testchipip --- generators/firechip/src/main/scala/BridgeBinders.scala | 4 ++-- generators/firechip/src/main/scala/TargetConfigs.scala | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index e4169ec2..ad643deb 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -69,7 +69,7 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ case (th: FireSim, port: SerialTLPort) => { val bits = port.io.bits port.io.clock := th.harnessBinderClock - val ram = LazyModule(new SerialRAM(port.serdesser)(Parameters.empty)) + val ram = LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)) Module(ram.module) ram.module.io.ser <> port.io.bits @@ -78,7 +78,7 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ // If FASED bridge is attached, loadmem widget is present val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) - TSIBridge(th.harnessBinderClock, ram.module.io.tsi, mainMemoryName, th.harnessBinderReset.asBool)(th.p) + TSIBridge(th.harnessBinderClock, ram.module.io.tsi.get, mainMemoryName, th.harnessBinderReset.asBool)(th.p) } }) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 6f2a0291..49e85c27 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -129,8 +129,7 @@ class WithFireSimHighPerfClocking extends Config( // 1 GHz matches the FASED default, using some other frequency will require // runnings the FASED runtime configuration generator to generate faithful DDR3 timing values. new chipyard.config.WithMemoryBusFrequency(1000.0) ++ - new chipyard.config.WithAsynchrousMemoryBusCrossing ++ - new testchipip.WithAsynchronousSerialSlaveCrossing + new chipyard.config.WithAsynchrousMemoryBusCrossing ) // Tweaks that are generally applied to all firesim configs setting a single clock domain at 1000 MHz @@ -192,7 +191,6 @@ class WithFireSimTestChipConfigTweaks extends Config( new chipyard.config.WithSbusToMbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossings between backside of L2 and MBUS new freechips.rocketchip.subsystem.WithRationalRocketTiles ++ // Add rational crossings between RocketTile and uncore new boom.common.WithRationalBoomTiles ++ // Add rational crossings between BoomTile and uncore - new testchipip.WithAsynchronousSerialSlaveCrossing ++ // Add Async crossing between serial and MBUS. Its master-side is tied to the FBUS new WithFireSimDesignTweaks ) @@ -250,7 +248,10 @@ class FireSimSmallSystemConfig extends Config( new WithoutClockGating ++ new WithoutTLMonitors ++ new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++ - new testchipip.WithDefaultSerialTL ++ + new testchipip.WithSerialTL(Seq(testchipip.SerialTLParams( + client = Some(testchipip.SerialTLClientParams(idBits = 4)), + width = 32 + ))) ++ new testchipip.WithBlockDevice ++ new chipyard.config.WithUARTInitBaudRate(BigInt(3686400L)) ++ new freechips.rocketchip.subsystem.WithInclusiveCache(nWays = 2, capacityKB = 64) ++ From ab1db16bdbbe764394fe4c53e0c8d9aabab6f83a Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 24 Oct 2023 20:39:01 -0700 Subject: [PATCH 047/184] Bump rocket-chip --- generators/rocket-chip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/rocket-chip b/generators/rocket-chip index 0e88fc06..59e86fd2 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit 0e88fc066e293b0da45da7360afd4cd3e6399678 +Subproject commit 59e86fd2ba98b02a763dad2bd51b6324671ca2b1 From a5597fd32f57553f7a87710433c319e3ebcb77fe Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 25 Oct 2023 11:49:16 -0700 Subject: [PATCH 048/184] Support using HarnessBinders without IOBinders --- fpga/src/main/scala/arty/TestHarness.scala | 1 - fpga/src/main/scala/arty100t/Harness.scala | 1 - fpga/src/main/scala/nexysvideo/Harness.scala | 1 - fpga/src/main/scala/vc707/TestHarness.scala | 1 - fpga/src/main/scala/vcu118/TestHarness.scala | 1 - .../src/main/scala/config/ChipConfigs.scala | 4 +++ .../src/main/scala/example/FlatChipTop.scala | 26 ++++++++++++++++--- .../main/scala/harness/HarnessClocks.scala | 1 - .../harness/HasHarnessInstantiators.scala | 4 +-- .../scala/harness/MultiHarnessBinders.scala | 6 ++--- .../src/main/scala/harness/TestHarness.scala | 1 - .../src/main/scala/iobinders/IOBinders.scala | 4 ++- .../src/main/scala/iobinders/Ports.scala | 4 +++ 13 files changed, 38 insertions(+), 17 deletions(-) diff --git a/fpga/src/main/scala/arty/TestHarness.scala b/fpga/src/main/scala/arty/TestHarness.scala index 2d524fe3..0a81740a 100644 --- a/fpga/src/main/scala/arty/TestHarness.scala +++ b/fpga/src/main/scala/arty/TestHarness.scala @@ -9,7 +9,6 @@ import org.chipsalliance.cde.config.{Parameters} import sifive.fpgashells.shell.xilinx.artyshell.{ArtyShell} import chipyard.harness.{HasHarnessInstantiators} -import chipyard.iobinders.{HasIOBinders} class ArtyFPGATestHarness(override implicit val p: Parameters) extends ArtyShell with HasHarnessInstantiators { // Convert harness resets from Bool to Reset type. diff --git a/fpga/src/main/scala/arty100t/Harness.scala b/fpga/src/main/scala/arty100t/Harness.scala index 47ffe7e0..a535e65f 100644 --- a/fpga/src/main/scala/arty100t/Harness.scala +++ b/fpga/src/main/scala/arty100t/Harness.scala @@ -17,7 +17,6 @@ import sifive.blocks.devices.uart._ import chipyard._ import chipyard.harness._ -import chipyard.iobinders.{HasIOBinders} class Arty100THarness(override implicit val p: Parameters) extends Arty100TShell { def dp = designParameters diff --git a/fpga/src/main/scala/nexysvideo/Harness.scala b/fpga/src/main/scala/nexysvideo/Harness.scala index 0cfb7110..a68cf24e 100644 --- a/fpga/src/main/scala/nexysvideo/Harness.scala +++ b/fpga/src/main/scala/nexysvideo/Harness.scala @@ -16,7 +16,6 @@ import sifive.blocks.devices.uart._ import chipyard._ import chipyard.harness._ -import chipyard.iobinders.{HasIOBinders} class NexysVideoHarness(override implicit val p: Parameters) extends NexysVideoShell { def dp = designParameters diff --git a/fpga/src/main/scala/vc707/TestHarness.scala b/fpga/src/main/scala/vc707/TestHarness.scala index 008e2399..1ed7ab33 100644 --- a/fpga/src/main/scala/vc707/TestHarness.scala +++ b/fpga/src/main/scala/vc707/TestHarness.scala @@ -18,7 +18,6 @@ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTPortIO} import sifive.blocks.devices.spi.{PeripherySPIKey, SPIPortIO} import chipyard._ -import chipyard.iobinders.{HasIOBinders} import chipyard.harness._ class VC707FPGATestHarness(override implicit val p: Parameters) extends VC707Shell { outer => diff --git a/fpga/src/main/scala/vcu118/TestHarness.scala b/fpga/src/main/scala/vcu118/TestHarness.scala index 6bffc9a7..733c5167 100644 --- a/fpga/src/main/scala/vcu118/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/TestHarness.scala @@ -18,7 +18,6 @@ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTPortIO} import sifive.blocks.devices.spi.{PeripherySPIKey, SPIPortIO} import chipyard._ -import chipyard.iobinders.{HasIOBinders} import chipyard.harness._ class VCU118FPGATestHarness(override implicit val p: Parameters) extends VCU118ShellBasicOverlays { diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index cc61794c..c9ff068d 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -43,6 +43,10 @@ class ChipLikeRocketConfig extends Config( new chipyard.config.AbstractConfig) +class FlatChipTopChipLikeRocketConfig extends Config( + new chipyard.example.WithFlatChipTop ++ + new chipyard.ChipLikeRocketConfig) + // A simple config demonstrating a "bringup prototype" to bringup the ChipLikeRocketconfig class ChipBringupHostConfig extends Config( //============================= diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index a1a1aeaa..165f9186 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -2,22 +2,28 @@ package chipyard.example import chisel3._ -import org.chipsalliance.cde.config.{Field, Parameters} +import org.chipsalliance.cde.config.{Config, Field, Parameters} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ import freechips.rocketchip.util._ +import freechips.rocketchip.subsystem.{PBUS, HasTileLinkLocations} import freechips.rocketchip.devices.debug.{ExportDebug, JtagDTMKey, Debug} import freechips.rocketchip.tilelink.{TLBuffer, TLFragmenter} import chipyard.{BuildSystem, DigitalTop} +import chipyard.harness.{BuildTop} import chipyard.clocking._ -import chipyard.iobinders.{IOCellKey, JTAGChipIO} +import chipyard.iobinders._ import barstools.iocell.chisel._ +import testchipip.{SerialTLKey} +class WithFlatChipTop extends Config((site, here, up) => { + case BuildTop => (p: Parameters) => new FlatChipTop()(p) +}) // This "FlatChipTop" uses no IOBinders, so all the IO have // to be explicitly constructed. // This only supports the base "DigitalTop" -class FlatChipTop(implicit p: Parameters) extends LazyModule { +class FlatChipTop(implicit p: Parameters) extends LazyModule with HasChipyardPorts { override lazy val desiredName = "ChipTop" val system = LazyModule(p(BuildSystem)(p)).suggestName("system").asInstanceOf[DigitalTop] @@ -56,6 +62,8 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { debugClockSinkNode := system.locateTLBusWrapper(p(ExportDebug).slaveWhere).fixedClockNode def debugClockBundle = debugClockSinkNode.in.head._1 + var ports: Seq[Port[_]] = Nil + override lazy val module = new FlatChipTopImpl class FlatChipTopImpl extends LazyRawModuleImp(this) { //========================= @@ -78,6 +86,9 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { o.reset := reset_wire } + ports = ports :+ ClockPort(clock_pad, 100.0) + ports = ports :+ ResetPort(reset_pad) + // For a real chip you should replace this ClockSourceAtFreqFromPlusArg // with a blackbox of whatever PLL is being integrated val fake_pll = Module(new ClockSourceAtFreqFromPlusArg("pll_freq_mhz")) @@ -93,11 +104,13 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { // Custom Boot //========================= val (custom_boot_pad, customBootIOCell) = IOCell.generateIOFromSignal(system.custom_boot_pin.get.getWrappedValue, "custom_boot", p(IOCellKey)) + ports = ports :+ CustomBootPort(custom_boot_pad) //========================= // Serialized TileLink //========================= val (serial_tl_pad, serialTLIOCells) = IOCell.generateIOFromSignal(system.serial_tl.get.getWrappedValue, "serial_tl", p(IOCellKey)) + ports = ports :+ SerialTLPort(serial_tl_pad, p(SerialTLKey).get, system.serdesser.get, 0) //========================= // JTAG/Debug @@ -136,12 +149,17 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule { IOCell.generateIOFromSignal(jtag_wire, "jtag", p(IOCellKey), abstractResetAsAsync = true) }.get + ports = ports :+ JTAGPort(jtag_pad) + //========================== // UART //========================== require(system.uarts.size == 1) val (uart_pad, uartIOCells) = IOCell.generateIOFromSignal(system.module.uart.head, "uart_0", p(IOCellKey)) - + val where = PBUS // TODO fix + val bus = system.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) + val freqMHz = bus.dtsFrequency.get / 1000000 + ports = ports :+ UARTPort(uart_pad, 0, freqMHz.toInt) //========================== // External interrupts (tie off) diff --git a/generators/chipyard/src/main/scala/harness/HarnessClocks.scala b/generators/chipyard/src/main/scala/harness/HarnessClocks.scala index 0f58f33b..cfc1cad4 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessClocks.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessClocks.scala @@ -10,7 +10,6 @@ import freechips.rocketchip.util.{ResetCatchAndSync} import freechips.rocketchip.prci._ import chipyard.harness.{ApplyHarnessBinders, HarnessBinders, HarnessClockInstantiatorKey} -import chipyard.iobinders.HasIOBinders import chipyard.clocking.{SimplePllConfiguration, ClockDividerN} diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index 48f63e04..9052bc77 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -10,7 +10,7 @@ import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters, ClockSinkP import chipyard.stage.phases.TargetDirKey import chipyard.harness.{ApplyHarnessBinders, HarnessBinders} -import chipyard.iobinders.HasIOBinders +import chipyard.iobinders.HasChipyardPorts import chipyard.clocking.{SimplePllConfiguration, ClockDividerN} import chipyard.{ChipTop} @@ -83,7 +83,7 @@ trait HasHarnessInstantiators { withClockAndReset (harnessBinderClock, harnessBinderReset) { lazyDuts.zipWithIndex.foreach { - case (d: HasIOBinders, i: Int) => ApplyHarnessBinders(this, d.portMap.values.flatten.toSeq)(chipParameters(i)) + case (d: HasChipyardPorts, i: Int) => ApplyHarnessBinders(this, d.ports)(chipParameters(i)) case _ => } ApplyMultiHarnessBinders(this, lazyDuts) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index 399e64be..1200208c 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -13,7 +13,7 @@ import freechips.rocketchip.util._ import testchipip._ import chipyard._ -import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, HasIOBinders, Port, SerialTLPort} +import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, HasChipyardPorts, Port, SerialTLPort} import scala.reflect.{ClassTag} @@ -23,8 +23,8 @@ object ApplyMultiHarnessBinders { def apply(th: HasHarnessInstantiators, chips: Seq[LazyModule])(implicit p: Parameters): Unit = { Seq.tabulate(chips.size, chips.size) { case (i, j) => if (i != j) { (chips(i), chips(j)) match { - case (l0: HasIOBinders, l1: HasIOBinders) => p(MultiHarnessBinders(i, j)).foreach { f => - f(l0.portMap.values.flatten.toSeq, l1.portMap.values.flatten.toSeq) + case (l0: HasChipyardPorts, l1: HasChipyardPorts) => p(MultiHarnessBinders(i, j)).foreach { f => + f(l0.ports, l1.ports) } } }} diff --git a/generators/chipyard/src/main/scala/harness/TestHarness.scala b/generators/chipyard/src/main/scala/harness/TestHarness.scala index 459c6511..43bf2dd0 100644 --- a/generators/chipyard/src/main/scala/harness/TestHarness.scala +++ b/generators/chipyard/src/main/scala/harness/TestHarness.scala @@ -9,7 +9,6 @@ import freechips.rocketchip.util.{ResetCatchAndSync} import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters, ClockSinkParameters, ClockParameters} import chipyard.harness.{ApplyHarnessBinders, HarnessBinders} -import chipyard.iobinders.HasIOBinders import chipyard.clocking.{SimplePllConfiguration, ClockDividerN} import chipyard.{ChipTop} diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 773f3d39..4b5ac1c6 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -57,7 +57,7 @@ class WithDontTouchIOBinders(b: Boolean = true) extends Config((site, here, up) case DontTouchIOBindersPorts => b }) -abstract trait HasIOBinders { this: LazyModule => +abstract trait HasIOBinders extends HasChipyardPorts { this: LazyModule => val lazySystem: LazyModule private val iobinders = p(IOBinders) // Note: IOBinders cannot rely on the implicit clock/reset, as they may be called from the @@ -81,6 +81,8 @@ abstract trait HasIOBinders { this: LazyModule => // A mapping between stringified DigitalSystem traits and their corresponding ChipTop iocells val iocellMap = InModuleBody { iobinders.keys.map(k => k -> (lzyFlattened(k)._2 ++ impFlattened(k)._2)).toMap } + def ports = portMap.getWrappedValue.values.flatten.toSeq + InModuleBody { if (p(DontTouchIOBindersPorts)) { portMap.values.flatten.foreach { case (port: Port[Data]) => dontTouch(port.io) } diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index 61c25a36..391d3baf 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -19,6 +19,10 @@ trait Port[T <: Data] { val io: T } +trait HasChipyardPorts { + def ports: Seq[Port[_]] +} + // These case classes are generated by IOBinders, and interpreted by HarnessBinders case class GPIOPort (val io: Analog, val gpioId: Int, val pinId: Int) extends Port[Analog] From 228d9351f87aaf00609a267ccd19559ae3846053 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 25 Oct 2023 17:18:24 -0700 Subject: [PATCH 049/184] Bump testchipip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index e1e1ee02..d023a317 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit e1e1ee02884f457f62785c41af23406a6cf7738a +Subproject commit d023a3175cbdb7343cdb26aa8450e86e978c591d From 6f17292e85c10b4bc42fd1c4924e29461a7c7f48 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 26 Oct 2023 11:27:03 -0700 Subject: [PATCH 050/184] Fix removal of axi4mem for ChipLikeRocketConfig --- generators/chipyard/src/main/scala/config/ChipConfigs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index 95b0149b..b8b02dfa 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -24,7 +24,7 @@ class ChipLikeRocketConfig extends Config( //================================== new testchipip.WithSerialTLWidth(4) ++ // 4bit wide Serialized TL interface to minimize IO new testchipip.WithSerialTLMem(size = (1 << 30) * 4L) ++ // Configure the off-chip memory accessible over serial-tl as backing memory - new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 4L) ++ // 4GB max external memory + new freechips.rocketchip.subsystem.WithNoMemPort ++ // Remove axi4 mem port new freechips.rocketchip.subsystem.WithNMemoryChannels(1) ++ // 1 memory channel //================================== From 59fd67df5735fad4d7e14fa383349a698e9049af Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 26 Oct 2023 11:27:39 -0700 Subject: [PATCH 051/184] Fix match statement --- generators/chipyard/src/main/scala/Subsystem.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index d25d4fa3..5d2ba60c 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -29,7 +29,7 @@ import testchipip.{CanHavePeripheryTLSerial, SerialTLKey} trait CanHaveHTIF { this: BaseSubsystem => // Advertise HTIF if system can communicate with fesvr if (this match { - case _: CanHavePeripheryTLSerial if p(SerialTLKey).nonEmpty => true + case _: CanHavePeripheryTLSerial if (!p(SerialTLKey).isEmpty) => true case _: HasPeripheryDebug if (!p(DebugModuleKey).isEmpty && p(ExportDebug).dmi) => true case _ => false }) { From 3fa3d745b939187d09c4faa477befc0d5fd77156 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 30 Oct 2023 21:25:11 -0700 Subject: [PATCH 052/184] Support breaking out ChipTop I/O out of the expected bundle type --- fpga/src/main/scala/arty/IOBinders.scala | 2 +- .../main/scala/vcu118/bringup/IOBinders.scala | 4 +- .../chipyard/src/main/scala/ChipTop.scala | 4 +- .../main/scala/clocking/ClockBinders.scala | 8 +-- .../scala/config/MMIOAcceleratorConfigs.scala | 4 +- .../src/main/scala/config/RocketConfigs.scala | 3 +- .../main/scala/config/TutorialConfigs.scala | 2 +- .../main/scala/example/CustomChipTop.scala | 20 +++++++ .../src/main/scala/example/FlatChipTop.scala | 12 ++--- .../harness/HasHarnessInstantiators.scala | 15 +++++- .../src/main/scala/iobinders/IOBinders.scala | 52 ++++++++----------- .../src/main/scala/iobinders/Ports.scala | 52 ++++++++++--------- 12 files changed, 101 insertions(+), 77 deletions(-) diff --git a/fpga/src/main/scala/arty/IOBinders.scala b/fpga/src/main/scala/arty/IOBinders.scala index c3929262..eb3185f9 100644 --- a/fpga/src/main/scala/arty/IOBinders.scala +++ b/fpga/src/main/scala/arty/IOBinders.scala @@ -18,6 +18,6 @@ class WithDebugResetPassthrough extends ComposeIOBinder({ val io_sjtag_reset: Bool = IO(Input(Bool())).suggestName("sjtag_reset") sjtag.reset := io_sjtag_reset - (Seq(DebugResetPort(io_ndreset), JTAGResetPort(io_sjtag_reset)), Nil) + (Seq(DebugResetPort(() => io_ndreset), JTAGResetPort(() => io_sjtag_reset)), Nil) } }) diff --git a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala index 69dfbce9..155f2647 100644 --- a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala @@ -13,7 +13,7 @@ import testchipip.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} import chipyard.iobinders.{OverrideIOBinder, Port, TLMemPort} -case class TSIHostWidgetPort(val io: TSIHostWidgetIO) +case class TSIHostWidgetPort(val getIO: () => TSIHostWidgetIO) extends Port[TSIHostWidgetIO] class WithTSITLIOPassthrough extends OverrideIOBinder({ @@ -25,6 +25,6 @@ class WithTSITLIOPassthrough extends OverrideIOBinder({ require(system.tsiSerial.size == 1) val io_tsi_serial_pins_temp = IO(DataMirror.internal.chiselTypeClone[TSIHostWidgetIO](system.tsiSerial.head)).suggestName("tsi_serial") io_tsi_serial_pins_temp <> system.tsiSerial.head - (Seq(TLMemPort(io_tsi_tl_mem_pins_temp), TSIHostWidgetPort(io_tsi_serial_pins_temp)), Nil) + (Seq(TLMemPort(() => io_tsi_tl_mem_pins_temp), TSIHostWidgetPort(() => io_tsi_serial_pins_temp)), Nil) } }) diff --git a/generators/chipyard/src/main/scala/ChipTop.scala b/generators/chipyard/src/main/scala/ChipTop.scala index 150221b6..20709667 100644 --- a/generators/chipyard/src/main/scala/ChipTop.scala +++ b/generators/chipyard/src/main/scala/ChipTop.scala @@ -8,7 +8,7 @@ import freechips.rocketchip.prci.{ClockGroupIdentityNode, ClockSinkParameters, C import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, LazyRawModuleImp, LazyModuleImpLike, BindingScope} -import freechips.rocketchip.util.{ResetCatchAndSync} +import freechips.rocketchip.util.{DontTouch} import chipyard.iobinders._ import barstools.iocell.chisel._ @@ -31,5 +31,5 @@ class ChipTop(implicit p: Parameters) extends LazyModule with BindingScope // of ChipTop (ex: ClockGroup) do not receive clock or reset. // However. anonymous children of ChipTop should not need an implicit Clock or Reset // anyways, they probably need to be explicitly clocked. - lazy val module: LazyModuleImpLike = new LazyRawModuleImp(this) { } + lazy val module: LazyModuleImpLike = new LazyRawModuleImp(this) with DontTouch { } } diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala index 3ef8a61b..36d1fa2f 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -75,11 +75,11 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ o.reset := reset_wire } - (Seq(ClockPort(clock_io, 100), ResetPort(reset_io)), clockIOCell ++ resetIOCell) + (Seq(ClockPort(() => clock_io, 100), ResetPort(() => reset_io)), clockIOCell ++ resetIOCell) } } }) - + // This passes all clocks through to the TestHarness class WithPassthroughClockGenerator extends OverrideLazyIOBinder({ (system: HasChipyardPRCI) => { @@ -113,9 +113,9 @@ class WithPassthroughClockGenerator extends OverrideLazyIOBinder({ val clock_io = IO(Input(Clock())).suggestName(s"clock_${m.name.get}") b.clock := clock_io b.reset := reset_io - ClockPort(clock_io, freq) + ClockPort(() => clock_io, freq) }.toSeq - ((clock_ios :+ ResetPort(reset_io)), Nil) + ((clock_ios :+ ResetPort(() => reset_io)), Nil) } } }) diff --git a/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala index 16e6b313..8d6f1063 100644 --- a/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala @@ -9,7 +9,7 @@ import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // DOC include start: FFTRocketConfig class FFTRocketConfig extends Config( - new chipyard.iobinders.WithDontTouchIOBinders(false) ++ // TODO: hack around dontTouch not working in SFC + new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // TODO: hack around dontTouch not working in SFC new fftgenerator.WithFFTGenerator(numPoints=8, width=16, decPt=8) ++ // add 8-point mmio fft at the default addr (0x2400) with 16bit fixed-point numbers. new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) @@ -59,7 +59,7 @@ class LargeNVDLARocketConfig extends Config( new chipyard.config.AbstractConfig) class ManyMMIOAcceleratorRocketConfig extends Config( - new chipyard.iobinders.WithDontTouchIOBinders(false) ++ // TODO: hack around dontTouch not working in SFC + new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // TODO: hack around dontTouch not working in SFC new fftgenerator.WithFFTGenerator(numPoints=8, width=16, decPt=8) ++ // add 8-point mmio fft at the default addr (0x2400) with 16bit fixed-point numbers. new chipyard.example.WithStreamingPassthrough ++ // use top with tilelink-controlled streaming passthrough new chipyard.example.WithStreamingFIR ++ // use top with tilelink-controlled streaming FIR diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index c45fb6f2..798b086d 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -12,7 +12,7 @@ class RocketConfig extends Config( new chipyard.config.AbstractConfig) class TinyRocketConfig extends Config( - new chipyard.iobinders.WithDontTouchIOBinders(false) ++ // TODO FIX: Don't dontTouch the ports + new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // TODO FIX: Don't dontTouch the ports new freechips.rocketchip.subsystem.WithIncoherentBusTopology ++ // use incoherent bus topology new freechips.rocketchip.subsystem.WithNBanks(0) ++ // remove L2$ new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove backing memory @@ -97,6 +97,7 @@ class MulticlockRocketConfig extends Config( new chipyard.config.AbstractConfig) class CustomIOChipTopRocketConfig extends Config( + new chipyard.example.WithBrokenOutUARTIO ++ new chipyard.example.WithCustomChipTop ++ new chipyard.example.WithCustomIOCells ++ new freechips.rocketchip.subsystem.WithNBigCores(1) ++ // single rocket-core diff --git a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala index daa08265..edd9c438 100644 --- a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala @@ -77,7 +77,7 @@ class TutorialSha3BlackBoxConfig extends Config( // Tutorial Phase 5: Map a multicore heterogeneous SoC with multiple cores and memory-mapped accelerators class TutorialNoCConfig extends Config( - new chipyard.iobinders.WithDontTouchIOBinders(false) ++ + new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // Try changing the dimensions of the Mesh topology new constellation.soc.WithGlobalNoC(constellation.soc.GlobalNoCParams( NoCParams( diff --git a/generators/chipyard/src/main/scala/example/CustomChipTop.scala b/generators/chipyard/src/main/scala/example/CustomChipTop.scala index f2ebfc33..f710ccab 100644 --- a/generators/chipyard/src/main/scala/example/CustomChipTop.scala +++ b/generators/chipyard/src/main/scala/example/CustomChipTop.scala @@ -5,9 +5,11 @@ import chipyard.iobinders._ import org.chipsalliance.cde.config._ import freechips.rocketchip.diplomacy.{InModuleBody} +import freechips.rocketchip.subsystem.{PBUS, HasTileLinkLocations} import barstools.iocell.chisel._ import chipyard._ import chipyard.harness.{BuildTop} +import sifive.blocks.devices.uart._ // A "custom" IOCell with additional I/O // The IO don't do anything here in this example @@ -63,3 +65,21 @@ class WithCustomIOCells extends Config((site, here, up) => { class WithCustomChipTop extends Config((site, here, up) => { case BuildTop => (p: Parameters) => new CustomChipTop()(p) }) + +class WithBrokenOutUARTIO extends OverrideIOBinder({ + (system: HasPeripheryUARTModuleImp) => { + val uart_txd = IO(Output(Bool())) + val uart_rxd = IO(Input(Bool())) + system.uart(0).rxd := uart_rxd + uart_txd := system.uart(0).txd + val where = PBUS // TODO fix + val bus = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) + val freqMHz = bus.dtsFrequency.get / 1000000 + (Seq(UARTPort(() => { + val uart_wire = Wire(new UARTPortIO(system.uart(0).c)) + uart_wire.txd := uart_txd + uart_rxd := uart_wire.rxd + uart_wire + }, 0, freqMHz.toInt)), Nil) + } +}) diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index 165f9186..b51a66cd 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -86,8 +86,8 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule with HasChipyardPor o.reset := reset_wire } - ports = ports :+ ClockPort(clock_pad, 100.0) - ports = ports :+ ResetPort(reset_pad) + ports = ports :+ ClockPort(() => clock_pad, 100.0) + ports = ports :+ ResetPort(() => reset_pad) // For a real chip you should replace this ClockSourceAtFreqFromPlusArg // with a blackbox of whatever PLL is being integrated @@ -104,13 +104,13 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule with HasChipyardPor // Custom Boot //========================= val (custom_boot_pad, customBootIOCell) = IOCell.generateIOFromSignal(system.custom_boot_pin.get.getWrappedValue, "custom_boot", p(IOCellKey)) - ports = ports :+ CustomBootPort(custom_boot_pad) + ports = ports :+ CustomBootPort(() => custom_boot_pad) //========================= // Serialized TileLink //========================= val (serial_tl_pad, serialTLIOCells) = IOCell.generateIOFromSignal(system.serial_tl.get.getWrappedValue, "serial_tl", p(IOCellKey)) - ports = ports :+ SerialTLPort(serial_tl_pad, p(SerialTLKey).get, system.serdesser.get, 0) + ports = ports :+ SerialTLPort(() => serial_tl_pad, p(SerialTLKey).get, system.serdesser.get, 0) //========================= // JTAG/Debug @@ -149,7 +149,7 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule with HasChipyardPor IOCell.generateIOFromSignal(jtag_wire, "jtag", p(IOCellKey), abstractResetAsAsync = true) }.get - ports = ports :+ JTAGPort(jtag_pad) + ports = ports :+ JTAGPort(() => jtag_pad) //========================== // UART @@ -159,7 +159,7 @@ class FlatChipTop(implicit p: Parameters) extends LazyModule with HasChipyardPor val where = PBUS // TODO fix val bus = system.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) val freqMHz = bus.dtsFrequency.get / 1000000 - ports = ports :+ UARTPort(uart_pad, 0, freqMHz.toInt) + ports = ports :+ UARTPort(() => uart_pad, 0, freqMHz.toInt) //========================== // External interrupts (tie off) diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index 9052bc77..06e039bd 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -5,7 +5,7 @@ import chisel3._ import scala.collection.mutable.{ArrayBuffer, LinkedHashMap} import freechips.rocketchip.diplomacy.{LazyModule} import org.chipsalliance.cde.config.{Field, Parameters, Config} -import freechips.rocketchip.util.{ResetCatchAndSync} +import freechips.rocketchip.util.{ResetCatchAndSync, DontTouch} import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters, ClockSinkParameters, ClockParameters} import chipyard.stage.phases.TargetDirKey @@ -24,6 +24,7 @@ case object BuildTop extends Field[Parameters => LazyModule]((p: Parameters) => case object HarnessClockInstantiatorKey extends Field[() => HarnessClockInstantiator]() case object HarnessBinderClockFrequencyKey extends Field[Double](100.0) // MHz case object MultiChipIdx extends Field[Int](0) +case object DontTouchChipTopPorts extends Field[Boolean](true) class WithMultiChip(id: Int, p: Parameters) extends Config((site, here, up) => { case MultiChipParameters(`id`) => p @@ -39,6 +40,10 @@ class WithHarnessBinderClockFreqMHz(freqMHz: Double) extends Config((site, here, case HarnessBinderClockFrequencyKey => freqMHz }) +class WithDontTouchChipTopPorts(b: Boolean = true) extends Config((site, here, up) => { + case DontTouchChipTopPorts => b +}) + // A TestHarness mixing this in will // - use the HarnessClockInstantiator clock provide trait HasHarnessInstantiators { @@ -83,12 +88,18 @@ trait HasHarnessInstantiators { withClockAndReset (harnessBinderClock, harnessBinderReset) { lazyDuts.zipWithIndex.foreach { - case (d: HasChipyardPorts, i: Int) => ApplyHarnessBinders(this, d.ports)(chipParameters(i)) + case (d: HasChipyardPorts, i: Int) => { + ApplyHarnessBinders(this, d.ports)(chipParameters(i)) + } case _ => } ApplyMultiHarnessBinders(this, lazyDuts) } + duts.map(_ match { + case d: DontTouch => d.dontTouchPorts() + }) + val harnessBinderClk = harnessClockInstantiator.requestClockMHz("harnessbinder_clock", getHarnessBinderClockFreqMHz) println(s"Harness binder clock is $harnessBinderClockFreq") harnessBinderClock := harnessBinderClk diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 4b5ac1c6..c039154a 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -51,12 +51,6 @@ case object IOBinders extends Field[Map[String, Seq[IOBinderFunction]]]( Map[String, Seq[IOBinderFunction]]().withDefaultValue(Nil) ) -case object DontTouchIOBindersPorts extends Field[Boolean](true) - -class WithDontTouchIOBinders(b: Boolean = true) extends Config((site, here, up) => { - case DontTouchIOBindersPorts => b -}) - abstract trait HasIOBinders extends HasChipyardPorts { this: LazyModule => val lazySystem: LazyModule private val iobinders = p(IOBinders) @@ -84,10 +78,6 @@ abstract trait HasIOBinders extends HasChipyardPorts { this: LazyModule => def ports = portMap.getWrappedValue.values.flatten.toSeq InModuleBody { - if (p(DontTouchIOBindersPorts)) { - portMap.values.flatten.foreach { case (port: Port[Data]) => dontTouch(port.io) } - } - println("IOCells generated by IOBinders:") for ((k, v) <- iocellMap) { if (!v.isEmpty) { @@ -174,7 +164,7 @@ class WithGPIOCells extends OverrideIOBinder({ iocell.io.ie := pin.o.ie pin.i.ival := iocell.io.i iocell.io.pad <> g - (GPIOPort(g, i, j), iocell) + (GPIOPort(() => g, i, j), iocell) }).unzip }).unzip (ports2d.flatten, cells2d.flatten) @@ -186,7 +176,7 @@ class WithGPIOPunchthrough extends OverrideIOBinder({ val ports = system.gpio.zipWithIndex.map { case (gpio, i) => val io_gpio = IO(gpio.cloneType).suggestName(s"gpio_$i") io_gpio <> gpio - GPIOPinsPort(io_gpio, i) + GPIOPinsPort(() => io_gpio, i) } (ports, Nil) } @@ -197,7 +187,7 @@ class WithI2CPunchthrough extends OverrideIOBinder({ val ports = system.i2c.zipWithIndex.map { case (i2c, i) => val io_i2c = IO(i2c.cloneType).suggestName(s"i2c_$i") io_i2c <> i2c - I2CPort(i2c) + I2CPort(() => i2c) } (ports, Nil) } @@ -211,7 +201,7 @@ class WithUARTIOCells extends OverrideIOBinder({ val where = PBUS // TODO fix val bus = system.outer.asInstanceOf[HasTileLinkLocations].locateTLBusWrapper(where) val freqMHz = bus.dtsFrequency.get / 1000000 - (UARTPort(port, i, freqMHz.toInt), ios) + (UARTPort(() => port, i, freqMHz.toInt), ios) }).unzip (ports, cells2d.flatten) } @@ -229,7 +219,7 @@ class WithSPIIOPunchthrough extends OverrideLazyIOBinder({ val ports = spi.zipWithIndex.map({ case (s, i) => val io_spi = IO(s.cloneType).suggestName(s"spi_$i") io_spi <> s - SPIPort(io_spi) + SPIPort(() => io_spi) }) (ports, Nil) } @@ -259,7 +249,7 @@ class WithSPIFlashIOCells extends OverrideIOBinder({ iocell } - (SPIFlashPort(port, system.p(PeripherySPIFlashKey)(i), i), dqIOs ++ csIOs ++ sckIOs) + (SPIFlashPort(() => port, system.p(PeripherySPIFlashKey)(i), i), dqIOs ++ csIOs ++ sckIOs) }).unzip (ports, cells2d.flatten) } @@ -269,7 +259,7 @@ class WithExtInterruptIOCells extends OverrideIOBinder({ (system: HasExtInterruptsModuleImp) => { if (system.outer.nExtInterrupts > 0) { val (port: UInt, cells) = IOCell.generateIOFromSignal(system.interrupts, "ext_interrupts", system.p(IOCellKey), abstractResetAsAsync = true) - (Seq(ExtIntPort(port)), cells) + (Seq(ExtIntPort(() => port)), cells) } else { system.interrupts := DontCare // why do I have to drive this 0-wide wire??? (Nil, Nil) @@ -320,7 +310,7 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ // Add IOCells for the DMI/JTAG/APB ports val dmiTuple = debug.clockeddmi.map { d => val (port, cells) = IOCell.generateIOFromSignal(d, "dmi", p(IOCellKey), abstractResetAsAsync = true) - (DMIPort(port), cells) + (DMIPort(() => port), cells) } val jtagTuple = debug.systemjtag.map { j => @@ -330,7 +320,7 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ j.jtag.TDI := jtag_wire.TDI jtag_wire.TDO := j.jtag.TDO.data val (port, cells) = IOCell.generateIOFromSignal(jtag_wire, "jtag", p(IOCellKey), abstractResetAsAsync = true) - (JTAGPort(port), cells) + (JTAGPort(() => port), cells) } require(!debug.apb.isDefined) @@ -347,7 +337,7 @@ class WithSerialTLIOCells extends OverrideIOBinder({ val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => val sys = system.asInstanceOf[BaseSubsystem] val (port, cells) = IOCell.generateIOFromSignal(s.getWrappedValue, "serial_tl", sys.p(IOCellKey), abstractResetAsAsync = true) - (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), cells) + (SerialTLPort(() => port, sys.p(SerialTLKey).get, system.serdesser.get, id), cells) }).unzip (ports.toSeq, cells.flatten.toSeq) } @@ -359,7 +349,7 @@ class WithSerialTLPunchthrough extends OverrideIOBinder({ val sys = system.asInstanceOf[BaseSubsystem] val port = IO(s.getWrappedValue.cloneType) port <> s.getWrappedValue - (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), Nil) + (SerialTLPort(() => port, sys.p(SerialTLKey).get, system.serdesser.get, id), Nil) }).unzip (ports.toSeq, cells.flatten.toSeq) } @@ -377,7 +367,7 @@ class WithAXI4MemPunchthrough extends OverrideLazyIOBinder({ val port = IO(new ClockedIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mem_${i}") port.bits <> m port.clock := clockBundle.clock - AXI4MemPort(port, p(ExtMem).get, system.memAXI4Node.edges.in(i), p(MemoryBusKey).dtsFrequency.get.toInt) + AXI4MemPort(() => port, p(ExtMem).get, system.memAXI4Node.edges.in(i), p(MemoryBusKey).dtsFrequency.get.toInt) }).toSeq (ports, Nil) } @@ -396,7 +386,7 @@ class WithAXI4MMIOPunchthrough extends OverrideLazyIOBinder({ val port = IO(new ClockedIO(DataMirror.internal.chiselTypeClone[AXI4Bundle](m))).suggestName(s"axi4_mmio_${i}") port.bits <> m port.clock := clockBundle.clock - AXI4MMIOPort(port, p(ExtBus).get, system.mmioAXI4Node.edges.in(i)) + AXI4MMIOPort(() => port, p(ExtBus).get, system.mmioAXI4Node.edges.in(i)) }).toSeq (ports, Nil) } @@ -415,7 +405,7 @@ class WithL2FBusAXI4Punchthrough extends OverrideLazyIOBinder({ val port = IO(new ClockedIO(Flipped(DataMirror.internal.chiselTypeClone[AXI4Bundle](m)))).suggestName(s"axi4_fbus_${i}") m <> port.bits port.clock := clockBundle.clock - AXI4InPort(port, p(ExtIn).get) + AXI4InPort(() => port, p(ExtIn).get) }).toSeq (ports, Nil) } @@ -429,7 +419,7 @@ class WithBlockDeviceIOPunchthrough extends OverrideIOBinder({ val bdParams = p(BlockDeviceKey).get val port = IO(new ClockedIO(new BlockDeviceIO(bdParams))).suggestName("blockdev") port <> bdev - BlockDevicePort(port, bdParams) + BlockDevicePort(() => port, bdParams) }).toSeq (ports, Nil) } @@ -441,7 +431,7 @@ class WithNICIOPunchthrough extends OverrideIOBinder({ val p = GetSystemParameters(system) val port = IO(new ClockedIO(new NICIOvonly)).suggestName("nic") port <> n - NICPort(port, p(NICKey).get) + NICPort(() => port, p(NICKey).get) }).toSeq (ports, Nil) } @@ -451,7 +441,7 @@ class WithTraceGenSuccessPunchthrough extends OverrideIOBinder({ (system: TraceGenSystemModuleImp) => { val success: Bool = IO(Output(Bool())).suggestName("success") success := system.success - (Seq(SuccessPort(success)), Nil) + (Seq(SuccessPort(() => success)), Nil) } }) @@ -474,7 +464,7 @@ class WithTraceIOPunchthrough extends OverrideIOBinder({ bootrom = chipyardSystem.bootROM.map(_.module.contents.toArray.mkString(" ")).getOrElse(""), has_dtm = p(ExportDebug).protocols.contains(DMI) // assume that exposing clockeddmi means we will connect SimDTM ) - TracePort(trace, cfg) + TracePort(() => trace, cfg) } (ports.toSeq, Nil) } @@ -484,7 +474,7 @@ class WithCustomBootPin extends OverrideIOBinder({ (system: CanHavePeripheryCustomBootPin) => system.custom_boot_pin.map({ p => val sys = system.asInstanceOf[BaseSubsystem] val (port, cells) = IOCell.generateIOFromSignal(p.getWrappedValue, "custom_boot", sys.p(IOCellKey), abstractResetAsAsync = true) - (Seq(CustomBootPort(port)), cells) + (Seq(CustomBootPort(() => port)), cells) }).getOrElse((Nil, Nil)) }) @@ -493,7 +483,7 @@ class WithUARTTSIPunchthrough extends OverrideIOBinder({ val sys = system.asInstanceOf[BaseSubsystem] val uart_tsi = IO(new UARTTSIIO(p.uartParams)) uart_tsi <> p - (Seq(UARTTSIPort(uart_tsi)), Nil) + (Seq(UARTTSIPort(() => uart_tsi)), Nil) }).getOrElse((Nil, Nil)) }) @@ -501,7 +491,7 @@ class WithTLMemPunchthrough extends OverrideIOBinder({ (system: CanHaveMasterTLMemPort) => { val io_tl_mem_pins_temp = IO(DataMirror.internal.chiselTypeClone[HeterogeneousBag[TLBundle]](system.mem_tl)).suggestName("tl_slave") io_tl_mem_pins_temp <> system.mem_tl - (Seq(TLMemPort(io_tl_mem_pins_temp)), Nil) + (Seq(TLMemPort(() => io_tl_mem_pins_temp)), Nil) } }) diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index 391d3baf..c5c9f19e 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -16,7 +16,9 @@ import freechips.rocketchip.util.{HeterogeneousBag} import freechips.rocketchip.tilelink.{TLBundle} trait Port[T <: Data] { - val io: T + val getIO: () => T + // port.io should only be called in the TestHarness context + lazy val io = getIO() } trait HasChipyardPorts { @@ -24,75 +26,75 @@ trait HasChipyardPorts { } // These case classes are generated by IOBinders, and interpreted by HarnessBinders -case class GPIOPort (val io: Analog, val gpioId: Int, val pinId: Int) +case class GPIOPort (val getIO: () => Analog, val gpioId: Int, val pinId: Int) extends Port[Analog] -case class GPIOPinsPort (val io: GPIOPortIO, val gpioId: Int) +case class GPIOPinsPort (val getIO: () => GPIOPortIO, val gpioId: Int) extends Port[GPIOPortIO] -case class I2CPort (val io: sifive.blocks.devices.i2c.I2CPort) +case class I2CPort (val getIO: () => sifive.blocks.devices.i2c.I2CPort) extends Port[sifive.blocks.devices.i2c.I2CPort] -case class UARTPort (val io: UARTPortIO, val uartNo: Int, val freqMHz: Int) +case class UARTPort (val getIO: () => UARTPortIO, val uartNo: Int, val freqMHz: Int) extends Port[UARTPortIO] -case class SPIFlashPort (val io: SPIChipIO, val params: SPIFlashParams, val spiId: Int) +case class SPIFlashPort (val getIO: () => SPIChipIO, val params: SPIFlashParams, val spiId: Int) extends Port[SPIChipIO] -case class SPIPort (val io: SPIPortIO) +case class SPIPort (val getIO: () => SPIPortIO) extends Port[SPIPortIO] -case class BlockDevicePort (val io: ClockedIO[BlockDeviceIO], val params: BlockDeviceConfig) +case class BlockDevicePort (val getIO: () => ClockedIO[BlockDeviceIO], val params: BlockDeviceConfig) extends Port[ClockedIO[BlockDeviceIO]] -case class NICPort (val io: ClockedIO[NICIOvonly], val params: NICConfig) +case class NICPort (val getIO: () => ClockedIO[NICIOvonly], val params: NICConfig) extends Port[ClockedIO[NICIOvonly]] -case class AXI4MemPort (val io: ClockedIO[AXI4Bundle], val params: MemoryPortParams, val edge: AXI4EdgeParameters, val clockFreqMHz: Int) +case class AXI4MemPort (val getIO: () => ClockedIO[AXI4Bundle], val params: MemoryPortParams, val edge: AXI4EdgeParameters, val clockFreqMHz: Int) extends Port[ClockedIO[AXI4Bundle]] -case class AXI4MMIOPort (val io: ClockedIO[AXI4Bundle], val params: MasterPortParams, val edge: AXI4EdgeParameters) +case class AXI4MMIOPort (val getIO: () => ClockedIO[AXI4Bundle], val params: MasterPortParams, val edge: AXI4EdgeParameters) extends Port[ClockedIO[AXI4Bundle]] -case class AXI4InPort (val io: ClockedIO[AXI4Bundle], val params: SlavePortParams) +case class AXI4InPort (val getIO: () => ClockedIO[AXI4Bundle], val params: SlavePortParams) extends Port[ClockedIO[AXI4Bundle]] -case class ExtIntPort (val io: UInt) +case class ExtIntPort (val getIO: () => UInt) extends Port[UInt] -case class DMIPort (val io: ClockedDMIIO) +case class DMIPort (val getIO: () => ClockedDMIIO) extends Port[ClockedDMIIO] -case class JTAGPort (val io: JTAGChipIO) +case class JTAGPort (val getIO: () => JTAGChipIO) extends Port[JTAGChipIO] -case class SerialTLPort (val io: ClockedIO[SerialIO], val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) +case class SerialTLPort (val getIO: () => ClockedIO[SerialIO], val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) extends Port[ClockedIO[SerialIO]] -case class UARTTSIPort (val io: UARTTSIIO) +case class UARTTSIPort (val getIO: () => UARTTSIIO) extends Port[UARTTSIIO] -case class SuccessPort (val io: Bool) +case class SuccessPort (val getIO: () => Bool) extends Port[Bool] -case class TracePort (val io: TraceOutputTop, val cosimCfg: SpikeCosimConfig) +case class TracePort (val getIO: () => TraceOutputTop, val cosimCfg: SpikeCosimConfig) extends Port[TraceOutputTop] -case class CustomBootPort (val io: Bool) +case class CustomBootPort (val getIO: () => Bool) extends Port[Bool] -case class ClockPort (val io: Clock, val freqMHz: Double) +case class ClockPort (val getIO: () => Clock, val freqMHz: Double) extends Port[Clock] -case class ResetPort (val io: AsyncReset) +case class ResetPort (val getIO: () => AsyncReset) extends Port[Reset] -case class DebugResetPort (val io: Reset) +case class DebugResetPort (val getIO: () => Reset) extends Port[Reset] -case class JTAGResetPort (val io: Reset) +case class JTAGResetPort (val getIO: () => Reset) extends Port[Reset] -case class TLMemPort (val io: HeterogeneousBag[TLBundle]) +case class TLMemPort (val getIO: () => HeterogeneousBag[TLBundle]) extends Port[HeterogeneousBag[TLBundle]] From 88a33be7e58b13eca531cff5154e1b3a3017bbcb Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 31 Oct 2023 08:32:03 -0700 Subject: [PATCH 053/184] Respect DontTouchChipTopPorts key --- .../src/main/scala/harness/HasHarnessInstantiators.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index 06e039bd..35331715 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -96,9 +96,11 @@ trait HasHarnessInstantiators { ApplyMultiHarnessBinders(this, lazyDuts) } - duts.map(_ match { - case d: DontTouch => d.dontTouchPorts() - }) + if (p(DontTouchChipTopPorts)) { + duts.map(_ match { + case d: DontTouch => d.dontTouchPorts() + }) + } val harnessBinderClk = harnessClockInstantiator.requestClockMHz("harnessbinder_clock", getHarnessBinderClockFreqMHz) println(s"Harness binder clock is $harnessBinderClockFreq") From a8766ea8fc5fd46dcff115eb08bfb283d60e37cc Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 31 Oct 2023 14:25:16 -0700 Subject: [PATCH 054/184] Precisely specify bus frequencies --- fpga/src/main/scala/arty/Configs.scala | 2 ++ fpga/src/main/scala/arty100t/Configs.scala | 1 + fpga/src/main/scala/nexysvideo/Configs.scala | 3 ++- fpga/src/main/scala/vc707/Configs.scala | 2 +- fpga/src/main/scala/vcu118/Configs.scala | 7 +++++-- generators/chipyard/src/main/scala/Subsystem.scala | 2 +- .../chipyard/src/main/scala/config/ChipConfigs.scala | 3 +++ generators/firechip/src/main/scala/TargetConfigs.scala | 9 +++++++++ 8 files changed, 24 insertions(+), 5 deletions(-) diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index 3e208060..1bf2b643 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -27,6 +27,8 @@ class WithArtyTweaks extends Config( new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.config.WithDTSTimebase(32000) ++ new chipyard.config.WithSystemBusFrequency(32) ++ + new chipyard.config.WithFrontBusFrequency(32) ++ + new chipyard.config.WithControlBusFrequency(32) ++ new chipyard.config.WithPeripheryBusFrequency(32) ++ new testchipip.WithNoSerialTL ) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 4a0fb293..f4e25fd2 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -32,6 +32,7 @@ class WithArty100TTweaks extends Config( new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag diff --git a/fpga/src/main/scala/nexysvideo/Configs.scala b/fpga/src/main/scala/nexysvideo/Configs.scala index f31e38d1..01b095fa 100644 --- a/fpga/src/main/scala/nexysvideo/Configs.scala +++ b/fpga/src/main/scala/nexysvideo/Configs.scala @@ -33,6 +33,7 @@ class WithNexysVideoTweaks extends Config( new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag @@ -69,4 +70,4 @@ class TinyRocketNexysVideoConfig extends Config( new WithTinyNexysVideoTweaks ++ new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.TinyRocketConfig) - // DOC include end: WithTinyNexysVideoTweaks and Rocket \ No newline at end of file + // DOC include end: WithTinyNexysVideoTweaks and Rocket diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index b37064ac..1be812fa 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -35,7 +35,7 @@ class WithSystemModifications extends Config((site, here, up) => { p.copy(hang = 0x10000, contentFileName = s"./fpga/src/main/resources/vc707/sdboot/build/sdboot.bin") } case ExtMem => up(ExtMem, site).map(x => x.copy(master = x.master.copy(size = site(VC7074GDDRSize)))) // set extmem to DDR size (note the size) - case SerialTLKey => None // remove serialized tl port + case SerialTLKey => Nil // remove serialized tl port }) class WithVC707Tweaks extends Config ( diff --git a/fpga/src/main/scala/vcu118/Configs.scala b/fpga/src/main/scala/vcu118/Configs.scala index 35632961..32dc3c2c 100644 --- a/fpga/src/main/scala/vcu118/Configs.scala +++ b/fpga/src/main/scala/vcu118/Configs.scala @@ -36,7 +36,7 @@ class WithSystemModifications extends Config((site, here, up) => { p.copy(hang = 0x10000, contentFileName = s"./fpga/src/main/resources/vcu118/sdboot/build/sdboot.bin") } case ExtMem => up(ExtMem, site).map(x => x.copy(master = x.master.copy(size = site(VCU118DDRSize)))) // set extmem to DDR size - case SerialTLKey => None // remove serialized tl port + case SerialTLKey => Nil // remove serialized tl port }) // DOC include start: AbstractVCU118 and Rocket @@ -46,6 +46,7 @@ class WithVCU118Tweaks extends Config( new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithMemoryBusFrequency(100) ++ new chipyard.config.WithSystemBusFrequency(100) ++ + new chipyard.config.WithControlBusFrequency(100) ++ new chipyard.config.WithPeripheryBusFrequency(100) ++ new WithFPGAFrequency(100) ++ // default 100MHz freq // harness binders @@ -76,7 +77,9 @@ class BoomVCU118Config extends Config( class WithFPGAFrequency(fMHz: Double) extends Config( new chipyard.harness.WithHarnessBinderClockFreqMHz(fMHz) ++ new chipyard.config.WithSystemBusFrequency(fMHz) ++ - new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ // assumes using PBUS as default freq. + new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ + new chipyard.config.WithControlBusFrequency(fMHz) ++ + new chipyard.config.WithFrontBusFrequency(fMHz) ++ new chipyard.config.WithMemoryBusFrequency(fMHz) ) diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index 5d2ba60c..a3ba679e 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -29,7 +29,7 @@ import testchipip.{CanHavePeripheryTLSerial, SerialTLKey} trait CanHaveHTIF { this: BaseSubsystem => // Advertise HTIF if system can communicate with fesvr if (this match { - case _: CanHavePeripheryTLSerial if (!p(SerialTLKey).isEmpty) => true + case _: CanHavePeripheryTLSerial if (p(SerialTLKey).size != 0) => true case _: HasPeripheryDebug if (!p(DebugModuleKey).isEmpty && p(ExportDebug).dmi) => true case _ => false }) { diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index b8b02dfa..caf150ae 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -85,6 +85,9 @@ class ChipBringupHostConfig extends Config( new chipyard.config.WithFrontBusFrequency(75.0) ++ // run all buses of this system at 75 MHz new chipyard.config.WithMemoryBusFrequency(75.0) ++ new chipyard.config.WithPeripheryBusFrequency(75.0) ++ + new chipyard.config.WithSystemBusFrequency(75.0) ++ + new chipyard.config.WithControlBusFrequency(75.0) ++ + new chipyard.config.WithOffchipBusFrequency(75.0) ++ // Base is the no-cores config new chipyard.NoCoresConfig) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 49e85c27..0ceaea1c 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -123,6 +123,7 @@ class WithFireSimHighPerfClocking extends Config( new chipyard.config.WithPeripheryBusFrequency(3200.0) ++ new chipyard.config.WithSystemBusFrequency(3200.0) ++ new chipyard.config.WithFrontBusFrequency(3200.0) ++ + new chipyard.config.WithControlBusFrequency(3200.0) ++ // Optional: These three configs put the DRAM memory system in it's own clock domain. // Removing the first config will result in the FASED timing model running // at the pbus freq (above, 3.2 GHz), which is outside the range of valid DDR3 speedgrades. @@ -138,8 +139,10 @@ class WithFireSimConfigTweaks extends Config( // Using some other frequency will require runnings the FASED runtime configuration generator // to generate faithful DDR3 timing values. new chipyard.config.WithSystemBusFrequency(1000.0) ++ + new chipyard.config.WithControlBusFrequency(1000.0) ++ new chipyard.config.WithPeripheryBusFrequency(1000.0) ++ new chipyard.config.WithMemoryBusFrequency(1000.0) ++ + new chipyard.config.WithFrontBusFrequency(1000.0) ++ new WithFireSimDesignTweaks ) @@ -185,6 +188,8 @@ class WithFireSimTestChipConfigTweaks extends Config( new chipyard.config.WithSystemBusFrequency(500.0) ++ // Realistic system bus frequency new chipyard.config.WithMemoryBusFrequency(1000.0) ++ // Needs to be 1000 MHz to model DDR performance accurately new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Match the sbus and pbus frequency + new chipyard.config.WithFrontBusFrequency(500.0) ++ // Match the sbus and fbus frequency + new chipyard.config.WithControlBusFrequency(500.0) ++ // Match the sbus and cbus frequency new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ // Crossing specifications new chipyard.config.WithCbusToPbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossing between PBUS and CBUS @@ -245,6 +250,10 @@ class FireSimSmallSystemConfig extends Config( new WithDefaultMemModel ++ new WithBootROM ++ new chipyard.config.WithPeripheryBusFrequency(3200.0) ++ + new chipyard.config.WithControlBusFrequency(3200.0) ++ + new chipyard.config.WithSystemBusFrequency(3200.0) ++ + new chipyard.config.WithFrontBusFrequency(3200.0) ++ + new chipyard.config.WithMemoryBusFrequency(3200.0) ++ new WithoutClockGating ++ new WithoutTLMonitors ++ new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++ From 52215f3d40a0f493506d6b1e09b7d1d2af0c66bc Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 31 Oct 2023 18:46:15 -0700 Subject: [PATCH 055/184] Bump testchipip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index d023a317..23d6a380 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit d023a3175cbdb7343cdb26aa8450e86e978c591d +Subproject commit 23d6a3805f8f5081a8ec8cb5a9392fde3204772c From 6bb173bd219e8cb14fd5a3f0471f0d57f9644464 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 31 Oct 2023 21:40:45 -0700 Subject: [PATCH 056/184] Fix vc707 clock freqs --- fpga/src/main/scala/vc707/Configs.scala | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index 1be812fa..124920d7 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -45,6 +45,8 @@ class WithVC707Tweaks extends Config ( new chipyard.config.WithMemoryBusFrequency(50.0) ++ new chipyard.config.WithSystemBusFrequency(50.0) ++ new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.config.WithControlBusFrequency(50.0) ++ + new chipyard.config.WithFrontBusFrequency(50.0) ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ new WithFPGAFrequency(50) ++ // default 50MHz freq @@ -74,8 +76,11 @@ class BoomVC707Config extends Config ( ) class WithFPGAFrequency(fMHz: Double) extends Config ( - new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ // assumes using PBUS as default freq. - new chipyard.config.WithMemoryBusFrequency(fMHz) + new chipyard.config.WithPeripheryBusFrequency(fMHz) ++ + new chipyard.config.WithMemoryBusFrequency(fMHz) ++ + new chipyard.config.WithSystemBusFrequency(fMHz) ++ + new chipyard.config.WithControlBusFrequency(fMHz) ++ + new chipyard.config.WithFrontBusFrequency(fMHz) ) class WithFPGAFreq25MHz extends WithFPGAFrequency(25) From d96629c6f15f24ad6cff182d3af4231c6b210468 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Wed, 1 Nov 2023 11:45:50 -0700 Subject: [PATCH 057/184] ADD: bump testchipip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index 307fca3c..e3fa3072 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 307fca3c3ec4484d071744df6752bbbb77be7ddb +Subproject commit e3fa307268e0ed97d0389edd2c45ac0dd4993e72 From def0115fa4e46dbf86597e46fecfd1b56f7a46de Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Wed, 1 Nov 2023 12:06:32 -0700 Subject: [PATCH 058/184] Fix BB resource references | More BB docs --- common.mk | 6 ++-- .../Incorporating-Verilog-Blocks.rst | 29 ++++++++++++++++++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/common.mk b/common.mk index c8c29b1f..95af7725 100644 --- a/common.mk +++ b/common.mk @@ -119,12 +119,12 @@ $(BOOTROM_TARGETS): $(build_dir)/bootrom.%.img: $(TESTCHIP_RSRCS_DIR)/testchipip ######################################################################################### # compile scala jars ######################################################################################### -$(CHIPYARD_CLASSPATH_TARGETS) &: $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) +$(CHIPYARD_CLASSPATH_TARGETS) &: $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(CHIPYARD_VLOG_SOURCES) mkdir -p $(dir $@) $(call run_sbt_assembly,$(SBT_PROJECT),$(CHIPYARD_CLASSPATH)) # order only dependency between sbt runs needed to avoid concurrent sbt runs -$(TAPEOUT_CLASSPATH_TARGETS) &: $(BARSTOOLS_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) | $(CHIPYARD_CLASSPATH_TARGETS) +$(TAPEOUT_CLASSPATH_TARGETS) &: $(BARSTOOLS_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(BARSTOOLS_VLOG_SOURCES) | $(CHIPYARD_CLASSPATH_TARGETS) mkdir -p $(dir $@) $(call run_sbt_assembly,tapeout,$(TAPEOUT_CLASSPATH)) @@ -227,7 +227,7 @@ $(FINAL_ANNO_FILE): $(EXTRA_ANNO_FILE) $(SFC_EXTRA_ANNO_FILE) $(SFC_LEVEL) touch $@ $(SFC_MFC_TARGETS) &: private TMP_DIR := $(shell mktemp -d -t cy-XXXXXXXX) -$(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(SFC_LEVEL) $(EXTRA_FIRRTL_OPTIONS) $(MFC_LOWERING_OPTIONS) $(CHIPYARD_VLOG_SOURCES) $(BARSTOOLS_VLOG_SOURCES) +$(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(SFC_LEVEL) $(EXTRA_FIRRTL_OPTIONS) $(MFC_LOWERING_OPTIONS) rm -rf $(GEN_COLLATERAL_DIR) $(call run_jar_scala_main,$(TAPEOUT_CLASSPATH),barstools.tapeout.transforms.GenerateModelStageMain,\ --no-dedup \ diff --git a/docs/Customization/Incorporating-Verilog-Blocks.rst b/docs/Customization/Incorporating-Verilog-Blocks.rst index 3198d087..7724ffb2 100644 --- a/docs/Customization/Incorporating-Verilog-Blocks.rst +++ b/docs/Customization/Incorporating-Verilog-Blocks.rst @@ -161,4 +161,31 @@ transformed or augmented by any Chipyard FIRRTL transform. As mentioned earlier in this section, ``BlackBox`` resource files must be integrated into the build process, so any project providing ``BlackBox`` resources must be made visible to the ``tapeout`` project -in ``build.sbt`` +in ``build.sbt``. + +Differences between ``HasBlackBoxPath`` and ``HasBlackBoxResource`` +------------------------------------------------------------------- + +Chisel provides two mechanisms for integrating blackbox files into a Chisel project that work slightly differently in Chipyard: ``HasBlackBoxPath`` and ``HasBlackBoxResource``. + +``HasBlackBoxResource`` incorporates extra files by looking up the relative path of the files within the ``src/main/resources`` area of project. +This requires that the file added by ``addResource`` is present in the ``src/main/resources`` area and is **not** auto-generated (the file is static throughout the lifetime of generating RTL). +This is due to the fact that when the Chisel sources are compiled they are put in a ``jar`` file, along with the ``src/main/resources`` area, and that ``jar`` is used to run the Chisel generator. +Files referenced by the ``addResource`` must be located within this ``jar`` file during the Chisel elaboration. +Thus if a file is generated during Chisel generation it will not be present in the ``jar`` file until the next time the Chisel sources are compiled. + +``HasBlackBoxPath`` differs in that it incorporates extra files by using an absolute path to them. +Later in the build process, the FIRRTL compiler will copy the file from that location to the generated sources directory. +Thus, the file must be present before the FIRRTL compiler is run (i.e. the file doesn't need to be in the ``src/main/resources`` or it can be auto-generated during Chisel elaboration). + +Additionally, both mechanisms do not enforce the order of files added. +For example: + +.. code-block:: scala + + addResource("fileA") + addResource("fileB") + +In this case, ``fileA`` is not guaranteed to be before ``fileB`` when passed to downstream tools. +To bypass this, it is recommended to auto-generate a single file with the ordering needed by concatenating the files and using ``addPath`` given by ``HasBlackBoxPath``. +An example of this is https://github.com/ucb-bar/ibex-wrapper/blob/main/src/main/scala/IbexCoreBlackbox.scala. From 42eb570fd81eb5b6e527703cc7802aa42ce44d5c Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Wed, 1 Nov 2023 12:17:03 -0700 Subject: [PATCH 059/184] BUGGY COMMIT: Shows MFC issue with multiple same bb paths --- .../chipyard/src/main/scala/example/GCD.scala | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/generators/chipyard/src/main/scala/example/GCD.scala b/generators/chipyard/src/main/scala/example/GCD.scala index 5e6c5d67..b6102b44 100644 --- a/generators/chipyard/src/main/scala/example/GCD.scala +++ b/generators/chipyard/src/main/scala/example/GCD.scala @@ -46,10 +46,11 @@ trait HasGCDIO extends BaseModule { } // DOC include start: GCD blackbox -class GCDMMIOBlackBox(val w: Int) extends BlackBox(Map("WIDTH" -> IntParam(w))) with HasBlackBoxResource +class GCDMMIOBlackBox(val w: Int) extends BlackBox(Map("WIDTH" -> IntParam(w))) with HasBlackBoxPath with HasGCDIO { - addResource("/vsrc/GCDMMIOBlackBox.v") + val chipyardDir = System.getProperty("user.dir") + addPath(s"$chipyardDir/generators/chipyard/src/main/resources/vsrc/GCDMMIOBlackBox.v") } // DOC include end: GCD blackbox @@ -113,20 +114,36 @@ trait GCDModule extends HasRegMap { Module(new GCDMMIOChiselModule(params.width)) } + val impl1 = if (params.useBlackBox) { + Module(new GCDMMIOBlackBox(params.width)) + } else { + Module(new GCDMMIOChiselModule(params.width)) + } + + impl.io.clock := clock impl.io.reset := reset.asBool impl.io.x := x impl.io.y := y.bits impl.io.input_valid := y.valid - y.ready := impl.io.input_ready + y.ready := impl.io.input_ready && impl1.io.input_ready gcd.bits := impl.io.gcd - gcd.valid := impl.io.output_valid + gcd.valid := impl.io.output_valid && impl1.io.output_valid impl.io.output_ready := gcd.ready - status := Cat(impl.io.input_ready, impl.io.output_valid) - io.gcd_busy := impl.io.busy + status := Cat(impl.io.input_ready, impl.io.output_valid, impl1.io.input_ready, impl1.io.output_valid) + io.gcd_busy := impl.io.busy && impl1.io.busy + + impl1.io.clock := clock + impl1.io.reset := reset.asBool + + impl1.io.x := x + impl1.io.y := y.bits + impl1.io.input_valid := y.valid + + impl1.io.output_ready := gcd.ready regmap( 0x00 -> Seq( From 2ced8f17539d1376a774b1befb5e1682cd5e5e8e Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Wed, 1 Nov 2023 17:47:31 -0700 Subject: [PATCH 060/184] Fix regex for similar module names that are uniquified --- scripts/uniquify-module-names.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/uniquify-module-names.py b/scripts/uniquify-module-names.py index d53eb2f0..7709a554 100755 --- a/scripts/uniquify-module-names.py +++ b/scripts/uniquify-module-names.py @@ -109,7 +109,7 @@ def generate_copy(c, sfx): new_file = os.path.join(args.gcpath, new_file) shutil.copy(cur_file, new_file) - bash(f"sed -i s/\"module {cur_name}\"/\"module {new_name}\"/ {new_file}") + bash(f"sed -i 's/module\( \+\){cur_name}/module\\1{new_name}/' {new_file}") return new_file def bfs_uniquify_modules(tree, common_fnames, verilog_module_filename): @@ -136,7 +136,7 @@ def bfs_uniquify_modules(tree, common_fnames, verilog_module_filename): new_file = generate_copy(cur_file, MODEL_SFX) if parent is not None and ((parent, mod) not in updated_submodule): parent_file = os.path.join(args.gcpath, verilog_module_filename[parent]) - bash(f"sed -i s/\"{mod} \"/\"{mod}_{MODEL_SFX} \"/ {parent_file}") + bash(f"sed -i 's/\( \*\){mod}\( \+\)/\\1{mod}_{MODEL_SFX}\\2/' {parent_file}") updated_submodule.add((parent, mod)) # add the uniquified module to the verilog_modul_filename dict From 10b5fbc21a4d63c5f0e00662f7d155916f6906fb Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 12:01:38 -0700 Subject: [PATCH 061/184] Add Caliptra AES256 ECB engine as RoCC accelerator --- .github/scripts/defaults.sh | 3 ++- .gitmodules | 6 ++++++ build.sbt | 12 +++++++++++- generators/caliptra-aes-acc | 1 + .../main/scala/config/RoCCAcceleratorConfigs.scala | 6 ++++++ generators/rocc-acc-utils | 1 + 6 files changed, 27 insertions(+), 2 deletions(-) create mode 160000 generators/caliptra-aes-acc create mode 160000 generators/rocc-acc-utils diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 08637428..ed8cd7be 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -30,7 +30,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache declare -A grouping grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boom chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle" grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboom chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered" -grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla" +grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb" grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar" @@ -67,6 +67,7 @@ mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig" mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig" mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig" mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig" +mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig verilog" mapping["constellation"]=" SUB_PROJECT=constellation" mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" diff --git a/.gitmodules b/.gitmodules index d74f7e4d..622c5f68 100644 --- a/.gitmodules +++ b/.gitmodules @@ -133,3 +133,9 @@ [submodule "generators/hardfloat"] path = generators/hardfloat url = https://github.com/ucb-bar/berkeley-hardfloat.git +[submodule "generators/caliptra-aes-acc"] + path = generators/caliptra-aes-acc + url = https://github.com/ucb-bar/caliptra-aes-acc +[submodule "generators/rocc-acc-utils"] + path = generators/rocc-acc-utils + url = https://github.com/ucb-bar/rocc-acc-utils diff --git a/build.sbt b/build.sbt index 76147789..287b9abe 100644 --- a/build.sbt +++ b/build.sbt @@ -150,7 +150,7 @@ lazy val chipyard = (project in file("generators/chipyard")) sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, - constellation, mempress, barf, shuttle) + constellation, mempress, barf, shuttle, caliptra_aes) .settings(libraryDependencies ++= rocketLibDeps.value) .settings( libraryDependencies ++= Seq( @@ -234,6 +234,16 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) +lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) + .dependsOn(rocketchip, rocc-acc-utils, midasTargetUtils) + .settings(libraryDependencies ++= rocketLibDeps.value) + .settings(commonSettings) + +llazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) + .dependsOn(rocketchip) + .settings(libraryDependencies ++= rocketLibDeps.value) + .settings(commonSettings) + lazy val iocell = Project(id = "iocell", base = file("./tools/barstools/") / "iocell") .settings(chiselSettings) .settings(commonSettings) diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc new file mode 160000 index 00000000..d667a7a0 --- /dev/null +++ b/generators/caliptra-aes-acc @@ -0,0 +1 @@ +Subproject commit d667a7a0fd1f37acb3d4df7acb2024a27e151217 diff --git a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala index 4077fcbd..0813b059 100644 --- a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala @@ -56,3 +56,9 @@ class HwachaLargeBoomConfig extends Config( new boom.common.WithNLargeBooms(1) ++ new chipyard.config.WithSystemBusWidth(128) ++ new chipyard.config.AbstractConfig) + +class AES256ECBRocketConfig extends Config( + new aes.WithAES256ECBAccel ++ // use Caliptra AES 256 ECB accelerator + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.WithSystemBusWidth(128) ++ + new chipyard.config.AbstractConfig) diff --git a/generators/rocc-acc-utils b/generators/rocc-acc-utils new file mode 160000 index 00000000..fa4e29af --- /dev/null +++ b/generators/rocc-acc-utils @@ -0,0 +1 @@ +Subproject commit fa4e29afcb7547e7951475febceb93cdfe46c76a From 672392360ea1c3787d8a0195d29be2ad30d676c1 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 12:02:39 -0700 Subject: [PATCH 062/184] Fix build.sbt --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 287b9abe..19199212 100644 --- a/build.sbt +++ b/build.sbt @@ -235,7 +235,7 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(commonSettings) lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) - .dependsOn(rocketchip, rocc-acc-utils, midasTargetUtils) + .dependsOn(rocketchip, rocc_acc_utils, midasTargetUtils) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) From be22a1d3dc8f0f6fcedfa6769422b75cf07ca9e0 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 2 Nov 2023 12:20:09 -0700 Subject: [PATCH 063/184] [ci] Update check-commit with missing submodules --- .github/scripts/check-commit.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/scripts/check-commit.sh b/.github/scripts/check-commit.sh index b15c571d..40e7d19d 100755 --- a/.github/scripts/check-commit.sh +++ b/.github/scripts/check-commit.sh @@ -45,7 +45,7 @@ search () { done } -submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle") +submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat") dir="generators" branches=("master" "main" "dev") search @@ -81,14 +81,20 @@ dir="toolchains" branches=("master") search +submodules=("firesim") +dir="sims" +branches=("main") +search + + submodules=("coremark" "firemarshal" "nvdla-workload" "spec2017") dir="software" branches=("master" "dev") search -submodules=("DRAMSim2" "axe" "barstools" "dsptools" "rocket-dsp-utils" "torture") +submodules=("DRAMSim2" "axe" "barstools" "dsptools" "rocket-dsp-utils" "torture" "fixedpoint" "cde") dir="tools" -branches=("master" "dev") +branches=("master" "dev" "main") search submodules=("fpga-shells") From 5eae64667b6c06974d5056933f4d8a42baa1c5b5 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 2 Nov 2023 12:37:41 -0700 Subject: [PATCH 064/184] Update docs to reflect bootrom change --- docs/Customization/Boot-Process.rst | 2 +- docs/Prototyping/Arty.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Customization/Boot-Process.rst b/docs/Customization/Boot-Process.rst index a84c4e99..52ea32c1 100644 --- a/docs/Customization/Boot-Process.rst +++ b/docs/Customization/Boot-Process.rst @@ -12,7 +12,7 @@ Device Tree Binary (dtb) which details the components of the system. The assembly for the BootROM code is located in `generators/testchipip/src/main/resources/testchipip/bootrom/bootrom.S `_. The BootROM address space starts at ``0x10000`` (determined by the ``BootROMParams`` key in the configuration) and execution starts at address -``0x10040`` (given by the linker script and reset vector in the ``BootROMParams``), which is marked by the ``_hang`` label in the BootROM assembly. +``0x10000`` (given by the linker script and reset vector in the ``BootROMParams``), which is marked by the ``_hang`` label in the BootROM assembly. The Chisel generator encodes the assembled instructions into the BootROM hardware at elaboration time, so if you want to change the BootROM code, you diff --git a/docs/Prototyping/Arty.rst b/docs/Prototyping/Arty.rst index 15347cf8..b4424bcf 100644 --- a/docs/Prototyping/Arty.rst +++ b/docs/Prototyping/Arty.rst @@ -34,7 +34,7 @@ Probe an address on the target system: .. code-block:: shell - ./uart_tsi +tty=/dev/ttyUSBX +init_read=0x10040 none + ./uart_tsi +tty=/dev/ttyUSBX +init_read=0x10000 none Write some address before running a program: From 643ad201f69fd72c6cf72c91a28eb5fe44f57cf1 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Thu, 2 Nov 2023 15:05:32 -0700 Subject: [PATCH 065/184] Fix spacing --- scripts/uniquify-module-names.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/uniquify-module-names.py b/scripts/uniquify-module-names.py index 7709a554..237054f2 100755 --- a/scripts/uniquify-module-names.py +++ b/scripts/uniquify-module-names.py @@ -109,7 +109,7 @@ def generate_copy(c, sfx): new_file = os.path.join(args.gcpath, new_file) shutil.copy(cur_file, new_file) - bash(f"sed -i 's/module\( \+\){cur_name}/module\\1{new_name}/' {new_file}") + bash(f"sed -i 's/module\( \+\){cur_name}/module\\1{new_name}/' {new_file}") return new_file def bfs_uniquify_modules(tree, common_fnames, verilog_module_filename): From 5e76f3b93955a739895b37e9869e88fd0e4eafa5 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 2 Nov 2023 15:15:37 -0700 Subject: [PATCH 066/184] [ci skip] Fix funding ack --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d68cf77..8bb2e3e3 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ These additional publications cover many of the internal components used in Chip ## Acknowledgements -This work is supported by the NSF CCRI ENS Chipyard Award #201662. +This work is supported by the NSF CCRI ENS Chipyard Award #2016662. [hwacha]:https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-262.pdf [hammer]:https://github.com/ucb-bar/hammer From 0c1ca5750ea461ca237cdb69dea8279c06b47af4 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 17:09:00 -0700 Subject: [PATCH 067/184] Add fixes | Bump to 256b SBUS --- build.sbt | 4 +- generators/caliptra-aes-acc | 2 +- .../scala/config/RoCCAcceleratorConfigs.scala | 2 +- generators/rocc-acc-utils | 2 +- scripts/insert-includes.py | 66 +++++++++++++------ 5 files changed, 51 insertions(+), 25 deletions(-) diff --git a/build.sbt b/build.sbt index 19199212..c3be6161 100644 --- a/build.sbt +++ b/build.sbt @@ -235,11 +235,11 @@ lazy val nvdla = (project in file("generators/nvdla")) .settings(commonSettings) lazy val caliptra_aes = (project in file("generators/caliptra-aes-acc")) - .dependsOn(rocketchip, rocc_acc_utils, midasTargetUtils) + .dependsOn(rocketchip, rocc_acc_utils, testchipip, midasTargetUtils) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) -llazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) +lazy val rocc_acc_utils = (project in file("generators/rocc-acc-utils")) .dependsOn(rocketchip) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc index d667a7a0..350cf7fb 160000 --- a/generators/caliptra-aes-acc +++ b/generators/caliptra-aes-acc @@ -1 +1 @@ -Subproject commit d667a7a0fd1f37acb3d4df7acb2024a27e151217 +Subproject commit 350cf7fbf53e8178c716b17cc9939f0ddb5c4a43 diff --git a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala index 0813b059..0796bade 100644 --- a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala @@ -60,5 +60,5 @@ class HwachaLargeBoomConfig extends Config( class AES256ECBRocketConfig extends Config( new aes.WithAES256ECBAccel ++ // use Caliptra AES 256 ECB accelerator new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.WithSystemBusWidth(128) ++ + new chipyard.config.WithSystemBusWidth(256) ++ new chipyard.config.AbstractConfig) diff --git a/generators/rocc-acc-utils b/generators/rocc-acc-utils index fa4e29af..b001c888 160000 --- a/generators/rocc-acc-utils +++ b/generators/rocc-acc-utils @@ -1 +1 @@ -Subproject commit fa4e29afcb7547e7951475febceb93cdfe46c76a +Subproject commit b001c888f9620189cd13d2c6ba19f1e28663a3cb diff --git a/scripts/insert-includes.py b/scripts/insert-includes.py index ed6fed73..284da17c 100755 --- a/scripts/insert-includes.py +++ b/scripts/insert-includes.py @@ -12,6 +12,8 @@ import sys import re import os +import tempfile +import shutil inVlog = sys.argv[1] outVlog = sys.argv[2] @@ -24,28 +26,52 @@ if inVlog == outVlog: incDirs = sys.argv[3:] print("[INFO] Searching following dirs for includes: " + str(incDirs)) -# open file -with open(inVlog, 'r') as inFile: - with open(outVlog, 'w') as outFile: - # for each include found, search through all dirs and replace if found, error if not - for num, line in enumerate(inFile, 1): +def process(inF, outF): + # open file + with open(inF, 'r') as inFile: + with open(outF, 'w') as outFile: + # for each include found, search through all dirs and replace if found, error if not + for num, line in enumerate(inFile, 1): + match = re.match(r"^ *`include +\"(.*)\"", line) + if match: + # search for include and replace + found = False + for d in incDirs: + potentialIncFileName = d + "/" + match.group(1) + if os.path.exists(potentialIncFileName): + found = True + with open(potentialIncFileName, 'r') as incFile: + for iline in incFile: + outFile.write(iline) + break + + # must find something to include with + if not found: + sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) + else: + outFile.write(line) + +inF = inVlog + +while True: + # create a copy of the input + fd, temp_path = tempfile.mkstemp() + shutil.copy2(inF, temp_path) + + with open(temp_path, 'r') as inFile: + anyIncludes = False + for line in inFile: match = re.match(r"^ *`include +\"(.*)\"", line) if match: - # search for include and replace - found = False - for d in incDirs: - potentialIncFileName = d + "/" + match.group(1) - if os.path.exists(potentialIncFileName): - found = True - with open(potentialIncFileName, 'r') as incFile: - for iline in incFile: - outFile.write(iline) - break + anyIncludes = True + break - # must find something to include with - if not found: - sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) - else: - outFile.write(line) + if anyIncludes: + process(temp_path, outVlog) + inF = outVlog + os.remove(temp_path) + else: + os.remove(temp_path) + break print("[INFO] Success. Writing output to: " + str(outVlog)) From 7525b9fd042765c2d639bd27acd0f78ccbe53710 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 17:27:42 -0700 Subject: [PATCH 068/184] Fix CI | Fix Verilator compile --- .github/scripts/check-commit.sh | 2 +- .github/scripts/defaults.sh | 2 +- generators/caliptra-aes-acc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/scripts/check-commit.sh b/.github/scripts/check-commit.sh index b15c571d..57f71b51 100755 --- a/.github/scripts/check-commit.sh +++ b/.github/scripts/check-commit.sh @@ -45,7 +45,7 @@ search () { done } -submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle") +submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "caliptra-aes-acc" "rocc-acc-utils") dir="generators" branches=("master" "main" "dev") search diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index ed8cd7be..5d98ad2b 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -67,7 +67,7 @@ mapping["chipyard-shuttle"]=" CONFIG=ShuttleConfig" mapping["chipyard-multiclock-rocket"]=" CONFIG=MulticlockRocketConfig" mapping["chipyard-nomem-scratchpad"]=" CONFIG=MMIOScratchpadOnlyRocketConfig" mapping["chipyard-constellation"]=" CONFIG=SharedNoCConfig" -mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig verilog" +mapping["chipyard-aes256ecb"]=" CONFIG=AES256ECBRocketConfig" mapping["constellation"]=" SUB_PROJECT=constellation" mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc index 350cf7fb..15d2f852 160000 --- a/generators/caliptra-aes-acc +++ b/generators/caliptra-aes-acc @@ -1 +1 @@ -Subproject commit 350cf7fbf53e8178c716b17cc9939f0ddb5c4a43 +Subproject commit 15d2f85262125a3ba5a674868d4bcbdfbf720df1 From 078de512abbacff74efc27706cac46fa465e3de6 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 2 Nov 2023 17:49:18 -0700 Subject: [PATCH 069/184] Bump to firtool 1.58.0 --- common.mk | 2 -- conda-reqs/chipyard.yaml | 2 +- scripts/insert-includes.py | 69 ++++++++++++++++++++++++++------------ 3 files changed, 49 insertions(+), 24 deletions(-) diff --git a/common.mk b/common.mk index 95af7725..d5efb31a 100644 --- a/common.mk +++ b/common.mk @@ -248,7 +248,6 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F --format=fir \ --dedup \ --export-module-hierarchy \ - --emit-metadata \ --verify-each=true \ --warn-on-unprocessed-annotations \ --disable-annotation-classless \ @@ -257,7 +256,6 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F --lowering-options=$(shell cat $(MFC_LOWERING_OPTIONS)) \ --repl-seq-mem \ --repl-seq-mem-file=$(MFC_SMEMS_CONF) \ - --repl-seq-mem-circuit=$(MODEL) \ --annotation-file=$(SFC_ANNO_FILE) \ --split-verilog \ -o $(GEN_COLLATERAL_DIR) \ diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 81a3ea67..1ce28ac0 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -29,7 +29,7 @@ dependencies: - conda-gcc-specs - binutils - - firtool==1.30.0 # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock + - firtool==1.58.0 # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock # misc - autoconf diff --git a/scripts/insert-includes.py b/scripts/insert-includes.py index ed6fed73..8262c251 100755 --- a/scripts/insert-includes.py +++ b/scripts/insert-includes.py @@ -1,6 +1,7 @@ #!/usr/bin/env python -# replaces a `include with the full include file +# replaces a `include with the full include file. +# recursively replaces `include's until none are left # # args # $1 - file to remove includes from @@ -12,6 +13,8 @@ import sys import re import os +import tempfile +import shutil inVlog = sys.argv[1] outVlog = sys.argv[2] @@ -24,28 +27,52 @@ if inVlog == outVlog: incDirs = sys.argv[3:] print("[INFO] Searching following dirs for includes: " + str(incDirs)) -# open file -with open(inVlog, 'r') as inFile: - with open(outVlog, 'w') as outFile: - # for each include found, search through all dirs and replace if found, error if not - for num, line in enumerate(inFile, 1): +def process(inF, outF): + # open file + with open(inF, 'r') as inFile: + with open(outF, 'w') as outFile: + # for each include found, search through all dirs and replace if found, error if not + for num, line in enumerate(inFile, 1): + match = re.match(r"^ *`include +\"(.*)\"", line) + if match: + # search for include and replace + found = False + for d in incDirs: + potentialIncFileName = d + "/" + match.group(1) + if os.path.exists(potentialIncFileName): + found = True + with open(potentialIncFileName, 'r') as incFile: + for iline in incFile: + outFile.write(iline) + break + + # must find something to include with + if not found: + sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) + else: + outFile.write(line) + +inF = inVlog + +while True: + # create a copy of the input + fd, temp_path = tempfile.mkstemp() + shutil.copy2(inF, temp_path) + + with open(temp_path, 'r') as inFile: + anyIncludes = False + for line in inFile: match = re.match(r"^ *`include +\"(.*)\"", line) if match: - # search for include and replace - found = False - for d in incDirs: - potentialIncFileName = d + "/" + match.group(1) - if os.path.exists(potentialIncFileName): - found = True - with open(potentialIncFileName, 'r') as incFile: - for iline in incFile: - outFile.write(iline) - break + anyIncludes = True + break - # must find something to include with - if not found: - sys.exit("[ERROR] Couldn't replace include \"" + str(match.group(1)) + "\" found on line " + str(num)) - else: - outFile.write(line) + if anyIncludes: + process(temp_path, outVlog) + inF = outVlog + os.remove(temp_path) + else: + os.remove(temp_path) + break print("[INFO] Success. Writing output to: " + str(outVlog)) From 4e5413c8868196633beca3e44625285e7244c123 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Fri, 3 Nov 2023 11:46:30 -0700 Subject: [PATCH 070/184] Bump conda files --- conda-reqs/chipyard.yaml | 2 +- ...irements-esp-tools-linux-64.conda-lock.yml | 2636 ++++++++-------- ...ements-riscv-tools-linux-64.conda-lock.yml | 2647 +++++++++-------- scripts/generate-conda-lockfiles.sh | 9 +- 4 files changed, 2929 insertions(+), 2365 deletions(-) diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 1ce28ac0..bb722331 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -88,7 +88,7 @@ dependencies: - graphviz - expect - dtc - - verilator==5.008 + - verilator==5.018 - screen - elfutils - libdwarf-dev==0.0.0.20190110_28_ga81397fc4 # from ucb-bar channel - using mainline libdwarf-feedstock diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index 2c3ad90e..2d764d0b 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml -f /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/chipyard.yaml -f /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,14 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: f800845ae6c2481c1c2508f993d739a035bb8e0338f57b72b74ba660f677f51e + linux-64: 07d513e0458adcc5aeb5866cee72d77546cc0ab93dc8a6c611d8a0fb61b6592d platforms: - linux-64 sources: - - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml - - /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/chipyard.yaml - - /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/esp-tools.yaml + - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml + - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -77,14 +75,14 @@ package: - category: main dependencies: {} hash: - md5: 8d22677b00e9ea665f757c70a98d2c6f - sha256: 327b40fc91521ad7ba7cc979e9ae40fafec145536b23c8f87a73cbb403eee1d8 + md5: c0c0febec28f66bc333a24d97b1d1242 + sha256: c82fc09d29115df65bea000da3f6c982db1d4f67e1d2a89759825a13c1dc8a7b manager: conda name: conda-standalone optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.7.2-ha770c72_0.conda - version: 23.7.2 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.9.0-ha770c72_0.conda + version: 23.9.0 - category: main dependencies: {} hash: @@ -143,68 +141,57 @@ package: - category: main dependencies: {} hash: - md5: b9ae31bc2e565684ebaf82d4bd954d55 - sha256: 257495088b78d4344c7ea21145581ed6da1c5bf8320f49b659ce2ed2d6265f76 + md5: ed613582de7b8569fdc53ca141be176a + sha256: 7e12d0496389017ca526254913b24d9024e1728c849a0d6476a4b7fde9d03cba manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_2.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: afb656a334c409dd9805508af1c89c7a - sha256: a06235f4c4b85b463d9b8a73c9e10c1b5b4105f8a0ea8ac1f2f5f64edac3dfe7 - manager: conda - name: libgfortran5 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.1.0-h15d22d2_0.conda - version: 13.1.0 -- category: main - dependencies: {} - hash: - md5: 7c80158949230e6d837186b20b2fcf13 - sha256: b311dad92ffafd29668fca6330dc707f4d7f154a4fa4c3859832897416de39ec + md5: 7268a17e56eb099d1b8869bbbf46de4c + sha256: e8483069599561ef24b884c898442eadc510190f978fa388db3281b10c3c084e manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_2.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 067bcc23164642f4c226da631f2a2e1d - sha256: 6f9eb2d7a96687938c0001166a3b308460a8eb02b10e9d0dd9e251f0219ea05c + md5: 9172c297304f2a20134fc56c97fbe229 + sha256: ab22ecdc974cdbe148874ea876d9c564294d5eafa760f403ed4fd495307b4243 manager: conda name: libstdcxx-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda + version: 13.2.0 - category: main dependencies: {} hash: - md5: 9da14a0b14cf61245d1a026b2f281405 - sha256: 423a10bbf512b1530c98c01c414ef97d551d0b0920d393ecc164dde17ce475f7 + md5: b0813e784cf638d5498967384a1cba5b + sha256: 621935f2263d5920bf66a4c8df81ab9c4c80fd8d318aec767b78aa804ca3a8ad manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.440_0_g43e733e-20230724_080446.tar.bz2 - version: 1.0.440_0_g43e733e + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.455_1_ge0f692f-20231025_070436.tar.bz2 + version: 1.0.455_1_ge0f692f - category: main dependencies: {} hash: - md5: 0dd193187d54e585cac7eab942a8847e - sha256: 89e8c4436dd04d8b4a0c13c508e930be56973a480a9714171969de953bdafd3a + md5: bfe4b3259a8ac6cdf0037752904da6a7 + sha256: 7e0157e35929711e1a986c18a8bfb7a38a2209cfada16b541ebb0481f74376d6 manager: conda name: python_abi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-3_cp39.conda + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-4_cp39.conda version: '3.9' - category: main dependencies: {} @@ -244,30 +231,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-h4a8ded7_13.tar.bz2 version: 3.10.0 -- category: main - dependencies: - libgfortran5: 13.1.0 h15d22d2_0 - hash: - md5: 506dc07710dd5b0ba63cbf134897fc10 - sha256: 429e1d8a3e70b632df5b876e3fc322a56f769756693daa07114c46fa5098684e - manager: conda - name: libgfortran-ng - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.1.0-h69a702a_0.conda - version: 13.1.0 - category: main dependencies: _libgcc_mutex: 0.1 conda_forge hash: - md5: 56ca14d57ac29a75d23a39eb3ee0ddeb - sha256: 5d441d80b57f857ad305a65169a6b915d4fd6735cdc9e9bded35d493c91ef16d + md5: e2042154faafe61969556f28bade94b9 + sha256: e1e82348f8296abfe344162b3b5f0ddc2f504759ebeb8b337ba99beaae583b15 manager: conda name: libgomp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.1.0-he5830b7_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda + version: 13.2.0 - category: main dependencies: _libgcc_mutex: 0.1 conda_forge @@ -324,14 +299,14 @@ package: _libgcc_mutex: 0.1 conda_forge _openmp_mutex: '>=4.5' hash: - md5: cd93f779ff018dd85c7544c015c9db3c - sha256: fba897a02f35b2b5e6edc43a746d1fa6970a77b422f258246316110af8966911 + md5: c28003b0be0494f9a7664389146716ff + sha256: d361d3c87c376642b99c1fc25cddec4b9905d3d9b9203c1c545b8c8c1b04539a manager: conda name: libgcc-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.1.0-he5830b7_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda + version: 13.2.0 - category: main dependencies: libgcc-ng: '>=12' @@ -344,6 +319,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.9-hd590300_0.conda version: 1.2.9 +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 8dacaf703f8e57aa0c4f0c5c8f4be39b + sha256: 75dbc43b047ac1675422099293a2622fd9fd462dc8159c87322cd9847ca7b228 + manager: conda + name: aws-c-common + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.4-hd590300_0.conda + version: 0.9.4 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -384,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: e8c18d865be43e2fb3f7a145b6adf1f5 - sha256: c4276b1a0e8f18ab08018b1881666656742b325e0fcf2354f714e924d28683b6 + md5: c06fa0440048270817b9e3142cc661bf + sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1 manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.19.1-hd590300_0.conda - version: 1.19.1 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda + version: 1.21.0 - category: main dependencies: libgcc-ng: '>=12' @@ -416,18 +403,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/ctags-5.8-h14c3975_1000.tar.bz2 version: '5.8' -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - hash: - md5: 6bfb79319763a11c7423c9d0e0ee00b7 - manager: conda - name: dromajo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/dromajo-1.0.0-0_h1234567_g6a6e34e.tar.bz2 - version: 1.0.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -505,16 +480,16 @@ package: version: 1.3.13 - category: main dependencies: - libgcc-ng: '>=10.3.0' + libgcc-ng: '>=12' hash: - md5: 30bd3316aac2d72f498a04b2a49c1050 - sha256: 9a233d5f734f2a4bed786041a9823b69dad5b6757d84341e9f5c822ec89f083b + md5: cb8143aa2e59e9684c41dfdf74af38ac + sha256: 91583f2d85cded2cd81af17f23464888d53a1f1e3424456ee1befc3f73436d7b manager: conda name: gzip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.12-h166bdaf_0.tar.bz2 - version: '1.12' + url: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.13-hd590300_0.conda + version: '1.13' - category: main dependencies: libgcc-ng: '>=12' @@ -558,25 +533,25 @@ package: libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: d1db1b8be7c3a8983dcbbbfe4f0765de - sha256: 3c6fab31ed4dc8428605588454596b307b1bd59d33b0c7073c407ab51408b011 + md5: 2785ddf4cb0e7e743477991d64353947 + sha256: 8729021a93e67bb93b4e73ef0a132499db516accfea11561b667635bcd0507e7 manager: conda name: libabseil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda - version: '20230125.3' + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230802.1-cxx17_h59595ed_0.conda + version: '20230802.1' - category: main dependencies: libgcc-ng: '>=12' hash: - md5: e805cbec4c29feb22e019245f7e47b6c - sha256: 610a583c2c356fe7a864cd6e5b0fa73c25bdafcfbcada9d0d9f999392a412a51 + md5: aec6c91c7371c26392a06708a73c70e5 + sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78 manager: conda name: libbrotlicommon optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: @@ -638,6 +613,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 version: 3.4.2 +- category: main + dependencies: + libgcc-ng: '>=13.2.0' + hash: + md5: 78fdab09d9138851dde2b5fe2a11019e + sha256: 55ecf5c46c05a98b4822a041d6e1cb196a7b0606126eb96b24131b7d2c8ca561 + manager: conda + name: libgfortran5 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_2.conda + version: 13.2.0 - category: main dependencies: libgcc-ng: '>=10.3.0' @@ -654,51 +641,37 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 1edd9e67bdb90d78cea97733ff6b54e6 - sha256: b19de7bda34eac4fa931be11fa8d7640cdf1441dfd51c91786586a4a4c64c92f + md5: 323e90742f0f48fc22bea908735f55e6 + sha256: 0ef7378818c6d5b407692d02556c32e2f6af31c7542bca5160d0b92a59427fb5 manager: conda name: libjpeg-turbo optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-h0b41bf4_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda version: 2.1.5.1 - category: main dependencies: - libgcc-ng: '>=9.4.0' + libgcc-ng: '>=12' hash: - md5: 39b1328babf85c7c3a61636d9cd50206 - sha256: 32f4fb94d99946b0dabfbbfd442b25852baf909637f2eed1ffe3baea15d02aad + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 manager: conda name: libnsl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2 - version: 2.0.0 -- category: main - dependencies: - libgcc-ng: '>=12' - libgfortran-ng: '' - libgfortran5: '>=12.3.0' - hash: - md5: 6e4ef6ca28655124dcde9bd500e44c32 - sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 - manager: conda - name: libopenblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda - version: 0.3.24 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + version: 2.0.1 - category: main dependencies: libgcc-ng: '>=12.3.0' hash: - md5: bbc8fef17925480272a671b1d83431fa - sha256: 2fa38e53f7d58789283af351f014748a485ec8f4e7db3f150ed6274f50983663 + md5: 4655db64eca78a6fcc4fb654fc1f8d57 + sha256: a58add0b4477c59aee324b508d834267360b659f9c543f551ca4442196e656fe manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_2.conda version: 12.3.0 - category: main dependencies: @@ -849,13 +822,13 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 681105bccc2a3f7f1a837d47d39c9179 - sha256: ccf61e61d58a8a7b2d66822d5568e2dc9387883dd9b2da61e1d787ece4c4979a + md5: 7dbaa197d7ba6032caf7ae7f32c1efa0 + sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e manager: conda name: ncurses optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda version: '6.4' - category: main dependencies: @@ -873,27 +846,27 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 5be58359dbbf568c1ec0be87e0c6cb1b - sha256: f6c470ba56c43e5f6c75fd28b05256fd8f5d54d76df29c0652496bf3b104ae2b + md5: 77dab674d16c1525ebe65e67de30de0d + sha256: dec1c78df7670d34880f71f75ac716f082d087494b4a2c6a90d5d75a82c933ed manager: conda name: oniguruma optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.8-h166bdaf_0.tar.bz2 - version: 6.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.9-hd590300_0.conda + version: 6.9.9 - category: main dependencies: ca-certificates: '' libgcc-ng: '>=12' hash: - md5: e5ac5227582d6c83ccf247288c0eb095 - sha256: b113fbac327c90cdc29c2fac0f2a2e5cc0d1918b2a5ffa7abd49b695b9b3c6e9 + md5: 412ba6938c3e2abaca8b1129ea82e238 + sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 manager: conda name: openssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.2-hd590300_0.conda - version: 3.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda + version: 3.1.4 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -908,16 +881,17 @@ package: version: 2.7.6 - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: 660e72c82f2e75a6b3fe6a6e75c79f19 - sha256: 6a0630fff84b5a683af6185a6c67adc8bdfa2043047fcb251add0d352ef60e79 + md5: 700edd63ccd5fc66b70b1c028cea9a68 + sha256: ae917851474eb3b08812b02c9e945d040808523ec53f828aa74a90b0cdf15f57 manager: conda name: pixman optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2 - version: 0.40.0 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda + version: 0.42.2 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1122,6 +1096,59 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 version: 0.2.5 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + openssl: '>=3.1.3,<4.0a0' + hash: + md5: cdbd44927a53a313d69f3c206a418dd2 + sha256: 2dcb57436fe20a03373ede39c0cbb046c44b181392eb2e68963ac4ffcace0da4 + manager: conda + name: aws-c-cal + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.7-h6e18cf3_0.conda + version: 0.6.7 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: 72cb3661f349a95ea48b0ddcdc4c0f18 + sha256: 71a740e9c092d4119aad6ba3ee3fcbfd33faf078ffd7b80802efe218829bd931 + manager: conda + name: aws-c-compression + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h037bafe_4.conda + version: 0.2.17 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: 6c2ea725535e0f2a18f645a0bf03a8f6 + sha256: 249727a6ebffe314759bf367209fea9c23f96ac3b8f0a7fd7f61bad2712ec545 + manager: conda + name: aws-c-sdkutils + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h037bafe_3.conda + version: 0.1.12 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: ac1b0e60de127cc46a04e76a907434a1 + sha256: 1a65c1bb49c1345f824db0129895f45434751cedd3e55a89d0300dd1b68794ed + manager: conda + name: aws-checksums + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h037bafe_3.conda + version: 0.1.17 - category: main dependencies: libgcc-ng: '>=12' @@ -1179,16 +1206,16 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - ncurses: '>=6.3,<7.0a0' + ncurses: '>=6.4,<7.0a0' hash: - md5: 46a56cfe00f36b35e2d321bfabebf873 - sha256: c8f93937ad2cdd170200cc5ba32d85229ef65b749544686884abad5a19b8ef7a + md5: 182d006cea9203d6023c354005506e7a + sha256: f2a81d08e73e1d40af8d00aaaa0fcb61e8648cf656f112d5c2705a0a1a651c43 manager: conda name: firtool optional: false platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.30.0-0_h1234567_gdb40efbcd.conda - version: 1.30.0 + url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.58.0-0_h1234567_gc1d84a851.conda + version: 1.58.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1206,20 +1233,20 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_0 + libgcc-devel_linux-64: 12.3.0 h8bca6fd_2 libgcc-ng: '>=12.3.0' libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_0 + libsanitizer: 12.3.0 h0f45ef3_2 libstdcxx-ng: '>=12.3.0' sysroot_linux-64: '' hash: - md5: 1e41f51d89695fd3f810e2245517460b - sha256: ccbbb82de1ca95b02477e4340c5791e49424b379c6caa27e89bae3c40b7ad296 + md5: 2f4d8677dc7dd87f93e9abfb2ce86808 + sha256: 62a897343229e6dc4a3ace4f419a30e60a0a22ce7d0eac0b9bfb8f0308cf3de5 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_2.conda version: 12.3.0 - category: main dependencies: @@ -1236,41 +1263,29 @@ package: version: '1.6' - category: main dependencies: - libopenblas: '>=0.3.24,<1.0a0' - hash: - md5: bcddbb497582ece559465b9cd11042e7 - sha256: 92142c12eb42172365c96c865be8f164a2653649b28b23bded0e658f8d5d0815 - manager: conda - name: libblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda - version: 3.9.0 -- category: main - dependencies: - libbrotlicommon: 1.1.0 hd590300_0 + libbrotlicommon: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 43017394a280a42b48d11d2a6e169901 - sha256: 4eb58ab712e20d89b712a4a9e53a25ed94f63c36135d3f537ce2c51507c5abc9 + md5: f07002e225d7a60a694d42a7bf5ff53f + sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926 manager: conda name: libbrotlidec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: - libbrotlicommon: 1.1.0 hd590300_0 + libbrotlicommon: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 8e3e1cb77c4b355a3776bdfb74095bed - sha256: f15b3f3d6b33d46c49f5574e2427b76a3c713e27bf6c043b8f0fd84ffc57d51e + md5: 5fc11c6020d421960607d821310fcd4d + sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071 manager: conda name: libbrotlienc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: @@ -1285,6 +1300,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 version: 3.1.20191231 +- category: main + dependencies: + libgfortran5: 13.2.0 ha4646dd_2 + hash: + md5: e75a75a6eaf6f318dae2631158c46575 + sha256: 767d71999e5386210fe2acaf1b67073e7943c2af538efa85c101e3401e94ff62 + manager: conda + name: libgfortran-ng + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2.conda + version: 13.2.0 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -1314,21 +1341,21 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.18.1,<2.0a0' + c-ares: '>=1.20.1,<2.0a0' libev: '>=4.33,<4.34.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: 613955a50485812985c059e7b269f42e - sha256: ecd6b08c2b5abe7d1586428c4dd257dcfa00ee53700d79cdc8bca098fdfbd79a + md5: a802251d1eaeeae041c867faf0f94fa8 + sha256: 5e60b852dbde156ef1fa939af2491fe0e9eb3000de146786dede7cda8991ae4c manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.52.0-h61bc06f_0.conda - version: 1.52.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.55.1-h47da74e_0.conda + version: 1.55.1 - category: main dependencies: libgcc-ng: '>=12' @@ -1344,32 +1371,32 @@ package: version: 1.6.39 - category: main dependencies: - libabseil: '>=20230125.3,<20230126.0a0' + libabseil: '>=20230802.1,<20230803.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 78c10e8637a6f8d377f9989327d0267d - sha256: 2e2a9b612b8ef8b928f8efac835cd2914722bbab348fa643b99db2efd3b34185 + md5: 5097789a2bc83e697d7509df57f25bfd + sha256: 911ad483f051d96c9f07ecd8177546763c2da601e26941b434c3a09fa9fcd8f8 manager: conda name: libprotobuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.23.3-hd1fb520_1.conda - version: 4.23.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_1.conda + version: 4.24.3 - category: main dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 903fa782a9067d5934210df6d79220f6 - sha256: e715fab7ec6b3f3df2a5962ef372ff0f871d215fe819482dcd80357999513652 + md5: b58e6816d137f3aabf77d341dd5d732b + sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 manager: conda name: libsqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.0-h2797004_0.conda - version: 3.43.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda + version: 3.44.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1433,14 +1460,14 @@ package: gmp: '>=6.2.1,<7.0a0' libgcc-ng: '>=12' hash: - md5: 14d87bdff2cbd3b1179a29fb316ed743 - sha256: 03097f21c75b0936471809e533dbae44af9d9ae696ecf264d1a929fc9f9e4b83 + md5: 4c28f3210b30250037a4a627eeee9e0f + sha256: 008230a53ff15cf61966476b44f7ba2c779826825b9ca639a0a2b44d8f7aa6cb manager: conda name: mpfr optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.0-hb012696_0.conda - version: 4.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda + version: 4.2.1 - category: main dependencies: libffi: '>=3.4.2,<3.5.0a0' @@ -1508,6 +1535,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda version: '8.2' +- category: main + dependencies: + libgcc-ng: '>=12' + openssl: '>=3.1.3,<4.0a0' + hash: + md5: 8cdfb7d58bdfd543717eeacc0801f3c0 + sha256: d9b8c7f6dcab6c34c9eec7dae8aa05ec0ad79365ff5512456f19fa35c5084ecf + manager: conda + name: s2n + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.55-h06160fa_0.conda + version: 1.3.55 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1536,17 +1576,17 @@ package: version: '1.34' - category: main dependencies: - libgcc-ng: '>=9.4.0' - libzlib: '>=1.2.11,<1.3.0a0' + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 5b8c42eb62e9fc961af70bdd6a26e168 - sha256: 032fd769aad9d4cad40ba261ab222675acb7ec951a8832455fce18ef33fa8df0 + md5: 513336054f884f95d9fd925748f41ef3 + sha256: 679e944eb93fde45d0963a22598fafacbb429bb9e7ee26009ba81c4e0c435055 manager: conda name: tk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2 - version: 8.6.12 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda + version: 8.6.13 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -1615,6 +1655,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/autoconf-2.71-pl5321h2b4cb7a_1.conda version: '2.71' +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + s2n: '>=1.3.55,<1.3.56.0a0' + hash: + md5: a0728c6591063bee78f037741d1da83b + sha256: 74843ac64d018e27460d2b45d5fafc613e45073da64bb346c6d8d059a39d22d5 + manager: conda + name: aws-c-io + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hd1885a1_4.conda + version: 0.13.35 - category: main dependencies: libgcc-ng: '>=12' @@ -1644,29 +1699,29 @@ package: version: 3.8.2 - category: main dependencies: - libbrotlidec: 1.1.0 hd590300_0 - libbrotlienc: 1.1.0 hd590300_0 + libbrotlidec: 1.1.0 hd590300_1 + libbrotlienc: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: aeafb07a327e3f14a796bf081ea07472 - sha256: f4ad40d9fddefbf0e920d508fe10b7da77faa3eed20cf09779ea5b78bbf04675 + md5: 39f910d205726805a958da408ca194ba + sha256: a641abfbaec54f454c8434061fffa7fdaa9c695e8a5a400ed96b4f07c0c00677 manager: conda name: brotli-bin optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' hash: - md5: 203fbb799caffdf242ccef5f9879d3a1 - sha256: b9db23cd4fd2df43c06734b3cdb7491e03472679282a058bca7148455704b6a4 + md5: 3d38e0cc20ff49d767408f2bf69117a8 + sha256: 87e2b89a542cf19c1876ca872841293104214d73e30898ce6542d1751948231d manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_2.conda version: 12.3.0 - category: main dependencies: @@ -1701,25 +1756,25 @@ package: libpng: '>=1.6.39,<1.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: e1232042de76d24539a436d37597eb06 - sha256: 1eb913727b54e9aa63c6d9a1177db4e2894cee97c5f26910a2b61899d5ac904f + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 manager: conda name: freetype optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-hca18f0e_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda version: 2.12.1 - category: main dependencies: gcc_impl_linux-64: 12.3.0.* hash: - md5: cb7c7892032ecf45fcad76d67b6a3e9b - sha256: 19d68909b1016ce07f6d3056e32d23dbade083111ac2110ab1782c1309164234 + md5: e2f2f81f367e14ca1f77a870bda2fe59 + sha256: 1bbf077688822993c39518056fb43d83ff0920eb42fef11e8714d2a298cc0f27 manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_2.conda version: 12.3.0 - category: main dependencies: @@ -1740,17 +1795,17 @@ package: version: 3.7.8 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_0 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_0 + gcc_impl_linux-64: 12.3.0 he2b93b0_2 + libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_2 sysroot_linux-64: '' hash: - md5: 3f00aa0a8f8d3924890fecae937cc6bd - sha256: 87c7ec85f76aa065c2c991acd7bbf86d25b4724bc283f793400c14f5d5e39aa0 + md5: f89b9916afc36fc5562fbfc11330a8a2 + sha256: 1ca91c1a3892b61da7efe150f9a1830e18aac82f563b27bf707520cb3297cc7a manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_2.conda version: 12.3.0 - category: main dependencies: @@ -1777,7 +1832,7 @@ package: lz4-c: '>=1.9.3,<1.10.0a0' lzo: '>=2.10,<3.0a0' openssl: '>=3.0.3,<4.0a0' - xz: '>=5.2.5,<5.3.0a0' + xz: '>=5.2.5,<6.0.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: md5: c0c3973a9f2df3e1a408e3205d86a88d @@ -1788,18 +1843,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.5.2-hada088e_3.tar.bz2 version: 3.5.2 -- category: main - dependencies: - libblas: 3.9.0 18_linux64_openblas - hash: - md5: 93dd9ab275ad888ed8113953769af78c - sha256: b5a3eac5a1e14ad7054a19249afeee6536ab8c9fb6d6ddc26e277f5c3b1acce4 - manager: conda - name: libcblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-18_linux64_openblas.conda - version: 3.9.0 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -1810,26 +1853,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: c6f951789c888f7bbd2dd6858eab69de - sha256: e909b5e648d1ace172aac2ddf9d755f72429b134155a9b07156acb58a77ceee1 + md5: e618003da3547216310088478e475945 + sha256: 96ec4dc5e38f434aa5862cb46d74923cce1445de3cd0b9d61e3e63102b163af6 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.76.4-hebfc3b9_0.conda - version: 2.76.4 -- category: main - dependencies: - libblas: 3.9.0 18_linux64_openblas - hash: - md5: a1244707531e5b143c420c70573c8ec5 - sha256: 7b59c9bf8399b34818d36c7bbd30cd447649fe4ff2136d3102bb67da0af67a3a - manager: conda - name: liblapack - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda - version: 3.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda + version: 2.78.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1846,6 +1877,20 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.3-hbf9e925_1.conda version: 16.0.3 +- category: main + dependencies: + libgcc-ng: '>=12' + libgfortran-ng: '' + libgfortran5: '>=12.3.0' + hash: + md5: 6e4ef6ca28655124dcde9bd500e44c32 + sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 + manager: conda + name: libopenblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda + version: 0.3.24 - category: main dependencies: lerc: '>=4.0.0,<5.0a0' @@ -1869,20 +1914,20 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libprotobuf: '>=4.23.3,<4.23.4.0a0' + libprotobuf: '>=4.24.3,<4.24.4.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.1,<4.0a0' + openssl: '>=3.1.3,<4.0a0' perl: '>=5.32.1,<5.33.0a0 *_perl5' hash: - md5: 434a2df8dbd192cb511290763a4f93d8 - sha256: b0424b21c5d1790c04e96a7d62e10326fa3c8b0c263ad8cb4eda707b94317f98 + md5: a362a501d2ea92506a96174ecf6b4b90 + sha256: 059f665865d1a8c1346a026ec4480ebae6edef839d465d90fe9ed6afa8b128c9 manager: conda name: mosh optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321hc529e37_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h4b98680_4.conda version: 1.4.0 - category: main dependencies: @@ -1945,19 +1990,19 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libsqlite: 3.43.0 h2797004_0 + libsqlite: 3.44.0 h2797004_0 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' hash: - md5: 713f9eac95d051abe14c3774376854fe - sha256: b3db86c1ae67bca79328a5d517330e1c95cf4e1f666e46ac9a90e64caf86449d + md5: df56c636df4a98990462d66ac7be2330 + sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb manager: conda name: sqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.0-h2c6b66d_0.conda - version: 3.43.0 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda + version: 3.44.0 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -1982,14 +2027,14 @@ package: xorg-xextproto: '>=7.3.0,<8.0a0' xorg-xproto: '' hash: - md5: 7590b76c3d11d21caa44f3fc38ac584a - sha256: 3360f81f7687179959a6bf1c762938240172e8bb3aef957e0a14fb12a0b7c105 + md5: 49e482d882669206653b095f5206c05b + sha256: 7a02a7beac472ae2759498550b5fc5261bf5be7a9a2b4648a3f67818a7bfefcf manager: conda name: xorg-libx11 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.6-h8ee46fc_0.conda - version: 1.8.6 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda + version: 1.8.7 - category: main dependencies: python: '>=3.6' @@ -2014,18 +2059,30 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 version: 1.4.4 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: aae3d4ea593ef245ea19d192623f0593 + sha256: af1dc5bee3b83aa167ad5991e7a98a3bd058b15847fef37424b8ea668a7c7ce6 + manager: conda + name: archspec + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.1-pyhd8ed1ab_1.conda + version: 0.2.1 - category: main dependencies: python: '>=3.8' hash: - md5: 964bace0c38ce4733851a2a29679e3f9 - sha256: 1fe9b55d3daeb26ac404ec51f106ce8792d7d6548810ca87600cd9b9e9cfbd6e + md5: 1be9feadb435ef26456efaf70852ce93 + sha256: e0abc3e71e9f0af65afb9dc3f3d4991c117508023ebcef223b2394a43313ccc9 manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.1-pyhd8ed1ab_0.conda - version: 3.1.1 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.4-pyhd8ed1ab_0.conda + version: 3.1.4 - category: main dependencies: libgcc-ng: '>=12' @@ -2052,35 +2109,79 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda version: 23.1.0 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + hash: + md5: 38da036c9d74d4d44f35e05474135f77 + sha256: 465ea78fe57381c86e35c81b7bbdbbcfdb88ea1181e7d211b714ad892fb39e22 + manager: conda + name: aws-c-event-stream + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-he4fbe49_4.conda + version: 0.3.2 +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-compression: '>=0.2.17,<0.2.18.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + libgcc-ng: '>=12' + hash: + md5: 2c4c47d83a0e111799dda4059c88621d + sha256: c537317a4490f085a3a58679fa05d4132a2d2b8f5480ffa51175135987faddb6 + manager: conda + name: aws-c-http + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-hbbfb9a7_7.conda + version: 0.7.13 +- category: main + dependencies: + python: '>=2.7' + hash: + md5: 54ca2e08b3220c148a1d8329c2678e02 + sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd + manager: conda + name: backports + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda + version: '1.0' - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 38045de15fdcc13a5052f6387b877703 - sha256: 88a2c81d4933b3d076987f3415739f038245520de12264364f9e6d8b2cd57133 + md5: 2b4dff8615211a9ed20a79a9f6d26df8 + sha256: 6e21b123757ca5579df40c970622c7a0c5c44474cd820c87402246e3d66a32b3 manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py39h9fdd4d6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py39h9fdd4d6_1.conda version: 4.0.1 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' hash: - md5: 2fb79ec81bad9492b6d59a06b3b647a4 - sha256: b6f32491536823e47cf6eb4717dd341385600a2b901235028dedc629a77aeb82 + md5: 550da20b2c2e38be9cc44bb819fda5d5 + sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177 manager: conda name: blinker optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.2-pyhd8ed1ab_0.conda - version: 1.6.2 + url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda + version: 1.7.0 - category: main dependencies: - python: 2.7.*|>=3.7 + python: ==2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2092,18 +2193,33 @@ package: version: 23.0.0 - category: main dependencies: - brotli-bin: 1.1.0 hd590300_0 - libbrotlidec: 1.1.0 hd590300_0 - libbrotlienc: 1.1.0 hd590300_0 + brotli-bin: 1.1.0 hd590300_1 + libbrotlidec: 1.1.0 hd590300_1 + libbrotlienc: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 3db48055eab680e43a122e2c7494e7ae - sha256: 8ec33c09c428fcc5fd453e1bd349bb0000ca226716901d356bdf89cdd9b67ab2 + md5: f27a24d46e3ea7b70a1f98e50c62508f + sha256: f2d918d351edd06c55a6c2d84b488fe392f85ea018ff227daac07db22b408f6b manager: conda name: brotli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda + version: 1.1.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + hash: + md5: c48418c8b35f1d59ae9ae1174812b40a + sha256: e22afb19527a93da24c1108c3e91532811f9c3df64a9473989faf332c98af082 + manager: conda + name: brotli-python + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py39h3d6467e_1.conda version: 1.1.0 - category: main dependencies: @@ -2145,14 +2261,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 313516e9a4b08b12dfb1e1cd390a96e3 - sha256: 0666a95fbbd2299008162e2126c009191e5953d1cad1878bf9f4d8d634af1dd4 + md5: 7f4a9e3fcff3f6356ae99244a014da6a + sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9 manager: conda name: charset-normalizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda - version: 3.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + version: 3.3.2 - category: main dependencies: __unix: '' @@ -2168,28 +2284,28 @@ package: version: 8.1.7 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: b325bfc4cff7d7f8a868f1f7ecc4ed16 - sha256: f0c2fd0e842899a05ddd7b147fb26424adf58be0e8e54e5bc68b8f7e67d05dcd + md5: 753d29fe41bb881e4b9c004f0abf973f + sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754 manager: conda name: cloudpickle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda - version: 2.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda + version: 3.0.0 - category: main dependencies: - python: '' + python: '>=3.7' hash: - md5: c08b4c1326b880ed44f3ffb04803332f - sha256: ddf1749f0fd5a098a7954d98267cebca83a36b86719ce4ab6fc4aa94ef518432 + md5: 3faab06a954c2a04039983f2c4a50d99 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 manager: conda name: colorama optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 - version: 0.4.4 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + version: 0.4.6 - category: main dependencies: python: '>=3.6,<4.0' @@ -2204,16 +2320,16 @@ package: version: 0.4.1 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: a50559fad0affdbb33729a68669ca1cb - sha256: 3b594bc8aa0b9a51269d54c7a4ef6af777d7fad4bee16b05695e1124de6563f6 + md5: 5cd86562580f274031ede6aa6aa24441 + sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8 manager: conda name: cycler optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 - version: 0.11.0 + url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + version: 0.12.1 - category: main dependencies: expat: '>=2.4.2,<3.0a0' @@ -2240,19 +2356,31 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda version: 0.3.7 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 67999c5465064480fa8016d00ac768f6 + sha256: 0d01c4da6d4f0a935599210f82ac0630fa9aeb4fc37cbbc78043a932a39ec4f3 + manager: conda + name: distro + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + version: 1.8.0 - category: main dependencies: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 4f0fa7459a1f40a969aaad418b1c428c - sha256: 97110dd30d9b321b635cc1213e478f5e598ed80c7bdb674c0c7d23d6937f2dfe + md5: 9851752658704495f8adf28f6d2b3cb3 + sha256: 75e15fea05b5334912856e467017af5718259633aecc50d7f3af22b26cb7376f manager: conda name: docutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.16-py39hf3d152e_3.tar.bz2 - version: '0.16' + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py39hf3d152e_1.tar.bz2 + version: 0.18.1 - category: main dependencies: expat: '>=2.4.8,<3.0a0' @@ -2286,14 +2414,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3104cf0ab9fb9de393051bf92b10dbe9 - sha256: 47635be45aa6cbfd6af65c13b5f649aef84c484e1897aef625e4ad717663eebc + md5: 0c1729b74a8152fde6a38ba0a2ab9f45 + sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b manager: conda name: filelock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.3-pyhd8ed1ab_0.conda - version: 3.12.3 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda + version: 3.13.1 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -2316,26 +2444,26 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 3d56db0f3499528244df173a6ede4fde - sha256: 4940d9bc55e998ab359ce91e0935c56da370b14d67715f1a5e0a13cf4c15af42 + md5: 5ccdccec4ed5576ae7382e33cd343dc2 + sha256: f1d0981597be0e7f78c4454517e16e09f0c7290af30e0e705a5a6a4952cf7bdd manager: conda name: frozenlist optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py39hd1e30aa_1.conda version: 1.4.0 - category: main dependencies: python: '>=3.8' hash: - md5: b4a3c7bb3f45d47e085764ff096fa259 - sha256: 7c953b38e7d06be62a80d85dc72f899a90814e21079cb1189aa08ca6277f94ee + md5: 5b86cf1ceaaa9be2ec4627377e538db1 + sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6 manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.0-pyh1a96a4e_0.conda - version: 2023.9.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda + version: 2023.10.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2389,26 +2517,26 @@ package: gcc: 12.3.0.* gxx_impl_linux-64: 12.3.0.* hash: - md5: 52061516ce5d0aebb4282f72ef2347e5 - sha256: 99157a7719683e8a18d31f73a04b7b8e3121181840c9c8066b5c0438d7f49e4f + md5: 673bac341be6b90ef9e8abae7e52ca46 + sha256: 5fd65768fb602fd21466831c96e7a2355a4df692507abbd481aa65a777151d85 manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_2.conda version: 12.3.0 - category: main dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 + __unix: '' + python: '>=3.8' hash: - md5: 3844897723d78cca5f813ad6bee5fc7b - sha256: e15ee3e17a30738fb8e2adccef809a41b388bcaf3cc9fc895c15287a86e93ce1 + md5: 2ed1fe4b9079da97c44cfe9c2e5078fd + sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1 manager: conda name: humanfriendly optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/humanfriendly-10.0-py39hf3d152e_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda version: '10.0' - category: main dependencies: @@ -2496,16 +2624,17 @@ package: version: 2.0.0 - category: main dependencies: - python: '' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 hash: - md5: 07d85c22a3beb102a48cd123df84c2a6 - sha256: da279af2285d8f575a7f5652e83bf7f36155c4c63154e385a9d171efcc607bc1 + md5: 23255e64bc45e9bc0b7d87c108357ce6 + sha256: cd6f07324a83678072675e8c0720558c807682466181f33eb4d2de03aa8bff49 manager: conda name: jsonpointer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2 - version: '2.0' + url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py39hf3d152e_3.conda + version: '2.4' - category: main dependencies: libgcc-ng: '>=12' @@ -2513,13 +2642,13 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 3822b0ae733e022c10469c0e46bdddc4 - sha256: 760ed6e19a1f5773c7864d1442012f32d058922e7984bf5bca04cdea7d8cb065 + md5: c9f74d717e5a2847a9f8b779c54130f2 + sha256: 620d2aa2c3f016aa569b4a679688cb34f27c05e08555e4860099cf001bd740e4 manager: conda name: kiwisolver optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1.conda version: 1.4.5 - category: main dependencies: @@ -2527,13 +2656,13 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: a0238daacd28c07735c6bc75aedf2014 - sha256: bbae929b429f39a10432e86d87bf02864e6640287245de71edeac6b3c29b0ff7 + md5: 3bb122939197cec97f376a56e8dce6ea + sha256: ec6eec84b5279ea1d099a8a919ff76c9418ebe8cd4302b05fe22a58651fb0e55 manager: conda name: lazy-object-proxy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py39h72bdee0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py39hd1e30aa_1.conda version: 1.9.0 - category: main dependencies: @@ -2549,6 +2678,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda version: '2.15' +- category: main + dependencies: + libopenblas: '>=0.3.24,<1.0a0' + hash: + md5: 420f4e9be59d0dc9133a0f43f7bab3f3 + sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce + manager: conda + name: libblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2652,31 +2793,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda version: 1.3.1 -- category: main - dependencies: - python: '' - hash: - md5: c104d98e09c47519950cffb8dd5b4f10 - sha256: d3a68045ef74a2a7b8c8a55b242fdbc875d362e37adcf793613cf0d8c8e4fbf7 - manager: conda - name: lockfile - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 - version: 0.12.2 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 9c858d105816f454c6b64f3e19184b60 - sha256: de3be21c64141b6ca1fc404977145ec06291f8efe67077412ac84868ffe7feb0 + md5: ee2b4665b852ec6ff2758f3c1b91233d + sha256: 0fb7a5340855c0b3c7c9259eb57ff00abedf36530ba1daae3434016301b0fa36 manager: conda name: markupsafe optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py39hd1e30aa_1.conda version: 2.1.3 - category: main dependencies: @@ -2709,27 +2838,27 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 413374bab5022a5199c5dd89aef75df5 - sha256: 9b4b426b97d712c1b631bb775aaa1822b06f63a0ca93343c6eee59ab06f2b46c + md5: e39816a8abd539079a9d0b3c9045b2cb + sha256: ec1775ee47127f6ffcda5ed177280cf21a6b1e2e466cb8ab911a54cf40370961 manager: conda name: msgpack-python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.5-py39h4b4f3f3_0.conda - version: 1.0.5 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py39h7633fee_0.conda + version: 1.0.6 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 85d78bf46da38d726c8c6bec78f90fa8 - sha256: 130544eb072c154e7548c086f574c71b676139fea0184373bf06065114578510 + md5: 6c87066b599dc8d932437abdc65ed4b9 + sha256: fc292f5174cf9f8669fe144e8ed4c1b79d3061a92e60bca58d189194e65f4959 manager: conda name: multidict optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py39h72bdee0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py39hd1e30aa_1.conda version: 6.0.4 - category: main dependencies: @@ -2757,34 +2886,16 @@ package: version: 1.0.0 - category: main dependencies: - python: '>=3.8' + python: '>=3.9' hash: - md5: 254f787d5068bc89f578bf63893ce8b4 - sha256: 6b955c8530985fa727ad3323653a54af44ecf453cfdb1b549b3edff609bd3728 + md5: 425fce3b531bed6ec3c74fab3e5f0a1c + sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d manager: conda name: networkx optional: false platform: linux-64 - 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' - libcblas: '>=3.9.0,<4.0a0' - libgcc-ng: '>=12' - liblapack: '>=3.9.0,<4.0a0' - libstdcxx-ng: '>=12' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: f1c358d06344bd7f9a293f9af4b9b8fc - sha256: 469e5370d7b6c66284e42e5b700ace2793bbb942d3084643082109ffe7590c32 - manager: conda - name: numpy - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.25.2-py39h6183b62_0.conda - version: 1.25.2 + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + version: 3.2.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2805,14 +2916,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 91cda59e66e1e4afe9476f8ef98f5c30 - sha256: ded536a96a00d45a693dbc2971bb688248324dadd129eddda2100e177583d768 + md5: 79002079284aa895f883c6b7f3f88fd6 + sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f manager: conda name: packaging optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda - version: '23.1' + url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda + version: '23.2' - category: main dependencies: python: '>=2.7' @@ -2853,13 +2964,13 @@ package: dependencies: python: '>=3.6' hash: - md5: 89e3c7cdde7d3aaa2aee933b604dd07f - sha256: 7d055ffc8a02bf781a89d069db3454b453605cdaff300b82cedcc7133283e47e + md5: 405678b942f2481cecdb3e010f4925d9 + sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a manager: conda name: pkgutil-resolve-name optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda version: 1.3.10 - category: main dependencies: @@ -2878,57 +2989,57 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: b602cc9304197c6bf35f7a130fa8e4b8 - sha256: f16ba7446081fa6e7f29c7af12d6a9b01ad21440d83ebedca9d7185a410f6758 + md5: 4b8a715013375a33ad87a4e118f807d7 + sha256: 7b78075d514c602946a36df7604630c058b80a7378f7d0e29e4a082031fde19b manager: conda name: portalocker optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/portalocker-2.7.0-py39hf3d152e_0.conda - version: 2.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/portalocker-2.8.2-py39hf3d152e_1.conda + version: 2.8.2 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 1d54d3a75c3192ab7655d9c3d16809f1 - sha256: 846894b31bf26061a9e83b03b10fe46f49fcf1ffc5fb1c7ed79a61706a57004b + md5: c2e412b0f11e5983bcfc35d9beb91ecb + sha256: 02df40691ebe8632ad18ca641c70b74302b538922ccc86c3afee5de83f4298f0 manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py39h72bdee0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py39hd1e30aa_1.conda version: 5.9.5 - category: main dependencies: - python: '' + python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' hash: - md5: 06d04c9f8f72ac77911db942eda24fb9 - sha256: b2c1bb18ab7bf36263e0b3f29bd2991a108ec1957051f9f5d925efeaf7ed1344 + md5: 4b1c0db24e212190be1969b0aa490ad8 + sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82 manager: conda name: pyasn1 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.4.8-py_0.tar.bz2 - version: 0.4.8 + url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda + version: 0.5.0 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 00f348bb07e883ceb502b02227b0c900 - sha256: 5ab9b896c57be67ab3c6c837c93688902540cc3eb7b30f79c7fedec8d71e8ec9 + md5: 804fa1f70cdd1029bd9d156f1ab1dd54 + sha256: 7f000431dc121a4d77206942dcccf967e9e7dd34652df45f161f1d32162a510d manager: conda name: pycosat optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.4-py39hb9d737c_1.tar.bz2 - version: 0.6.4 + url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py39hd1e30aa_0.conda + version: 0.6.6 - category: main dependencies: - python: 2.7.*|>=3.4 + python: ==2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -2988,30 +3099,16 @@ package: version: 3.1.1 - category: main dependencies: - libgcc-ng: '>=12' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 + __unix: '' + python: '>=3.8' hash: - md5: 659013ef00dcd1751bfd26d894f73857 - sha256: 8b8719429dc47dd15252fe65fc77a3ad81f25aa5f4db0e6b1d7cdc54722e6ef4 - manager: conda - name: pyrsistent - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.19.3-py39h72bdee0_0.conda - version: 0.19.3 -- category: main - dependencies: - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: d34b97a2386932b97c7cb80916a673e7 - sha256: 42d46baeab725d3c70d22a4258549e9f0f1a72b740166cd9c3b394c4369cb306 + md5: 2a7de29fb590ca14b5243c4c812c8025 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b manager: conda name: pysocks optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 version: 1.7.1 - category: main dependencies: @@ -3057,13 +3154,13 @@ package: python_abi: 3.9.* *_cp39 yaml: '>=0.2.5,<0.3.0a0' hash: - md5: ccecb3196b3678e9b5fc8441d681c203 - sha256: d8cd6c7646977641e8c0326a5cb13c2e3784b03e07b5a3748846c0dbb3c8d208 + md5: 37218233bcdc310e4fde6453bc1b40d8 + sha256: 28b147c50ad48215f9427a52811848223ac0371be7caae88522e661a3bfb1448 manager: conda name: pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py39hd1e30aa_1.conda version: 6.0.1 - category: main dependencies: @@ -3071,55 +3168,54 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 4c03c01af9e4b4a100f450210ce938a3 - sha256: 8bad81d66b1dce677b1e9bb5c95070c665a6643643b8019c363f5f7948a059a9 + md5: 4f76a945255f9bae15ca3979e9b129ea + sha256: 4eed688717096aadabbfb29039d80eb47b659a10a9ec298bef3ff3bd1286a703 manager: conda name: regex optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.8.8-py39hd1e30aa_0.conda - version: 2023.8.8 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py39hd1e30aa_0.conda + version: 2023.10.3 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: d9da3b1d13895666f4cc2559d37b8de4 - sha256: b75af1f9c7a7f26215f7afbaa6fb84f34c08cf1bca6d5b8b248267dea62f4742 + md5: 07f3775b21f8cf32a3635f203d3f9669 + sha256: 4925ae665a1860a4eb136faed34f12d308983d3b01dc81a7aef84bdd8ffefb18 + manager: conda + name: rpds-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py39h9fdd4d6_0.conda + version: 0.10.6 +- category: main + dependencies: + libgcc-ng: '>=12' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + hash: + md5: 743d996a1af8502f27770fadfd418434 + sha256: 06b089d59ffebef9c9171a8a3480adcb6e7f112caef9f8b87591207427cb1cf1 manager: conda name: ruamel.yaml.clib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py39h72bdee0_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py39hd1e30aa_2.conda version: 0.2.7 -- category: main - dependencies: - libgcc-ng: '>=12' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - yaml: '>=0.2.5,<0.3.0a0' - hash: - md5: f862616e19cd2aaa411d24725116b486 - sha256: 762f7719759ea01a81817424cc23d45e595aeabaa6e27adc0a70dadedd4301d2 - manager: conda - name: ruamel_yaml - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel_yaml-0.15.80-py39hb9d737c_1008.tar.bz2 - version: 0.15.80 - category: main dependencies: python: '>=3.7' hash: - md5: 4fe12573bf499ff85a0a364e00cc5c53 - sha256: dc5a777597e05ceddefc87d2f96389b7ae0afb097e558307af83a453db3e3887 + md5: fc2166155db840c634a1291a5c35a709 + sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7 manager: conda name: setuptools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - version: 68.1.2 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda + version: 68.2.2 - category: main dependencies: python: '' @@ -3134,16 +3230,16 @@ package: version: 1.16.0 - category: main dependencies: - python: '' + python: '>=3.5' hash: - md5: 3a8dc70789709aa315325d5df06fb7e4 - sha256: 091de70ee6bfe063e0c0f77336975d124fd1e3f49b9c58d97c0c7b3d287c0002 + md5: 62f26a3d1387acee31322208f0cfa3e0 + sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16 manager: conda name: smmap optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2 - version: 3.0.5 + url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2 + version: 5.0.0 - category: main dependencies: python: '>=2' @@ -3196,14 +3292,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 62f5b331c53d73e2f6c4c130b53518a0 - sha256: dc4abf58ca42f29e12b8c0f8aadedfca49cc1e97dab025d15cf000b1787df773 + md5: 495ddad84b81dde4ee1138dd59ef5805 + sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.1-pyha770c72_0.conda - version: 0.12.1 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda + version: 0.12.2 - category: main dependencies: python: '>=3.5' @@ -3222,38 +3318,38 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: ee7f18d58a96b04fdbd2e55f7694ae0d - sha256: eb7b3bc5e515acc138411b466ca64cee56c5b6123ab13ee1cfc21f0f66713e5d + md5: cbe186eefb0bcd91e8f47c3908489874 + sha256: dc0df742be0e83a4286137d21f60ca829632c2ffd66d3bebb603afe5ce74cc68 manager: conda name: tornado optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py39hd1e30aa_1.conda version: 6.3.3 - category: main dependencies: python: '>=3.6' hash: - md5: 1b133b01430fc4d03efba737aae0054f - sha256: 272505b7f8acc7dad0a32efc17e7241c18938f98c0055c5d5fb2530a32e34fe1 + md5: 13ce724cb44f7bc0ca0971d76e333c30 + sha256: c1c54f4b2b5b39c420b3a47dd6196355147c798c0a4a2bdaaba80435e9591fb3 manager: conda name: types-pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.1-pyhd8ed1ab_0.conda - version: 2023.3.0.1 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.1.1-pyhd8ed1ab_0.conda + version: 2023.3.1.1 - category: main dependencies: python: '>=3.6' hash: - md5: 22776dce28e8ba933e5cbcf20b62c583 - sha256: 61121b7ac3c6caf322ad2789ffe0887ae9e6c3ab28c9e911871afe5977828af7 + md5: 0cb14c80f66937df894d60626dd1921f + sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c manager: conda name: types-pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.11-pyhd8ed1ab_0.conda - version: 6.0.12.11 + url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda + version: 6.0.12.12 - category: main dependencies: python: '>=3.6' @@ -3268,30 +3364,30 @@ package: version: 1.26.25.14 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' hash: - md5: c39d6a09fe819de4951c2642629d9115 - sha256: 6edd6d5be690be492712cb747b6d62707f0d0c34ef56eefc796d91e5a03187d1 + md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 + sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda - version: 4.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda + version: 4.8.0 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 230d65004135bf312504a1bbcb0c7a08 - sha256: 03c2cf05d1f4f2b01fc1e3ced22d5f331f2f233e335c4a4cd11a31fea1fccc0c + md5: 1da984bbb6e765743e13388ba7b7b2c8 + sha256: 90077cbf116112d5112b7beedf896e59c98416d09860ba98c06a770c014829b2 manager: conda name: unicodedata2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py39hb9d737c_0.tar.bz2 - version: 15.0.0 + url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py39hd1e30aa_0.conda + version: 15.1.0 - category: main dependencies: flex: '>=2.6.4,<3.0a0' @@ -3303,63 +3399,63 @@ package: perl: '' python: '' hash: - md5: efb0e7909f1a41159856e688e216bd26 - sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 + md5: 6ecc6f19e3a0661c096d0e84015c8122 + sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda - version: '5.008' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda + version: '5.018' - category: main dependencies: - python: '' + python: '>=2.6' hash: - md5: 3563be4c5611a44210d9ba0c16113136 - sha256: 302f4f4bd1ad00c0be1426ecf6bb01db59cfd8aff3de0cf1596526dca1a6b70e + md5: daf5160ff9cde3a468556965329085b9 + sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 manager: conda name: webencodings optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda version: 0.5.1 - category: main dependencies: python: '>=3.8' hash: - md5: 23f16ffe9711ac76b391c60ce4ea4656 - sha256: 93aecd1b6b0fcb0ffbf96e367e56713824e648f6c02c9daaaedfef5f8e03caa9 + md5: bdb77b28cf16deac0eef431a068320e8 + sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6 manager: conda name: websocket-client optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.2-pyhd8ed1ab_0.conda - version: 1.6.2 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda + version: 1.6.4 - category: main dependencies: python: '>=3.7' hash: - md5: 1ccd092478b3e0ee10d7a891adbf8a4f - sha256: 21bcec5373b04d739ab65252b5532b04a08d229865ebb24b5b94902d6d0a77b0 + md5: 3fc026b9c87d091c4b34a6c997324ae8 + sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda - version: 0.41.2 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda + version: 0.41.3 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 6bafe9bada45b1188748b658b8a6c5cf - sha256: a0e68749cd65b40637a4470d777a21f1b2cd5ca6b6af858e3d8b4d91ba131aa3 + md5: e811d65206edbab1699d452d9e67f29e + sha256: 31bce58bbe4f0a72d6bc4ed9d7e282b735631955b23831e5958e9905f8c188c7 manager: conda name: wrapt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py39h72bdee0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py39hd1e30aa_1.conda version: 1.15.0 - category: main dependencies: @@ -3436,14 +3532,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 2da0451b54c4563c32490cb1b7cf68a1 - sha256: 16d72127e150a3d5cbdc0b82c4069ef5be135c64bc99e71e7928507910669b41 + md5: 2e4d6bc0b14e10f895fc6791a7d9b26a + sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26 manager: conda name: zipp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda - version: 3.16.2 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda + version: 3.17.0 - category: main dependencies: frozenlist: '>=1.1.0' @@ -3457,19 +3553,66 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 version: 1.3.1 +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' + libgcc-ng: '>=12' + hash: + md5: 02305820d0dbfe542c6e4d67ddb0f13b + sha256: 45d41ef052d0e362d0c031af7392bd1d755b29b1e6af9e3796abdd7b8b712611 + manager: conda + name: aws-c-auth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.5-h1a24852_0.conda + version: 0.7.5 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + libgcc-ng: '>=12' + hash: + md5: cf4834799534b9fcb7bca1c136bcd7a9 + sha256: 0ec0363fa5c78f0daa50bb1313abd02d3c59d57af380fae7b9d39e0a702562f3 + manager: conda + name: aws-c-mqtt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.8-h31a96f8_0.conda + version: 0.9.8 - category: main dependencies: python: '>=3.7' pytz: '' + setuptools: '' hash: - md5: ac432e732804a81ddcf29c92ead57cde - sha256: 2d9b8768bf8b45073830f7104278c6eb17d78b0f509c9d818ff06b9c4d60283a + md5: 3ccff479c246692468f604df9c85ef26 + sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147 manager: conda name: babel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda - version: 2.12.1 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda + version: 2.13.1 +- category: main + dependencies: + backports: '' + python: '>=3.6' + setuptools: '' + hash: + md5: 6b1b907661838a75d067a22f87996b2e + sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700 + manager: conda + name: backports.functools_lru_cache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda + version: 1.6.5 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3505,14 +3648,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 20080319ef73fbad74dcd6d62f2a3ffe - sha256: 485a8f65c58c26c7d48bfea20ed1d6f1493f3329dd2c9c0a888a1c2b7c2365c5 + md5: ac992767d7f8ed2cb27e71e78f0fb2d7 + sha256: 1536a2ca65caaf568bbdfe75aff8e12cb0e0507587b25af3b532a8bd22cb3ddb manager: conda name: cffi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py39he91dace_3.conda - version: 1.15.1 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py39h7a31438_0.conda + version: 1.16.0 - category: main dependencies: libclang-cpp16: '>=16.0.3,<16.1.0a0' @@ -3579,22 +3722,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.26.3-h077f3f9_0.conda version: 3.26.3 -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - numpy: '>=1.16' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: 54e6f32e448fdc273606011f0940d076 - sha256: 61a3d4a322dc310fa53ec3d8f58d6f9ef75f1fcacfcda88b1e4fabd7506b36c2 - manager: conda - name: contourpy - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.0-py39h7633fee_0.conda - version: 1.1.0 - category: main dependencies: krb5: '>=1.20.1,<1.21.0a0' @@ -3637,7 +3764,7 @@ package: libstdcxx-ng: '>=10.3.0' libzlib: '>=1.2.11,<1.3.0a0' sqlite: '>=3.38.2,<4.0a0' - xz: '>=5.2.5,<5.3.0a0' + xz: '>=5.2.5,<6.0.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: md5: 2e9ec0e21d51118b004f1f98e4fbf598 @@ -3657,27 +3784,27 @@ package: python_abi: 3.9.* *_cp39 unicodedata2: '>=14.0.0' hash: - md5: de06dc7edaddbd3b60c050f3a95d6fe6 - sha256: 44485a521b03d351942b2080c861cdfab0015ab177aace442e6cbaeaeb08d561 + md5: bbfd1e3ef6f66b07e025fe872e854b0d + sha256: 874b66537828d2c0c1586a46b60f57bdec99b7df11f4a6343cd2cb381168f1b1 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.1-py39hd1e30aa_0.conda - version: 4.42.1 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.44.0-py39hd1e30aa_0.conda + version: 4.44.0 - category: main dependencies: - python: '>=3.4' - smmap: '>=3.0.1,<4' + python: '>=3.7' + smmap: '>=3.0.1,<6' hash: - md5: 3706d2f3d7cb5dae600c833345a76132 - sha256: 0003ab2b971913380633c711bf49a54dcf06e179986c725b0925854b58878377 + md5: 623b19f616f2ca0c261441067e18ae40 + sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b manager: conda name: gitdb optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.10-pyhd8ed1ab_0.conda - version: 4.0.10 + url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda + version: 4.0.11 - category: main dependencies: python: '>=3.6' @@ -3720,17 +3847,17 @@ package: version: 6.8.0 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' zipp: '>=3.1.0' hash: - md5: 748955a096313b51b314263402b83250 - sha256: f6a7af42e185bb188e6959c4af909cebacd291e2e1ceea6b2f246bb4da93eb7e + md5: 48b0d98e0c0ec810d3ccc2a0926c8c0e + sha256: adab6da633ec3b642f036ab5c1196c3e2db0e8db57fb0c7fc9a8e06e29fa9bdc manager: conda name: importlib_resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.13.0-pyhd8ed1ab_0.conda - version: 5.13.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda + version: 6.1.0 - category: main dependencies: more-itertools: '' @@ -3760,16 +3887,16 @@ package: - category: main dependencies: jsonpointer: '>=1.9' - python: '>=3.6' + python: '>=3.8' hash: - md5: 09150b51b0528a31a0f6500b96fdde82 - sha256: d87fd8da2d3327744821b6b1d1e5b76e4077224fb626ce02d6623a1bc6ee2563 + md5: bfdb7c5c6ad1077c82a69a8642c87aff + sha256: fbb17e33ace3225c6416d1604637c1058906b8223da968cc015128985336b2b4 manager: conda name: jsonpatch optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.32-pyhd8ed1ab_0.tar.bz2 - version: '1.32' + url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda + version: '1.33' - category: main dependencies: python: '' @@ -3783,6 +3910,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/junit-xml-1.9-pyh9f0ad1d_0.tar.bz2 version: '1.9' +- category: main + dependencies: + libblas: 3.9.0 19_linux64_openblas + hash: + md5: d12374af44575413fbbd4a217d46ea33 + sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a + manager: conda + name: libcblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -3807,6 +3946,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hfa28ad5_6.conda version: 2.3.3 +- category: main + dependencies: + libblas: 3.9.0 19_linux64_openblas + hash: + md5: 9f100edf65436e3eabc2a51fc00b2c37 + sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878 + manager: conda + name: liblapack + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: python: '' @@ -3825,21 +3976,21 @@ package: - category: main dependencies: libgcc-ng: '>=12' - mypy_extensions: '>=0.4.3' + mypy_extensions: '>=1.0.0' psutil: '>=4.0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 tomli: '>=1.1.0' - typing_extensions: '>=3.10' + typing_extensions: '>=4.1.0' hash: - md5: 6d56b56423312707fb857b483871de1e - sha256: 901aaa7448c938d7506fc6ff5723d0a1bb077ccb4f5cfbb8019b42877da22dc2 + md5: d310175f151cab774a8357ec1b1561c7 + sha256: 39a10de0deb1322dbef975dbce782fbd6abed46ba0229cbd023f09ac10df8a67 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.5.1-py39hd1e30aa_0.conda - version: 1.5.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.1-py39hd1e30aa_0.conda + version: 1.6.1 - category: main dependencies: python: 2.7|>=3.7 @@ -3882,14 +4033,14 @@ package: setuptools: '' wheel: '' hash: - md5: e2783aa3f9235225eec92f9081c5b801 - sha256: 9e401b171856e12f6aa32ae5cc1ae1d3708aa7d705ddf359ee7dd0dffd73c2b5 + md5: 2400c0b86889f43aa52067161e1fb108 + sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda - version: 23.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda + version: 23.3.1 - category: main dependencies: colorama: '' @@ -3900,14 +4051,14 @@ package: python: '>=3.7' tomli: '>=1.0.0' hash: - md5: 003aaefc025d902eec9ed8118e76ace7 - sha256: 713f1fd92a4a3d097646f0ca59b0531ad86e74d8a3184667380c99926f540fa6 + md5: 5bdca0aca30b0ee62bb84854e027eae0 + sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0 manager: conda name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.1-pyhd8ed1ab_0.conda - version: 7.4.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda + version: 7.4.3 - category: main dependencies: python: '>=3.6' @@ -3940,6 +4091,20 @@ package: platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/qemu-5.0.0-hb15d774_0.tar.bz2 version: 5.0.0 +- category: main + dependencies: + attrs: '>=22.2.0' + python: '>=3.8' + rpds-py: '>=0.7.0' + hash: + md5: a33161b983172ba6ef69d5fc850650cd + sha256: a6768fabc12f1eed87fec68c5c65439e908655cded1e458d70a164abbce13287 + manager: conda + name: referencing + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda + version: 0.30.2 - category: main dependencies: python: '>=3.5' @@ -3956,16 +4121,16 @@ package: - category: main dependencies: pyasn1: '>=0.1.3' - python: '' + python: '>=3.6' hash: - md5: 3452ab3790dbb1df9508b3fa4ea2f806 - sha256: 6ea0fcd8f40c7f78e2c6cff344bb91f457682aa352ee48364246371a41410ee8 + md5: 03bf410858b2cefc267316408a77c436 + sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57 manager: conda name: rsa optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.7.2-pyh44b312d_0.tar.bz2 - version: 4.7.2 + url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 + version: '4.9' - category: main dependencies: libgcc-ng: '>=12' @@ -3974,14 +4139,14 @@ package: ruamel.yaml.clib: '>=0.1.2' setuptools: '' hash: - md5: 9195e245f63b036613cca28dd499efdf - sha256: 3bf4ce9639e4acc647ad878a331714c0982df00702440c0f4993fbd6ce2bde99 + md5: b64be7a2bbc2acc61c1a2161512387c2 + sha256: 1dd205a1ab9897482804b5ef3f2a1cea44f01e831d1bcff439d1e0894ab0e4a9 manager: conda name: ruamel.yaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.32-py39hd1e30aa_0.conda - version: 0.17.32 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.21-py39h72bdee0_3.conda + version: 0.17.21 - category: main dependencies: __unix: '' @@ -4015,26 +4180,40 @@ package: python: '>=3.6' types-urllib3: <1.27 hash: - md5: 700fb06cd011d594305e3b487d5a96a2 - sha256: 3be4637a6037786dd6a8b0aed6374c8455fd79987770bc755ce12713aae916a4 + md5: 69d8b100b4a9e557e33c06b0d3ba4772 + sha256: 2ec1bfb9ffbcdd880f60139d46df88e60cd8d0a404f4e0e498500671b34c1d5b manager: conda name: types-requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.2-pyhd8ed1ab_0.conda - version: 2.31.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.6-pyhd8ed1ab_0.conda + version: 2.31.0.6 - category: main dependencies: - typing_extensions: 4.7.1 pyha770c72_0 + typing_extensions: 4.8.0 pyha770c72_0 hash: - md5: f96688577f1faa58096d06a45136afa2 - sha256: d5d19b8f5b275240c19616a46d67ec57250b3720ba88200da8c732c3fcbfc21d + md5: 384462e63262a527bda564fa2d9126c0 + sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda - version: 4.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda + version: 4.8.0 +- category: main + dependencies: + brotli-python: '>=1.0.9' + pysocks: '>=1.5.6,<2.0,!=1.5.7' + python: '>=3.7' + hash: + md5: bf61cfd2a7f212efba378167a07d4a6a + sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7 + manager: conda + name: urllib3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda + version: 1.26.18 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -4044,30 +4223,30 @@ package: perl: '>=5.32.1,<5.33.0a0 *_perl5' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 - xorg-libx11: '>=1.8.6,<2.0a0' + xorg-libx11: '>=1.8.7,<2.0a0' xorg-libxt: '>=1.3.0,<2.0a0' hash: - md5: a0f36da7e54b1f43efb0cd0340199b7b - sha256: 5686d022d58ad6d1941bb0d4f7d02ee5b47f655072dfed191b2778ede51c00ae + md5: 8024965420fb58bb3a7c38bba7843cb7 + sha256: 388c5ad10d126111bb8c6d04d543cd25e2fe96926c0ba20c6a4e01d7a79c8c09 manager: conda name: vim optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.1435-py39pl5321hb4338c2_0.conda - version: 9.0.1435 + url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.2059-py39pl5321hb4338c2_1.conda + version: 9.0.2059 - category: main dependencies: markupsafe: '>=2.1.1' python: '>=3.8' hash: - md5: e41528da0d8b8bbf4acc7255192132e3 - sha256: b426b0fcb6137ef858746ef86bddee7f0c881a9c84b67ed40b2feb1b5b47f5b6 + md5: af8d825d93dbe6331ee6d61c69869ca0 + sha256: b7ac49549d370a411b1d6150d24243a15adcce07f1c61ec2ea1b536346e47aa0 manager: conda name: werkzeug optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.3.7-pyhd8ed1ab_0.conda - version: 2.3.7 + url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda + version: 3.0.1 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4092,27 +4271,27 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 453d1199297e5ac3f6b70bd92f0bb000 - sha256: 051f6c6e556ece9587342cf951ee64c2e605abf1d4753c2c1f4a84352727a0d0 + md5: 8af6047a95775009261c0a896da31e2f + sha256: c7b2be7a3cf2f31f1adb0ea3276ea4d21918e0769a5c3f9e1b9ec387965beb1f manager: conda name: yarl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py39hd1e30aa_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py39hd1e30aa_1.conda version: 1.9.2 - category: main dependencies: python: '>=3.7' typing-extensions: '>=4.0.0' hash: - md5: 578ae086f225bc2380c79f3b551ff2f7 - sha256: bbabfd4400b03ba6c50d0a55e777e0c3ba900af8dabedb9b8aded774484b5d53 + md5: 997c29372bdbe2afee073dff71f35923 + sha256: 3a2c98154d95cfd54daba6b7d507d31f5ba07ac2ad955c44eb041b66563193cd manager: conda name: annotated-types optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.5.0-pyhd8ed1ab_0.conda - version: 0.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.6.0-pyhd8ed1ab_0.conda + version: 0.6.0 - category: main dependencies: python: '>=3.7' @@ -4128,19 +4307,38 @@ package: version: 4.0.3 - category: main dependencies: - cffi: '>=1.0.0' + aws-c-auth: '>=0.7.5,<0.7.6.0a0' + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 + openssl: '>=3.1.4,<4.0a0' hash: - md5: a639fdd9428d8b25f8326a3838d54045 - sha256: 293229afcd31e81626e5cfe0478be402b35d29b73aa421a49470645debda5019 + md5: e7b72928833ea245d8bfb89a35ae7d5e + sha256: 6831f6c6af9cfc346e4d6ff63e8a46b9949cdd4e3454bcde98a6cad4f26208e9 manager: conda - name: brotlipy + name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1005.tar.bz2 - version: 0.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.20-he249171_1.conda + version: 0.3.20 +- category: main + dependencies: + jmespath: '>=0.7.1,<2.0.0' + python: '>=3.7' + python-dateutil: '>=2.1,<3.0.0' + urllib3: '>=1.25.4,<1.27' + hash: + md5: e0f0f67f85591144a2e921a0af338cf5 + sha256: 51c1e96ec09fedc1ad2972b2c1c258e1bb1c344d3ca64485da063a369c3c919e + manager: conda + name: botocore + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.77-pyhd8ed1ab_0.conda + version: 1.31.77 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4195,16 +4393,16 @@ package: itsdangerous: '>=2.1.2' jinja2: '>=3.1.2' python: '>=3.8' - werkzeug: '>=2.3.7' + werkzeug: '>=3.0.0' hash: - md5: 9b0d29067484a8dfacfae85b8fba81bc - sha256: 4f84ffdc5471236e8225db86c7508426b46aa2c3802d58ca40b3c3e174533b39 + md5: d26105227a24c82fdf160f20ed379400 + sha256: 73dafd8c1ae9ee9e42e5fa78275c8dc3b456879d83dc6d6ed82d92bd498c9184 manager: conda name: flask optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/flask-2.3.3-pyhd8ed1ab_0.conda - version: 2.3.3 + url: https://conda.anaconda.org/conda-forge/noarch/flask-3.0.0-pyhd8ed1ab_0.conda + version: 3.0.0 - category: main dependencies: curl: '' @@ -4231,14 +4429,14 @@ package: python: '>=3.7' typing_extensions: '>=3.7.4.3' hash: - md5: 3c3d8c89c2fe64dc925ca492d67fab1a - sha256: e70b7c7c072f099af8ab004feb099f72e85f60fed2dc1e3dcedf166903ab9822 + md5: 6bf74c3b7c13079a91d4bd3da51cefcf + sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b manager: conda name: gitpython optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.34-pyhd8ed1ab_0.conda - version: 3.1.34 + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda + version: 3.1.40 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -4259,17 +4457,17 @@ package: version: 7.3.0 - category: main dependencies: - importlib_resources: '>=5.13.0,<5.13.1.0a0' + importlib_resources: '>=6.1.0,<6.1.1.0a0' python: '>=3.7' hash: - md5: 5facf625dd29f34c73733030a10a62a0 - sha256: c989be0c74b25061ba4eec92a9caddca0a916d7a45b05aa306278295b0a29965 + md5: 6a62c2cc25376a0d050b3d1d221c3ee9 + sha256: e1f0e12343a916c887648900680f93591d8a1db7c74b2d3f583f8b93855b052a manager: conda name: importlib-resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-5.13.0-pyhd8ed1ab_0.conda - version: 5.13.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.1.0-pyhd8ed1ab_0.conda + version: 6.1.0 - category: main dependencies: importlib-metadata: '>=6.8.0,<6.8.1.0a0' @@ -4284,22 +4482,18 @@ package: version: 6.8.0 - category: main dependencies: - attrs: '>=17.4.0' - importlib-metadata: '' importlib_resources: '>=1.4.0' - pkgutil-resolve-name: '>=1.3.10' - pyrsistent: '!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0' - python: '>=3.7' - typing_extensions: '' + python: '>=3.8' + referencing: '>=0.25.0' hash: - md5: 723268a468177cd44568eb8f794e0d80 - sha256: 4f68a23430d1afc5c9b41c46fbac0ade33c0bf57a293c646bfdd6dc65350eada + md5: 7c27ea1bdbe520bb830dcadd59f55cbf + sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc manager: conda - name: jsonschema + name: jsonschema-specifications optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda - version: 4.17.3 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda + version: 2023.7.1 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4315,23 +4509,22 @@ package: version: 0.0.0.20190110_28_ga81397fc4 - category: main dependencies: + libblas: '>=3.9.0,<4.0a0' + libcblas: '>=3.9.0,<4.0a0' libgcc-ng: '>=12' + liblapack: '>=3.9.0,<4.0a0' libstdcxx-ng: '>=12' - numpy: '>=1.22.4,<2.0a0' python: '>=3.9,<3.10.0a0' - python-dateutil: '>=2.8.1' - python-tzdata: '>=2022a' python_abi: 3.9.* *_cp39 - pytz: '>=2020.1' hash: - md5: 0a3624f600f51df010a274176e356ac5 - sha256: 60958d7e48cbff540ae7fa3a1c7ed81ee2fef0253d27ad73d7c42027dacd0e50 + md5: 62f1d2e05327bf62728afa448f2a9261 + sha256: 11efc6545e2f9a1d2c298e188c4f929930c87423f40c7c91e93bb21bba80ce5e manager: conda - name: pandas + name: numpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.0-py39hddac248_0.conda - version: 2.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py39h474f0d3_0.conda + version: 1.26.0 - category: main dependencies: pip: '' @@ -4350,29 +4543,14 @@ package: python: '>=3.7' typing-extensions: '>=4.6.3' hash: - md5: 0809187ef9b89a3d94a5c24d13936236 - sha256: 1b5c0ca2f4260c7dd8cfccd8a641c1e41876c79dc594506be379cde08f5b471e + md5: 8f567c0a74aa44cf732f15773b4083b0 + sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 manager: conda name: platformdirs optional: false platform: linux-64 - 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' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - typing-extensions: '>=4.2.0' - hash: - md5: cfc14a4f4467475813805c86c6bf1da3 - sha256: de9dca982e4aa8c75d5537396d044345bb932d872afd64566a2600c8ee12884b - manager: conda - name: pydantic - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.12-py39hd1e30aa_1.conda - version: 1.10.12 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda + version: 3.11.0 - category: main dependencies: libgcc-ng: '>=12' @@ -4380,14 +4558,14 @@ package: python_abi: 3.9.* *_cp39 typing-extensions: '>=4.6.0' hash: - md5: e52f02654a9613d84002a492b6f54a39 - sha256: d8c6ba4a823b4a3e964b6155394206c598569393e5625f3b75fb3cf79a0b442c + md5: 4f91c76f0449ef911f13862d97bb9a25 + sha256: 412653aa555032ad318e629b2ff8731eb2a439fd2d13bb39deab868634b769d9 manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.1.2-py39h9fdd4d6_0.conda - version: 2.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.10.1-py39h9fdd4d6_0.conda + version: 2.10.1 - category: main dependencies: cffi: '>=1.4.1' @@ -4397,13 +4575,13 @@ package: python_abi: 3.9.* *_cp39 six: '' hash: - md5: 1022b37795420d806b7b36b4e622ee9b - sha256: 937447b9122e4fe2525aba3568bd0635123e6293564b157ccb6753300553d84e + md5: b7595c0ba694ee1b6cca8d6e76d9f3f8 + sha256: 92ab9febd08bf59bd21ca851829b7af075b9b182aecc54e025fcbad620034897 manager: conda name: pynacl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py39hb9d737c_2.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py39hd1e30aa_3.conda version: 1.5.0 - category: main dependencies: @@ -4421,29 +4599,45 @@ package: - category: main dependencies: pytest: '>=5.0' - python: '>=3.7' + python: '>=3.8' hash: - md5: fcd2531bc3e492657aeb042349aeaf8a - sha256: d2f6a46fe31dea91b427bcc57302edc345eb763caf3c6b6dcd09b2aee002324b + md5: ac9fedc9a0c397f2318e82525491dd83 + sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0 manager: conda name: pytest-mock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.11.1-pyhd8ed1ab_0.conda - version: 3.11.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda + version: 3.12.0 +- category: main + dependencies: + certifi: '>=2017.4.17' + charset-normalizer: '>=2,<4' + idna: '>=2.5,<4' + python: '>=3.7' + urllib3: '>=1.21.1,<3' + hash: + md5: a30144e4156cdbb236f99ebb49828f8b + sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad + manager: conda + name: requests + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda + version: 2.31.0 - category: main dependencies: pip: '' python: '>=3.7,<4.0' hash: - md5: 6f590190c5393999bbc399ff15096bc3 - sha256: 000ed005cc95397866267072230e2f08407f5898ba2ac469200018492e73a875 + md5: ed7e8910d14780ff0c8bf85cc0c62384 + sha256: 476acb62cafa9091e5dacb5fc82afcdb90be828cea54abef371b93e2a1f7748e manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.1-pyhd8ed1ab_0.conda - version: 0.19.1 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.8-pyhd8ed1ab_0.conda + version: 0.19.8 - category: main dependencies: cffi: '' @@ -4452,14 +4646,27 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 0f11bcdf9669a5ae0f39efd8c830209a - sha256: c0cfb2935d12f6300c65e8503eacdabe34d4b125ce0c3c87a0818e2d72c0c056 + md5: b66595fbda99771266f042f42c7457be + sha256: 6ca31e79eeee63ea33e5b18dd81c1bc202c43741b5f0de3bcd4409f9ffd93a95 manager: conda name: ukkonen optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py39hf939315_3.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py39h7633fee_4.conda version: 1.0.1 +- category: main + dependencies: + backports.functools_lru_cache: '' + python: '>=3.6' + hash: + md5: 8e8280dec091763dfdc29e066de52270 + sha256: 7552f6545ed212b9ae5d023870481fc377c7f18b4854b63160699b95a420c42e + manager: conda + name: wcwidth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.9-pyhd8ed1ab_0.conda + version: 0.2.9 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4479,19 +4686,20 @@ package: version: 1.2.3 - category: main dependencies: - cffi: '>=1.8' + cffi: '>=1.11' libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 + zstd: '>=1.5.5,<1.6.0a0' hash: - md5: 9e039b28b40db0335eecc3423ce8606d - sha256: fc581aafd0e9da266149ac16fe478ef5d9880cb90a73ca25cafb78a9f6ea5b89 + md5: 104b4a68c19978a94c73f83468debf8f + sha256: 5c749030f438da67fa3a6f0626287a6eedbcda52a0ec62f417328cd4ba5bcc36 manager: conda name: zstandard optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.19.0-py39hb9d737c_0.tar.bz2 - version: 0.19.0 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py39h6e5214e_0.conda + version: 0.22.0 - category: main dependencies: aiosignal: '>=1.1.2' @@ -4505,28 +4713,95 @@ package: python_abi: 3.9.* *_cp39 yarl: '>=1.0,<2.0' hash: - md5: fe5f76b16e82145b87ac97bced358de2 - sha256: 882d08597436a0f6909f7b9306169e561c81669a14d4cd918eeb0e579c9a2c46 + md5: 1cd442d38b3a6f5a54ce57ab156a5e59 + sha256: 3bd784458b30fe5fd1867508d76c95a70021ed2bb943d74e3c5ed2d7133f1a08 manager: conda name: aiohttp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.5-py39hd1e30aa_0.conda - version: 3.8.5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py39hd1e30aa_1.conda + version: 3.8.6 +- category: main + dependencies: + botocore: '>=1.11.3' + python: '>=3.7' + wrapt: '' + hash: + md5: d457b2661051b833852509d2dc0c93db + sha256: 15384560a8df2c752a1a09588b7fe9c31f9edf96e0a5a9d7c07c547a37b9e95c + manager: conda + name: aws-xray-sdk + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/aws-xray-sdk-2.12.1-pyhd8ed1ab_0.conda + version: 2.12.1 +- category: main + dependencies: + aws-c-auth: '>=0.7.5,<0.7.6.0a0' + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-mqtt: '>=0.9.8,<0.9.9.0a0' + aws-c-s3: '>=0.3.20,<0.3.21.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' + libgcc-ng: '>=12' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + s2n: '>=1.3.55,<1.3.56.0a0' + hash: + md5: b3097849a780af6aaa3be17acd63527f + sha256: 3445ec9095251aa2ae69442ef88e681d315f8ca95720b04cb375a137dcaf6fcd + manager: conda + name: awscrt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.6-py39h6237ec6_2.conda + version: 0.19.6 +- category: main + dependencies: + python: '>=3.6' + requests: '>=2.18.4' + six: '>=1.11.0' + typing-extensions: '>=4.0.1' + hash: + md5: 6e97f7d5387626f896515442002ac920 + sha256: 3f3ec0617e825bcabb70722ace9153dfdc02895aebb2179fc20b82eb30f79ec8 + manager: conda + name: azure-core + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.29.5-pyhd8ed1ab_0.conda + version: 1.29.5 - category: main dependencies: python: '>=3.7,<4.0' types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 656a8ea23e1f7195e402ee126cd0e036 - sha256: 8533293be957aa444689d17c297207d3a76a3d75308f917edc13dc1703055b6a + md5: d89fbc67fee8b775ecd0cd6ae52a6ca0 + sha256: 08b6fe79cf30a5efc3f3b6da14ba6c9fcd8ad7f297f885d7b4846b1aeeccd8f2 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.41-pyhd8ed1ab_0.conda - version: 1.31.41 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.77-pyhd8ed1ab_0.conda + version: 1.31.77 +- category: main + dependencies: + msgpack-python: '>=0.5.2' + python: '>=3.7' + requests: '>=2.16.0' + hash: + md5: 174bd699bb5aa9e2622eb4b288276ff8 + sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60 + manager: conda + name: cachecontrol + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda + version: 0.13.1 - category: main dependencies: clang-format: 16.0.3 default_h1cdf331_2 @@ -4557,6 +4832,38 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda version: 0.9.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + numpy: '>=1.16' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + hash: + md5: 33afb3357cd0d120ecb26778d37579e4 + sha256: 01b18ac797fd51ba6dc78544a0aa23ac3773142d8099f3861be937ed157eab46 + manager: conda + name: contourpy + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py39h7633fee_1.conda + version: 1.1.1 +- category: main + dependencies: + appdirs: '' + click: '>=5.1' + filelock: '' + python: '>=3.7' + requests: '>=2' + hash: + md5: c99ae3abf501990769047b4b40a98f17 + sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6 + manager: conda + name: ensureconda + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2 + version: 1.4.3 - category: main dependencies: flask: '>=0.9' @@ -4576,43 +4883,61 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 6fbde8d3bdd1874132a1b26a3554b22c - sha256: 5aece5a948e881e2450be73002e52cd27df089b6ea64416f7694304307f66bd2 + md5: fea10604a45e974b110ea15a88913ebc + sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.27-pyhd8ed1ab_0.conda - version: 2.5.27 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda + version: 2.5.31 - category: main dependencies: importlib_metadata: '' - python: 2.7.*|>=3.5 + python: '>=3.7' hash: - md5: 35f19fabdfd44c8b53889be95333848c - sha256: d497c6f3b064d3dd8b76f277ea8d6a507acfe8cb04e31811baf66d8c533b8c08 + md5: f351864256e291b24b5a3bedda184bff + sha256: c947f2a64e4f06c722973894afb8e26df3aa2212e2e742def3506ccbad42141b manager: conda name: jsonpickle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-2.2.0-pyhd8ed1ab_0.tar.bz2 - version: 2.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-3.0.2-pyhd8ed1ab_1.conda + version: 3.0.2 - category: main dependencies: - jsonschema: '>=4.0.0,<4.18.0' - pathable: '>=0.4.1,<0.5.0' - python: '>=3.6' - pyyaml: '>=5.1' - typing_extensions: '>=4.3.0,<5.0.0' + attrs: '>=22.2.0' + importlib_resources: '>=1.4.0' + jsonschema-specifications: '>=2023.03.6' + pkgutil-resolve-name: '>=1.3.10' + python: '>=3.8' + referencing: '>=0.28.4' + rpds-py: '>=0.7.1' hash: - md5: eff09facc908d5619097edd090678347 - sha256: 9ed0cbf1fec505c4ed2238453b42c964f8f85baa30490daeb84dbf5afd65c0b1 + md5: 24d41c2f9cc199d0a180ecf7ef54739c + sha256: 07e5d395d83c4b12a7abe3989fb42abdcd3b1c51cd27549e5eab390bb8c7bf0f manager: conda - name: jsonschema-spec + name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-spec-0.1.4-pyhd8ed1ab_0.conda - version: 0.1.4 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.2-pyhd8ed1ab_0.conda + version: 4.19.2 +- category: main + dependencies: + pathable: '>=0.4.1,<0.5.0' + python: '>=3.8.0' + pyyaml: '>=5.1' + referencing: '>=0.28.0,<0.31.0' + requests: '>=2.31.0,<3.0.0' + hash: + md5: 4faa0a9ec46b2849c87b569799b78e0f + sha256: b6153bdaa0875ef3c30a093a7c45321f4e877558b9cffc6b2221325a652ccdd3 + manager: conda + name: jsonschema-path + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.1-pyhd8ed1ab_0.conda + version: 0.3.1 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4629,47 +4954,19 @@ package: version: 0.0.0.20190110_28_ga81397fc4 - category: main dependencies: - certifi: '>=2020.06.20' - contourpy: '>=1.0.1' - cycler: '>=0.10' - fonttools: '>=4.22.0' - freetype: '>=2.12.1,<3.0a0' - importlib-resources: '>=3.2.0' - kiwisolver: '>=1.0.1' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - numpy: '>=1.20.3,<2.0a0' - packaging: '>=20.0' - pillow: '>=6.2.0' - pyparsing: '>=2.3.1' - python: '>=3.9,<3.10.0a0' - python-dateutil: '>=2.7' - python_abi: 3.9.* *_cp39 - tk: '>=8.6.12,<8.7.0a0' + cryptography: <44,>=0.6 + pyjwt: <3,>=1.0.0 + python: '>=3.6' + requests: <3,>=2.0.0 hash: - md5: f2a931db797bb58bd335f4a857b4c898 - sha256: 34f8db992c68bee53fb6f0212707503ce197d13fadc231dbc37a99f31f72879a + md5: d113dcd5f7307ac7d4acc3fc71b6cac9 + sha256: f23aacce006804deed2176a317ed8584b511a2307f3926789089a507c26e1ffb manager: conda - name: matplotlib-base + name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.7.1-py39he190548_0.conda - version: 3.7.1 -- category: main - dependencies: - attrs: '>=19.2.0' - jsonschema: '>=4.0.0,<4.18.0' - python: '>=3.7' - rfc3339-validator: '' - hash: - md5: 6294c4a75fdeeca454e99abbea3f250a - sha256: 6b6fff6441e2673a822793776217f1c07d595ad7a73e7b631c7aeb8ac6663041 - manager: conda - name: openapi-schema-validator - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.4.4-pyhd8ed1ab_0.conda - version: 0.4.4 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.24.1-pyhd8ed1ab_0.conda + version: 1.24.1 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -4700,6 +4997,25 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-20.0.0-h8e330f5_0.conda version: 20.0.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + numpy: '>=1.22.4,<2.0a0' + python: '>=3.9,<3.10.0a0' + python-dateutil: '>=2.8.1' + python-tzdata: '>=2022a' + python_abi: 3.9.* *_cp39 + pytz: '>=2020.1' + hash: + md5: e21e23161a1627475021844a887ecd4f + sha256: bd10bd91e8e9a6bc39ed78d76b0febf74b9ab998afb2bca15122e16b1487428a + manager: conda + name: pandas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.2-py39hddac248_0.conda + version: 2.1.2 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -4737,17 +5053,45 @@ package: version: 3.3.1 - category: main dependencies: - cryptography: '>=38.0.0,<42,!=40.0.0,!=40.0.1' + python: '>=3.7' + wcwidth: '' + hash: + md5: 59ba1bf8ea558751a0d391249a248765 + sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc + manager: conda + name: prompt-toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda + version: 3.0.38 +- category: main + dependencies: + annotated-types: '>=0.4.0' + pydantic-core: 2.10.1 + python: '>=3.7' + typing-extensions: '>=4.6.1' + hash: + md5: aad1d187156725d52e1f8ee7756c20f6 + sha256: dc6330364f92de95a315a19e842a26605d6ca5c7d346e77811d42ad0438e32d8 + manager: conda + name: pydantic + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.4.2-pyhd8ed1ab_1.conda + version: 2.4.2 +- category: main + dependencies: + cryptography: '>=38.0.0,<41' python: '>=3.6' hash: - md5: 34f7d568bf59d18e3fef8c405cbece21 - sha256: 4daea3dc896987cc1334956fccfc0ed738663a84ad0c1d3f576a7a7936091534 + md5: 0b34aa3ab7e7ccb1765a03dd9ed29938 + sha256: 458428cb867f70f2af2a4ed59d382291ea3eb3f10490196070a15d1d71d5432a manager: conda name: pyopenssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda - version: 23.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 - category: main dependencies: cryptography: '' @@ -4764,6 +5108,36 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.3.0-pyh6c4a22f_1.tar.bz2 version: 3.3.0 +- category: main + dependencies: + python: '>=3.7' + pyyaml: '' + requests: '>=2.30.0,<3.0' + types-pyyaml: '' + typing_extensions: '' + urllib3: '>=1.25.10,<3.0' + hash: + md5: 3b9575392a494595648f1abe295bd5a5 + sha256: e38de0da8c9cfff976a0a6bbc98d5da771a79f0a86a88f54b4081b26bfaa88fe + manager: conda + name: responses + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.0-pyhd8ed1ab_0.conda + version: 0.24.0 +- category: main + dependencies: + botocore: '>=1.12.36,<2.0a.0' + python: '>=3.7' + hash: + md5: 5fe335cb1420d13a818fe01310af2b80 + sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d + manager: conda + name: s3transfer + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda + version: 0.7.0 - category: main dependencies: attrs: '' @@ -4786,13 +5160,13 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: cfb68a22e2d9108634a08a8a3b19d1b6 - sha256: db76e25d0c1cad3ca6339fd4d09c9cd03dcea7072b302c6eaa4123a358e98a78 + md5: 0e6f3ef2dd562ed33d2a18d9c6f78d88 + sha256: efff009fd24eca4cf1ecdb5010d605db11078f08be7d046d8d23a2e0e63e5015 manager: conda name: secretstorage optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py39hf3d152e_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py39hf3d152e_2.conda version: 3.3.3 - category: main dependencies: @@ -4815,14 +5189,43 @@ package: platformdirs: <4,>=3.9.1 python: '>=3.8' hash: - md5: c3feaf947264a59a125e8c26e98c3c5a - sha256: 85c96449202ca87ec12783d8675b3655b4cd7b7afe49f2dc37d743adb0ed177f + md5: fb1fc875719e217ed799a7aae11d3be4 + sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda - version: 20.24.4 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda + version: 20.24.6 +- category: main + dependencies: + botocore: '>=1.31.77,<1.32.0' + jmespath: '>=0.7.1,<2.0.0' + python: '>=3.7' + s3transfer: '>=0.7.0,<0.8.0' + hash: + md5: a4cfb5de20a9b5d788f36163f3e9e418 + sha256: 51c2fa0df9da38402bc0910751bec55982c136cc270c9dbf9bfcadead724a2bb + manager: conda + name: boto3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.77-pyhd8ed1ab_0.conda + version: 1.28.77 +- category: main + dependencies: + cachecontrol: 0.13.1 pyhd8ed1ab_0 + filelock: '>=3.8.0' + python: '>=3.7' + hash: + md5: 8c4781ca0893cff3a64423954ce234a1 + sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85 + manager: conda + name: cachecontrol-with-filecache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda + version: 0.13.1 - category: main dependencies: conda-package-streaming: '>=0.9.0' @@ -4837,6 +5240,24 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda version: 2.2.0 +- category: main + dependencies: + packaging: '>=14.0' + paramiko: '>=2.4.3' + python: '>=3.7' + pywin32-on-windows: '' + requests: '>=2.26.0' + urllib3: '>=1.26.0' + websocket-client: '>=0.32.0' + hash: + md5: c95d23d8bae7e21491868cc7772d7c73 + sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 + manager: conda + name: docker-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda + version: 6.1.3 - category: main dependencies: atk-1.0: '>=2.36.0' @@ -4879,13 +5300,13 @@ package: python_abi: 3.9.* *_cp39 secretstorage: '>=3.2' hash: - md5: bca055aa9d1d8730c1a93a9ad138456a - sha256: d431310c2195bb77a6fc5184b3914b9018b7ed31b27d0faa2296dd681fe229e3 + md5: b3d20489af92d28bf9b952529e95a425 + sha256: fbe9e8a0e2377a7607d29b49981fe556710e6da0a34c340b0b357b0549c1f798 manager: conda name: keyring optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py39hf3d152e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py39hf3d152e_1.conda version: 24.2.0 - category: main dependencies: @@ -4907,372 +5328,32 @@ package: version: 2.56.0 - category: main dependencies: - importlib_resources: '>=5.8.0,<6.0.0' - jsonschema: '>=4.0.0,<4.18.0' - jsonschema-spec: '>=0.1.1,<0.2.0' - lazy-object-proxy: '>=1.7.1,<2.0.0' - openapi-schema-validator: '>=0.4.2,<0.5' - python: '>=3.7' - typing_extensions: '' - hash: - md5: 365a6ba8516ec76591f32918895502d5 - sha256: 6364d948b9215a15a0482eafab725d9acdad6d03c744501c8fdedfac0d8e12ff - manager: conda - name: openapi-spec-validator - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.5.7-pyhd8ed1ab_0.conda - version: 0.5.7 -- category: main - dependencies: - cfgv: '>=2.0.0' - identify: '>=1.0.0' - nodeenv: '>=0.11.1' - python: '>=3.8' - pyyaml: '>=5.1' - virtualenv: '>=20.10.0' - hash: - md5: f0fe759dc1dc02722c15cfb5faa1172b - sha256: 7adddcb9b5651fe5ed08a8438f2c967ac126c8b3fa854376a9a6f97511810c6a - manager: conda - name: pre-commit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.4.0-pyha770c72_0.conda - version: 3.4.0 -- category: main - dependencies: - __unix: '' - openjdk: '>=8' - hash: - md5: a46fac25dff2221c873bfceab88fcb47 - sha256: 08012e6a1ab95c56b86fe76ca76d236db8aa60f6cb4a47db6ef307671aeb2c1b - manager: conda - name: sbt - optional: false - platform: linux-64 - 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' - certifi: '' - cryptography: '>=1.3.4' - idna: '>=2.0.0' - pyopenssl: '>=0.14' - pysocks: '>=1.5.6,<2.0,!=1.5.7' - python: <4.0 - hash: - md5: 27db656619a55d727eaf5a6ece3d2fd6 - sha256: 213bdf6c3a5d721fa83b45d527d3ecd340f9547c0d6bbd0b8d9d746ec9a1fb4b - manager: conda - name: urllib3 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda - version: 1.26.15 -- category: main - dependencies: - jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - python-dateutil: '>=2.1,<3.0.0' - urllib3: '>=1.25.4,<1.27' - hash: - md5: 157c6bb045111f1b4f68e16df9251e7e - sha256: ab65ee4c7f97d8072f25891c8329ad54dece85fefc5053e31266275ea6db637c - manager: conda - name: botocore - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.41-pyhd8ed1ab_0.conda - version: 1.31.41 -- category: main - dependencies: - cairo: '>=1.16.0,<2.0a0' - expat: '' - fontconfig: '>=2.14.2,<3.0a0' - fonts-conda-ecosystem: '' + certifi: '>=2020.06.20' + contourpy: '>=1.0.1' + cycler: '>=0.10' + fonttools: '>=4.22.0' freetype: '>=2.12.1,<3.0a0' - gdk-pixbuf: '>=2.42.10,<3.0a0' - gtk2: '' - gts: '>=0.7.6,<0.8.0a0' - libexpat: '>=2.5.0,<3.0a0' + importlib-resources: '>=3.2.0' + kiwisolver: '>=1.3.1' libgcc-ng: '>=12' - libgd: '>=2.3.3,<2.4.0a0' - libglib: '>=2.76.2,<3.0a0' - librsvg: '>=2.56.0,<3.0a0' libstdcxx-ng: '>=12' - libtool: '' - libwebp-base: '>=1.3.0,<2.0a0' - libzlib: '>=1.2.13,<1.3.0a0' - pango: '>=1.50.14,<2.0a0' - zlib: '' - hash: - md5: 597e2d0e1c6bc2e4457714ff479fe142 - sha256: 4bfb42de2d28406666ef6729169cae3f49c216c5ebd9f34afa40223755e2aaf8 - manager: conda - name: graphviz - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.5-h28d9a01_0.conda - version: 8.0.5 -- category: main - dependencies: - certifi: '>=2017.4.17' - charset-normalizer: '>=2,<4' - idna: '>=2.5,<4' - python: '>=3.7' - urllib3: '>=1.21.1,<3' - hash: - md5: a30144e4156cdbb236f99ebb49828f8b - sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad - manager: conda - name: requests - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda - version: 2.31.0 -- category: main - dependencies: - botocore: '>=1.11.3' - python: '>=3.4' - wrapt: '' - hash: - md5: a9f8851a7aad0fa6ec843b1beb95decf - sha256: ad37f3f8a6653fb91354716adec29dfb9f5917b7aa06d77f33af8ea7947eb116 - manager: conda - name: aws-xray-sdk - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-xray-sdk-2.12.0-pyhd8ed1ab_0.conda - version: 2.12.0 -- category: main - dependencies: - python: '>=3.6' - requests: '>=2.18.4' - six: '>=1.11.0' - typing-extensions: '>=4.0.1' - hash: - 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.29.3-pyhd8ed1ab_0.conda - version: 1.29.3 -- category: main - dependencies: - msgpack-python: '>=0.5.2' - python: '>=3.7' - requests: '>=2.16.0' - hash: - md5: 174bd699bb5aa9e2622eb4b288276ff8 - sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60 - manager: conda - name: cachecontrol - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda - version: 0.13.1 -- category: main - dependencies: - boltons: '>=23.0.0' - conda-package-handling: '>=1.3.0' - jsonpatch: '>=1.32' - packaging: '>=23.0' - pluggy: '>=1.0.0' - pycosat: '>=0.6.3' - pyopenssl: '>=16.2.0' + numpy: '>=1.22.4,<2.0a0' + packaging: '>=20.0' + pillow: '>=8' + pyparsing: '>=2.3.1' python: '>=3.9,<3.10.0a0' + python-dateutil: '>=2.7' python_abi: 3.9.* *_cp39 - requests: '>=2.27.0,<3' - ruamel.yaml: '>=0.11.14,<0.18' - setuptools: '>=60.0.0' - toolz: '>=0.8.1' - tqdm: '>=4' + tk: '>=8.6.13,<8.7.0a0' hash: - md5: 28f9479dd8a71fade399e42d67d1506d - sha256: 017e565c58e23da12aba5217bb068170acec66e387143cff79b2208d223f1fd6 + md5: 89615b866cb3b0d8ad4e2a11e2bcf9a0 + sha256: 757714b23660b4627465cb640e2e8102a22b54aa3b961d475e2baa085180ad77 manager: conda - name: conda + name: matplotlib-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-23.7.3-py39hf3d152e_0.conda - version: 23.7.3 -- category: main - dependencies: - packaging: '>=14.0' - paramiko: '>=2.4.3' - python: '>=3.7' - pywin32-on-windows: '' - requests: '>=2.26.0' - urllib3: '>=1.26.0' - websocket-client: '>=0.32.0' - hash: - md5: c95d23d8bae7e21491868cc7772d7c73 - sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 - manager: conda - name: docker-py - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda - version: 6.1.3 -- category: main - dependencies: - appdirs: '' - click: '>=5.1' - filelock: '' - python: '>=3.7' - requests: '>=2' - hash: - md5: c99ae3abf501990769047b4b40a98f17 - sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6 - manager: conda - name: ensureconda - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2 - version: 1.4.3 -- category: main - dependencies: - cryptography: '>=0.6,<44' - pyjwt: '>=1.0.0,<3' - python: '>=3.6' - requests: '>=2.0.0,<3' - hash: - md5: 4af1ca41814694c1028c4f1b1f88c38f - sha256: 50f80fe167d5ca5be572174f3fcad4f4cef225dcf1feccc88fbaf3d661fe15c9 - manager: conda - name: msal - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.23.0-pyhd8ed1ab_0.conda - version: 1.23.0 -- category: main - dependencies: - graphviz: '>=2.46.1' - python: '>=3' - hash: - md5: 196447bc6fd769c3eb2d51de1aa866a5 - sha256: 55e25bf761438b6b52e67ed06d3e5575445177a58636e873a9899aa7fd9c8585 - manager: conda - name: python-graphviz - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 - version: 0.20.1 -- category: main - dependencies: - python: '>=3.7' - pyyaml: '' - requests: '>=2.22.0,<3.0' - types-pyyaml: '' - typing_extensions: '' - urllib3: '>=1.25.10' - hash: - md5: bf15c93720dfea117aaea3155cbebce5 - sha256: c64db4a71de87e17fbcbd0b3af2186ab25d65428bb565bd7d070850324096f3b - manager: conda - name: responses - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/responses-0.23.1-pyhd8ed1ab_0.conda - version: 0.23.1 -- category: main - dependencies: - botocore: '>=1.12.36,<2.0a.0' - python: '>=3.7' - hash: - md5: f57096b122c78f7d8bd6885f52db1077 - sha256: 636453288a2436016235b86ec9bdf6c965aabe2114a68c51809874014255db71 - manager: conda - name: s3transfer - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.6.2-pyhd8ed1ab_0.conda - version: 0.6.2 -- category: main - dependencies: - botocore: 1.31.41 - colorama: '>=0.2.5,<0.4.5' - docutils: '>=0.10,<0.17' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - pyyaml: '>=3.10,<6.1' - rsa: '>=3.1.2,<4.8' - s3transfer: '>=0.6.0,<0.7.0' - hash: - md5: 03c2e4dfd567f3efefe454fd6c1058b2 - sha256: b5c0e89a663c283807f89f12ed19f78da7fb9620a9f9dcb9da35e2bf1b13ee2f - manager: conda - name: awscli - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.29.41-py39hf3d152e_0.conda - version: 1.29.41 -- category: main - dependencies: - botocore: '>=1.31.41,<1.32.0' - jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - s3transfer: '>=0.6.0,<0.7.0' - hash: - md5: 904d83242795391e42132fba9ce95884 - sha256: 1766d30554de4c2cda01284620c69e9306d14329bfd1b60324c25668dfa36a18 - manager: conda - name: boto3 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 -- category: main - dependencies: - cachecontrol: 0.13.1 pyhd8ed1ab_0 - filelock: '>=3.8.0' - python: '>=3.7' - hash: - md5: 8c4781ca0893cff3a64423954ce234a1 - sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85 - manager: conda - name: cachecontrol-with-filecache - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda - version: 0.13.1 -- category: main - dependencies: - colorama: '' - conda: '' - networkx: '' - python: '>=3.6' - hash: - md5: 184216409957e082712d750862782903 - sha256: 54e9cf114ca4eaeda91b5bb11a09d4391ba4be8a4fb2911259fc7dc2ec636054 - manager: conda - name: conda-tree - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda - version: 1.1.0 -- category: main - dependencies: - __unix: '' - conda: '>=4.6' - conda-standalone: '' - jinja2: '' - pillow: '>=3.1' - python: '>=3.7' - ruamel.yaml: '>=0.11.14,<0.18' - hash: - md5: 874c9c92cfcb27369d5620eb65f9ec9c - sha256: cad7b6bdf433da141dabcbb7c138e8665db20382e000ff9629b6d0c9141528b0 - manager: conda - name: constructor - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.4.5-pyh55f8243_0.conda - version: 3.4.5 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.1-py39he9076e7_0.conda + version: 3.8.1 - category: main dependencies: msal: '>=0.4.1,<2.0' @@ -5289,51 +5370,157 @@ package: version: 1.0.0 - category: main dependencies: - boto3: '>=1.19.5,<2' - jsonschema: '>=3.2,<5' - pydantic: ~=1.10.2 - python: '>=3.7' - typing_extensions: '>=4.4.0,<5' + jsonschema: '>=4.19.1,<5.0.0a0' + jsonschema-specifications: '>=2023.5.2,<2024.0.0' + python: '>=3.8' + rfc3339-validator: '' hash: - md5: 2f1c7e055a216b95454484d831cc60b3 - sha256: ad418000db6c5105416a87be77026944450cd5b922dd46da0d39782fad35ba33 + md5: 86794cb397bb1b311da59f9ac232b0c8 + sha256: 184ab5d662741d549e5bdc3ea75846ed9a5d0ae2072d9b970d92ab0e4fbe6145 + manager: conda + name: openapi-schema-validator + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.6.2-pyhd8ed1ab_0.conda + version: 0.6.2 +- category: main + dependencies: + cfgv: '>=2.0.0' + identify: '>=1.0.0' + nodeenv: '>=0.11.1' + python: '>=3.8' + pyyaml: '>=5.1' + virtualenv: '>=20.10.0' + hash: + md5: 964e3d762e427661c59263435a14c492 + sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + manager: conda + name: pre-commit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda + version: 3.5.0 +- category: main + dependencies: + prompt-toolkit: '>=3.0.38,<3.0.39.0a0' + hash: + md5: 45b74f64d8808eda7e6f6e6b1d641fd2 + sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 + manager: conda + name: prompt_toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda + version: 3.0.38 +- category: main + dependencies: + __unix: '' + openjdk: '>=8' + hash: + md5: b6f6329c1a8a1efaaf16024e545335f5 + sha256: f5588175723814ad220d6dad75771d7139c293df802ce871ab2b89a629250013 + manager: conda + name: sbt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sbt-1.9.7-hd8ed1ab_0.conda + version: 1.9.7 +- category: main + dependencies: + boto3: '>=1.19.5' + jsonschema: <5,>=3.2 + pydantic: '>=1.8,<3' + python: '>=3.7,<4.0' + typing-extensions: <5,>=4.4 + hash: + md5: af59efdd26e86fac14c2746c66cb706c + sha256: ea26d8d828b4e5c8796db950f8b8e8428c95376a536c541b8f0bf937b17ea8b3 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.73.0-pyhd8ed1ab_0.conda - version: 1.73.0 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.79.0-pyhd8ed1ab_0.conda + version: 1.79.0 - category: main dependencies: - azure-core: '>=1.11.0,<2.0.0' - cryptography: '>=2.5' - msal: '>=1.12.0,<2.0.0' - msal_extensions: '>=0.3.0,<2.0.0' - python: '>=3.7' - six: '>=1.12' + awscrt: '>=0.16.4,<=0.19.6' + colorama: '>=0.2.5,<0.4.7' + cryptography: '>=3.3.2,<=40.0.2' + distro: '>=1.5.0,<1.9.0' + docutils: '>=0.10,<0.20' + jmespath: '>=0.7.1,<1.1.0' + prompt_toolkit: '>=3.0.24,<3.0.39' + pyopenssl: <23.2 + python: '>=3.9,<3.10.0a0' + python-dateutil: '>=2.1,<3.0.0' + python_abi: 3.9.* *_cp39 + ruamel.yaml: '>=0.15.0,<=0.17.21' + ruamel.yaml.clib: '>=0.2.0,<=0.2.7' + urllib3: '>=1.25.4,<1.27' hash: - md5: 221a093ddca5e5abf2090a68dd964266 - sha256: af18f4cc9305c849e5ebbaa5cab69bc546c1d8a67accaf2e7bdeb39ab6f75f6f + md5: e6eb81cb5c41c72a6b1b1d08cf52dce8 + sha256: cc94fa2ec0ff4481292dd34bdd93a94b573ea9309a7113fcac35af1e6a232e58 + manager: conda + name: awscli + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.31-py39hf3d152e_0.conda + version: 2.13.31 +- category: main + dependencies: + azure-core: <2.0.0,>=1.23.0 + cryptography: '>=2.5' + msal: <2.0.0,>=1.24.0 + msal_extensions: <2.0.0,>=0.3.0 + python: '>=3.7' + hash: + md5: d1ef208ae2a355e5bb9cdce337644ce9 + sha256: a7a80ce603b0b2af0670e676b0ce96cc3fddd7c59f8f2c4d5767f5cfda7a74e9 manager: conda name: azure-identity optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/azure-identity-1.12.0-pyhd8ed1ab_0.tar.bz2 - version: 1.12.0 + url: https://conda.anaconda.org/conda-forge/noarch/azure-identity-1.15.0-pyhd8ed1ab_0.conda + version: 1.15.0 - category: main dependencies: boto3: '' python: '' typing_extensions: '' hash: - md5: 772310fe036b21f322cfafff4e3c8169 - sha256: 8695b9bc5fcab93aed3b1aa5bda8f3922340bc10a14088fa623470db4c9a558d + md5: 7dbbfc76325bbc7fa7d72b879e5b3712 + sha256: 99743530b8bda235c60678276723bdd2499c65f58422613a8b9facf15e50a8ec manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.77-pyhd8ed1ab_0.conda + version: 1.28.77 +- category: main + dependencies: + archspec: '' + boltons: '>=23.0.0' + conda-package-handling: '>=2.2.0' + jsonpatch: '>=1.32' + packaging: '>=23.0' + pluggy: '>=1.0.0' + pycosat: '>=0.6.3' + pyopenssl: '>=16.2.0' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + requests: '>=2.27.0,<3' + ruamel.yaml: '>=0.11.14,<0.18' + setuptools: '>=60.0.0' + tqdm: '>=4' + hash: + md5: c1d2d9bea2ab80b9e7937f72fec646cd + sha256: 2da2e5617696f1ba826d9653f21ed29e63aea2d4b3b3abd0c0d4617edab37ee4 + manager: conda + name: conda + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-23.9.0-py39hf3d152e_2.conda + version: 23.9.0 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5370,32 +5557,79 @@ package: version: 1.4.0 - category: main dependencies: - boto3: '' - python: '>=3.6' - typing-extensions: '' + cairo: '>=1.16.0,<2.0a0' + expat: '' + fontconfig: '>=2.14.2,<3.0a0' + fonts-conda-ecosystem: '' + freetype: '>=2.12.1,<3.0a0' + gdk-pixbuf: '>=2.42.10,<3.0a0' + gtk2: '' + gts: '>=0.7.6,<0.8.0a0' + libexpat: '>=2.5.0,<3.0a0' + libgcc-ng: '>=12' + libgd: '>=2.3.3,<2.4.0a0' + libglib: '>=2.76.2,<3.0a0' + librsvg: '>=2.56.0,<3.0a0' + libstdcxx-ng: '>=12' + libtool: '' + libwebp-base: '>=1.3.0,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + pango: '>=1.50.14,<2.0a0' + zlib: '' hash: - md5: 7654bffc34df00bef7662f5aaede6024 - sha256: 0bb7792dbb38eaf3a75fe5ae547aaf62197b140feb5a624e80adc028f9fbc864 + md5: 597e2d0e1c6bc2e4457714ff479fe142 + sha256: 4bfb42de2d28406666ef6729169cae3f49c216c5ebd9f34afa40223755e2aaf8 manager: conda - name: mypy-boto3-s3 + name: graphviz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.36-pyhd8ed1ab_0.conda - version: 1.28.36 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.5-h28d9a01_0.conda + version: 8.0.5 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 8678482bae631d4af00874831dbe4798 - sha256: 72f952beb3209ea9cfb20011c26e6239c38b14fdafc216fa773eec4b644db326 + md5: e4613bd862e1d98d361028fc4c971ff8 + sha256: dffba76e4bc56360fa5657b45d0f976f39cc3f271efc73e4f51041ce195574a3 + manager: conda + name: mypy-boto3-s3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.55-pyhd8ed1ab_0.conda + version: 1.28.55 +- category: main + dependencies: + boto3: '' + python: '>=3.6' + typing-extensions: '' + hash: + md5: f64cd26ce98b92dabe21ad9c5ba9ce60 + sha256: f660b474d2e796bb761d2fcf3fb1fe71b9293216c6c73b776d45ab523c454b12 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.75-pyhd8ed1ab_0.conda + version: 1.28.75 +- category: main + dependencies: + importlib_resources: '>=5.8,<7.0' + jsonschema: '>=4.18.0,<5.0.0' + jsonschema-path: '>=0.3.1,<0.4.0' + lazy-object-proxy: '>=1.7.1,<2.0.0' + openapi-schema-validator: '>=0.6.0,<0.7.0' + python: '>=3.8.0' + hash: + md5: 01d3b50ae6ec011c99b043388fc3148d + sha256: b3aff38febb575647f1b5ad246dc4a9f221e3f712027a71be6e2554c3fe44220 + manager: conda + name: openapi-spec-validator + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.7.1-pyhd8ed1ab_0.conda + version: 0.7.1 - category: main dependencies: boto3: '' @@ -5412,26 +5646,72 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.73.0' + aws-sam-translator: '>=1.77.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' - jsonschema: '>=3.0,<4.18' + jsonschema: '>=3.0,<5' junit-xml: '>=1.9,<2.dev0' networkx: '>=2.4,<4' python: '>=3.7,<4.0' pyyaml: '>5.4' - regex: '' + regex: '>=2021.7.1' sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: 7e1bb14c96e20a83a9d2170f7cf99b35 - sha256: c9a71f90673966eb5d449993e134ac74ef8cdb3e1e5a7fe85f77fbfca768369f + md5: bd38b7f9983057b8c28d718dbda22e61 + sha256: 36a7f4c7623eed2f0987ae7b716a3f39caee1a865be30aeb7c46bc0091b29835 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.79.9-pyhd8ed1ab_0.conda - version: 0.79.9 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.1-pyhd8ed1ab_0.conda + version: 0.83.1 +- category: main + dependencies: + colorama: '' + conda: '' + networkx: '' + python: '>=3.6' + hash: + md5: 184216409957e082712d750862782903 + sha256: 54e9cf114ca4eaeda91b5bb11a09d4391ba4be8a4fb2911259fc7dc2ec636054 + manager: conda + name: conda-tree + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda + version: 1.1.0 +- category: main + dependencies: + __unix: '' + conda: '>=4.6' + conda-standalone: '' + jinja2: '' + pillow: '>=3.1' + python: '>=3.7' + ruamel.yaml: '>=0.11.14,<0.18' + hash: + md5: bece1550cd8ce528b234f41c85786ef8 + sha256: a4304eff880a3150e027f8af8d158cc9bf6e6c8444d2affda4e2b17125f44a85 + manager: conda + name: constructor + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.5.0-pyhe4f9e05_0.conda + version: 3.5.0 +- category: main + dependencies: + graphviz: '>=2.46.1' + python: '>=3' + hash: + md5: 196447bc6fd769c3eb2d51de1aa866a5 + sha256: 55e25bf761438b6b52e67ed06d3e5575445177a58636e873a9899aa7fd9c8585 + manager: conda + name: python-graphviz + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 + version: 0.20.1 - category: main dependencies: aws-xray-sdk: '!=0.96,>=0.93' @@ -5461,14 +5741,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 779af6a36cd3a8f7260a074462e5e587 - sha256: d5128b843ac0f338f955bb1a93c3565be87b6a5c241300ee2a34fcd4509f7390 + md5: 7bce233565ad81fe3117ef952116bcf0 + sha256: 90a3055b864cb711747211085b9ddd891a9477d648e666b8821347156af12f34 manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.2-pyhd8ed1ab_0.conda - version: 4.2.2 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.7-pyhd8ed1ab_0.conda + version: 4.2.7 - category: main dependencies: livereload: '>=2.3.0' @@ -5566,32 +5846,32 @@ package: - 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' + babel: '>=2.9' + colorama: '>=0.4.5' + docutils: '>=0.18.1,<0.21' + imagesize: '>=1.3' + importlib-metadata: '>=4.8' + jinja2: '>=3.0' + packaging: '>=21.0' + pygments: '>=2.14' + python: '>=3.9' + requests: '>=2.25.0' + snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.5' + sphinxcontrib-serializinghtml: '>=1.1.9' hash: - md5: cd1129e88f6278787212624e1b7a8001 - sha256: 9d614432deff37f90ba406855fd9a21799ef09ab43ec27f5af12ac810fcd1dd1 + md5: bbfd1120d1824d2d073bc65935f0e4c0 + sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 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 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda + version: 7.2.6 - category: main dependencies: python: '>=3.9' @@ -5615,25 +5895,17 @@ package: platform: linux-64 url: https://files.pythonhosted.org/packages/6b/20/471f41173930550f279ccb65596a5ac19b9ac974a8d93679bcd3e0c31498/mock-5.1.0-py3-none-any.whl version: 5.1.0 -- dependencies: {} - hash: - sha256: 40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0 - manager: pip - name: pyyaml - platform: linux-64 - url: https://files.pythonhosted.org/packages/12/fc/a4d5a7554e0067677823f7265cb3ae22aed8a238560b5133b58cda252dad/PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl - version: '6.0' - category: main dependencies: - six: '*' + six: '>=1.12.0' hash: - sha256: 6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c + sha256: 051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24 manager: pip name: asttokens optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl - version: 2.2.1 + url: https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl + version: 2.4.1 - category: main dependencies: numpy: '*' @@ -5660,23 +5932,23 @@ package: - dependencies: typing-extensions: '>=4.2.0' hash: - sha256: abade85268cc92dff86d6effcd917893130f0ff516f3d637f50dadc22ae93999 + sha256: 9849f031cf8a2f0a928fe885e5a04b08006d6d41876b8bbd2fc68a18f9f2e3fd manager: pip name: pydantic platform: linux-64 - url: https://files.pythonhosted.org/packages/65/d3/8ea06a592f4c218d3079ddb6d267015e6635c11ea4b282c2f5a9b62ca60b/pydantic-1.10.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 1.10.11 + url: https://files.pythonhosted.org/packages/18/57/11b1e218908aae98d7df4364accc5e5a69db0a9396c011f494c69947e1b9/pydantic-1.10.13-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + version: 1.10.13 - category: main dependencies: ruamel.yaml.clib: '>=0.2.7' hash: - sha256: 23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447 + sha256: b16b6c3816dff0a93dca12acf5e70afd089fa5acb80604afd1ffa8b465b7722c manager: pip name: ruamel.yaml optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/d9/0e/2a05efa11ea33513fbdf4a2e2576fe94fd8fa5ad226dbb9c660886390974/ruamel.yaml-0.17.32-py3-none-any.whl - version: 0.17.32 + url: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + version: 0.17.40 - category: main dependencies: mock: '*' @@ -5721,13 +5993,13 @@ package: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: 1a441dad41c9a0615c6ae96464190eddccd2de8153254059ff18ffd7b3b84800 + sha256: 17cafeddda48637677e854aae51f29177b916c9c4cb94d66d73fc1f8541a8fc0 manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/d8/91/9756e7cf0b155e80bf9a62beffdd1dec4afce43cc6ab7f432f2267c62762/icontract-2.6.2-py3-none-any.whl - version: 2.6.2 + url: https://files.pythonhosted.org/packages/ab/11/f55bf95fa952c492b5cac0e3c47a542e2b4b91791b0f1d64807e1018078c/icontract-2.6.4-py3-none-any.whl + version: 2.6.4 - category: main dependencies: icontract: '>=2.0.1,<3' diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 64bd5ff6..abe83304 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml -f /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/chipyard.yaml -f /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,14 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 0316ec2ff5cf432ddafadc75598f6b4f8bb206bdd13a8bfc2e3bcd184b559617 + linux-64: 9963da13032f21beaffd417b65e4c28807446ab56efa04c0748ae798fc95fe92 platforms: - linux-64 sources: - - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml - - /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/chipyard.yaml - - /scratch/abejgonza/firesim/target-design/chipyard/conda-reqs/riscv-tools.yaml + - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml + - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -77,14 +75,14 @@ package: - category: main dependencies: {} hash: - md5: 8d22677b00e9ea665f757c70a98d2c6f - sha256: 327b40fc91521ad7ba7cc979e9ae40fafec145536b23c8f87a73cbb403eee1d8 + md5: c0c0febec28f66bc333a24d97b1d1242 + sha256: c82fc09d29115df65bea000da3f6c982db1d4f67e1d2a89759825a13c1dc8a7b manager: conda name: conda-standalone optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.7.2-ha770c72_0.conda - version: 23.7.2 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.9.0-ha770c72_0.conda + version: 23.9.0 - category: main dependencies: {} hash: @@ -143,68 +141,57 @@ package: - category: main dependencies: {} hash: - md5: b9ae31bc2e565684ebaf82d4bd954d55 - sha256: 257495088b78d4344c7ea21145581ed6da1c5bf8320f49b659ce2ed2d6265f76 + md5: ed613582de7b8569fdc53ca141be176a + sha256: 7e12d0496389017ca526254913b24d9024e1728c849a0d6476a4b7fde9d03cba manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_2.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: afb656a334c409dd9805508af1c89c7a - sha256: a06235f4c4b85b463d9b8a73c9e10c1b5b4105f8a0ea8ac1f2f5f64edac3dfe7 - manager: conda - name: libgfortran5 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.1.0-h15d22d2_0.conda - version: 13.1.0 -- category: main - dependencies: {} - hash: - md5: 7c80158949230e6d837186b20b2fcf13 - sha256: b311dad92ffafd29668fca6330dc707f4d7f154a4fa4c3859832897416de39ec + md5: 7268a17e56eb099d1b8869bbbf46de4c + sha256: e8483069599561ef24b884c898442eadc510190f978fa388db3281b10c3c084e manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_2.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 067bcc23164642f4c226da631f2a2e1d - sha256: 6f9eb2d7a96687938c0001166a3b308460a8eb02b10e9d0dd9e251f0219ea05c + md5: 9172c297304f2a20134fc56c97fbe229 + sha256: ab22ecdc974cdbe148874ea876d9c564294d5eafa760f403ed4fd495307b4243 manager: conda name: libstdcxx-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.1.0-hfd8a6a1_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda + version: 13.2.0 - category: main dependencies: {} hash: - md5: 9da14a0b14cf61245d1a026b2f281405 - sha256: 423a10bbf512b1530c98c01c414ef97d551d0b0920d393ecc164dde17ce475f7 + md5: b0813e784cf638d5498967384a1cba5b + sha256: 621935f2263d5920bf66a4c8df81ab9c4c80fd8d318aec767b78aa804ca3a8ad manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.440_0_g43e733e-20230724_080446.tar.bz2 - version: 1.0.440_0_g43e733e + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.455_1_ge0f692f-20231025_070436.tar.bz2 + version: 1.0.455_1_ge0f692f - category: main dependencies: {} hash: - md5: 4eb33d14d794b0f4be116443ffed3853 - sha256: bcb15db27eb6fbc0fe15d23aa60dcfa58ef451d92771441068d4a911aea7bb9f + md5: 26322ec5d7712c3ded99dd656142b8ce + sha256: 456bec815bfc2b364763084d08b412fdc4c17eb9ccc66a36cb775fa7ac3cbaec manager: conda name: python_abi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-3_cp310.conda + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-4_cp310.conda version: '3.10' - category: main dependencies: {} @@ -244,30 +231,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-h4a8ded7_13.tar.bz2 version: 3.10.0 -- category: main - dependencies: - libgfortran5: 13.1.0 h15d22d2_0 - hash: - md5: 506dc07710dd5b0ba63cbf134897fc10 - sha256: 429e1d8a3e70b632df5b876e3fc322a56f769756693daa07114c46fa5098684e - manager: conda - name: libgfortran-ng - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.1.0-h69a702a_0.conda - version: 13.1.0 - category: main dependencies: _libgcc_mutex: 0.1 conda_forge hash: - md5: 56ca14d57ac29a75d23a39eb3ee0ddeb - sha256: 5d441d80b57f857ad305a65169a6b915d4fd6735cdc9e9bded35d493c91ef16d + md5: e2042154faafe61969556f28bade94b9 + sha256: e1e82348f8296abfe344162b3b5f0ddc2f504759ebeb8b337ba99beaae583b15 manager: conda name: libgomp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.1.0-he5830b7_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda + version: 13.2.0 - category: main dependencies: _libgcc_mutex: 0.1 conda_forge @@ -324,14 +299,14 @@ package: _libgcc_mutex: 0.1 conda_forge _openmp_mutex: '>=4.5' hash: - md5: cd93f779ff018dd85c7544c015c9db3c - sha256: fba897a02f35b2b5e6edc43a746d1fa6970a77b422f258246316110af8966911 + md5: c28003b0be0494f9a7664389146716ff + sha256: d361d3c87c376642b99c1fc25cddec4b9905d3d9b9203c1c545b8c8c1b04539a manager: conda name: libgcc-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.1.0-he5830b7_0.conda - version: 13.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda + version: 13.2.0 - category: main dependencies: libgcc-ng: '>=12' @@ -344,6 +319,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.9-hd590300_0.conda version: 1.2.9 +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 8dacaf703f8e57aa0c4f0c5c8f4be39b + sha256: 75dbc43b047ac1675422099293a2622fd9fd462dc8159c87322cd9847ca7b228 + manager: conda + name: aws-c-common + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.4-hd590300_0.conda + version: 0.9.4 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -384,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: e8c18d865be43e2fb3f7a145b6adf1f5 - sha256: c4276b1a0e8f18ab08018b1881666656742b325e0fcf2354f714e924d28683b6 + md5: c06fa0440048270817b9e3142cc661bf + sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1 manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.19.1-hd590300_0.conda - version: 1.19.1 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda + version: 1.21.0 - category: main dependencies: libgcc-ng: '>=12' @@ -416,18 +403,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/ctags-5.8-h14c3975_1000.tar.bz2 version: '5.8' -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - hash: - md5: 6bfb79319763a11c7423c9d0e0ee00b7 - manager: conda - name: dromajo - optional: false - platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/dromajo-1.0.0-0_h1234567_g6a6e34e.tar.bz2 - version: 1.0.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -505,16 +480,16 @@ package: version: 1.3.13 - category: main dependencies: - libgcc-ng: '>=10.3.0' + libgcc-ng: '>=12' hash: - md5: 30bd3316aac2d72f498a04b2a49c1050 - sha256: 9a233d5f734f2a4bed786041a9823b69dad5b6757d84341e9f5c822ec89f083b + md5: cb8143aa2e59e9684c41dfdf74af38ac + sha256: 91583f2d85cded2cd81af17f23464888d53a1f1e3424456ee1befc3f73436d7b manager: conda name: gzip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.12-h166bdaf_0.tar.bz2 - version: '1.12' + url: https://conda.anaconda.org/conda-forge/linux-64/gzip-1.13-hd590300_0.conda + version: '1.13' - category: main dependencies: libgcc-ng: '>=12' @@ -558,25 +533,25 @@ package: libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: d1db1b8be7c3a8983dcbbbfe4f0765de - sha256: 3c6fab31ed4dc8428605588454596b307b1bd59d33b0c7073c407ab51408b011 + md5: 2785ddf4cb0e7e743477991d64353947 + sha256: 8729021a93e67bb93b4e73ef0a132499db516accfea11561b667635bcd0507e7 manager: conda name: libabseil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230125.3-cxx17_h59595ed_0.conda - version: '20230125.3' + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20230802.1-cxx17_h59595ed_0.conda + version: '20230802.1' - category: main dependencies: libgcc-ng: '>=12' hash: - md5: e805cbec4c29feb22e019245f7e47b6c - sha256: 610a583c2c356fe7a864cd6e5b0fa73c25bdafcfbcada9d0d9f999392a412a51 + md5: aec6c91c7371c26392a06708a73c70e5 + sha256: 40f29d1fab92c847b083739af86ad2f36d8154008cf99b64194e4705a1725d78 manager: conda name: libbrotlicommon optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: @@ -638,6 +613,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 version: 3.4.2 +- category: main + dependencies: + libgcc-ng: '>=13.2.0' + hash: + md5: 78fdab09d9138851dde2b5fe2a11019e + sha256: 55ecf5c46c05a98b4822a041d6e1cb196a7b0606126eb96b24131b7d2c8ca561 + manager: conda + name: libgfortran5 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_2.conda + version: 13.2.0 - category: main dependencies: libgcc-ng: '>=10.3.0' @@ -654,51 +641,37 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 1edd9e67bdb90d78cea97733ff6b54e6 - sha256: b19de7bda34eac4fa931be11fa8d7640cdf1441dfd51c91786586a4a4c64c92f + md5: 323e90742f0f48fc22bea908735f55e6 + sha256: 0ef7378818c6d5b407692d02556c32e2f6af31c7542bca5160d0b92a59427fb5 manager: conda name: libjpeg-turbo optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-h0b41bf4_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-2.1.5.1-hd590300_1.conda version: 2.1.5.1 - category: main dependencies: - libgcc-ng: '>=9.4.0' + libgcc-ng: '>=12' hash: - md5: 39b1328babf85c7c3a61636d9cd50206 - sha256: 32f4fb94d99946b0dabfbbfd442b25852baf909637f2eed1ffe3baea15d02aad + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 manager: conda name: libnsl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2 - version: 2.0.0 -- category: main - dependencies: - libgcc-ng: '>=12' - libgfortran-ng: '' - libgfortran5: '>=12.3.0' - hash: - md5: 6e4ef6ca28655124dcde9bd500e44c32 - sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 - manager: conda - name: libopenblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda - version: 0.3.24 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + version: 2.0.1 - category: main dependencies: libgcc-ng: '>=12.3.0' hash: - md5: bbc8fef17925480272a671b1d83431fa - sha256: 2fa38e53f7d58789283af351f014748a485ec8f4e7db3f150ed6274f50983663 + md5: 4655db64eca78a6fcc4fb654fc1f8d57 + sha256: a58add0b4477c59aee324b508d834267360b659f9c543f551ca4442196e656fe manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_2.conda version: 12.3.0 - category: main dependencies: @@ -849,13 +822,13 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 681105bccc2a3f7f1a837d47d39c9179 - sha256: ccf61e61d58a8a7b2d66822d5568e2dc9387883dd9b2da61e1d787ece4c4979a + md5: 7dbaa197d7ba6032caf7ae7f32c1efa0 + sha256: 91cc03f14caf96243cead96c76fe91ab5925a695d892e83285461fb927dece5e manager: conda name: ncurses optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-hcb278e6_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.4-h59595ed_2.conda version: '6.4' - category: main dependencies: @@ -873,27 +846,27 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 5be58359dbbf568c1ec0be87e0c6cb1b - sha256: f6c470ba56c43e5f6c75fd28b05256fd8f5d54d76df29c0652496bf3b104ae2b + md5: 77dab674d16c1525ebe65e67de30de0d + sha256: dec1c78df7670d34880f71f75ac716f082d087494b4a2c6a90d5d75a82c933ed manager: conda name: oniguruma optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.8-h166bdaf_0.tar.bz2 - version: 6.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.9-hd590300_0.conda + version: 6.9.9 - category: main dependencies: ca-certificates: '' libgcc-ng: '>=12' hash: - md5: e5ac5227582d6c83ccf247288c0eb095 - sha256: b113fbac327c90cdc29c2fac0f2a2e5cc0d1918b2a5ffa7abd49b695b9b3c6e9 + md5: 412ba6938c3e2abaca8b1129ea82e238 + sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 manager: conda name: openssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.2-hd590300_0.conda - version: 3.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda + version: 3.1.4 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -908,16 +881,17 @@ package: version: 2.7.6 - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: 660e72c82f2e75a6b3fe6a6e75c79f19 - sha256: 6a0630fff84b5a683af6185a6c67adc8bdfa2043047fcb251add0d352ef60e79 + md5: 700edd63ccd5fc66b70b1c028cea9a68 + sha256: ae917851474eb3b08812b02c9e945d040808523ec53f828aa74a90b0cdf15f57 manager: conda name: pixman optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2 - version: 0.40.0 + url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.42.2-h59595ed_0.conda + version: 0.42.2 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1122,6 +1096,59 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 version: 0.2.5 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + openssl: '>=3.1.3,<4.0a0' + hash: + md5: cdbd44927a53a313d69f3c206a418dd2 + sha256: 2dcb57436fe20a03373ede39c0cbb046c44b181392eb2e68963ac4ffcace0da4 + manager: conda + name: aws-c-cal + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.7-h6e18cf3_0.conda + version: 0.6.7 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: 72cb3661f349a95ea48b0ddcdc4c0f18 + sha256: 71a740e9c092d4119aad6ba3ee3fcbfd33faf078ffd7b80802efe218829bd931 + manager: conda + name: aws-c-compression + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h037bafe_4.conda + version: 0.2.17 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: 6c2ea725535e0f2a18f645a0bf03a8f6 + sha256: 249727a6ebffe314759bf367209fea9c23f96ac3b8f0a7fd7f61bad2712ec545 + manager: conda + name: aws-c-sdkutils + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h037bafe_3.conda + version: 0.1.12 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + hash: + md5: ac1b0e60de127cc46a04e76a907434a1 + sha256: 1a65c1bb49c1345f824db0129895f45434751cedd3e55a89d0300dd1b68794ed + manager: conda + name: aws-checksums + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h037bafe_3.conda + version: 0.1.17 - category: main dependencies: libgcc-ng: '>=12' @@ -1179,16 +1206,16 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - ncurses: '>=6.3,<7.0a0' + ncurses: '>=6.4,<7.0a0' hash: - md5: 46a56cfe00f36b35e2d321bfabebf873 - sha256: c8f93937ad2cdd170200cc5ba32d85229ef65b749544686884abad5a19b8ef7a + md5: 182d006cea9203d6023c354005506e7a + sha256: f2a81d08e73e1d40af8d00aaaa0fcb61e8648cf656f112d5c2705a0a1a651c43 manager: conda name: firtool optional: false platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.30.0-0_h1234567_gdb40efbcd.conda - version: 1.30.0 + url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.58.0-0_h1234567_gc1d84a851.conda + version: 1.58.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1206,20 +1233,20 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_0 + libgcc-devel_linux-64: 12.3.0 h8bca6fd_2 libgcc-ng: '>=12.3.0' libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_0 + libsanitizer: 12.3.0 h0f45ef3_2 libstdcxx-ng: '>=12.3.0' sysroot_linux-64: '' hash: - md5: 1e41f51d89695fd3f810e2245517460b - sha256: ccbbb82de1ca95b02477e4340c5791e49424b379c6caa27e89bae3c40b7ad296 + md5: 2f4d8677dc7dd87f93e9abfb2ce86808 + sha256: 62a897343229e6dc4a3ace4f419a30e60a0a22ce7d0eac0b9bfb8f0308cf3de5 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_2.conda version: 12.3.0 - category: main dependencies: @@ -1236,41 +1263,29 @@ package: version: '1.6' - category: main dependencies: - libopenblas: '>=0.3.24,<1.0a0' - hash: - md5: bcddbb497582ece559465b9cd11042e7 - sha256: 92142c12eb42172365c96c865be8f164a2653649b28b23bded0e658f8d5d0815 - manager: conda - name: libblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-18_linux64_openblas.conda - version: 3.9.0 -- category: main - dependencies: - libbrotlicommon: 1.1.0 hd590300_0 + libbrotlicommon: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 43017394a280a42b48d11d2a6e169901 - sha256: 4eb58ab712e20d89b712a4a9e53a25ed94f63c36135d3f537ce2c51507c5abc9 + md5: f07002e225d7a60a694d42a7bf5ff53f + sha256: 86fc861246fbe5ad85c1b6b3882aaffc89590a48b42d794d3d5c8e6d99e5f926 manager: conda name: libbrotlidec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: - libbrotlicommon: 1.1.0 hd590300_0 + libbrotlicommon: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 8e3e1cb77c4b355a3776bdfb74095bed - sha256: f15b3f3d6b33d46c49f5574e2427b76a3c713e27bf6c043b8f0fd84ffc57d51e + md5: 5fc11c6020d421960607d821310fcd4d + sha256: f751b8b1c4754a2a8dfdc3b4040fa7818f35bbf6b10e905a47d3a194b746b071 manager: conda name: libbrotlienc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: @@ -1285,6 +1300,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 version: 3.1.20191231 +- category: main + dependencies: + libgfortran5: 13.2.0 ha4646dd_2 + hash: + md5: e75a75a6eaf6f318dae2631158c46575 + sha256: 767d71999e5386210fe2acaf1b67073e7943c2af538efa85c101e3401e94ff62 + manager: conda + name: libgfortran-ng + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2.conda + version: 13.2.0 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -1314,21 +1341,21 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.18.1,<2.0a0' + c-ares: '>=1.20.1,<2.0a0' libev: '>=4.33,<4.34.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: 613955a50485812985c059e7b269f42e - sha256: ecd6b08c2b5abe7d1586428c4dd257dcfa00ee53700d79cdc8bca098fdfbd79a + md5: a802251d1eaeeae041c867faf0f94fa8 + sha256: 5e60b852dbde156ef1fa939af2491fe0e9eb3000de146786dede7cda8991ae4c manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.52.0-h61bc06f_0.conda - version: 1.52.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.55.1-h47da74e_0.conda + version: 1.55.1 - category: main dependencies: libgcc-ng: '>=12' @@ -1344,32 +1371,32 @@ package: version: 1.6.39 - category: main dependencies: - libabseil: '>=20230125.3,<20230126.0a0' + libabseil: '>=20230802.1,<20230803.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 78c10e8637a6f8d377f9989327d0267d - sha256: 2e2a9b612b8ef8b928f8efac835cd2914722bbab348fa643b99db2efd3b34185 + md5: 5097789a2bc83e697d7509df57f25bfd + sha256: 911ad483f051d96c9f07ecd8177546763c2da601e26941b434c3a09fa9fcd8f8 manager: conda name: libprotobuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.23.3-hd1fb520_1.conda - version: 4.23.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_1.conda + version: 4.24.3 - category: main dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 903fa782a9067d5934210df6d79220f6 - sha256: e715fab7ec6b3f3df2a5962ef372ff0f871d215fe819482dcd80357999513652 + md5: b58e6816d137f3aabf77d341dd5d732b + sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 manager: conda name: libsqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.43.0-h2797004_0.conda - version: 3.43.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda + version: 3.44.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1433,14 +1460,14 @@ package: gmp: '>=6.2.1,<7.0a0' libgcc-ng: '>=12' hash: - md5: 14d87bdff2cbd3b1179a29fb316ed743 - sha256: 03097f21c75b0936471809e533dbae44af9d9ae696ecf264d1a929fc9f9e4b83 + md5: 4c28f3210b30250037a4a627eeee9e0f + sha256: 008230a53ff15cf61966476b44f7ba2c779826825b9ca639a0a2b44d8f7aa6cb manager: conda name: mpfr optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.0-hb012696_0.conda - version: 4.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h9458935_0.conda + version: 4.2.1 - category: main dependencies: libffi: '>=3.4.2,<3.5.0a0' @@ -1508,6 +1535,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda version: '8.2' +- category: main + dependencies: + libgcc-ng: '>=12' + openssl: '>=3.1.3,<4.0a0' + hash: + md5: 8cdfb7d58bdfd543717eeacc0801f3c0 + sha256: d9b8c7f6dcab6c34c9eec7dae8aa05ec0ad79365ff5512456f19fa35c5084ecf + manager: conda + name: s2n + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.55-h06160fa_0.conda + version: 1.3.55 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1536,17 +1576,17 @@ package: version: '1.34' - category: main dependencies: - libgcc-ng: '>=9.4.0' - libzlib: '>=1.2.11,<1.3.0a0' + libgcc-ng: '>=12' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 5b8c42eb62e9fc961af70bdd6a26e168 - sha256: 032fd769aad9d4cad40ba261ab222675acb7ec951a8832455fce18ef33fa8df0 + md5: 513336054f884f95d9fd925748f41ef3 + sha256: 679e944eb93fde45d0963a22598fafacbb429bb9e7ee26009ba81c4e0c435055 manager: conda name: tk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2 - version: 8.6.12 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda + version: 8.6.13 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -1615,6 +1655,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/autoconf-2.71-pl5321h2b4cb7a_1.conda version: '2.71' +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + libgcc-ng: '>=12' + s2n: '>=1.3.55,<1.3.56.0a0' + hash: + md5: a0728c6591063bee78f037741d1da83b + sha256: 74843ac64d018e27460d2b45d5fafc613e45073da64bb346c6d8d059a39d22d5 + manager: conda + name: aws-c-io + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hd1885a1_4.conda + version: 0.13.35 - category: main dependencies: libgcc-ng: '>=12' @@ -1644,29 +1699,29 @@ package: version: 3.8.2 - category: main dependencies: - libbrotlidec: 1.1.0 hd590300_0 - libbrotlienc: 1.1.0 hd590300_0 + libbrotlidec: 1.1.0 hd590300_1 + libbrotlienc: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: aeafb07a327e3f14a796bf081ea07472 - sha256: f4ad40d9fddefbf0e920d508fe10b7da77faa3eed20cf09779ea5b78bbf04675 + md5: 39f910d205726805a958da408ca194ba + sha256: a641abfbaec54f454c8434061fffa7fdaa9c695e8a5a400ed96b4f07c0c00677 manager: conda name: brotli-bin optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda version: 1.1.0 - category: main dependencies: gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' hash: - md5: 203fbb799caffdf242ccef5f9879d3a1 - sha256: b9db23cd4fd2df43c06734b3cdb7491e03472679282a058bca7148455704b6a4 + md5: 3d38e0cc20ff49d767408f2bf69117a8 + sha256: 87e2b89a542cf19c1876ca872841293104214d73e30898ce6542d1751948231d manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_2.conda version: 12.3.0 - category: main dependencies: @@ -1701,25 +1756,25 @@ package: libpng: '>=1.6.39,<1.7.0a0' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: e1232042de76d24539a436d37597eb06 - sha256: 1eb913727b54e9aa63c6d9a1177db4e2894cee97c5f26910a2b61899d5ac904f + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 manager: conda name: freetype optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-hca18f0e_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda version: 2.12.1 - category: main dependencies: gcc_impl_linux-64: 12.3.0.* hash: - md5: cb7c7892032ecf45fcad76d67b6a3e9b - sha256: 19d68909b1016ce07f6d3056e32d23dbade083111ac2110ab1782c1309164234 + md5: e2f2f81f367e14ca1f77a870bda2fe59 + sha256: 1bbf077688822993c39518056fb43d83ff0920eb42fef11e8714d2a298cc0f27 manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_2.conda version: 12.3.0 - category: main dependencies: @@ -1740,17 +1795,17 @@ package: version: 3.7.8 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_0 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_0 + gcc_impl_linux-64: 12.3.0 he2b93b0_2 + libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_2 sysroot_linux-64: '' hash: - md5: 3f00aa0a8f8d3924890fecae937cc6bd - sha256: 87c7ec85f76aa065c2c991acd7bbf86d25b4724bc283f793400c14f5d5e39aa0 + md5: f89b9916afc36fc5562fbfc11330a8a2 + sha256: 1ca91c1a3892b61da7efe150f9a1830e18aac82f563b27bf707520cb3297cc7a manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_2.conda version: 12.3.0 - category: main dependencies: @@ -1777,7 +1832,7 @@ package: lz4-c: '>=1.9.3,<1.10.0a0' lzo: '>=2.10,<3.0a0' openssl: '>=3.0.3,<4.0a0' - xz: '>=5.2.5,<5.3.0a0' + xz: '>=5.2.5,<6.0.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: md5: c0c3973a9f2df3e1a408e3205d86a88d @@ -1788,18 +1843,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.5.2-hada088e_3.tar.bz2 version: 3.5.2 -- category: main - dependencies: - libblas: 3.9.0 18_linux64_openblas - hash: - md5: 93dd9ab275ad888ed8113953769af78c - sha256: b5a3eac5a1e14ad7054a19249afeee6536ab8c9fb6d6ddc26e277f5c3b1acce4 - manager: conda - name: libcblas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-18_linux64_openblas.conda - version: 3.9.0 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -1810,26 +1853,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: c6f951789c888f7bbd2dd6858eab69de - sha256: e909b5e648d1ace172aac2ddf9d755f72429b134155a9b07156acb58a77ceee1 + md5: e618003da3547216310088478e475945 + sha256: 96ec4dc5e38f434aa5862cb46d74923cce1445de3cd0b9d61e3e63102b163af6 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.76.4-hebfc3b9_0.conda - version: 2.76.4 -- category: main - dependencies: - libblas: 3.9.0 18_linux64_openblas - hash: - md5: a1244707531e5b143c420c70573c8ec5 - sha256: 7b59c9bf8399b34818d36c7bbd30cd447649fe4ff2136d3102bb67da0af67a3a - manager: conda - name: liblapack - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-18_linux64_openblas.conda - version: 3.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda + version: 2.78.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1846,6 +1877,20 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.3-hbf9e925_1.conda version: 16.0.3 +- category: main + dependencies: + libgcc-ng: '>=12' + libgfortran-ng: '' + libgfortran5: '>=12.3.0' + hash: + md5: 6e4ef6ca28655124dcde9bd500e44c32 + sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 + manager: conda + name: libopenblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda + version: 0.3.24 - category: main dependencies: lerc: '>=4.0.0,<5.0a0' @@ -1869,20 +1914,20 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libprotobuf: '>=4.23.3,<4.23.4.0a0' + libprotobuf: '>=4.24.3,<4.24.4.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.1,<4.0a0' + openssl: '>=3.1.3,<4.0a0' perl: '>=5.32.1,<5.33.0a0 *_perl5' hash: - md5: 434a2df8dbd192cb511290763a4f93d8 - sha256: b0424b21c5d1790c04e96a7d62e10326fa3c8b0c263ad8cb4eda707b94317f98 + md5: a362a501d2ea92506a96174ecf6b4b90 + sha256: 059f665865d1a8c1346a026ec4480ebae6edef839d465d90fe9ed6afa8b128c9 manager: conda name: mosh optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321hc529e37_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h4b98680_4.conda version: 1.4.0 - category: main dependencies: @@ -1904,25 +1949,25 @@ package: ld_impl_linux-64: '>=2.36.1' libffi: '>=3.4,<4.0a0' libgcc-ng: '>=12' - libnsl: '>=2.0.0,<2.1.0a0' - libsqlite: '>=3.42.0,<4.0a0' + libnsl: '>=2.0.1,<2.1.0a0' + libsqlite: '>=3.43.2,<4.0a0' libuuid: '>=2.38.1,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.1,<4.0a0' + openssl: '>=3.1.4,<4.0a0' readline: '>=8.2,<9.0a0' - tk: '>=8.6.12,<8.7.0a0' + tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' hash: - md5: eb6f1df105f37daedd6dca78523baa75 - sha256: 05e2a7ce916d259f11979634f770f31027d0a5d18463b094e64a30500f900699 + md5: f3a8c32aa764c3e7188b4b810fc9d6ce + sha256: a53410f459f314537b379982717b1c5911efc2f0cc26d63c4d6f831bcb31c964 manager: conda name: python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.12-hd12c33a_0_cpython.conda - version: 3.10.12 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_0_cpython.conda + version: 3.10.13 - category: main dependencies: libgcc-ng: '>=12' @@ -1945,19 +1990,19 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libsqlite: 3.43.0 h2797004_0 + libsqlite: 3.44.0 h2797004_0 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' hash: - md5: 713f9eac95d051abe14c3774376854fe - sha256: b3db86c1ae67bca79328a5d517330e1c95cf4e1f666e46ac9a90e64caf86449d + md5: df56c636df4a98990462d66ac7be2330 + sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb manager: conda name: sqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.43.0-h2c6b66d_0.conda - version: 3.43.0 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda + version: 3.44.0 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -1982,14 +2027,14 @@ package: xorg-xextproto: '>=7.3.0,<8.0a0' xorg-xproto: '' hash: - md5: 7590b76c3d11d21caa44f3fc38ac584a - sha256: 3360f81f7687179959a6bf1c762938240172e8bb3aef957e0a14fb12a0b7c105 + md5: 49e482d882669206653b095f5206c05b + sha256: 7a02a7beac472ae2759498550b5fc5261bf5be7a9a2b4648a3f67818a7bfefcf manager: conda name: xorg-libx11 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.6-h8ee46fc_0.conda - version: 1.8.6 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.7-h8ee46fc_0.conda + version: 1.8.7 - category: main dependencies: python: '>=3.6' @@ -2014,18 +2059,30 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2 version: 1.4.4 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: aae3d4ea593ef245ea19d192623f0593 + sha256: af1dc5bee3b83aa167ad5991e7a98a3bd058b15847fef37424b8ea668a7c7ce6 + manager: conda + name: archspec + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.1-pyhd8ed1ab_1.conda + version: 0.2.1 - category: main dependencies: python: '>=3.8' hash: - md5: 964bace0c38ce4733851a2a29679e3f9 - sha256: 1fe9b55d3daeb26ac404ec51f106ce8792d7d6548810ca87600cd9b9e9cfbd6e + md5: 1be9feadb435ef26456efaf70852ce93 + sha256: e0abc3e71e9f0af65afb9dc3f3d4991c117508023ebcef223b2394a43313ccc9 manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.1-pyhd8ed1ab_0.conda - version: 3.1.1 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.4-pyhd8ed1ab_0.conda + version: 3.1.4 - category: main dependencies: libgcc-ng: '>=12' @@ -2052,35 +2109,79 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda version: 23.1.0 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + hash: + md5: 38da036c9d74d4d44f35e05474135f77 + sha256: 465ea78fe57381c86e35c81b7bbdbbcfdb88ea1181e7d211b714ad892fb39e22 + manager: conda + name: aws-c-event-stream + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-he4fbe49_4.conda + version: 0.3.2 +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-compression: '>=0.2.17,<0.2.18.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + libgcc-ng: '>=12' + hash: + md5: 2c4c47d83a0e111799dda4059c88621d + sha256: c537317a4490f085a3a58679fa05d4132a2d2b8f5480ffa51175135987faddb6 + manager: conda + name: aws-c-http + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-hbbfb9a7_7.conda + version: 0.7.13 +- category: main + dependencies: + python: '>=2.7' + hash: + md5: 54ca2e08b3220c148a1d8329c2678e02 + sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd + manager: conda + name: backports + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda + version: '1.0' - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 3bf53ba99470a36f488b416528061373 - sha256: 9e3bdb8d25b855f1969b24fa4934d8d93c7ede62a4d1c6e3c01d8d06403fceda + md5: 88243004051d2acbe4391c8477636bfd + sha256: fa39a0ca8e9d7a0748dabea86c3273c0c224b75eec1a4817b523ec6945eeb6c8 manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py310hcb5633a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py310hcb5633a_1.conda version: 4.0.1 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' hash: - md5: 2fb79ec81bad9492b6d59a06b3b647a4 - sha256: b6f32491536823e47cf6eb4717dd341385600a2b901235028dedc629a77aeb82 + md5: 550da20b2c2e38be9cc44bb819fda5d5 + sha256: c8d72c2af4f57898dfd5e4c62ae67f7fea1490a37c8b6855460a170d61591177 manager: conda name: blinker optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.6.2-pyhd8ed1ab_0.conda - version: 1.6.2 + url: https://conda.anaconda.org/conda-forge/noarch/blinker-1.7.0-pyhd8ed1ab_0.conda + version: 1.7.0 - category: main dependencies: - python: 2.7.*|>=3.7 + python: ==2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2092,18 +2193,33 @@ package: version: 23.0.0 - category: main dependencies: - brotli-bin: 1.1.0 hd590300_0 - libbrotlidec: 1.1.0 hd590300_0 - libbrotlienc: 1.1.0 hd590300_0 + brotli-bin: 1.1.0 hd590300_1 + libbrotlidec: 1.1.0 hd590300_1 + libbrotlienc: 1.1.0 hd590300_1 libgcc-ng: '>=12' hash: - md5: 3db48055eab680e43a122e2c7494e7ae - sha256: 8ec33c09c428fcc5fd453e1bd349bb0000ca226716901d356bdf89cdd9b67ab2 + md5: f27a24d46e3ea7b70a1f98e50c62508f + sha256: f2d918d351edd06c55a6c2d84b488fe392f85ea018ff227daac07db22b408f6b manager: conda name: brotli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda + version: 1.1.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 1f95722c94f00b69af69a066c7433714 + sha256: e22268d81905338570786921b3def88e55f9ed6d0ccdd17d9fbae31a02fbef69 + manager: conda + name: brotli-python + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py310hc6cd4ac_1.conda version: 1.1.0 - category: main dependencies: @@ -2145,14 +2261,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 313516e9a4b08b12dfb1e1cd390a96e3 - sha256: 0666a95fbbd2299008162e2126c009191e5953d1cad1878bf9f4d8d634af1dd4 + md5: 7f4a9e3fcff3f6356ae99244a014da6a + sha256: 20cae47d31fdd58d99c4d2e65fbdcefa0b0de0c84e455ba9d6356a4bdbc4b5b9 manager: conda name: charset-normalizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.2.0-pyhd8ed1ab_0.conda - version: 3.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda + version: 3.3.2 - category: main dependencies: __unix: '' @@ -2168,28 +2284,28 @@ package: version: 8.1.7 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: b325bfc4cff7d7f8a868f1f7ecc4ed16 - sha256: f0c2fd0e842899a05ddd7b147fb26424adf58be0e8e54e5bc68b8f7e67d05dcd + md5: 753d29fe41bb881e4b9c004f0abf973f + sha256: 0dfbc1ffa72e7a0882f486c9b1e4e9cccb68cf5c576fe53a89d076c9f1d43754 manager: conda name: cloudpickle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.2.1-pyhd8ed1ab_0.conda - version: 2.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.0.0-pyhd8ed1ab_0.conda + version: 3.0.0 - category: main dependencies: - python: '' + python: '>=3.7' hash: - md5: c08b4c1326b880ed44f3ffb04803332f - sha256: ddf1749f0fd5a098a7954d98267cebca83a36b86719ce4ab6fc4aa94ef518432 + md5: 3faab06a954c2a04039983f2c4a50d99 + sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 manager: conda name: colorama optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2 - version: 0.4.4 + url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 + version: 0.4.6 - category: main dependencies: python: '>=3.6,<4.0' @@ -2204,16 +2320,16 @@ package: version: 0.4.1 - category: main dependencies: - python: '>=3.6' + python: '>=3.8' hash: - md5: a50559fad0affdbb33729a68669ca1cb - sha256: 3b594bc8aa0b9a51269d54c7a4ef6af777d7fad4bee16b05695e1124de6563f6 + md5: 5cd86562580f274031ede6aa6aa24441 + sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8 manager: conda name: cycler optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2 - version: 0.11.0 + url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + version: 0.12.1 - category: main dependencies: expat: '>=2.4.2,<3.0a0' @@ -2240,19 +2356,31 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda version: 0.3.7 +- category: main + dependencies: + python: '>=3.6' + hash: + md5: 67999c5465064480fa8016d00ac768f6 + sha256: 0d01c4da6d4f0a935599210f82ac0630fa9aeb4fc37cbbc78043a932a39ec4f3 + manager: conda + name: distro + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/distro-1.8.0-pyhd8ed1ab_0.conda + version: 1.8.0 - category: main dependencies: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 9815d5a3a63926f0877313c07b7c5d90 - sha256: ccf4e2d33f1e2c376de05d0ca93e0cc3fccac9785c5a832e6fca9cc1ce3f7470 + md5: 6405f87c427cdbc25b6b6a21bd6bfc2a + sha256: 2071bf7c56305d234161bef00c0c2ba7ae345484105d2ccc448c7c734634f346 manager: conda name: docutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.15.2-py310hff52083_6.tar.bz2 - version: 0.15.2 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py310hff52083_1.tar.bz2 + version: 0.18.1 - category: main dependencies: python: '>=3.7' @@ -2269,14 +2397,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3104cf0ab9fb9de393051bf92b10dbe9 - sha256: 47635be45aa6cbfd6af65c13b5f649aef84c484e1897aef625e4ad717663eebc + md5: 0c1729b74a8152fde6a38ba0a2ab9f45 + sha256: 4d742d91412d1f163e5399d2b50c5d479694ebcd309127abb549ca3977f89d2b manager: conda name: filelock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.3-pyhd8ed1ab_0.conda - version: 3.12.3 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.13.1-pyhd8ed1ab_0.conda + version: 3.13.1 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -2299,26 +2427,26 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: e239a69f354349af1117e336dd124067 - sha256: 36246402e402b5cd55ee3b216fc9a07591f554c46aabc50dcabd4607f6a33e94 + md5: c7b2865e86782925a872c8598b760c08 + sha256: cd1e59ceac047d9f692bb7cc2a6a6e2356a7d3db660b076b4afb19d35db2fd02 manager: conda name: frozenlist optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py310h2372a71_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py310h2372a71_1.conda version: 1.4.0 - category: main dependencies: python: '>=3.8' hash: - md5: b4a3c7bb3f45d47e085764ff096fa259 - sha256: 7c953b38e7d06be62a80d85dc72f899a90814e21079cb1189aa08ca6277f94ee + md5: 5b86cf1ceaaa9be2ec4627377e538db1 + sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6 manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.9.0-pyh1a96a4e_0.conda - version: 2023.9.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda + version: 2023.10.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2372,26 +2500,26 @@ package: gcc: 12.3.0.* gxx_impl_linux-64: 12.3.0.* hash: - md5: 52061516ce5d0aebb4282f72ef2347e5 - sha256: 99157a7719683e8a18d31f73a04b7b8e3121181840c9c8066b5c0438d7f49e4f + md5: 673bac341be6b90ef9e8abae7e52ca46 + sha256: 5fd65768fb602fd21466831c96e7a2355a4df692507abbd481aa65a777151d85 manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_2.conda version: 12.3.0 - category: main dependencies: - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 + __unix: '' + python: '>=3.8' hash: - md5: 43bd27c73e9e3b0bc508217ae409798f - sha256: dab441ddc4592e34b490fed4235c2c0b10b54616509c7ebc176c37c8389600d6 + md5: 2ed1fe4b9079da97c44cfe9c2e5078fd + sha256: cd93d5d4b1d98f7ce76a8658c35de9c63e17b3a40e52f40fa2f459e0da83d0b1 manager: conda name: humanfriendly optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/humanfriendly-10.0-py310hff52083_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda version: '10.0' - category: main dependencies: @@ -2479,16 +2607,17 @@ package: version: 2.0.0 - category: main dependencies: - python: '' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 hash: - md5: 07d85c22a3beb102a48cd123df84c2a6 - sha256: da279af2285d8f575a7f5652e83bf7f36155c4c63154e385a9d171efcc607bc1 + md5: 08ec1463dbc5c806a32fc431874032ca + sha256: 316db08863469a56cdbfd030de5a2cc11ec7649ed7c50eff507e9caa0070ccaa manager: conda name: jsonpointer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-2.0-py_0.tar.bz2 - version: '2.0' + url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-2.4-py310hff52083_3.conda + version: '2.4' - category: main dependencies: libgcc-ng: '>=12' @@ -2496,13 +2625,13 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 741385a84f6a1b6623eb39226cc669e8 - sha256: 54bdf1fe6fdcd382d0a1c4b275aa3d3c2737bcfe4d869644ce0f351c96f995f3 + md5: b8d67603d43b23ce7e988a5d81a7ab79 + sha256: bb51906639bced3de1d4d7740ac284cdaa89e2f22e0b1ec796378b090b0648ba manager: conda name: kiwisolver optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py310hd41b1e2_1.conda version: 1.4.5 - category: main dependencies: @@ -2510,13 +2639,13 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 8664f43451412071a7111211fe7e38f2 - sha256: a26e8c55b8d1b17e784c6e2ffa75ed4dec4a335c7df17f183dcc9c5149d6cd70 + md5: ee36f87084373c3e01a7f14d372ccf35 + sha256: 0261c90c6f990d7a06f2ef107d53cb33a720a0c7420cc9f280ad0deb4aedda68 manager: conda name: lazy-object-proxy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py310h1fa729e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py310h2372a71_1.conda version: 1.9.0 - category: main dependencies: @@ -2532,6 +2661,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda version: '2.15' +- category: main + dependencies: + libopenblas: '>=0.3.24,<1.0a0' + hash: + md5: 420f4e9be59d0dc9133a0f43f7bab3f3 + sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce + manager: conda + name: libblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2635,31 +2776,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.1-hbf2b3c1_0.conda version: 1.3.1 -- category: main - dependencies: - python: '' - hash: - md5: c104d98e09c47519950cffb8dd5b4f10 - sha256: d3a68045ef74a2a7b8c8a55b242fdbc875d362e37adcf793613cf0d8c8e4fbf7 - manager: conda - name: lockfile - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/lockfile-0.12.2-py_1.tar.bz2 - version: 0.12.2 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 5597d9f9778af6883ae64f0e7d39416c - sha256: 91509d88d073f5baf30866219cee9c8ecef839fa9874fee600e46531c2822621 + md5: b74e07a054c479e45a83a83fc5be713c + sha256: ac46cc2f6d4bbeedcd2f508e43f43143a9286ced55730d8d97a3c91ceceb0d56 manager: conda name: markupsafe optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py310h2372a71_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.3-py310h2372a71_1.conda version: 2.1.3 - category: main dependencies: @@ -2692,27 +2821,27 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 5311a49aaea44b73935c84a6d9a68e5f - sha256: da5030f22f6d1293ccdefefde17fcf1a5f337f87179c54dee2a2a1fc16d6d73a + md5: 03255e1437f31f25ad95bb45c8b398bb + sha256: cf37ee99132533005db95b611377d99f3cf4cb6feed494806d53aa7101768cd4 manager: conda name: msgpack-python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.5-py310hdf3cbec_0.conda - version: 1.0.5 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py310hd41b1e2_0.conda + version: 1.0.6 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: b33287be963a70f8fb4b143b4561ba62 - sha256: 14312ac727a741224d45ab07f75253ca99235ec0534ba9603e627818666ff49a + md5: 7ca797f0a0c390ede770f415f5d5e039 + sha256: d8180dcee801bcde6408d924bab0010fc956ae7a14681694af21f9d4382d8ee8 manager: conda name: multidict optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py310h1fa729e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.0.4-py310h2372a71_1.conda version: 6.0.4 - category: main dependencies: @@ -2740,34 +2869,16 @@ package: version: 1.0.0 - category: main dependencies: - python: '>=3.8' + python: '>=3.9' hash: - md5: 254f787d5068bc89f578bf63893ce8b4 - sha256: 6b955c8530985fa727ad3323653a54af44ecf453cfdb1b549b3edff609bd3728 + md5: 425fce3b531bed6ec3c74fab3e5f0a1c + sha256: 7629aa4f9f8cdff45ea7a4701fe58dccce5bf2faa01c26eb44cbb27b7e15ca9d manager: conda name: networkx optional: false platform: linux-64 - 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' - libcblas: '>=3.9.0,<4.0a0' - libgcc-ng: '>=12' - liblapack: '>=3.9.0,<4.0a0' - libstdcxx-ng: '>=12' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - 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.2-py310ha4c1d20_0.conda - version: 1.25.2 + url: https://conda.anaconda.org/conda-forge/noarch/networkx-3.2.1-pyhd8ed1ab_0.conda + version: 3.2.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2788,14 +2899,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 91cda59e66e1e4afe9476f8ef98f5c30 - sha256: ded536a96a00d45a693dbc2971bb688248324dadd129eddda2100e177583d768 + md5: 79002079284aa895f883c6b7f3f88fd6 + sha256: 69b3ace6cca2dab9047b2c24926077d81d236bef45329d264b394001e3c3e52f manager: conda name: packaging optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda - version: '23.1' + url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.2-pyhd8ed1ab_0.conda + version: '23.2' - category: main dependencies: python: '>=2.7' @@ -2836,13 +2947,13 @@ package: dependencies: python: '>=3.6' hash: - md5: 89e3c7cdde7d3aaa2aee933b604dd07f - sha256: 7d055ffc8a02bf781a89d069db3454b453605cdaff300b82cedcc7133283e47e + md5: 405678b942f2481cecdb3e010f4925d9 + sha256: fecf95377134b0e8944762d92ecf7b0149c07d8186fb5db583125a2705c7ea0a manager: conda name: pkgutil-resolve-name optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda version: 1.3.10 - category: main dependencies: @@ -2861,57 +2972,57 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: b640492254040227cc1cb5d13ed1d830 - sha256: 159feca2894a11ac2a3f4008fea3f675d6a7ea8f22683d6d8890b19c172db239 + md5: bd00e979ec558c3e062dc10f922d1177 + sha256: 87d42f2c79f741acb5d7d1ac437c1794b425d32cb4181d2a65bd6694943ca728 manager: conda name: portalocker optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/portalocker-2.7.0-py310hff52083_0.conda - version: 2.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/portalocker-2.8.2-py310hff52083_1.conda + version: 2.8.2 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: b0f0a014fc04012c05f39df15fe270ce - sha256: 6864a95001b67413f7d06e35dc2ef0f13afb8c93cde8e826321453eac1bf1991 + md5: cb25177acf28cc35cfa6c1ac1c679e22 + sha256: db8a99bc41c1b0405c8e9daa92b9d4e7711f9717aff7fd3feeba407ca2a91aa2 manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py310h1fa729e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py310h2372a71_1.conda version: 5.9.5 - category: main dependencies: - python: '' + python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' hash: - md5: 06d04c9f8f72ac77911db942eda24fb9 - sha256: b2c1bb18ab7bf36263e0b3f29bd2991a108ec1957051f9f5d925efeaf7ed1344 + md5: 4b1c0db24e212190be1969b0aa490ad8 + sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82 manager: conda name: pyasn1 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.4.8-py_0.tar.bz2 - version: 0.4.8 + url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda + version: 0.5.0 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 0e565d732f6660374b45d76761c09b06 - sha256: 9bf587a2a0f0f73b71740b079507ec99282b73c596ec73cc602d7ccf73350709 + md5: 0adaac9a86d59adae2bc86b3cdef2df1 + sha256: ea7faba72a38b1d9e799294ea270916d2ea3f4a491df06a4d5a55347f3a036ce manager: conda name: pycosat optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.4-py310h5764c6d_1.tar.bz2 - version: 0.6.4 + url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py310h2372a71_0.conda + version: 0.6.6 - category: main dependencies: - python: 2.7.*|>=3.4 + python: ==2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -2961,40 +3072,26 @@ 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' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 + __unix: '' + python: '>=3.8' hash: - md5: f732bec05ecc2e302a868d971ae484e0 - sha256: 7c1d3f51959fd5e829a114157bb110fdd6335d1c518293b4203474c78d9b48f9 - manager: conda - name: pyrsistent - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyrsistent-0.19.3-py310h1fa729e_0.conda - version: 0.19.3 -- category: main - dependencies: - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - md5: 378f2260e871f3ea46c6fa58d9f05277 - sha256: cb6e4821234cee05acd1996cef88e40dfc2d5ab12cf12c5b1d6ed9118f7f41a7 + md5: 2a7de29fb590ca14b5243c4c812c8025 + sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b manager: conda name: pysocks optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 version: 1.7.1 - category: main dependencies: @@ -3040,13 +3137,13 @@ package: python_abi: 3.10.* *_cp310 yaml: '>=0.2.5,<0.3.0a0' hash: - md5: 511120451bf728d52bb37c73d4069e57 - sha256: 134f2bf206e21eff1b075c35b43e28dd97a9070ebc6879166629a7bac690348b + md5: bb010e368de4940771368bc3dc4c63e7 + sha256: aa78ccddb0a75fa722f0f0eb3537c73ee1219c9dd46cea99d6b9eebfdd780f3d manager: conda name: pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py310h2372a71_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py310h2372a71_1.conda version: 6.0.1 - category: main dependencies: @@ -3054,14 +3151,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 5312e9c375fbe6a45e5537ce12c8a98e - sha256: cfe6c65db315e0b5860d9cb2bb7b838a575bdb65447182f3865fe4026b521b8d + md5: 124bc31abd31cd6990a9f6ade3a4da2d + sha256: bf8e736b9b4f73c3142842b280982581037b40904b6dea4706ab137b3179c5c7 manager: conda name: regex optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.8.8-py310h2372a71_0.conda - version: 2023.8.8 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py310h2372a71_0.conda + version: 2023.10.3 - category: main dependencies: __glibc: '>=2.17,<3.0.a0' @@ -3087,41 +3184,40 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 2f9b517412af46255cef5e53a22c264e - sha256: 4a74013e0e9dd6fa984a10edb53276cf42308d99404375b81548af019bfd068d + md5: 43c12d8f7891a87378eb5339c49ef051 + sha256: a23d2f15c48cc689d26dc3f50ee91be9ed2925c5fbae7bc5d93e49db7517b847 manager: conda - name: ruamel.yaml.clib + name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py310h1fa729e_1.conda - version: 0.2.7 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py310hcb5633a_0.conda + version: 0.10.6 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - yaml: '>=0.2.5,<0.3.0a0' hash: - md5: f588192bd22fb64650ccb5781cd83fb0 - sha256: 4a17acbb2fae7b567b9f7527eb50833c266df00de7fee41f18bb2006dfab8939 + md5: 7c9da9721ee545d57ad759f020172853 + sha256: 00c76baad0a896f6f259093ec5328ac06cf422e6528745b28ee7e5057f54668f manager: conda - name: ruamel_yaml + name: ruamel.yaml.clib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel_yaml-0.15.80-py310h5764c6d_1008.tar.bz2 - version: 0.15.80 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.7-py310h2372a71_2.conda + version: 0.2.7 - category: main dependencies: python: '>=3.7' hash: - md5: 4fe12573bf499ff85a0a364e00cc5c53 - sha256: dc5a777597e05ceddefc87d2f96389b7ae0afb097e558307af83a453db3e3887 + md5: fc2166155db840c634a1291a5c35a709 + sha256: 851901b1f8f2049edb36a675f0c3f9a98e1495ef4eb214761b048c6f696a06f7 manager: conda name: setuptools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.1.2-pyhd8ed1ab_0.conda - version: 68.1.2 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-68.2.2-pyhd8ed1ab_0.conda + version: 68.2.2 - category: main dependencies: python: '' @@ -3136,16 +3232,16 @@ package: version: 1.16.0 - category: main dependencies: - python: '' + python: '>=3.5' hash: - md5: 3a8dc70789709aa315325d5df06fb7e4 - sha256: 091de70ee6bfe063e0c0f77336975d124fd1e3f49b9c58d97c0c7b3d287c0002 + md5: 62f26a3d1387acee31322208f0cfa3e0 + sha256: 23011cb3e064525bdb8787c75126a2e78d2344a72cd6773922006d1da1f2af16 manager: conda name: smmap optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/smmap-3.0.5-pyh44b312d_0.tar.bz2 - version: 3.0.5 + url: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.0-pyhd8ed1ab_0.tar.bz2 + version: 5.0.0 - category: main dependencies: python: '>=2' @@ -3198,14 +3294,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 62f5b331c53d73e2f6c4c130b53518a0 - sha256: dc4abf58ca42f29e12b8c0f8aadedfca49cc1e97dab025d15cf000b1787df773 + md5: 495ddad84b81dde4ee1138dd59ef5805 + sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.1-pyha770c72_0.conda - version: 0.12.1 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda + version: 0.12.2 - category: main dependencies: python: '>=3.5' @@ -3224,38 +3320,50 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: dfb49d3ac440e1a236080f9c300e642f - sha256: 38d517c89f79f3ff0d8f3f1ce46218e0f8e3a3fea743e7f3661eb913919aa94e + md5: b23e0147fa5f7a9380e06334c7266ad5 + sha256: 209b6788b81739d3cdc2f04ad3f6f323efd85b1a30f2edce98ab76d98079fac8 manager: conda name: tornado optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py310h2372a71_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3.3-py310h2372a71_1.conda version: 6.3.3 +- category: main + dependencies: + python: '>=3.10' + hash: + md5: 08316d001eca8854392cf2837828ea11 + sha256: ba49bed74ca170c5a3bf995c33a6179fd74b33abb2444f511862e7f9f57f9149 + manager: conda + name: truststore + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/truststore-0.8.0-pyhd8ed1ab_0.conda + version: 0.8.0 - category: main dependencies: python: '>=3.6' hash: - md5: 1b133b01430fc4d03efba737aae0054f - sha256: 272505b7f8acc7dad0a32efc17e7241c18938f98c0055c5d5fb2530a32e34fe1 + md5: 13ce724cb44f7bc0ca0971d76e333c30 + sha256: c1c54f4b2b5b39c420b3a47dd6196355147c798c0a4a2bdaaba80435e9591fb3 manager: conda name: types-pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.1-pyhd8ed1ab_0.conda - version: 2023.3.0.1 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.1.1-pyhd8ed1ab_0.conda + version: 2023.3.1.1 - category: main dependencies: python: '>=3.6' hash: - md5: 22776dce28e8ba933e5cbcf20b62c583 - sha256: 61121b7ac3c6caf322ad2789ffe0887ae9e6c3ab28c9e911871afe5977828af7 + md5: 0cb14c80f66937df894d60626dd1921f + sha256: 91873f91a58337d0573584bcdc540ff5545bc460eda0fdd8bd2f471c808c0e4c manager: conda name: types-pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.11-pyhd8ed1ab_0.conda - version: 6.0.12.11 + url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.12-pyhd8ed1ab_0.conda + version: 6.0.12.12 - category: main dependencies: python: '>=3.6' @@ -3270,30 +3378,30 @@ package: version: 1.26.25.14 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' hash: - md5: c39d6a09fe819de4951c2642629d9115 - sha256: 6edd6d5be690be492712cb747b6d62707f0d0c34ef56eefc796d91e5a03187d1 + md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 + sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.7.1-pyha770c72_0.conda - version: 4.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda + version: 4.8.0 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: e972c5a1f472561cf4a91962cb01f4b4 - sha256: 332732c2b87445c3e071c86cacfbc72a99ba4ea55d0b9d65416894253782ca02 + md5: 72637c58d36d9475fda24700c9796f19 + sha256: 5ab2f2d4542ba0cc27d222c08ae61706babe7173b0c6dfa748aa37ff2fa9d824 manager: conda name: unicodedata2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.0.0-py310h5764c6d_0.tar.bz2 - version: 15.0.0 + url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py310h2372a71_0.conda + version: 15.1.0 - category: main dependencies: flex: '>=2.6.4,<3.0a0' @@ -3305,63 +3413,63 @@ package: perl: '' python: '' hash: - md5: efb0e7909f1a41159856e688e216bd26 - sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 + md5: 6ecc6f19e3a0661c096d0e84015c8122 + sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda - version: '5.008' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda + version: '5.018' - category: main dependencies: - python: '' + python: '>=2.6' hash: - md5: 3563be4c5611a44210d9ba0c16113136 - sha256: 302f4f4bd1ad00c0be1426ecf6bb01db59cfd8aff3de0cf1596526dca1a6b70e + md5: daf5160ff9cde3a468556965329085b9 + sha256: 2adf9bd5482802837bc8814cbe28d7b2a4cbd2e2c52e381329eaa283b3ed1944 manager: conda name: webencodings optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-py_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_2.conda version: 0.5.1 - category: main dependencies: python: '>=3.8' hash: - md5: 23f16ffe9711ac76b391c60ce4ea4656 - sha256: 93aecd1b6b0fcb0ffbf96e367e56713824e648f6c02c9daaaedfef5f8e03caa9 + md5: bdb77b28cf16deac0eef431a068320e8 + sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6 manager: conda name: websocket-client optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.2-pyhd8ed1ab_0.conda - version: 1.6.2 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda + version: 1.6.4 - category: main dependencies: python: '>=3.7' hash: - md5: 1ccd092478b3e0ee10d7a891adbf8a4f - sha256: 21bcec5373b04d739ab65252b5532b04a08d229865ebb24b5b94902d6d0a77b0 + md5: 3fc026b9c87d091c4b34a6c997324ae8 + sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.2-pyhd8ed1ab_0.conda - version: 0.41.2 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda + version: 0.41.3 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: cbfdcc9c243ac7f080cf60833b482f97 - sha256: a9c0b455c26f24b5ba2626440c375aa636b6d80fff3efe90d8f61cec8f7018a0 + md5: 43e5d746d736ae6c71060ed923179d6d + sha256: a48a93a409bed1fbdb2598acebce08343e7f6006110adf8e0335829df3cee41a manager: conda name: wrapt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py310h1fa729e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py310h2372a71_1.conda version: 1.15.0 - category: main dependencies: @@ -3438,14 +3546,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 2da0451b54c4563c32490cb1b7cf68a1 - sha256: 16d72127e150a3d5cbdc0b82c4069ef5be135c64bc99e71e7928507910669b41 + md5: 2e4d6bc0b14e10f895fc6791a7d9b26a + sha256: bced1423fdbf77bca0a735187d05d9b9812d2163f60ab426fc10f11f92ecbe26 manager: conda name: zipp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.16.2-pyhd8ed1ab_0.conda - version: 3.16.2 + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.17.0-pyhd8ed1ab_0.conda + version: 3.17.0 - category: main dependencies: frozenlist: '>=1.1.0' @@ -3459,19 +3567,66 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 version: 1.3.1 +- category: main + dependencies: + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' + libgcc-ng: '>=12' + hash: + md5: 02305820d0dbfe542c6e4d67ddb0f13b + sha256: 45d41ef052d0e362d0c031af7392bd1d755b29b1e6af9e3796abdd7b8b712611 + manager: conda + name: aws-c-auth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.5-h1a24852_0.conda + version: 0.7.5 +- category: main + dependencies: + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + libgcc-ng: '>=12' + hash: + md5: cf4834799534b9fcb7bca1c136bcd7a9 + sha256: 0ec0363fa5c78f0daa50bb1313abd02d3c59d57af380fae7b9d39e0a702562f3 + manager: conda + name: aws-c-mqtt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.8-h31a96f8_0.conda + version: 0.9.8 - category: main dependencies: python: '>=3.7' pytz: '' + setuptools: '' hash: - md5: ac432e732804a81ddcf29c92ead57cde - sha256: 2d9b8768bf8b45073830f7104278c6eb17d78b0f509c9d818ff06b9c4d60283a + md5: 3ccff479c246692468f604df9c85ef26 + sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147 manager: conda name: babel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.12.1-pyhd8ed1ab_1.conda - version: 2.12.1 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda + version: 2.13.1 +- category: main + dependencies: + backports: '' + python: '>=3.6' + setuptools: '' + hash: + md5: 6b1b907661838a75d067a22f87996b2e + sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700 + manager: conda + name: backports.functools_lru_cache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda + version: 1.6.5 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3507,14 +3662,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 800596144bb613cd7ac58b80900ce835 - sha256: f223c8782195f19dbe7cfd27e329de8b0e2205a090ee2a6891e0695d4d634854 + md5: 45846a970e71ac98fd327da5d40a0a2c + sha256: 007e7f69ab45553b7bf11f2c1b8d3f3a13fd42997266a0d57795f41c7d38df36 manager: conda name: cffi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py310h255011f_3.conda - version: 1.15.1 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py310h2fee648_0.conda + version: 1.16.0 - category: main dependencies: libclang-cpp16: '>=16.0.3,<16.1.0a0' @@ -3581,22 +3736,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.26.3-h077f3f9_0.conda version: 3.26.3 -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - numpy: '>=1.16' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - md5: 684399f9ddc0b9d6f3b6164f6107098e - sha256: 709dae7fbfdb1ab7aeeb060bae9095e5a18bd3849fd3afbf618a7be3a4117e76 - manager: conda - name: contourpy - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.0-py310hd41b1e2_0.conda - version: 1.1.0 - category: main dependencies: krb5: '>=1.20.1,<1.21.0a0' @@ -3639,7 +3778,7 @@ package: libstdcxx-ng: '>=10.3.0' libzlib: '>=1.2.11,<1.3.0a0' sqlite: '>=3.38.2,<4.0a0' - xz: '>=5.2.5,<5.3.0a0' + xz: '>=5.2.5,<6.0.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: md5: 2e9ec0e21d51118b004f1f98e4fbf598 @@ -3659,27 +3798,27 @@ package: python_abi: 3.10.* *_cp310 unicodedata2: '>=14.0.0' hash: - md5: 1f18231ffab82f236ce074b2aaa07e54 - sha256: 63c6f5a5b94e6eb8a567e8e187761fea0edab749422aabfe85906a92062bcbe3 + md5: 3d1677945147b2d6eb0fef35e98e650f + sha256: 7db0b07b04562531bc27df8a19674b4879ee3efe576d929335e159e2459e5018 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.42.1-py310h2372a71_0.conda - version: 4.42.1 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.44.0-py310h2372a71_0.conda + version: 4.44.0 - category: main dependencies: - python: '>=3.4' - smmap: '>=3.0.1,<4' + python: '>=3.7' + smmap: '>=3.0.1,<6' hash: - md5: 3706d2f3d7cb5dae600c833345a76132 - sha256: 0003ab2b971913380633c711bf49a54dcf06e179986c725b0925854b58878377 + md5: 623b19f616f2ca0c261441067e18ae40 + sha256: 52ab2798be31b8f509eeec458712f447ced4f96ecb672c6c9a42778f47e07b1b manager: conda name: gitdb optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.10-pyhd8ed1ab_0.conda - version: 4.0.10 + url: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.11-pyhd8ed1ab_0.conda + version: 4.0.11 - category: main dependencies: python: '>=3.6' @@ -3722,17 +3861,17 @@ package: version: 6.8.0 - category: main dependencies: - python: '>=3.7' + python: '>=3.8' zipp: '>=3.1.0' hash: - md5: 748955a096313b51b314263402b83250 - sha256: f6a7af42e185bb188e6959c4af909cebacd291e2e1ceea6b2f246bb4da93eb7e + md5: 48b0d98e0c0ec810d3ccc2a0926c8c0e + sha256: adab6da633ec3b642f036ab5c1196c3e2db0e8db57fb0c7fc9a8e06e29fa9bdc manager: conda name: importlib_resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-5.13.0-pyhd8ed1ab_0.conda - version: 5.13.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda + version: 6.1.0 - category: main dependencies: more-itertools: '' @@ -3762,16 +3901,16 @@ package: - category: main dependencies: jsonpointer: '>=1.9' - python: '>=3.6' + python: '>=3.8' hash: - md5: 09150b51b0528a31a0f6500b96fdde82 - sha256: d87fd8da2d3327744821b6b1d1e5b76e4077224fb626ce02d6623a1bc6ee2563 + md5: bfdb7c5c6ad1077c82a69a8642c87aff + sha256: fbb17e33ace3225c6416d1604637c1058906b8223da968cc015128985336b2b4 manager: conda name: jsonpatch optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.32-pyhd8ed1ab_0.tar.bz2 - version: '1.32' + url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda + version: '1.33' - category: main dependencies: python: '' @@ -3785,6 +3924,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/junit-xml-1.9-pyh9f0ad1d_0.tar.bz2 version: '1.9' +- category: main + dependencies: + libblas: 3.9.0 19_linux64_openblas + hash: + md5: d12374af44575413fbbd4a217d46ea33 + sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a + manager: conda + name: libcblas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -3809,6 +3960,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hfa28ad5_6.conda version: 2.3.3 +- category: main + dependencies: + libblas: 3.9.0 19_linux64_openblas + hash: + md5: 9f100edf65436e3eabc2a51fc00b2c37 + sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878 + manager: conda + name: liblapack + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda + version: 3.9.0 - category: main dependencies: python: '' @@ -3827,21 +3990,21 @@ package: - category: main dependencies: libgcc-ng: '>=12' - mypy_extensions: '>=0.4.3' + mypy_extensions: '>=1.0.0' psutil: '>=4.0' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 tomli: '>=1.1.0' - typing_extensions: '>=3.10' + typing_extensions: '>=4.1.0' hash: - md5: 9b8878a92795d51dd78c40ee0f36f19a - sha256: d334188ba5268af085d7ad5cb763825ee977c3f464447b2e0404d53b10f3ed79 + md5: 5b55a903c463183b6a7e1be0785c57eb + sha256: 1d1a86da2e680f707a9289497e3c5c745d73733a3b8e923a0ed56176c9519928 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.5.1-py310h2372a71_0.conda - version: 1.5.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.1-py310h2372a71_0.conda + version: 1.6.1 - category: main dependencies: python: 2.7|>=3.7 @@ -3884,14 +4047,14 @@ package: setuptools: '' wheel: '' hash: - md5: e2783aa3f9235225eec92f9081c5b801 - sha256: 9e401b171856e12f6aa32ae5cc1ae1d3708aa7d705ddf359ee7dd0dffd73c2b5 + md5: 2400c0b86889f43aa52067161e1fb108 + sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.2.1-pyhd8ed1ab_0.conda - version: 23.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda + version: 23.3.1 - category: main dependencies: colorama: '' @@ -3902,14 +4065,14 @@ package: python: '>=3.7' tomli: '>=1.0.0' hash: - md5: 003aaefc025d902eec9ed8118e76ace7 - sha256: 713f1fd92a4a3d097646f0ca59b0531ad86e74d8a3184667380c99926f540fa6 + md5: 5bdca0aca30b0ee62bb84854e027eae0 + sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0 manager: conda name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.1-pyhd8ed1ab_0.conda - version: 7.4.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda + version: 7.4.3 - category: main dependencies: python: '>=3.6' @@ -3942,6 +4105,20 @@ package: platform: linux-64 url: https://conda.anaconda.org/ucb-bar/linux-64/qemu-5.0.0-hb15d774_0.tar.bz2 version: 5.0.0 +- category: main + dependencies: + attrs: '>=22.2.0' + python: '>=3.8' + rpds-py: '>=0.7.0' + hash: + md5: a33161b983172ba6ef69d5fc850650cd + sha256: a6768fabc12f1eed87fec68c5c65439e908655cded1e458d70a164abbce13287 + manager: conda + name: referencing + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.30.2-pyhd8ed1ab_0.conda + version: 0.30.2 - category: main dependencies: python: '>=3.5' @@ -3958,16 +4135,16 @@ package: - category: main dependencies: pyasn1: '>=0.1.3' - python: '' + python: '>=3.6' hash: - md5: 3452ab3790dbb1df9508b3fa4ea2f806 - sha256: 6ea0fcd8f40c7f78e2c6cff344bb91f457682aa352ee48364246371a41410ee8 + md5: 03bf410858b2cefc267316408a77c436 + sha256: 23214cdc15a41d14136754857fd9cd46ca3c55a7e751da3b3a48c673f0ee2a57 manager: conda name: rsa optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.7.2-pyh44b312d_0.tar.bz2 - version: 4.7.2 + url: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9-pyhd8ed1ab_0.tar.bz2 + version: '4.9' - category: main dependencies: libgcc-ng: '>=12' @@ -3976,14 +4153,14 @@ package: ruamel.yaml.clib: '>=0.1.2' setuptools: '' hash: - md5: 9a03abf74d5069bda767c1bce7a41e0b - sha256: bdbd5b73bc92f3bd4eea8b8475d912a9d42562ed494163fd3987404f514beb70 + md5: 97204ae92b703d74a983db0e6d07d009 + sha256: 2e390037976718f762b8db6703aadeb950fe4c409c64a7e5985157cbb2d58d52 manager: conda name: ruamel.yaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.32-py310h2372a71_0.conda - version: 0.17.32 + url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.17.21-py310h1fa729e_3.conda + version: 0.17.21 - category: main dependencies: __unix: '' @@ -4017,26 +4194,40 @@ package: python: '>=3.6' types-urllib3: <1.27 hash: - md5: 700fb06cd011d594305e3b487d5a96a2 - sha256: 3be4637a6037786dd6a8b0aed6374c8455fd79987770bc755ce12713aae916a4 + md5: 69d8b100b4a9e557e33c06b0d3ba4772 + sha256: 2ec1bfb9ffbcdd880f60139d46df88e60cd8d0a404f4e0e498500671b34c1d5b manager: conda name: types-requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.2-pyhd8ed1ab_0.conda - version: 2.31.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.31.0.6-pyhd8ed1ab_0.conda + version: 2.31.0.6 - category: main dependencies: - typing_extensions: 4.7.1 pyha770c72_0 + typing_extensions: 4.8.0 pyha770c72_0 hash: - md5: f96688577f1faa58096d06a45136afa2 - sha256: d5d19b8f5b275240c19616a46d67ec57250b3720ba88200da8c732c3fcbfc21d + md5: 384462e63262a527bda564fa2d9126c0 + sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.7.1-hd8ed1ab_0.conda - version: 4.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda + version: 4.8.0 +- category: main + dependencies: + brotli-python: '>=1.0.9' + pysocks: '>=1.5.6,<2.0,!=1.5.7' + python: '>=3.7' + hash: + md5: bf61cfd2a7f212efba378167a07d4a6a + sha256: 1cc0bab65a6ad0f5a8bd7657760a4fb4e670d30377f9dab88b792977cb3687e7 + manager: conda + name: urllib3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.18-pyhd8ed1ab_0.conda + version: 1.26.18 - category: main dependencies: gettext: '>=0.21.1,<1.0a0' @@ -4046,30 +4237,30 @@ package: perl: '>=5.32.1,<5.33.0a0 *_perl5' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - xorg-libx11: '>=1.8.6,<2.0a0' + xorg-libx11: '>=1.8.7,<2.0a0' xorg-libxt: '>=1.3.0,<2.0a0' hash: - md5: 31cdaa92553ca7a1822eab5859f49c68 - sha256: 7d9a6238161940f9953ae6489ef4b7f20b6dbec9ef1b4282c5ab4e4096b168a9 + md5: 554fab21708ab3d3c5a295c5206b5cbc + sha256: 624f3ada4f4cfcc5177a9d5a7ab1ec5f3fc11ef21737aa2d85888be761e5d166 manager: conda name: vim optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.1435-py310pl5321he660f0e_0.conda - version: 9.0.1435 + url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.2059-py310pl5321he660f0e_1.conda + version: 9.0.2059 - category: main dependencies: markupsafe: '>=2.1.1' python: '>=3.8' hash: - md5: e41528da0d8b8bbf4acc7255192132e3 - sha256: b426b0fcb6137ef858746ef86bddee7f0c881a9c84b67ed40b2feb1b5b47f5b6 + md5: af8d825d93dbe6331ee6d61c69869ca0 + sha256: b7ac49549d370a411b1d6150d24243a15adcce07f1c61ec2ea1b536346e47aa0 manager: conda name: werkzeug optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.3.7-pyhd8ed1ab_0.conda - version: 2.3.7 + url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-3.0.1-pyhd8ed1ab_0.conda + version: 3.0.1 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4094,27 +4285,27 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 73deaf595eb21f3e76a02ba1ae2edee6 - sha256: 943c644a13a517d5ca9761e2c3f8697db85ea0c05a44e13697d826f7f5e1d351 + md5: 30ae8a8f248b4e7cd2622cff41cb05a7 + sha256: 0a9aeb8cf885ef6dd0a737693823a4e4d27b2ee724fa3af317d8ccd925fa4258 manager: conda name: yarl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py310h2372a71_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py310h2372a71_1.conda version: 1.9.2 - category: main dependencies: python: '>=3.7' typing-extensions: '>=4.0.0' hash: - md5: 578ae086f225bc2380c79f3b551ff2f7 - sha256: bbabfd4400b03ba6c50d0a55e777e0c3ba900af8dabedb9b8aded774484b5d53 + md5: 997c29372bdbe2afee073dff71f35923 + sha256: 3a2c98154d95cfd54daba6b7d507d31f5ba07ac2ad955c44eb041b66563193cd manager: conda name: annotated-types optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.5.0-pyhd8ed1ab_0.conda - version: 0.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.6.0-pyhd8ed1ab_0.conda + version: 0.6.0 - category: main dependencies: python: '>=3.7' @@ -4130,19 +4321,38 @@ package: version: 4.0.3 - category: main dependencies: - cffi: '>=1.0.0' + aws-c-auth: '>=0.7.5,<0.7.6.0a0' + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 + openssl: '>=3.1.4,<4.0a0' hash: - md5: 87669c3468dff637bbd0363bc0f895cf - sha256: a37f9a00170f48e71b67bb4547e8bf352dcee4e4a79a55f087b512022cc64a0d + md5: e7b72928833ea245d8bfb89a35ae7d5e + sha256: 6831f6c6af9cfc346e4d6ff63e8a46b9949cdd4e3454bcde98a6cad4f26208e9 manager: conda - name: brotlipy + name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1005.tar.bz2 - version: 0.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.20-he249171_1.conda + version: 0.3.20 +- category: main + dependencies: + jmespath: '>=0.7.1,<2.0.0' + python: '>=3.7' + python-dateutil: '>=2.1,<3.0.0' + urllib3: '>=1.25.4,<1.27' + hash: + md5: e0f0f67f85591144a2e921a0af338cf5 + sha256: 51c1e96ec09fedc1ad2972b2c1c258e1bb1c344d3ca64485da063a369c3c919e + manager: conda + name: botocore + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.77-pyhd8ed1ab_0.conda + version: 1.31.77 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4197,16 +4407,16 @@ package: itsdangerous: '>=2.1.2' jinja2: '>=3.1.2' python: '>=3.8' - werkzeug: '>=2.3.7' + werkzeug: '>=3.0.0' hash: - md5: 9b0d29067484a8dfacfae85b8fba81bc - sha256: 4f84ffdc5471236e8225db86c7508426b46aa2c3802d58ca40b3c3e174533b39 + md5: d26105227a24c82fdf160f20ed379400 + sha256: 73dafd8c1ae9ee9e42e5fa78275c8dc3b456879d83dc6d6ed82d92bd498c9184 manager: conda name: flask optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/flask-2.3.3-pyhd8ed1ab_0.conda - version: 2.3.3 + url: https://conda.anaconda.org/conda-forge/noarch/flask-3.0.0-pyhd8ed1ab_0.conda + version: 3.0.0 - category: main dependencies: curl: '' @@ -4233,14 +4443,14 @@ package: python: '>=3.7' typing_extensions: '>=3.7.4.3' hash: - md5: 3c3d8c89c2fe64dc925ca492d67fab1a - sha256: e70b7c7c072f099af8ab004feb099f72e85f60fed2dc1e3dcedf166903ab9822 + md5: 6bf74c3b7c13079a91d4bd3da51cefcf + sha256: 6b85809ffbfe5c1887b674bf0492cc4dd1ac8a25f4d9fa20ef404be92186259b manager: conda name: gitpython optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.34-pyhd8ed1ab_0.conda - version: 3.1.34 + url: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.40-pyhd8ed1ab_0.conda + version: 3.1.40 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -4273,22 +4483,18 @@ package: version: 6.8.0 - category: main dependencies: - attrs: '>=17.4.0' - importlib-metadata: '' importlib_resources: '>=1.4.0' - pkgutil-resolve-name: '>=1.3.10' - pyrsistent: '!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0' - python: '>=3.7' - typing_extensions: '' + python: '>=3.8' + referencing: '>=0.25.0' hash: - md5: 723268a468177cd44568eb8f794e0d80 - sha256: 4f68a23430d1afc5c9b41c46fbac0ade33c0bf57a293c646bfdd6dc65350eada + md5: 7c27ea1bdbe520bb830dcadd59f55cbf + sha256: 7b0061e106674f27cc718f79a095e90a5667a3635ec6626dd23b3be0fd2bfbdc manager: conda - name: jsonschema + name: jsonschema-specifications optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.17.3-pyhd8ed1ab_0.conda - version: 4.17.3 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.7.1-pyhd8ed1ab_0.conda + version: 2023.7.1 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4304,50 +4510,22 @@ package: version: 0.0.0.20190110_28_ga81397fc4 - category: main dependencies: - certifi: '>=2020.06.20' - contourpy: '>=1.0.1' - cycler: '>=0.10' - fonttools: '>=4.22.0' - freetype: '>=2.12.1,<3.0a0' - kiwisolver: '>=1.0.1' + libblas: '>=3.9.0,<4.0a0' + libcblas: '>=3.9.0,<4.0a0' libgcc-ng: '>=12' + liblapack: '>=3.9.0,<4.0a0' libstdcxx-ng: '>=12' - numpy: '>=1.21.6,<2.0a0' - packaging: '>=20.0' - pillow: '>=6.2.0' - pyparsing: '>=2.3.1,<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: ac3b67e928cc71548efad9b522d42fef + sha256: d4671e365c2ed30bf8a376bdc65afcbeeae440ca2091c8712ff8f23678f64973 manager: conda - name: matplotlib-base + name: numpy 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 -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - 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: 6c92da4ec4e301d09a365c0584e632c8 - sha256: 6e545eeee4e7d223c0bd7efe6a1e5b6f054228e9bfd8b151b24c257fcfe0c893 - manager: conda - name: pandas - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.0-py310hcc13569_0.conda - version: 2.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py310hb13e2d6_0.conda + version: 1.26.0 - category: main dependencies: pip: '' @@ -4366,29 +4544,14 @@ package: python: '>=3.7' typing-extensions: '>=4.6.3' hash: - md5: 0809187ef9b89a3d94a5c24d13936236 - sha256: 1b5c0ca2f4260c7dd8cfccd8a641c1e41876c79dc594506be379cde08f5b471e + md5: 8f567c0a74aa44cf732f15773b4083b0 + sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 manager: conda name: platformdirs optional: false platform: linux-64 - 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' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - typing-extensions: '>=4.2.0' - hash: - md5: 92818992253ff7f7ea4924785b1eadb9 - sha256: 6ab9ab48fec65d3ddbb7ed2249cd5fc01ba129aee1cdc65003ec79ee6a1e6778 - manager: conda - name: pydantic - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.12-py310h2372a71_1.conda - version: 1.10.12 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda + version: 3.11.0 - category: main dependencies: libgcc-ng: '>=12' @@ -4396,14 +4559,14 @@ package: python_abi: 3.10.* *_cp310 typing-extensions: '>=4.6.0' hash: - md5: cebe5d122c8b1902f6c0ca7e3c63344f - sha256: b6b097058ae9f378b9db07b2396d7baba8ccaf9c7f0666795caccdb69c36274a + md5: 166a33403c767f760c07ceae7fe2d0f9 + sha256: 3c02b3589dab5ad9cf593d1cf9d380ca21ad552fd8a1d424591b52119da31714 manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.1.2-py310hcb5633a_0.conda - version: 2.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.10.1-py310hcb5633a_0.conda + version: 2.10.1 - category: main dependencies: cffi: '>=1.4.1' @@ -4413,13 +4576,13 @@ package: python_abi: 3.10.* *_cp310 six: '' hash: - md5: 61e89a7a37bee9dd72449733a9273ae2 - sha256: 187c844010404d7b6e21926c66301b03ed90de20d26021f7ee7965fa1e81f4d9 + md5: a29a0825809cd3a780097472be176618 + sha256: f47cc2039e555a03187defab05cf77cc28f56df1a820d789efad39a930994192 manager: conda name: pynacl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h5764c6d_2.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/pynacl-1.5.0-py310h2372a71_3.conda version: 1.5.0 - category: main dependencies: @@ -4437,29 +4600,45 @@ package: - category: main dependencies: pytest: '>=5.0' - python: '>=3.7' + python: '>=3.8' hash: - md5: fcd2531bc3e492657aeb042349aeaf8a - sha256: d2f6a46fe31dea91b427bcc57302edc345eb763caf3c6b6dcd09b2aee002324b + md5: ac9fedc9a0c397f2318e82525491dd83 + sha256: 58d3bd93a0cf9b51ac105de1e01b1fcd1fcfa5993023b67658344e329b02d6e0 manager: conda name: pytest-mock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.11.1-pyhd8ed1ab_0.conda - version: 3.11.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.12.0-pyhd8ed1ab_0.conda + version: 3.12.0 +- category: main + dependencies: + certifi: '>=2017.4.17' + charset-normalizer: '>=2,<4' + idna: '>=2.5,<4' + python: '>=3.7' + urllib3: '>=1.21.1,<3' + hash: + md5: a30144e4156cdbb236f99ebb49828f8b + sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad + manager: conda + name: requests + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda + version: 2.31.0 - category: main dependencies: pip: '' python: '>=3.7,<4.0' hash: - md5: 6f590190c5393999bbc399ff15096bc3 - sha256: 000ed005cc95397866267072230e2f08407f5898ba2ac469200018492e73a875 + md5: ed7e8910d14780ff0c8bf85cc0c62384 + sha256: 476acb62cafa9091e5dacb5fc82afcdb90be828cea54abef371b93e2a1f7748e manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.1-pyhd8ed1ab_0.conda - version: 0.19.1 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.8-pyhd8ed1ab_0.conda + version: 0.19.8 - category: main dependencies: cffi: '' @@ -4468,14 +4647,27 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 703ff1ac7d1b27fb5944b8052b5d1edb - sha256: 3813d8579d5472cc182a56a6bf4c7b14085adfe0f7157af0d595efefb27b8e5c + md5: 35e87277fba9944b8a975113538bb5df + sha256: 7bcb662f8d8181d77d77605c6e176a5bc6a421025a8969c6d793fe47134285bd manager: conda name: ukkonen optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py310hbf28c38_3.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py310hd41b1e2_4.conda version: 1.0.1 +- category: main + dependencies: + backports.functools_lru_cache: '' + python: '>=3.6' + hash: + md5: 8e8280dec091763dfdc29e066de52270 + sha256: 7552f6545ed212b9ae5d023870481fc377c7f18b4854b63160699b95a420c42e + manager: conda + name: wcwidth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.9-pyhd8ed1ab_0.conda + version: 0.2.9 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4495,19 +4687,20 @@ package: version: 1.2.3 - category: main dependencies: - cffi: '>=1.8' + cffi: '>=1.11' libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 + zstd: '>=1.5.5,<1.6.0a0' hash: - md5: 74ea667169b1296fb31bb86f13abfa49 - sha256: 958e22d2b24204e08ca0d64db55d63520583db99852cecc82d22c1a3832b23a2 + md5: 54698ba13cd3494547b289cd86a2176a + sha256: 1c1b91e5c5246b13ca25728ea6200dfd230d8ce8ca6910cd0b70fc5e43065a04 manager: conda name: zstandard optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.19.0-py310h5764c6d_0.tar.bz2 - version: 0.19.0 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py310h1275a96_0.conda + version: 0.22.0 - category: main dependencies: aiosignal: '>=1.1.2' @@ -4521,28 +4714,95 @@ package: python_abi: 3.10.* *_cp310 yarl: '>=1.0,<2.0' hash: - md5: 0b05c509a96d0bf4bb424fe184170795 - sha256: 5cb7647fe64617424027125dab858b96cd0d7b91b1c39fbc7d508a500b7ba9c1 + md5: d265a71480afd9479c9333ba86375d04 + sha256: e32892fd786dc4ba150701ffd0981c8e942fc77e52754f6f1c331392004bd6f1 manager: conda name: aiohttp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.5-py310h2372a71_0.conda - version: 3.8.5 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py310h2372a71_1.conda + version: 3.8.6 +- category: main + dependencies: + botocore: '>=1.11.3' + python: '>=3.7' + wrapt: '' + hash: + md5: d457b2661051b833852509d2dc0c93db + sha256: 15384560a8df2c752a1a09588b7fe9c31f9edf96e0a5a9d7c07c547a37b9e95c + manager: conda + name: aws-xray-sdk + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/aws-xray-sdk-2.12.1-pyhd8ed1ab_0.conda + version: 2.12.1 +- category: main + dependencies: + aws-c-auth: '>=0.7.5,<0.7.6.0a0' + aws-c-cal: '>=0.6.7,<0.6.8.0a0' + aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' + aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-mqtt: '>=0.9.8,<0.9.9.0a0' + aws-c-s3: '>=0.3.20,<0.3.21.0a0' + aws-checksums: '>=0.1.17,<0.1.18.0a0' + libgcc-ng: '>=12' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + s2n: '>=1.3.55,<1.3.56.0a0' + hash: + md5: 6a4cf9185328e2a31c229b5f5496cda3 + sha256: 6562d91b390c5355884ecfe32feccd535ae1d3730ee539b65797a369c0b245f6 + manager: conda + name: awscrt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.6-py310hf79136a_2.conda + version: 0.19.6 +- category: main + dependencies: + python: '>=3.6' + requests: '>=2.18.4' + six: '>=1.11.0' + typing-extensions: '>=4.0.1' + hash: + md5: 6e97f7d5387626f896515442002ac920 + sha256: 3f3ec0617e825bcabb70722ace9153dfdc02895aebb2179fc20b82eb30f79ec8 + manager: conda + name: azure-core + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.29.5-pyhd8ed1ab_0.conda + version: 1.29.5 - category: main dependencies: python: '>=3.7,<4.0' types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 656a8ea23e1f7195e402ee126cd0e036 - sha256: 8533293be957aa444689d17c297207d3a76a3d75308f917edc13dc1703055b6a + md5: d89fbc67fee8b775ecd0cd6ae52a6ca0 + sha256: 08b6fe79cf30a5efc3f3b6da14ba6c9fcd8ad7f297f885d7b4846b1aeeccd8f2 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.41-pyhd8ed1ab_0.conda - version: 1.31.41 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.77-pyhd8ed1ab_0.conda + version: 1.31.77 +- category: main + dependencies: + msgpack-python: '>=0.5.2' + python: '>=3.7' + requests: '>=2.16.0' + hash: + md5: 174bd699bb5aa9e2622eb4b288276ff8 + sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60 + manager: conda + name: cachecontrol + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda + version: 0.13.1 - category: main dependencies: clang-format: 16.0.3 default_h1cdf331_2 @@ -4573,6 +4833,38 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.9.0-pyhd8ed1ab_0.conda version: 0.9.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + numpy: '>=1.16' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + hash: + md5: 6a38f65d330b74495ad6990280486049 + sha256: 16f44e7e47f7cf9c3c02d760beb9179698510740e0eb1927ade3d8fb69aa1a0d + manager: conda + name: contourpy + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py310hd41b1e2_1.conda + version: 1.1.1 +- category: main + dependencies: + appdirs: '' + click: '>=5.1' + filelock: '' + python: '>=3.7' + requests: '>=2' + hash: + md5: c99ae3abf501990769047b4b40a98f17 + sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6 + manager: conda + name: ensureconda + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2 + version: 1.4.3 - category: main dependencies: flask: '>=0.9' @@ -4592,43 +4884,61 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 6fbde8d3bdd1874132a1b26a3554b22c - sha256: 5aece5a948e881e2450be73002e52cd27df089b6ea64416f7694304307f66bd2 + md5: fea10604a45e974b110ea15a88913ebc + sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.27-pyhd8ed1ab_0.conda - version: 2.5.27 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda + version: 2.5.31 - category: main dependencies: importlib_metadata: '' - python: 2.7.*|>=3.5 + python: '>=3.7' hash: - md5: 35f19fabdfd44c8b53889be95333848c - sha256: d497c6f3b064d3dd8b76f277ea8d6a507acfe8cb04e31811baf66d8c533b8c08 + md5: f351864256e291b24b5a3bedda184bff + sha256: c947f2a64e4f06c722973894afb8e26df3aa2212e2e742def3506ccbad42141b manager: conda name: jsonpickle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-2.2.0-pyhd8ed1ab_0.tar.bz2 - version: 2.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/jsonpickle-3.0.2-pyhd8ed1ab_1.conda + version: 3.0.2 - category: main dependencies: - jsonschema: '>=4.0.0,<4.18.0' - pathable: '>=0.4.1,<0.5.0' - python: '>=3.6' - pyyaml: '>=5.1' - typing_extensions: '>=4.3.0,<5.0.0' + attrs: '>=22.2.0' + importlib_resources: '>=1.4.0' + jsonschema-specifications: '>=2023.03.6' + pkgutil-resolve-name: '>=1.3.10' + python: '>=3.8' + referencing: '>=0.28.4' + rpds-py: '>=0.7.1' hash: - md5: eff09facc908d5619097edd090678347 - sha256: 9ed0cbf1fec505c4ed2238453b42c964f8f85baa30490daeb84dbf5afd65c0b1 + md5: 24d41c2f9cc199d0a180ecf7ef54739c + sha256: 07e5d395d83c4b12a7abe3989fb42abdcd3b1c51cd27549e5eab390bb8c7bf0f manager: conda - name: jsonschema-spec + name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-spec-0.1.4-pyhd8ed1ab_0.conda - version: 0.1.4 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.2-pyhd8ed1ab_0.conda + version: 4.19.2 +- category: main + dependencies: + pathable: '>=0.4.1,<0.5.0' + python: '>=3.8.0' + pyyaml: '>=5.1' + referencing: '>=0.28.0,<0.31.0' + requests: '>=2.31.0,<3.0.0' + hash: + md5: 4faa0a9ec46b2849c87b569799b78e0f + sha256: b6153bdaa0875ef3c30a093a7c45321f4e877558b9cffc6b2221325a652ccdd3 + manager: conda + name: jsonschema-path + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.1-pyhd8ed1ab_0.conda + version: 0.3.1 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -4645,19 +4955,19 @@ package: version: 0.0.0.20190110_28_ga81397fc4 - category: main dependencies: - attrs: '>=19.2.0' - jsonschema: '>=4.0.0,<4.18.0' - python: '>=3.7' - rfc3339-validator: '' + cryptography: <44,>=0.6 + pyjwt: <3,>=1.0.0 + python: '>=3.6' + requests: <3,>=2.0.0 hash: - md5: 6294c4a75fdeeca454e99abbea3f250a - sha256: 6b6fff6441e2673a822793776217f1c07d595ad7a73e7b631c7aeb8ac6663041 + md5: d113dcd5f7307ac7d4acc3fc71b6cac9 + sha256: f23aacce006804deed2176a317ed8584b511a2307f3926789089a507c26e1ffb manager: conda - name: openapi-schema-validator + name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.4.4-pyhd8ed1ab_0.conda - version: 0.4.4 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.24.1-pyhd8ed1ab_0.conda + version: 1.24.1 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -4688,6 +4998,25 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-20.0.0-h8e330f5_0.conda version: 20.0.0 +- category: main + dependencies: + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + 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: 775a7709c5b7554340876a6c4a0f6b61 + sha256: 657ce7a2c716298483137c54ef40a5afe016af6c4e3164bf313171f26b260f16 + manager: conda + name: pandas + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.2-py310hcc13569_0.conda + version: 2.1.2 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -4725,17 +5054,45 @@ package: version: 3.3.1 - category: main dependencies: - cryptography: '>=38.0.0,<42,!=40.0.0,!=40.0.1' + python: '>=3.7' + wcwidth: '' + hash: + md5: 59ba1bf8ea558751a0d391249a248765 + sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc + manager: conda + name: prompt-toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda + version: 3.0.38 +- category: main + dependencies: + annotated-types: '>=0.4.0' + pydantic-core: 2.10.1 + python: '>=3.7' + typing-extensions: '>=4.6.1' + hash: + md5: aad1d187156725d52e1f8ee7756c20f6 + sha256: dc6330364f92de95a315a19e842a26605d6ca5c7d346e77811d42ad0438e32d8 + manager: conda + name: pydantic + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.4.2-pyhd8ed1ab_1.conda + version: 2.4.2 +- category: main + dependencies: + cryptography: '>=38.0.0,<41' python: '>=3.6' hash: - md5: 34f7d568bf59d18e3fef8c405cbece21 - sha256: 4daea3dc896987cc1334956fccfc0ed738663a84ad0c1d3f576a7a7936091534 + md5: 0b34aa3ab7e7ccb1765a03dd9ed29938 + sha256: 458428cb867f70f2af2a4ed59d382291ea3eb3f10490196070a15d1d71d5432a manager: conda name: pyopenssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.2.0-pyhd8ed1ab_1.conda - version: 23.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 - category: main dependencies: cryptography: '' @@ -4752,6 +5109,36 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/python-jose-3.3.0-pyh6c4a22f_1.tar.bz2 version: 3.3.0 +- category: main + dependencies: + python: '>=3.7' + pyyaml: '' + requests: '>=2.30.0,<3.0' + types-pyyaml: '' + typing_extensions: '' + urllib3: '>=1.25.10,<3.0' + hash: + md5: 3b9575392a494595648f1abe295bd5a5 + sha256: e38de0da8c9cfff976a0a6bbc98d5da771a79f0a86a88f54b4081b26bfaa88fe + manager: conda + name: responses + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.0-pyhd8ed1ab_0.conda + version: 0.24.0 +- category: main + dependencies: + botocore: '>=1.12.36,<2.0a.0' + python: '>=3.7' + hash: + md5: 5fe335cb1420d13a818fe01310af2b80 + sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d + manager: conda + name: s3transfer + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda + version: 0.7.0 - category: main dependencies: attrs: '' @@ -4774,13 +5161,13 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: e135d0e3bbb226e8d53d31b4e4f6d93c - sha256: 25d2a00bf24a3cab81eba8f77eba8f70a7b3995041fc227f535c0f174536670f + md5: 4ccc40bc490af727cfbf3e7f0289d9bd + sha256: a2b7f56b07b6e95bd05fd47ebe5b2cfc8af70ccd04994623f6508e90d3b5f857 manager: conda name: secretstorage optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py310hff52083_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/secretstorage-3.3.3-py310hff52083_2.conda version: 3.3.3 - category: main dependencies: @@ -4803,14 +5190,43 @@ package: platformdirs: <4,>=3.9.1 python: '>=3.8' hash: - md5: c3feaf947264a59a125e8c26e98c3c5a - sha256: 85c96449202ca87ec12783d8675b3655b4cd7b7afe49f2dc37d743adb0ed177f + md5: fb1fc875719e217ed799a7aae11d3be4 + sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.4-pyhd8ed1ab_0.conda - version: 20.24.4 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda + version: 20.24.6 +- category: main + dependencies: + botocore: '>=1.31.77,<1.32.0' + jmespath: '>=0.7.1,<2.0.0' + python: '>=3.7' + s3transfer: '>=0.7.0,<0.8.0' + hash: + md5: a4cfb5de20a9b5d788f36163f3e9e418 + sha256: 51c2fa0df9da38402bc0910751bec55982c136cc270c9dbf9bfcadead724a2bb + manager: conda + name: boto3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.77-pyhd8ed1ab_0.conda + version: 1.28.77 +- category: main + dependencies: + cachecontrol: 0.13.1 pyhd8ed1ab_0 + filelock: '>=3.8.0' + python: '>=3.7' + hash: + md5: 8c4781ca0893cff3a64423954ce234a1 + sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85 + manager: conda + name: cachecontrol-with-filecache + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda + version: 0.13.1 - category: main dependencies: conda-package-streaming: '>=0.9.0' @@ -4825,6 +5241,24 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.2.0-pyh38be061_0.conda version: 2.2.0 +- category: main + dependencies: + packaging: '>=14.0' + paramiko: '>=2.4.3' + python: '>=3.7' + pywin32-on-windows: '' + requests: '>=2.26.0' + urllib3: '>=1.26.0' + websocket-client: '>=0.32.0' + hash: + md5: c95d23d8bae7e21491868cc7772d7c73 + sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 + manager: conda + name: docker-py + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda + version: 6.1.3 - category: main dependencies: atk-1.0: '>=2.36.0' @@ -4867,13 +5301,13 @@ package: python_abi: 3.10.* *_cp310 secretstorage: '>=3.2' hash: - md5: c6138432d67b31a98a55af46b3f693c1 - sha256: d01df199b2db95622e6b0b87128239e60c4a170f46e9b58fdfde15f948515dfd + md5: 8992b7970e6996fef7fbd3e890d8c552 + sha256: 53b008f165b677b492dfb67bd1459329260ba21338858f20dd3ed6c9a70b3ea7 manager: conda name: keyring optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py310hff52083_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py310hff52083_1.conda version: 24.2.0 - category: main dependencies: @@ -4895,372 +5329,31 @@ package: version: 2.56.0 - category: main dependencies: - importlib_resources: '>=5.8.0,<6.0.0' - jsonschema: '>=4.0.0,<4.18.0' - jsonschema-spec: '>=0.1.1,<0.2.0' - lazy-object-proxy: '>=1.7.1,<2.0.0' - openapi-schema-validator: '>=0.4.2,<0.5' - python: '>=3.7' - typing_extensions: '' - hash: - md5: 365a6ba8516ec76591f32918895502d5 - sha256: 6364d948b9215a15a0482eafab725d9acdad6d03c744501c8fdedfac0d8e12ff - manager: conda - name: openapi-spec-validator - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.5.7-pyhd8ed1ab_0.conda - version: 0.5.7 -- category: main - dependencies: - cfgv: '>=2.0.0' - identify: '>=1.0.0' - nodeenv: '>=0.11.1' - python: '>=3.8' - pyyaml: '>=5.1' - virtualenv: '>=20.10.0' - hash: - md5: f0fe759dc1dc02722c15cfb5faa1172b - sha256: 7adddcb9b5651fe5ed08a8438f2c967ac126c8b3fa854376a9a6f97511810c6a - manager: conda - name: pre-commit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.4.0-pyha770c72_0.conda - version: 3.4.0 -- category: main - dependencies: - __unix: '' - openjdk: '>=8' - hash: - md5: a46fac25dff2221c873bfceab88fcb47 - sha256: 08012e6a1ab95c56b86fe76ca76d236db8aa60f6cb4a47db6ef307671aeb2c1b - manager: conda - name: sbt - optional: false - platform: linux-64 - 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' - certifi: '' - cryptography: '>=1.3.4' - idna: '>=2.0.0' - pyopenssl: '>=0.14' - pysocks: '>=1.5.6,<2.0,!=1.5.7' - python: <4.0 - hash: - md5: 27db656619a55d727eaf5a6ece3d2fd6 - sha256: 213bdf6c3a5d721fa83b45d527d3ecd340f9547c0d6bbd0b8d9d746ec9a1fb4b - manager: conda - name: urllib3 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.15-pyhd8ed1ab_0.conda - version: 1.26.15 -- category: main - dependencies: - jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - python-dateutil: '>=2.1,<3.0.0' - urllib3: '>=1.25.4,<1.27' - hash: - md5: 157c6bb045111f1b4f68e16df9251e7e - sha256: ab65ee4c7f97d8072f25891c8329ad54dece85fefc5053e31266275ea6db637c - manager: conda - name: botocore - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.41-pyhd8ed1ab_0.conda - version: 1.31.41 -- category: main - dependencies: - cairo: '>=1.16.0,<2.0a0' - expat: '' - fontconfig: '>=2.14.2,<3.0a0' - fonts-conda-ecosystem: '' + certifi: '>=2020.06.20' + contourpy: '>=1.0.1' + cycler: '>=0.10' + fonttools: '>=4.22.0' freetype: '>=2.12.1,<3.0a0' - gdk-pixbuf: '>=2.42.10,<3.0a0' - gtk2: '' - gts: '>=0.7.6,<0.8.0a0' - libexpat: '>=2.5.0,<3.0a0' + kiwisolver: '>=1.3.1' libgcc-ng: '>=12' - libgd: '>=2.3.3,<2.4.0a0' - libglib: '>=2.76.2,<3.0a0' - librsvg: '>=2.56.0,<3.0a0' libstdcxx-ng: '>=12' - libtool: '' - libwebp-base: '>=1.3.0,<2.0a0' - libzlib: '>=1.2.13,<1.3.0a0' - pango: '>=1.50.14,<2.0a0' - zlib: '' - hash: - md5: 597e2d0e1c6bc2e4457714ff479fe142 - sha256: 4bfb42de2d28406666ef6729169cae3f49c216c5ebd9f34afa40223755e2aaf8 - manager: conda - name: graphviz - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.5-h28d9a01_0.conda - version: 8.0.5 -- category: main - dependencies: - certifi: '>=2017.4.17' - charset-normalizer: '>=2,<4' - idna: '>=2.5,<4' - python: '>=3.7' - urllib3: '>=1.21.1,<3' - hash: - md5: a30144e4156cdbb236f99ebb49828f8b - sha256: 9f629d6fd3c8ac5f2a198639fe7af87c4db2ac9235279164bfe0fcb49d8c4bad - manager: conda - name: requests - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.31.0-pyhd8ed1ab_0.conda - version: 2.31.0 -- category: main - dependencies: - botocore: '>=1.11.3' - python: '>=3.4' - wrapt: '' - hash: - md5: a9f8851a7aad0fa6ec843b1beb95decf - sha256: ad37f3f8a6653fb91354716adec29dfb9f5917b7aa06d77f33af8ea7947eb116 - manager: conda - name: aws-xray-sdk - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-xray-sdk-2.12.0-pyhd8ed1ab_0.conda - version: 2.12.0 -- category: main - dependencies: - python: '>=3.6' - requests: '>=2.18.4' - six: '>=1.11.0' - typing-extensions: '>=4.0.1' - hash: - 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.29.3-pyhd8ed1ab_0.conda - version: 1.29.3 -- category: main - dependencies: - msgpack-python: '>=0.5.2' - python: '>=3.7' - requests: '>=2.16.0' - hash: - md5: 174bd699bb5aa9e2622eb4b288276ff8 - sha256: aae7ab3a54989f9bf9273e4a17c911ba339a8b9354250bc11fb8eff2e3f4be60 - manager: conda - name: cachecontrol - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-0.13.1-pyhd8ed1ab_0.conda - version: 0.13.1 -- category: main - dependencies: - boltons: '>=23.0.0' - conda-package-handling: '>=1.3.0' - jsonpatch: '>=1.32' - packaging: '>=23.0' - pluggy: '>=1.0.0' - pycosat: '>=0.6.3' - pyopenssl: '>=16.2.0' + numpy: '>=1.22.4,<2.0a0' + packaging: '>=20.0' + pillow: '>=8' + pyparsing: '>=2.3.1' python: '>=3.10,<3.11.0a0' + python-dateutil: '>=2.7' python_abi: 3.10.* *_cp310 - requests: '>=2.27.0,<3' - ruamel.yaml: '>=0.11.14,<0.18' - setuptools: '>=60.0.0' - toolz: '>=0.8.1' - tqdm: '>=4' + tk: '>=8.6.13,<8.7.0a0' hash: - md5: f31c3517413898e0429d44a1c848f1fd - sha256: 111119742c7e25b6241c89a026f07c11d4668e6a6f1ce21216ed322a549b09e8 + md5: e650bd952e5618050ccb088bc0c6dfb4 + sha256: 615197c8b2b816aa1f7874319bd41acb134fcb9cd55e7337563295c8ced0a30e manager: conda - name: conda + name: matplotlib-base optional: false platform: linux-64 - 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' - paramiko: '>=2.4.3' - python: '>=3.7' - pywin32-on-windows: '' - requests: '>=2.26.0' - urllib3: '>=1.26.0' - websocket-client: '>=0.32.0' - hash: - md5: c95d23d8bae7e21491868cc7772d7c73 - sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 - manager: conda - name: docker-py - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda - version: 6.1.3 -- category: main - dependencies: - appdirs: '' - click: '>=5.1' - filelock: '' - python: '>=3.7' - requests: '>=2' - hash: - md5: c99ae3abf501990769047b4b40a98f17 - sha256: b71784b6c24d2320b2f796d074e75e7dd1be7b7fc0f719c5cf3a582270b368d6 - manager: conda - name: ensureconda - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/ensureconda-1.4.3-pyhd8ed1ab_0.tar.bz2 - version: 1.4.3 -- category: main - dependencies: - cryptography: '>=0.6,<44' - pyjwt: '>=1.0.0,<3' - python: '>=3.6' - requests: '>=2.0.0,<3' - hash: - md5: 4af1ca41814694c1028c4f1b1f88c38f - sha256: 50f80fe167d5ca5be572174f3fcad4f4cef225dcf1feccc88fbaf3d661fe15c9 - manager: conda - name: msal - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.23.0-pyhd8ed1ab_0.conda - version: 1.23.0 -- category: main - dependencies: - graphviz: '>=2.46.1' - python: '>=3' - hash: - md5: 196447bc6fd769c3eb2d51de1aa866a5 - sha256: 55e25bf761438b6b52e67ed06d3e5575445177a58636e873a9899aa7fd9c8585 - manager: conda - name: python-graphviz - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 - version: 0.20.1 -- category: main - dependencies: - python: '>=3.7' - pyyaml: '' - requests: '>=2.22.0,<3.0' - types-pyyaml: '' - typing_extensions: '' - urllib3: '>=1.25.10' - hash: - md5: bf15c93720dfea117aaea3155cbebce5 - sha256: c64db4a71de87e17fbcbd0b3af2186ab25d65428bb565bd7d070850324096f3b - manager: conda - name: responses - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/responses-0.23.1-pyhd8ed1ab_0.conda - version: 0.23.1 -- category: main - dependencies: - botocore: '>=1.12.36,<2.0a.0' - python: '>=3.7' - hash: - md5: f57096b122c78f7d8bd6885f52db1077 - sha256: 636453288a2436016235b86ec9bdf6c965aabe2114a68c51809874014255db71 - manager: conda - name: s3transfer - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.6.2-pyhd8ed1ab_0.conda - version: 0.6.2 -- category: main - dependencies: - botocore: 1.31.41 - colorama: '>=0.2.5,<0.4.5' - docutils: '>=0.10,<0.17' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - pyyaml: '>=3.10,<6.1' - rsa: '>=3.1.2,<4.8' - s3transfer: '>=0.6.0,<0.7.0' - hash: - md5: 576254ebc0d459740aadfe1ee0e9a604 - sha256: 4cc5957518f5cf5f1693bbc55f1184a2e1f2a45e1d47cb90613c55a3ad9a88ba - manager: conda - name: awscli - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.29.41-py310hff52083_0.conda - version: 1.29.41 -- category: main - dependencies: - botocore: '>=1.31.41,<1.32.0' - jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - s3transfer: '>=0.6.0,<0.7.0' - hash: - md5: 904d83242795391e42132fba9ce95884 - sha256: 1766d30554de4c2cda01284620c69e9306d14329bfd1b60324c25668dfa36a18 - manager: conda - name: boto3 - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 -- category: main - dependencies: - cachecontrol: 0.13.1 pyhd8ed1ab_0 - filelock: '>=3.8.0' - python: '>=3.7' - hash: - md5: 8c4781ca0893cff3a64423954ce234a1 - sha256: 7fd3cd4a667da284ae3aad9b8cb4d592099bc02ed6566cbae00bd8c0b0604e85 - manager: conda - name: cachecontrol-with-filecache - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cachecontrol-with-filecache-0.13.1-pyhd8ed1ab_0.conda - version: 0.13.1 -- category: main - dependencies: - colorama: '' - conda: '' - networkx: '' - python: '>=3.6' - hash: - md5: 184216409957e082712d750862782903 - sha256: 54e9cf114ca4eaeda91b5bb11a09d4391ba4be8a4fb2911259fc7dc2ec636054 - manager: conda - name: conda-tree - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda - version: 1.1.0 -- category: main - dependencies: - __unix: '' - conda: '>=4.6' - conda-standalone: '' - jinja2: '' - pillow: '>=3.1' - python: '>=3.7' - ruamel.yaml: '>=0.11.14,<0.18' - hash: - md5: 874c9c92cfcb27369d5620eb65f9ec9c - sha256: cad7b6bdf433da141dabcbb7c138e8665db20382e000ff9629b6d0c9141528b0 - manager: conda - name: constructor - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.4.5-pyh55f8243_0.conda - version: 3.4.5 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.1-py310h62c0568_0.conda + version: 3.8.1 - category: main dependencies: msal: '>=0.4.1,<2.0' @@ -5277,51 +5370,158 @@ package: version: 1.0.0 - category: main dependencies: - boto3: '>=1.19.5,<2' - jsonschema: '>=3.2,<5' - pydantic: ~=1.10.2 - python: '>=3.7' - typing_extensions: '>=4.4.0,<5' + jsonschema: '>=4.19.1,<5.0.0a0' + jsonschema-specifications: '>=2023.5.2,<2024.0.0' + python: '>=3.8' + rfc3339-validator: '' hash: - md5: 2f1c7e055a216b95454484d831cc60b3 - sha256: ad418000db6c5105416a87be77026944450cd5b922dd46da0d39782fad35ba33 + md5: 86794cb397bb1b311da59f9ac232b0c8 + sha256: 184ab5d662741d549e5bdc3ea75846ed9a5d0ae2072d9b970d92ab0e4fbe6145 + manager: conda + name: openapi-schema-validator + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-schema-validator-0.6.2-pyhd8ed1ab_0.conda + version: 0.6.2 +- category: main + dependencies: + cfgv: '>=2.0.0' + identify: '>=1.0.0' + nodeenv: '>=0.11.1' + python: '>=3.8' + pyyaml: '>=5.1' + virtualenv: '>=20.10.0' + hash: + md5: 964e3d762e427661c59263435a14c492 + sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + manager: conda + name: pre-commit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda + version: 3.5.0 +- category: main + dependencies: + prompt-toolkit: '>=3.0.38,<3.0.39.0a0' + hash: + md5: 45b74f64d8808eda7e6f6e6b1d641fd2 + sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 + manager: conda + name: prompt_toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda + version: 3.0.38 +- category: main + dependencies: + __unix: '' + openjdk: '>=8' + hash: + md5: b6f6329c1a8a1efaaf16024e545335f5 + sha256: f5588175723814ad220d6dad75771d7139c293df802ce871ab2b89a629250013 + manager: conda + name: sbt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sbt-1.9.7-hd8ed1ab_0.conda + version: 1.9.7 +- category: main + dependencies: + boto3: '>=1.19.5' + jsonschema: <5,>=3.2 + pydantic: '>=1.8,<3' + python: '>=3.7,<4.0' + typing-extensions: <5,>=4.4 + hash: + md5: af59efdd26e86fac14c2746c66cb706c + sha256: ea26d8d828b4e5c8796db950f8b8e8428c95376a536c541b8f0bf937b17ea8b3 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.73.0-pyhd8ed1ab_0.conda - version: 1.73.0 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.79.0-pyhd8ed1ab_0.conda + version: 1.79.0 - category: main dependencies: - azure-core: '>=1.11.0,<2.0.0' - cryptography: '>=2.5' - msal: '>=1.12.0,<2.0.0' - msal_extensions: '>=0.3.0,<2.0.0' - python: '>=3.7' - six: '>=1.12' + awscrt: '>=0.16.4,<=0.19.6' + colorama: '>=0.2.5,<0.4.7' + cryptography: '>=3.3.2,<=40.0.2' + distro: '>=1.5.0,<1.9.0' + docutils: '>=0.10,<0.20' + jmespath: '>=0.7.1,<1.1.0' + prompt_toolkit: '>=3.0.24,<3.0.39' + pyopenssl: <23.2 + python: '>=3.10,<3.11.0a0' + python-dateutil: '>=2.1,<3.0.0' + python_abi: 3.10.* *_cp310 + ruamel.yaml: '>=0.15.0,<=0.17.21' + ruamel.yaml.clib: '>=0.2.0,<=0.2.7' + urllib3: '>=1.25.4,<1.27' hash: - md5: 221a093ddca5e5abf2090a68dd964266 - sha256: af18f4cc9305c849e5ebbaa5cab69bc546c1d8a67accaf2e7bdeb39ab6f75f6f + md5: 05708847ad1e55b6b9dd2022e1001770 + sha256: 1830a413a82ac9a098c352448857406f306e4023e2b2f939fc51adb329373abf + manager: conda + name: awscli + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.31-py310hff52083_0.conda + version: 2.13.31 +- category: main + dependencies: + azure-core: <2.0.0,>=1.23.0 + cryptography: '>=2.5' + msal: <2.0.0,>=1.24.0 + msal_extensions: <2.0.0,>=0.3.0 + python: '>=3.7' + hash: + md5: d1ef208ae2a355e5bb9cdce337644ce9 + sha256: a7a80ce603b0b2af0670e676b0ce96cc3fddd7c59f8f2c4d5767f5cfda7a74e9 manager: conda name: azure-identity optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/azure-identity-1.12.0-pyhd8ed1ab_0.tar.bz2 - version: 1.12.0 + url: https://conda.anaconda.org/conda-forge/noarch/azure-identity-1.15.0-pyhd8ed1ab_0.conda + version: 1.15.0 - category: main dependencies: boto3: '' python: '' typing_extensions: '' hash: - md5: 772310fe036b21f322cfafff4e3c8169 - sha256: 8695b9bc5fcab93aed3b1aa5bda8f3922340bc10a14088fa623470db4c9a558d + md5: 7dbbfc76325bbc7fa7d72b879e5b3712 + sha256: 99743530b8bda235c60678276723bdd2499c65f58422613a8b9facf15e50a8ec manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.77-pyhd8ed1ab_0.conda + version: 1.28.77 +- category: main + dependencies: + archspec: '' + boltons: '>=23.0.0' + conda-package-handling: '>=2.2.0' + jsonpatch: '>=1.32' + packaging: '>=23.0' + pluggy: '>=1.0.0' + pycosat: '>=0.6.3' + pyopenssl: '>=16.2.0' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + requests: '>=2.27.0,<3' + ruamel.yaml: '>=0.11.14,<0.18' + setuptools: '>=60.0.0' + tqdm: '>=4' + truststore: '>=0.8.0' + hash: + md5: 43a598dea1812d249e2d6b8c12e8634f + sha256: 7c9916213879ded1142f95f058ec52da512bae7994105a35470aea66204c1683 + manager: conda + name: conda + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-23.9.0-py310hff52083_2.conda + version: 23.9.0 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5358,32 +5558,79 @@ package: version: 1.4.0 - category: main dependencies: - boto3: '' - python: '>=3.6' - typing-extensions: '' + cairo: '>=1.16.0,<2.0a0' + expat: '' + fontconfig: '>=2.14.2,<3.0a0' + fonts-conda-ecosystem: '' + freetype: '>=2.12.1,<3.0a0' + gdk-pixbuf: '>=2.42.10,<3.0a0' + gtk2: '' + gts: '>=0.7.6,<0.8.0a0' + libexpat: '>=2.5.0,<3.0a0' + libgcc-ng: '>=12' + libgd: '>=2.3.3,<2.4.0a0' + libglib: '>=2.76.2,<3.0a0' + librsvg: '>=2.56.0,<3.0a0' + libstdcxx-ng: '>=12' + libtool: '' + libwebp-base: '>=1.3.0,<2.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + pango: '>=1.50.14,<2.0a0' + zlib: '' hash: - md5: 7654bffc34df00bef7662f5aaede6024 - sha256: 0bb7792dbb38eaf3a75fe5ae547aaf62197b140feb5a624e80adc028f9fbc864 + md5: 597e2d0e1c6bc2e4457714ff479fe142 + sha256: 4bfb42de2d28406666ef6729169cae3f49c216c5ebd9f34afa40223755e2aaf8 manager: conda - name: mypy-boto3-s3 + name: graphviz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.36-pyhd8ed1ab_0.conda - version: 1.28.36 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.5-h28d9a01_0.conda + version: 8.0.5 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 8678482bae631d4af00874831dbe4798 - sha256: 72f952beb3209ea9cfb20011c26e6239c38b14fdafc216fa773eec4b644db326 + md5: e4613bd862e1d98d361028fc4c971ff8 + sha256: dffba76e4bc56360fa5657b45d0f976f39cc3f271efc73e4f51041ce195574a3 + manager: conda + name: mypy-boto3-s3 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.55-pyhd8ed1ab_0.conda + version: 1.28.55 +- category: main + dependencies: + boto3: '' + python: '>=3.6' + typing-extensions: '' + hash: + md5: f64cd26ce98b92dabe21ad9c5ba9ce60 + sha256: f660b474d2e796bb761d2fcf3fb1fe71b9293216c6c73b776d45ab523c454b12 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.41-pyhd8ed1ab_0.conda - version: 1.28.41 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.75-pyhd8ed1ab_0.conda + version: 1.28.75 +- category: main + dependencies: + importlib_resources: '>=5.8,<7.0' + jsonschema: '>=4.18.0,<5.0.0' + jsonschema-path: '>=0.3.1,<0.4.0' + lazy-object-proxy: '>=1.7.1,<2.0.0' + openapi-schema-validator: '>=0.6.0,<0.7.0' + python: '>=3.8.0' + hash: + md5: 01d3b50ae6ec011c99b043388fc3148d + sha256: b3aff38febb575647f1b5ad246dc4a9f221e3f712027a71be6e2554c3fe44220 + manager: conda + name: openapi-spec-validator + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/openapi-spec-validator-0.7.1-pyhd8ed1ab_0.conda + version: 0.7.1 - category: main dependencies: boto3: '' @@ -5400,26 +5647,72 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.73.0' + aws-sam-translator: '>=1.77.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' - jsonschema: '>=3.0,<4.18' + jsonschema: '>=3.0,<5' junit-xml: '>=1.9,<2.dev0' networkx: '>=2.4,<4' python: '>=3.7,<4.0' pyyaml: '>5.4' - regex: '' + regex: '>=2021.7.1' sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: 7e1bb14c96e20a83a9d2170f7cf99b35 - sha256: c9a71f90673966eb5d449993e134ac74ef8cdb3e1e5a7fe85f77fbfca768369f + md5: bd38b7f9983057b8c28d718dbda22e61 + sha256: 36a7f4c7623eed2f0987ae7b716a3f39caee1a865be30aeb7c46bc0091b29835 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.79.9-pyhd8ed1ab_0.conda - version: 0.79.9 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.1-pyhd8ed1ab_0.conda + version: 0.83.1 +- category: main + dependencies: + colorama: '' + conda: '' + networkx: '' + python: '>=3.6' + hash: + md5: 184216409957e082712d750862782903 + sha256: 54e9cf114ca4eaeda91b5bb11a09d4391ba4be8a4fb2911259fc7dc2ec636054 + manager: conda + name: conda-tree + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda + version: 1.1.0 +- category: main + dependencies: + __unix: '' + conda: '>=4.6' + conda-standalone: '' + jinja2: '' + pillow: '>=3.1' + python: '>=3.7' + ruamel.yaml: '>=0.11.14,<0.18' + hash: + md5: bece1550cd8ce528b234f41c85786ef8 + sha256: a4304eff880a3150e027f8af8d158cc9bf6e6c8444d2affda4e2b17125f44a85 + manager: conda + name: constructor + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/constructor-3.5.0-pyhe4f9e05_0.conda + version: 3.5.0 +- category: main + dependencies: + graphviz: '>=2.46.1' + python: '>=3' + hash: + md5: 196447bc6fd769c3eb2d51de1aa866a5 + sha256: 55e25bf761438b6b52e67ed06d3e5575445177a58636e873a9899aa7fd9c8585 + manager: conda + name: python-graphviz + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/python-graphviz-0.20.1-pyh22cad53_0.tar.bz2 + version: 0.20.1 - category: main dependencies: aws-xray-sdk: '!=0.96,>=0.93' @@ -5449,14 +5742,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 779af6a36cd3a8f7260a074462e5e587 - sha256: d5128b843ac0f338f955bb1a93c3565be87b6a5c241300ee2a34fcd4509f7390 + md5: 7bce233565ad81fe3117ef952116bcf0 + sha256: 90a3055b864cb711747211085b9ddd891a9477d648e666b8821347156af12f34 manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.2-pyhd8ed1ab_0.conda - version: 4.2.2 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.7-pyhd8ed1ab_0.conda + version: 4.2.7 - category: main dependencies: livereload: '>=2.3.0' @@ -5554,32 +5847,32 @@ package: - 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' + babel: '>=2.9' + colorama: '>=0.4.5' + docutils: '>=0.18.1,<0.21' + imagesize: '>=1.3' + importlib-metadata: '>=4.8' + jinja2: '>=3.0' + packaging: '>=21.0' + pygments: '>=2.14' + python: '>=3.9' + requests: '>=2.25.0' + snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.5' + sphinxcontrib-serializinghtml: '>=1.1.9' hash: - md5: cd1129e88f6278787212624e1b7a8001 - sha256: 9d614432deff37f90ba406855fd9a21799ef09ab43ec27f5af12ac810fcd1dd1 + md5: bbfd1120d1824d2d073bc65935f0e4c0 + sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 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 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda + version: 7.2.6 - category: main dependencies: python: '>=3.9' @@ -5603,25 +5896,17 @@ package: platform: linux-64 url: https://files.pythonhosted.org/packages/6b/20/471f41173930550f279ccb65596a5ac19b9ac974a8d93679bcd3e0c31498/mock-5.1.0-py3-none-any.whl version: 5.1.0 -- dependencies: {} - hash: - sha256: f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5 - manager: pip - name: pyyaml - platform: linux-64 - url: https://files.pythonhosted.org/packages/02/25/6ba9f6bb50a3d4fbe22c1a02554dc670682a07c8701d1716d19ddea2c940/PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl - version: '6.0' - category: main dependencies: - six: '*' + six: '>=1.12.0' hash: - sha256: 6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c + sha256: 051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24 manager: pip name: asttokens optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/f3/e1/64679d9d0759db5b182222c81ff322c2fe2c31e156a59afd6e9208c960e5/asttokens-2.2.1-py2.py3-none-any.whl - version: 2.2.1 + url: https://files.pythonhosted.org/packages/45/86/4736ac618d82a20d87d2f92ae19441ebc7ac9e7a581d7e58bbe79233b24a/asttokens-2.4.1-py2.py3-none-any.whl + version: 2.4.1 - category: main dependencies: numpy: '*' @@ -5648,23 +5933,23 @@ package: - dependencies: typing-extensions: '>=4.2.0' hash: - sha256: 16928fdc9cb273c6af00d9d5045434c39afba5f42325fb990add2c241402d151 + sha256: 1740068fd8e2ef6eb27a20e5651df000978edce6da6803c2bef0bc74540f9548 manager: pip name: pydantic platform: linux-64 - url: https://files.pythonhosted.org/packages/b6/8e/7dd215f91528487535e7aa048e4092c20ecd0168df958e58809e2235cece/pydantic-1.10.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - version: 1.10.11 + url: https://files.pythonhosted.org/packages/e0/2f/d6f17f8385d718233bcae893d27525443d41201c938b68a4af3d591a33e4/pydantic-1.10.13-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + version: 1.10.13 - category: main dependencies: ruamel.yaml.clib: '>=0.2.7' hash: - sha256: 23cd2ed620231677564646b0c6a89d138b6822a0d78656df7abda5879ec4f447 + sha256: b16b6c3816dff0a93dca12acf5e70afd089fa5acb80604afd1ffa8b465b7722c manager: pip name: ruamel.yaml optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/d9/0e/2a05efa11ea33513fbdf4a2e2576fe94fd8fa5ad226dbb9c660886390974/ruamel.yaml-0.17.32-py3-none-any.whl - version: 0.17.32 + url: https://files.pythonhosted.org/packages/35/79/5e2cffa1c77432f11cd93a5351f30732c997a239d3a3090856a72d6d8ba7/ruamel.yaml-0.17.40-py3-none-any.whl + version: 0.17.40 - category: main dependencies: mock: '*' @@ -5709,13 +5994,13 @@ package: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: 1a441dad41c9a0615c6ae96464190eddccd2de8153254059ff18ffd7b3b84800 + sha256: 17cafeddda48637677e854aae51f29177b916c9c4cb94d66d73fc1f8541a8fc0 manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/d8/91/9756e7cf0b155e80bf9a62beffdd1dec4afce43cc6ab7f432f2267c62762/icontract-2.6.2-py3-none-any.whl - version: 2.6.2 + url: https://files.pythonhosted.org/packages/ab/11/f55bf95fa952c492b5cac0e3c47a542e2b4b91791b0f1d64807e1018078c/icontract-2.6.4-py3-none-any.whl + version: 2.6.4 - category: main dependencies: icontract: '>=2.0.1,<3' diff --git a/scripts/generate-conda-lockfiles.sh b/scripts/generate-conda-lockfiles.sh index f2e81106..544a8281 100755 --- a/scripts/generate-conda-lockfiles.sh +++ b/scripts/generate-conda-lockfiles.sh @@ -13,6 +13,13 @@ fi for TOOLCHAIN_TYPE in riscv-tools esp-tools; do # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 LOCKFILE=$REQS_DIR/conda-lock-reqs/conda-requirements-$TOOLCHAIN_TYPE-linux-64.conda-lock.yml + rm -rf $LOCKFILE - conda-lock -f "$REQS_DIR/chipyard.yaml" -f "$REQS_DIR/$TOOLCHAIN_TYPE.yaml" -p linux-64 --lockfile $LOCKFILE + conda-lock \ + --no-mamba \ + --no-micromamba \ + -f "$REQS_DIR/chipyard.yaml" \ + -f "$REQS_DIR/$TOOLCHAIN_TYPE.yaml" \ + -p linux-64 \ + --lockfile $LOCKFILE done From 19fda05fbab2f1ae7b45984bbcc6452428549c11 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Fri, 3 Nov 2023 14:52:01 -0700 Subject: [PATCH 071/184] Revert GCD BB changes | Move GCD to 0x4000 to not conflict w/ bootrom --- common.mk | 1 - .../chipyard/src/main/scala/example/GCD.scala | 31 +++++-------------- tests/gcd.c | 8 ++--- 3 files changed, 11 insertions(+), 29 deletions(-) diff --git a/common.mk b/common.mk index d5efb31a..f6bc19c1 100644 --- a/common.mk +++ b/common.mk @@ -246,7 +246,6 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F @if [ $(shell cat $(SFC_LEVEL)) = low ]; then cat $(TMP_DIR)/unnec-anno-deleted2.sfc.anno.json > $(SFC_ANNO_FILE) && rm $(TMP_DIR)/unnec-anno-deleted.sfc.anno.json && rm $(TMP_DIR)/unnec-anno-deleted2.sfc.anno.json; fi firtool \ --format=fir \ - --dedup \ --export-module-hierarchy \ --verify-each=true \ --warn-on-unprocessed-annotations \ diff --git a/generators/chipyard/src/main/scala/example/GCD.scala b/generators/chipyard/src/main/scala/example/GCD.scala index b6102b44..ae1d49dd 100644 --- a/generators/chipyard/src/main/scala/example/GCD.scala +++ b/generators/chipyard/src/main/scala/example/GCD.scala @@ -13,7 +13,7 @@ import freechips.rocketchip.util.UIntIsOneOf // DOC include start: GCD params case class GCDParams( - address: BigInt = 0x1000, + address: BigInt = 0x4000, width: Int = 32, useAXI4: Boolean = false, useBlackBox: Boolean = true) @@ -46,11 +46,10 @@ trait HasGCDIO extends BaseModule { } // DOC include start: GCD blackbox -class GCDMMIOBlackBox(val w: Int) extends BlackBox(Map("WIDTH" -> IntParam(w))) with HasBlackBoxPath +class GCDMMIOBlackBox(val w: Int) extends BlackBox(Map("WIDTH" -> IntParam(w))) with HasBlackBoxResource with HasGCDIO { - val chipyardDir = System.getProperty("user.dir") - addPath(s"$chipyardDir/generators/chipyard/src/main/resources/vsrc/GCDMMIOBlackBox.v") + addResource("/vsrc/GCDMMIOBlackBox.v") } // DOC include end: GCD blackbox @@ -114,36 +113,20 @@ trait GCDModule extends HasRegMap { Module(new GCDMMIOChiselModule(params.width)) } - val impl1 = if (params.useBlackBox) { - Module(new GCDMMIOBlackBox(params.width)) - } else { - Module(new GCDMMIOChiselModule(params.width)) - } - - impl.io.clock := clock impl.io.reset := reset.asBool impl.io.x := x impl.io.y := y.bits impl.io.input_valid := y.valid - y.ready := impl.io.input_ready && impl1.io.input_ready + y.ready := impl.io.input_ready gcd.bits := impl.io.gcd - gcd.valid := impl.io.output_valid && impl1.io.output_valid + gcd.valid := impl.io.output_valid impl.io.output_ready := gcd.ready - status := Cat(impl.io.input_ready, impl.io.output_valid, impl1.io.input_ready, impl1.io.output_valid) - io.gcd_busy := impl.io.busy && impl1.io.busy - - impl1.io.clock := clock - impl1.io.reset := reset.asBool - - impl1.io.x := x - impl1.io.y := y.bits - impl1.io.input_valid := y.valid - - impl1.io.output_ready := gcd.ready + status := Cat(impl.io.input_ready, impl.io.output_valid) + io.gcd_busy := impl.io.busy regmap( 0x00 -> Seq( diff --git a/tests/gcd.c b/tests/gcd.c index 1d8ee691..de28251d 100644 --- a/tests/gcd.c +++ b/tests/gcd.c @@ -1,9 +1,9 @@ #include "mmio.h" -#define GCD_STATUS 0x1000 -#define GCD_X 0x1004 -#define GCD_Y 0x1008 -#define GCD_GCD 0x100C +#define GCD_STATUS 0x4000 +#define GCD_X 0x4004 +#define GCD_Y 0x4008 +#define GCD_GCD 0x400C unsigned int gcd_ref(unsigned int x, unsigned int y) { while (y != 0) { From b386e145d478e2ad41c911210b3c7d7cc33bb1c2 Mon Sep 17 00:00:00 2001 From: JL102 Date: Fri, 3 Nov 2023 19:06:23 -0400 Subject: [PATCH 072/184] docs: Add info on chipyard's tests dir The most important part of this addition, IMO, is the note about `__main()`, since it's currently not noted anywhere in Chipyard's docs. It was initially very hard for me to find any explanation about __main until I stumbled across libgloss-htif's readme page. Signed-off-by: JL102 --- docs/Simulation/Software-RTL-Simulation.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/Simulation/Software-RTL-Simulation.rst b/docs/Simulation/Software-RTL-Simulation.rst index 2e832182..68ebd541 100644 --- a/docs/Simulation/Software-RTL-Simulation.rst +++ b/docs/Simulation/Software-RTL-Simulation.rst @@ -81,6 +81,24 @@ For example: .. _sw-sim-custom: +Custom Benchmarks/Tests +------------------------------- + +To compile your own code to run in a Verilator/VCS simulation, add it to Chipyard's ``tests`` directory then add its name to the list of ``PROGRAMS`` inside the ``Makefile``. Then when you run ``make``, all of the programs inside ``tests`` will output a ``.riscv`` binary, which can be used with the simulator as described above. + +.. code-block:: shell + + # Enter Tests directory + cd tests + make + + # Enter Verilator or VCS directory + cd ../sims/verilator + make run-binary BINARY=../../tests/hello.riscv + +.. Note:: On multi-core configurations, only hart (**har**\ dware **t**\ hread) 0 executes the ``main()`` function. All other harts execute the secondary ``__main()`` function, which defaults to a busy loop. To run a multi-threaded workload on a Verilator/VCS simulation, override ``__main()`` with your own code. More details can be found `here `_ + + Makefile Variables and Commands ------------------------------- You can get a list of useful Makefile variables and commands available from the Verilator or VCS directories. simply run ``make help``: From 455dd301d7e49d7257b54efa6fd65f3b9a22d42c Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Fri, 3 Nov 2023 16:20:42 -0700 Subject: [PATCH 073/184] Revert to Verilator 5.008 --- conda-reqs/chipyard.yaml | 2 +- ...irements-esp-tools-linux-64.conda-lock.yml | 52 +++++++++---------- ...ements-riscv-tools-linux-64.conda-lock.yml | 52 +++++++++---------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index bb722331..1ce28ac0 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -88,7 +88,7 @@ dependencies: - graphviz - expect - dtc - - verilator==5.018 + - verilator==5.008 - screen - elfutils - libdwarf-dev==0.0.0.20190110_28_ga81397fc4 # from ucb-bar channel - using mainline libdwarf-feedstock diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index 2d764d0b..3f643e7f 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 07d513e0458adcc5aeb5866cee72d77546cc0ab93dc8a6c611d8a0fb61b6592d + linux-64: 230abd6e27277e253d806c2833ec89f84bc6838b768d6ef1b4f3deecbdf15d67 platforms: - linux-64 sources: - - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml - - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/esp-tools.yaml + - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml + - /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -3399,14 +3399,14 @@ package: perl: '' python: '' hash: - md5: 6ecc6f19e3a0661c096d0e84015c8122 - sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 + md5: efb0e7909f1a41159856e688e216bd26 + sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda - version: '5.018' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda + version: '5.008' - category: main dependencies: python: '>=2.6' @@ -4331,14 +4331,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: e0f0f67f85591144a2e921a0af338cf5 - sha256: 51c1e96ec09fedc1ad2972b2c1c258e1bb1c344d3ca64485da063a369c3c919e + md5: 4b1ebbd11ffe33a61602a0a78d319ffc + sha256: 4575ab6abd1bea6c29c6fced00283012815874cba55e19524c094ab279b238f8 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.77-pyhd8ed1ab_0.conda - version: 1.31.77 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.78-pyhd8ed1ab_0.conda + version: 1.31.78 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4836,18 +4836,18 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - numpy: '>=1.16' + numpy: '>=1.20,<2' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 33afb3357cd0d120ecb26778d37579e4 - sha256: 01b18ac797fd51ba6dc78544a0aa23ac3773142d8099f3861be937ed157eab46 + md5: ed71ad3e30eb03da363fb797419cce98 + sha256: 7a85421667d97132c5d23575da63c2da850775c81832607e56bfd881c9750f3a manager: conda name: contourpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py39h7633fee_1.conda - version: 1.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py39h7633fee_0.conda + version: 1.2.0 - category: main dependencies: appdirs: '' @@ -5199,19 +5199,19 @@ package: version: 20.24.6 - category: main dependencies: - botocore: '>=1.31.77,<1.32.0' + botocore: '>=1.31.78,<1.32.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.7.0,<0.8.0' hash: - md5: a4cfb5de20a9b5d788f36163f3e9e418 - sha256: 51c2fa0df9da38402bc0910751bec55982c136cc270c9dbf9bfcadead724a2bb + md5: 533f30aebff7a261fc8706fbfbff3cac + sha256: 99cc42c0ec102fa316f9b5baf96887be976c0c09143ff745f7da5d6e4cac08bd manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.77-pyhd8ed1ab_0.conda - version: 1.28.77 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.78-pyhd8ed1ab_0.conda + version: 1.28.78 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5458,14 +5458,14 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: e6eb81cb5c41c72a6b1b1d08cf52dce8 - sha256: cc94fa2ec0ff4481292dd34bdd93a94b573ea9309a7113fcac35af1e6a232e58 + md5: 92be618ccb9eaea78c76e03bb0608ea0 + sha256: f2723a8fd51181119dd3b9de73a117b6573602ce8c9766770a0317a24058fd93 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.31-py39hf3d152e_0.conda - version: 2.13.31 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.32-py39hf3d152e_0.conda + version: 2.13.32 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index abe83304..8cc20743 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml -f /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 9963da13032f21beaffd417b65e4c28807446ab56efa04c0748ae798fc95fe92 + linux-64: 93a869dc0877b2364deeee14c69593a84494391c0255828dc6f4b6b17dbbf62d platforms: - linux-64 sources: - - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/chipyard.yaml - - /scratch/abejgonza/chipyard-work/cy-2/conda-reqs/riscv-tools.yaml + - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml + - /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -3413,14 +3413,14 @@ package: perl: '' python: '' hash: - md5: 6ecc6f19e3a0661c096d0e84015c8122 - sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 + md5: efb0e7909f1a41159856e688e216bd26 + sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda - version: '5.018' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda + version: '5.008' - category: main dependencies: python: '>=2.6' @@ -4345,14 +4345,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: e0f0f67f85591144a2e921a0af338cf5 - sha256: 51c1e96ec09fedc1ad2972b2c1c258e1bb1c344d3ca64485da063a369c3c919e + md5: 4b1ebbd11ffe33a61602a0a78d319ffc + sha256: 4575ab6abd1bea6c29c6fced00283012815874cba55e19524c094ab279b238f8 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.77-pyhd8ed1ab_0.conda - version: 1.31.77 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.78-pyhd8ed1ab_0.conda + version: 1.31.78 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4837,18 +4837,18 @@ package: dependencies: libgcc-ng: '>=12' libstdcxx-ng: '>=12' - numpy: '>=1.16' + numpy: '>=1.20,<2' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 6a38f65d330b74495ad6990280486049 - sha256: 16f44e7e47f7cf9c3c02d760beb9179698510740e0eb1927ade3d8fb69aa1a0d + md5: 85d2aaa7af046528d339da1e813c3a9f + sha256: 73dd7868bfd98fa9e4d2cc524687b5c5c8f9d427d4e521875aacfe152eae4715 manager: conda name: contourpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.1.1-py310hd41b1e2_1.conda - version: 1.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.0-py310hd41b1e2_0.conda + version: 1.2.0 - category: main dependencies: appdirs: '' @@ -5200,19 +5200,19 @@ package: version: 20.24.6 - category: main dependencies: - botocore: '>=1.31.77,<1.32.0' + botocore: '>=1.31.78,<1.32.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.7.0,<0.8.0' hash: - md5: a4cfb5de20a9b5d788f36163f3e9e418 - sha256: 51c2fa0df9da38402bc0910751bec55982c136cc270c9dbf9bfcadead724a2bb + md5: 533f30aebff7a261fc8706fbfbff3cac + sha256: 99cc42c0ec102fa316f9b5baf96887be976c0c09143ff745f7da5d6e4cac08bd manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.77-pyhd8ed1ab_0.conda - version: 1.28.77 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.78-pyhd8ed1ab_0.conda + version: 1.28.78 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5458,14 +5458,14 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: 05708847ad1e55b6b9dd2022e1001770 - sha256: 1830a413a82ac9a098c352448857406f306e4023e2b2f939fc51adb329373abf + md5: de603cf1b46103c94b8c3d9b88f77169 + sha256: 242dbeb4e7b8df6fc35918c53a3a79aee57b3b3c37879a659674cb9d3b1605f5 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.31-py310hff52083_0.conda - version: 2.13.31 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.32-py310hff52083_0.conda + version: 2.13.32 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 From 5136b7e2ead148e58e6051c8355bb785b9132f8f Mon Sep 17 00:00:00 2001 From: Jordan Lees Date: Fri, 3 Nov 2023 23:56:51 -0400 Subject: [PATCH 074/184] Update docs/Simulation/Software-RTL-Simulation.rst Co-authored-by: Jerry Zhao --- docs/Simulation/Software-RTL-Simulation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Simulation/Software-RTL-Simulation.rst b/docs/Simulation/Software-RTL-Simulation.rst index 68ebd541..8c87cc80 100644 --- a/docs/Simulation/Software-RTL-Simulation.rst +++ b/docs/Simulation/Software-RTL-Simulation.rst @@ -84,7 +84,7 @@ For example: Custom Benchmarks/Tests ------------------------------- -To compile your own code to run in a Verilator/VCS simulation, add it to Chipyard's ``tests`` directory then add its name to the list of ``PROGRAMS`` inside the ``Makefile``. Then when you run ``make``, all of the programs inside ``tests`` will output a ``.riscv`` binary, which can be used with the simulator as described above. +To compile your own bare-metal code to run in a Verilator/VCS simulation, add it to Chipyard's ``tests`` directory then add its name to the list of ``PROGRAMS`` inside the ``Makefile``. These binaries are compiled with the libgloss-htif library, which implements a minimal set of useful syscalls for bare-metal binaries. Then when you run ``make``, all of the programs inside ``tests`` will be compiled into ``.riscv`` ELF binaries, which can be used with the simulator as described above. .. code-block:: shell From 4ea3c5342deff49904d7cefe718e08a26f209753 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Sun, 5 Nov 2023 16:54:15 -0800 Subject: [PATCH 075/184] Run only on old-ci machines --- .github/workflows/chipyard-run-tests.yml | 78 ++++++++++++------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/.github/workflows/chipyard-run-tests.yml b/.github/workflows/chipyard-run-tests.yml index 3e171fef..6538f348 100644 --- a/.github/workflows/chipyard-run-tests.yml +++ b/.github/workflows/chipyard-run-tests.yml @@ -121,7 +121,7 @@ jobs: name: commit-on-master-check needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -144,7 +144,7 @@ jobs: name: tutorial-setup-check needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -166,7 +166,7 @@ jobs: documentation-check: name: documentation-check needs: [setup-complete] - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -192,7 +192,7 @@ jobs: name: build-extra-tests needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -224,7 +224,7 @@ jobs: prepare-chipyard-cores: name: prepare-chipyard-cores needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -246,7 +246,7 @@ jobs: prepare-chipyard-constellation: name: prepare-chipyard-constellation needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -268,7 +268,7 @@ jobs: prepare-chipyard-peripherals: name: prepare-chipyard-peripherals needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -290,7 +290,7 @@ jobs: prepare-chipyard-accels: name: prepare-chipyard-accels needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -312,7 +312,7 @@ jobs: prepare-chipyard-tracegen: name: prepare-chipyard-tracegen needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -334,7 +334,7 @@ jobs: prepare-chipyard-other: name: prepare-chipyard-other needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -356,7 +356,7 @@ jobs: prepare-chipyard-fpga: name: prepare-chipyard-fpga needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -410,7 +410,7 @@ jobs: chipyard-rocket-run-tests: name: chipyard-rocket-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -433,7 +433,7 @@ jobs: chipyard-prefetchers-run-tests: name: chipyard-prefetchers-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -456,7 +456,7 @@ jobs: chipyard-hetero-run-tests: name: chipyard-hetero-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -479,7 +479,7 @@ jobs: chipyard-boom-run-tests: name: chipyard-boom-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -502,7 +502,7 @@ jobs: chipyard-shuttle-run-tests: name: chipyard-shuttle-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -525,7 +525,7 @@ jobs: chipyard-cva6-run-tests: name: chipyard-cva6-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -548,7 +548,7 @@ jobs: chipyard-ibex-run-tests: name: chipyard-ibex-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -571,7 +571,7 @@ jobs: chipyard-sodor-run-tests: name: chipyard-sodor-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -594,7 +594,7 @@ jobs: chipyard-spike-run-tests: name: chipyard-spike-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -617,7 +617,7 @@ jobs: chipyard-dmirocket-run-tests: name: chipyard-dmirocket-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -640,7 +640,7 @@ jobs: chipyard-dmiboom-run-tests: name: chipyard-dmiboom-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -663,7 +663,7 @@ jobs: chipyard-spiflashwrite-run-tests: name: chipyard-spiflashwrite-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -686,7 +686,7 @@ jobs: chipyard-manyperipherals-run-tests: name: chipyard-manyperipherals-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -709,7 +709,7 @@ jobs: chipyard-tethered-run-tests: name: chipyard-tethered-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -732,7 +732,7 @@ jobs: chipyard-sha3-run-tests: name: chipyard-sha3-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -755,7 +755,7 @@ jobs: chipyard-gemmini-run-tests: name: chipyard-gemmini-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -778,7 +778,7 @@ jobs: chipyard-manymmioaccels-run-tests: name: chipyard-manymmioaccels-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -801,7 +801,7 @@ jobs: # chipyard-nvdla-run-tests: # name: chipyard-nvdla-run-tests # needs: prepare-chipyard-accels - # runs-on: self-hosted + # runs-on: old-ci # steps: # - name: Delete old checkout # run: | @@ -824,7 +824,7 @@ jobs: chipyard-mempress-run-tests: name: chipyard-mempress-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -848,7 +848,7 @@ jobs: tracegen-boom-run-tests: name: tracegen-boom-run-tests needs: prepare-chipyard-tracegen - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -871,7 +871,7 @@ jobs: tracegen-run-tests: name: tracegen-run-tests needs: prepare-chipyard-tracegen - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -894,7 +894,7 @@ jobs: icenet-run-tests: name: icenet-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -917,7 +917,7 @@ jobs: testchipip-run-tests: name: testchipip-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -940,7 +940,7 @@ jobs: rocketchip-run-tests: name: rocketchip-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -979,7 +979,7 @@ jobs: constellation-run-tests: name: constellation-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -1002,7 +1002,7 @@ jobs: chipyard-constellation-run-tests: name: chipyard-constellation-run-tests needs: prepare-chipyard-constellation - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -1026,7 +1026,7 @@ jobs: firesim-run-tests: name: firesim-run-tests needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | @@ -1050,7 +1050,7 @@ jobs: fireboom-run-tests: name: fireboom-run-tests needs: setup-complete - runs-on: self-hosted + runs-on: old-ci steps: - name: Delete old checkout run: | From ddaf0000b410930a3c0d8b082a60e7c2d6584d22 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Sun, 5 Nov 2023 16:59:50 -0800 Subject: [PATCH 076/184] Update to use the new CI machines --- .github/workflows/chipyard-full-flow.yml | 8 +- .github/workflows/chipyard-run-tests.yml | 109 +++++++++-------------- 2 files changed, 48 insertions(+), 69 deletions(-) diff --git a/.github/workflows/chipyard-full-flow.yml b/.github/workflows/chipyard-full-flow.yml index 9c6bf0bc..338d41bb 100644 --- a/.github/workflows/chipyard-full-flow.yml +++ b/.github/workflows/chipyard-full-flow.yml @@ -65,7 +65,7 @@ jobs: name: setup-repo needs: [change-filters, cancel-prior-workflows] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: jktqos + runs-on: as4 steps: - name: Delete old checkout run: | @@ -88,7 +88,7 @@ jobs: run-cfg-finder: name: run-cfg-finder needs: [setup-repo] - runs-on: jktqos + runs-on: as4 steps: - name: Run config finder run: | @@ -101,7 +101,7 @@ jobs: run-tutorial: name: run-tutorial needs: [setup-repo] - runs-on: jktqos + runs-on: as4 steps: - name: Run smoke test run: | @@ -170,7 +170,7 @@ jobs: cleanup: name: cleanup needs: [run-tutorial] - runs-on: jktqos + runs-on: as4 if: ${{ always() }} steps: - name: Delete repo copy and conda env diff --git a/.github/workflows/chipyard-run-tests.yml b/.github/workflows/chipyard-run-tests.yml index 3e171fef..1c0f10d8 100644 --- a/.github/workflows/chipyard-run-tests.yml +++ b/.github/workflows/chipyard-run-tests.yml @@ -62,32 +62,11 @@ jobs: - '**/.gitignore' - '.github/ISSUE_TEMPLATE/**' - create-conda-env-jktgz: - name: create-conda-env-jktgz + create-conda-env-as4: + name: create-conda-env-as4 needs: [change-filters, cancel-prior-workflows] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: jktgz - steps: - - name: Delete old checkout - run: | - ls -alh . - rm -rf ${{ github.workspace }}/* || true - rm -rf ${{ github.workspace }}/.* || true - ls -alh . - - name: Checkout - uses: actions/checkout@v3 - - name: Git workaround - uses: ./.github/actions/git-workaround - - name: Cleanup conda - uses: ./.github/actions/cleanup-conda - - name: Create conda env - uses: ./.github/actions/create-conda-env - - create-conda-env-jktqos: - name: create-conda-env-jktqos - needs: [change-filters, cancel-prior-workflows] - if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: jktqos + runs-on: as4 steps: - name: Delete old checkout run: | @@ -109,7 +88,7 @@ jobs: # When adding new prep jobs, please add them to `needs` below setup-complete: name: setup-complete - needs: [create-conda-env-jktgz, create-conda-env-jktqos] + needs: [create-conda-env-as4] runs-on: ubuntu-latest steps: - name: Set up complete @@ -121,7 +100,7 @@ jobs: name: commit-on-master-check needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -144,7 +123,7 @@ jobs: name: tutorial-setup-check needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -166,7 +145,7 @@ jobs: documentation-check: name: documentation-check needs: [setup-complete] - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -192,7 +171,7 @@ jobs: name: build-extra-tests needs: [setup-complete] if: needs.change-filters.outputs.needs-rtl == 'true' - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -224,7 +203,7 @@ jobs: prepare-chipyard-cores: name: prepare-chipyard-cores needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -246,7 +225,7 @@ jobs: prepare-chipyard-constellation: name: prepare-chipyard-constellation needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -268,7 +247,7 @@ jobs: prepare-chipyard-peripherals: name: prepare-chipyard-peripherals needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -290,7 +269,7 @@ jobs: prepare-chipyard-accels: name: prepare-chipyard-accels needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -312,7 +291,7 @@ jobs: prepare-chipyard-tracegen: name: prepare-chipyard-tracegen needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -334,7 +313,7 @@ jobs: prepare-chipyard-other: name: prepare-chipyard-other needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -356,7 +335,7 @@ jobs: prepare-chipyard-fpga: name: prepare-chipyard-fpga needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -381,7 +360,7 @@ jobs: chipyard-spike-gemmini-run-tests: name: chipyard-spike-gemmini-run-tests needs: prepare-chipyard-accels # technically doesn't depend on RTL but should be after the build.sh for Gemmini - runs-on: jktqos + runs-on: as4 steps: - name: Delete old checkout run: | @@ -410,7 +389,7 @@ jobs: chipyard-rocket-run-tests: name: chipyard-rocket-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -433,7 +412,7 @@ jobs: chipyard-prefetchers-run-tests: name: chipyard-prefetchers-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -456,7 +435,7 @@ jobs: chipyard-hetero-run-tests: name: chipyard-hetero-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -479,7 +458,7 @@ jobs: chipyard-boom-run-tests: name: chipyard-boom-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -502,7 +481,7 @@ jobs: chipyard-shuttle-run-tests: name: chipyard-shuttle-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -525,7 +504,7 @@ jobs: chipyard-cva6-run-tests: name: chipyard-cva6-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -548,7 +527,7 @@ jobs: chipyard-ibex-run-tests: name: chipyard-ibex-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -571,7 +550,7 @@ jobs: chipyard-sodor-run-tests: name: chipyard-sodor-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -594,7 +573,7 @@ jobs: chipyard-spike-run-tests: name: chipyard-spike-run-tests needs: prepare-chipyard-cores - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -617,7 +596,7 @@ jobs: chipyard-dmirocket-run-tests: name: chipyard-dmirocket-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -640,7 +619,7 @@ jobs: chipyard-dmiboom-run-tests: name: chipyard-dmiboom-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -663,7 +642,7 @@ jobs: chipyard-spiflashwrite-run-tests: name: chipyard-spiflashwrite-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -686,7 +665,7 @@ jobs: chipyard-manyperipherals-run-tests: name: chipyard-manyperipherals-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -709,7 +688,7 @@ jobs: chipyard-tethered-run-tests: name: chipyard-tethered-run-tests needs: prepare-chipyard-peripherals - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -732,7 +711,7 @@ jobs: chipyard-sha3-run-tests: name: chipyard-sha3-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -755,7 +734,7 @@ jobs: chipyard-gemmini-run-tests: name: chipyard-gemmini-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -778,7 +757,7 @@ jobs: chipyard-manymmioaccels-run-tests: name: chipyard-manymmioaccels-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -801,7 +780,7 @@ jobs: # chipyard-nvdla-run-tests: # name: chipyard-nvdla-run-tests # needs: prepare-chipyard-accels - # runs-on: self-hosted + # runs-on: as4 # steps: # - name: Delete old checkout # run: | @@ -824,7 +803,7 @@ jobs: chipyard-mempress-run-tests: name: chipyard-mempress-run-tests needs: prepare-chipyard-accels - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -848,7 +827,7 @@ jobs: tracegen-boom-run-tests: name: tracegen-boom-run-tests needs: prepare-chipyard-tracegen - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -871,7 +850,7 @@ jobs: tracegen-run-tests: name: tracegen-run-tests needs: prepare-chipyard-tracegen - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -894,7 +873,7 @@ jobs: icenet-run-tests: name: icenet-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -917,7 +896,7 @@ jobs: testchipip-run-tests: name: testchipip-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -940,7 +919,7 @@ jobs: rocketchip-run-tests: name: rocketchip-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -979,7 +958,7 @@ jobs: constellation-run-tests: name: constellation-run-tests needs: prepare-chipyard-other - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -1002,7 +981,7 @@ jobs: chipyard-constellation-run-tests: name: chipyard-constellation-run-tests needs: prepare-chipyard-constellation - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -1026,7 +1005,7 @@ jobs: firesim-run-tests: name: firesim-run-tests needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | @@ -1050,7 +1029,7 @@ jobs: fireboom-run-tests: name: fireboom-run-tests needs: setup-complete - runs-on: self-hosted + runs-on: as4 steps: - name: Delete old checkout run: | From 29d774a6e46bacfa37a85efdb331b2b53ded5b62 Mon Sep 17 00:00:00 2001 From: Raghav Gupta <58498249+raghav-g13@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:51:23 -0800 Subject: [PATCH 077/184] Use TARGET instead of PREFIX in /tests Makefile(s) (#1647) --- tests/Makefile | 14 +++++++------- tests/libgloss.mk | 4 ++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 28976a6a..670b49ea 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -2,14 +2,14 @@ # RISCV Toolchain ################################# -PREFIX = riscv64-unknown-elf- +TARGET = riscv64-unknown-elf -GCC = $(PREFIX)gcc -CXX = $(PREFIX)g++ -CP = $(PREFIX)objcopy -OBJDUMP = $(PREFIX)objdump -DG = $(PREFIX)gdb -SIZE = $(PREFIX)size +GCC = $(TARGET)-gcc +CXX = $(TARGET)-g++ +CP = $(TARGET)-objcopy +OBJDUMP = $(TARGET)-objdump +DG = $(TARGET)-gdb +SIZE = $(TARGET)-size ################################# diff --git a/tests/libgloss.mk b/tests/libgloss.mk index 2272df33..5553bdbd 100644 --- a/tests/libgloss.mk +++ b/tests/libgloss.mk @@ -5,6 +5,10 @@ ifndef GCC $(error GCC is not defined) endif +ifndef TARGET +$(error TARGET is not defined) +endif + libgloss_specs := htif_nano.specs # Test whether libgloss-htif is globally installed and usable From 2221e9cc6460b024365aa12aca717920520cae81 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Mon, 6 Nov 2023 13:16:13 -0800 Subject: [PATCH 078/184] Update tutorial patch --- scripts/tutorial-patches/build.sbt.patch | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/tutorial-patches/build.sbt.patch b/scripts/tutorial-patches/build.sbt.patch index 1e766db9..e47fbbf6 100644 --- a/scripts/tutorial-patches/build.sbt.patch +++ b/scripts/tutorial-patches/build.sbt.patch @@ -1,20 +1,20 @@ diff --git a/build.sbt b/build.sbt -index 302d99e6..0aa0fcb4 100644 +index c3be6161..2a6d7160 100644 --- a/build.sbt +++ b/build.sbt -@@ -148,7 +148,7 @@ lazy val testchipip = (project in file("generators/testchipip")) - +@@ -147,7 +147,7 @@ lazy val testchipip = (project in file("generators/testchipip")) + lazy val chipyard = (project in file("generators/chipyard")) .dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell, - sha3, // On separate line to allow for cleaner tutorial-setup patches + //sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, - constellation, mempress, barf, shuttle) -@@ -220,10 +220,10 @@ lazy val sodor = (project in file("generators/riscv-sodor")) + constellation, mempress, barf, shuttle, caliptra_aes) +@@ -219,10 +219,10 @@ lazy val sodor = (project in file("generators/riscv-sodor")) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) - + -lazy val sha3 = (project in file("generators/sha3")) - .dependsOn(rocketchip, midasTargetUtils) - .settings(libraryDependencies ++= rocketLibDeps.value) @@ -23,6 +23,6 @@ index 302d99e6..0aa0fcb4 100644 +// .dependsOn(rocketchip, midasTargetUtils) +// .settings(libraryDependencies ++= rocketLibDeps.value) +// .settings(commonSettings) - + lazy val gemmini = (project in file("generators/gemmini")) .dependsOn(rocketchip) From eca7b960f684b9a226543612d5f08139061b380e Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Mon, 6 Nov 2023 17:22:05 -0800 Subject: [PATCH 079/184] More robust env.sh | Fix conda activate if in subshell --- scripts/build-setup.sh | 22 ++++++-- .../init-submodules-no-riscv-tools-nolog.sh | 6 +- scripts/replace-content.py | 56 +++++++++++++++++++ scripts/utils.sh | 24 ++++++++ 4 files changed, 100 insertions(+), 8 deletions(-) create mode 100755 scripts/replace-content.py diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 3624b5e7..2c682514 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -250,11 +250,25 @@ if run_step "10"; then exit_if_last_command_failed fi -cat <> env.sh -# line auto-generated by $0 +# Conda Setup +# Provide a sourceable snippet that can be used in subshells that may not have +# inhereted conda functions that would be brought in under a login shell that +# has run conda init (e.g., VSCode, CI) +read -r -d '\0' CONDA_ACTIVATE_PREAMBLE <<'END_CONDA_ACTIVATE' +if ! type conda >& /dev/null; then + echo "::ERROR:: you must have conda in your environment first" + return 1 # don't want to exit here because this file is sourced +fi + +# if we're sourcing this in a sub process that has conda in the PATH but not as a function, init it again +conda activate --help >& /dev/null || source $(conda info --base)/etc/profile.d/conda.sh +\0 +END_CONDA_ACTIVATE + +replace_content env.sh build-setup "# line auto-generated by $0 +$CONDA_ACTIVATE_PREAMBLE conda activate $CYDIR/.conda-env -source $CYDIR/scripts/fix-open-files.sh -EOT +source $CYDIR/scripts/fix-open-files.sh" echo "Setup complete!" diff --git a/scripts/init-submodules-no-riscv-tools-nolog.sh b/scripts/init-submodules-no-riscv-tools-nolog.sh index d15498ea..aa921f0d 100755 --- a/scripts/init-submodules-no-riscv-tools-nolog.sh +++ b/scripts/init-submodules-no-riscv-tools-nolog.sh @@ -157,8 +157,6 @@ if [ ! -f ./software/firemarshal/marshal-config.yaml ]; then echo "firesim-dir: '../../sims/firesim/'" > ./software/firemarshal/marshal-config.yaml fi -cat << EOT >> env.sh -# line auto-generated by init-submodules-no-riscv-tools.sh +replace_content env.sh init-submodules "# line auto-generated by init-submodules-no-riscv-tools.sh __DIR="$RDIR" -PATH=\$__DIR/software/firemarshal:\$PATH -EOT +PATH=\$__DIR/software/firemarshal:\$PATH" diff --git a/scripts/replace-content.py b/scripts/replace-content.py new file mode 100755 index 00000000..4699ccca --- /dev/null +++ b/scripts/replace-content.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python + +# Replace text in a file given a key identifying a block to replace. +# If the file doesn't exist, create it. +# +# args +# $1 - file to replace text in +# $2 - key used to find block of text to replace +# $3 - text to fill in block that is replaced + +import re +import sys + +def CY_INITIALIZE_RE_BLOCK(k): + return ( + r"^# >>> " + f"{k}" + r" initialize >>>(?:\n|\r\n)" + r"([\s\S]*?)" + r"# <<< " + f"{k}" + r" initialize <<<(?:\n|\r\n)?" + ) + +def CY_INITIALIZE_START_TOKEN(k): + return "# >>> " + f"{k}" + " initialize >>>" + +def CY_INITIALIZE_END_TOKEN(k): + return "# <<< " + f"{k}" + " initialize <<<" + +# ------------------------------ + +try: + with open(sys.argv[1]) as fh: + fh_content = fh.read() +except FileNotFoundError: + fh_content = "" +except: + raise + +initialize_comment_key = sys.argv[2] +inner_contents = CY_INITIALIZE_START_TOKEN(initialize_comment_key) + "\n" + sys.argv[3] + "\n" + CY_INITIALIZE_END_TOKEN(initialize_comment_key) + "\n" + +# ------------------------------ + +replace_str = "__CY_REPLACE_ME_123__" +fh_content = re.sub( + CY_INITIALIZE_RE_BLOCK(initialize_comment_key), + replace_str, + fh_content, + flags=re.MULTILINE, +) +# TODO: maybe remove all but last of replace_str, if there's more than one occurrence +fh_content = fh_content.replace(replace_str, inner_contents) + +if CY_INITIALIZE_START_TOKEN(initialize_comment_key) not in fh_content: + fh_content += "\n%s\n" % inner_contents + +with open(sys.argv[1], "w") as fh: + fh.write(fh_content) diff --git a/scripts/utils.sh b/scripts/utils.sh index 30d3e092..633be103 100755 --- a/scripts/utils.sh +++ b/scripts/utils.sh @@ -53,3 +53,27 @@ function restore_bash_options { set +vx; eval "$OLDSTATE" } + +####################################### +# Wrapper around replace-content.py. +# For a file ($1), write out text ($3) into it +# replacing any area designated by $2. +####################################### +function replace_content +{ + # On macOS, use GNU readlink from 'coreutils' package in Homebrew/MacPorts + if [ "$(uname -s)" = "Darwin" ] ; then + READLINK=greadlink + else + READLINK=readlink + fi + + # If BASH_SOURCE is undefined, we may be running under zsh, in that case + # provide a zsh-compatible alternative + DIR="$(dirname "$($READLINK -f "${BASH_SOURCE[0]:-${(%):-%x}}")")" + file="$1" + shift + key="$1" + shift + $DIR/replace-content.py "$file" "$key" "$@" +} From 70e78cb5239f48d97a21421bac6c96282b9988ed Mon Sep 17 00:00:00 2001 From: Ethan Wu Date: Mon, 6 Nov 2023 21:27:32 -0800 Subject: [PATCH 080/184] Fix IO direction for host Serial-TL port `cloneType` is a Chisel-internal method, use `chiselTypeOf` to construct an IO of the same type and direction. --- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 773f3d39..34be9bb7 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -355,7 +355,7 @@ class WithSerialTLPunchthrough extends OverrideIOBinder({ (system: CanHavePeripheryTLSerial) => { val (ports, cells) = system.serial_tl.zipWithIndex.map({ case (s, id) => val sys = system.asInstanceOf[BaseSubsystem] - val port = IO(s.getWrappedValue.cloneType) + val port = IO(chiselTypeOf(s.getWrappedValue)) port <> s.getWrappedValue (SerialTLPort(port, sys.p(SerialTLKey).get, system.serdesser.get, id), Nil) }).unzip From 1d6ebb230b301d66a456be476ad999115b8c6a11 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 8 Nov 2023 20:00:03 -0800 Subject: [PATCH 081/184] Add Bringup on Arty100T config, using PMOD-gpio for ser-tl --- fpga/src/main/scala/arty100t/Configs.scala | 34 +++++-------- .../main/scala/arty100t/HarnessBinders.scala | 50 +++++++++++++++++-- .../config/fragments/ClockingFragments.scala | 4 ++ 3 files changed, 63 insertions(+), 25 deletions(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 4a0fb293..21d4d8bc 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -21,17 +21,19 @@ class WithNoDesignKey extends Config((site, here, up) => { case DesignKey => (p: Parameters) => new SimpleLazyModule()(p) }) -class WithArty100TTweaks extends Config( +class WithArty100TTweaks(freqMHz: Double = 50) extends Config( new WithArty100TUARTTSI ++ new WithArty100TDDRTL ++ new WithNoDesignKey ++ new testchipip.WithUARTTSIClient ++ new chipyard.harness.WithSerialTLTiedOff ++ - new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ - new chipyard.config.WithMemoryBusFrequency(50.0) ++ - new chipyard.config.WithFrontBusFrequency(50.0) ++ - new chipyard.config.WithSystemBusFrequency(50.0) ++ - new chipyard.config.WithPeripheryBusFrequency(50.0) ++ + new chipyard.harness.WithHarnessBinderClockFreqMHz(freqMHz) ++ + new chipyard.config.WithMemoryBusFrequency(freqMHz) ++ + new chipyard.config.WithFrontBusFrequency(freqMHz) ++ + new chipyard.config.WithSystemBusFrequency(freqMHz) ++ + new chipyard.config.WithPeripheryBusFrequency(freqMHz) ++ + new chipyard.config.WithControlBusFrequency(freqMHz) ++ + new chipyard.config.WithOffchipBusFrequency(freqMHz) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag @@ -45,22 +47,12 @@ class RocketArty100TConfig extends Config( new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.RocketConfig) -class UART230400RocketArty100TConfig extends Config( - new WithArty100TUARTTSI(uartBaudRate = 230400) ++ - new RocketArty100TConfig) - -class UART460800RocketArty100TConfig extends Config( - new WithArty100TUARTTSI(uartBaudRate = 460800) ++ - new RocketArty100TConfig) - -class UART921600RocketArty100TConfig extends Config( - new WithArty100TUARTTSI(uartBaudRate = 921600) ++ - new RocketArty100TConfig) - - class NoCoresArty100TConfig extends Config( new WithArty100TTweaks ++ - new chipyard.config.WithMemoryBusFrequency(50.0) ++ - new chipyard.config.WithPeripheryBusFrequency(50.0) ++ // Match the sbus and pbus frequency new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.NoCoresConfig) + +class BringupArty100TConfig extends Config( + new WithArty100TSerialTLToGPIO ++ + new WithArty100TTweaks(freqMHz = 75) ++ + new chipyard.ChipBringupHostConfig) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index e313c6e1..1b1a95d5 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -1,6 +1,7 @@ package chipyard.fpga.arty100t import chisel3._ +import chisel3.experimental.{DataMirror, Direction} import freechips.rocketchip.jtag.{JTAGIO} import freechips.rocketchip.subsystem.{PeripheryBusKey} @@ -11,16 +12,17 @@ import freechips.rocketchip.diplomacy.{LazyRawModuleImp} import sifive.blocks.devices.uart.{UARTPortIO, HasPeripheryUARTModuleImp, UARTParams} import sifive.blocks.devices.jtag.{JTAGPins, JTAGPinsFromPort} import sifive.blocks.devices.pinctrl.{BasePin} - -import sifive.fpgashells.ip.xilinx.{IBUFG, IOBUF, PULLUP, PowerOnResetFPGAOnly} - +import sifive.fpgashells.shell._ +import sifive.fpgashells.ip.xilinx._ +import sifive.fpgashells.shell.xilinx._ +import sifive.fpgashells.clocks._ import chipyard._ import chipyard.harness._ import chipyard.iobinders._ import testchipip._ -class WithArty100TUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder({ +class WithArty100TUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] ath.io_uart_bb.bundle <> port.io.uart @@ -41,3 +43,43 @@ class WithArty100TDDRTL extends HarnessBinder({ ddrClientBundle <> port.io } }) + +// Uses PMOD JA/JB +class WithArty100TSerialTLToGPIO extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SerialTLPort) => { + val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] + val harnessIO = IO(port.io.cloneType).suggestName("serial_tl") + harnessIO <> port.io + val clkIO = IOPin(harnessIO.clock) + val packagePinsWithPackageIOs = Seq( + ("G13", clkIO), + ("B11", IOPin(harnessIO.bits.out.valid)), + ("A11", IOPin(harnessIO.bits.out.ready)), + ("D12", IOPin(harnessIO.bits.in.valid)), + ("D13", IOPin(harnessIO.bits.in.ready)), + ("B18", IOPin(harnessIO.bits.out.bits, 0)), + ("A18", IOPin(harnessIO.bits.out.bits, 1)), + ("K16", IOPin(harnessIO.bits.out.bits, 2)), + ("E15", IOPin(harnessIO.bits.out.bits, 3)), + ("E16", IOPin(harnessIO.bits.in.bits, 0)), + ("D15", IOPin(harnessIO.bits.in.bits, 1)), + ("C15", IOPin(harnessIO.bits.in.bits, 2)), + ("J17", IOPin(harnessIO.bits.in.bits, 3)) + ) + packagePinsWithPackageIOs foreach { case (pin, io) => { + artyTh.xdc.addPackagePin(io, pin) + artyTh.xdc.addIOStandard(io, "LVCMOS33") + }} + + // Don't add IOB to the clock, if its an input + if (DataMirror.directionOf(port.io.clock) == Direction.Input) { + packagePinsWithPackageIOs foreach { case (pin, io) => { + artyTh.xdc.addIOB(io) + }} + } + + artyTh.sdc.addClock("ser_tl_clock", clkIO, 100) + artyTh.sdc.addGroup(pins = Seq(clkIO)) + artyTh.xdc.clockDedicatedRouteFalse(clkIO) + } +}) diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 2da9fbf2..567cc2f7 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -13,6 +13,7 @@ import freechips.rocketchip.tilelink.{HasTLBusParams} import chipyard._ import chipyard.clocking._ +import testchipip.{OffchipBusKey} // The default RocketChip BaseSubsystem drives its diplomatic clock graph // with the implicit clocks of Subsystem. Don't do that, instead we extend @@ -103,6 +104,9 @@ class WithFrontBusFrequency(freqMHz: Double) extends Config((site, here, up) => class WithControlBusFrequency(freqMHz: Double) extends Config((site, here, up) => { case ControlBusKey => up(ControlBusKey, site).copy(dtsFrequency = Some(BigInt((freqMHz * 1e6).toLong))) }) +class WithOffchipBusFrequency(freqMHz: Double) extends Config((site, here, up) => { + case OffchipBusKey => up(OffchipBusKey, site).copy(dtsFrequency = Some(BigInt((freqMHz * 1e6).toLong))) +}) class WithRationalMemoryBusCrossing extends WithSbusToMbusCrossingType(RationalCrossing(Symmetric)) class WithAsynchrousMemoryBusCrossing extends WithSbusToMbusCrossingType(AsynchronousCrossing()) From 4495c611a88169ab4aab50f9ec156495bc8dfeeb Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 12 Nov 2023 12:24:50 -0800 Subject: [PATCH 082/184] Move memory system configs to a separate configs file --- docs/Customization/Memory-Hierarchy.rst | 2 +- .../scala/config/MemorySystemConfigs.scala | 41 +++++++++++++++++++ .../config/PeripheralDeviceConfigs.scala | 5 --- .../src/main/scala/config/RocketConfigs.scala | 24 ----------- 4 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala diff --git a/docs/Customization/Memory-Hierarchy.rst b/docs/Customization/Memory-Hierarchy.rst index 623d4544..62ccf684 100644 --- a/docs/Customization/Memory-Hierarchy.rst +++ b/docs/Customization/Memory-Hierarchy.rst @@ -97,7 +97,7 @@ and remove the off-chip link. This is done by adding a fragment like ``testchipip.WithScratchpad`` to your configuration and removing the memory port with ``freechips.rocketchip.subsystem.WithNoMemPort``. -.. literalinclude:: ../../generators/chipyard/src/main/scala/config/RocketConfigs.scala +.. literalinclude:: ../../generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala :language: scala :start-after: DOC include start: mbusscratchpadrocket :end-before: DOC include end: mbusscratchpadrocket diff --git a/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala b/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala new file mode 100644 index 00000000..aab7fb7f --- /dev/null +++ b/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala @@ -0,0 +1,41 @@ +package chipyard + +import org.chipsalliance.cde.config.{Config} +import freechips.rocketchip.diplomacy.{AsynchronousCrossing} + +// ------------------------------------------------------------ +// Configs which demonstrate modifying the uncore memory system +// ------------------------------------------------------------ + +class SimAXIRocketConfig extends Config( + new chipyard.harness.WithSimAXIMem ++ // drive the master AXI4 memory with a SimAXIMem, a 1-cycle magic memory, instead of default SimDRAM + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) + +class GB1MemoryRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithExtMemSize((1<<30) * 1L) ++ // use 1GB simulated external memory + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) + +// DOC include start: mbusscratchpadrocket +class MbusScratchpadOnlyRocketConfig extends Config( + new testchipip.WithMbusScratchpad(banks=2, partitions=2) ++ // add 2 partitions of 2 banks mbus backing scratchpad + new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove offchip mem port + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) +// DOC include end: mbusscratchpadrocket + +class SbusScratchpadRocketConfig extends Config( + new testchipip.WithSbusScratchpad(base=0x70000000L, banks=4) ++ // add 4 banks sbus scratchpad + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) + +class SbusBypassRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithExtMemSbusBypass ++ // Add bypass path to access DRAM incoherently through an address alias + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) + +class QuadChannelRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithNMemoryChannels(4) ++ // 4 AXI4 channels + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) diff --git a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala index 7ad7a1ac..a712e434 100644 --- a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala +++ b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala @@ -79,11 +79,6 @@ class ManyPeripheralsRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) -class QuadChannelRocketConfig extends Config( - new freechips.rocketchip.subsystem.WithNMemoryChannels(4) ++ // 4 AXI4 channels - new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.AbstractConfig) - class UARTTSIRocketConfig extends Config( new chipyard.harness.WithSerialTLTiedOff ++ new testchipip.WithUARTTSIClient ++ diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index c45fb6f2..15ca17e3 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -19,11 +19,6 @@ class TinyRocketConfig extends Config( new freechips.rocketchip.subsystem.With1TinyCore ++ // single tiny rocket-core new chipyard.config.AbstractConfig) -class SimAXIRocketConfig extends Config( - new chipyard.harness.WithSimAXIMem ++ // drive the master AXI4 memory with a SimAXIMem, a 1-cycle magic memory, instead of default SimDRAM - new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.AbstractConfig) - class QuadRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNBigCores(4) ++ // quad-core (4 RocketTiles) new chipyard.config.AbstractConfig) @@ -38,11 +33,6 @@ class RV32RocketConfig extends Config( new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) -class GB1MemoryRocketConfig extends Config( - new freechips.rocketchip.subsystem.WithExtMemSize((1<<30) * 1L) ++ // use 1GB simulated external memory - new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.AbstractConfig) - // DOC include start: l1scratchpadrocket class ScratchpadOnlyRocketConfig extends Config( new chipyard.config.WithL2TLBs(0) ++ @@ -65,20 +55,6 @@ class L1ScratchpadRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) -// DOC include start: mbusscratchpadrocket -class MbusScratchpadOnlyRocketConfig extends Config( - new testchipip.WithMbusScratchpad(banks=2, partitions=2) ++ // add 2 partitions of 2 banks mbus backing scratchpad - new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove offchip mem port - new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.AbstractConfig) -// DOC include end: mbusscratchpadrocket - -class SbusScratchpadRocketConfig extends Config( - new testchipip.WithSbusScratchpad(base=0x70000000L, banks=4) ++ // add 4 banks sbus backing scratchpad - new freechips.rocketchip.subsystem.WithNBigCores(1) ++ - new chipyard.config.AbstractConfig) - - class MulticlockRocketConfig extends Config( new freechips.rocketchip.subsystem.WithAsynchronousRocketTiles(3, 3) ++ // Add async crossings between RocketTile and uncore new freechips.rocketchip.subsystem.WithNBigCores(1) ++ From 700057d9ebcd1b8c8a24a2f60405c0ac7c38a0d1 Mon Sep 17 00:00:00 2001 From: Nayiri Date: Mon, 13 Nov 2023 13:33:24 -0800 Subject: [PATCH 083/184] changed chiptop dut name, set FSDB=1 when needed --- vlsi/Makefile | 2 +- vlsi/sim.mk | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/vlsi/Makefile b/vlsi/Makefile index b3901fe6..074ec66a 100644 --- a/vlsi/Makefile +++ b/vlsi/Makefile @@ -42,7 +42,7 @@ HAMMER_EXEC ?= $(if $(filter $(tech_name),sky130),\ ./example-vlsi-sky130,\ ./example-vlsi) VLSI_TOP ?= $(TOP) -VLSI_MODEL_DUT_NAME ?= chiptop +VLSI_MODEL_DUT_NAME ?= chiptop0 # If overriding, this should be relative to $(vlsi_dir) VLSI_OBJ_DIR ?= build ifneq ($(CUSTOM_VLOG),) diff --git a/vlsi/sim.mk b/vlsi/sim.mk index ea2c76d7..1da6f0bc 100644 --- a/vlsi/sim.mk +++ b/vlsi/sim.mk @@ -51,7 +51,11 @@ $(SIM_DEBUG_CONF): $(sim_common_files) check-binary mkdir -p $(dir $@) mkdir -p $(output_dir) echo "sim.inputs:" > $@ - echo " defines: ['DEBUG']" >> $@ + echo " defines:" >> $@ + echo " - 'DEBUG'" >> $@; +ifndef USE_VPD + echo " - 'FSDB=1'" >> $@; +endif echo " defines_meta: 'append'" >> $@ echo " execution_flags:" >> $@ for x in $(VERBOSE_FLAGS) $(call get_waveform_flag,$(call get_sim_out_name,$(BINARY))); do \ From e154a8df5566a066eea30123acdeace40a9e3677 Mon Sep 17 00:00:00 2001 From: Nayiri Date: Mon, 13 Nov 2023 15:02:12 -0800 Subject: [PATCH 084/184] bumping hammer --- conda-reqs/chipyard.yaml | 2 +- ...irements-esp-tools-linux-64.conda-lock.yml | 521 +++++++++--------- ...ements-riscv-tools-linux-64.conda-lock.yml | 509 +++++++++-------- 3 files changed, 501 insertions(+), 531 deletions(-) diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 1ce28ac0..92e0843b 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -102,7 +102,7 @@ dependencies: - sty - open_pdks.sky130a - pip: - - hammer-vlsi[asap7]==1.1.2 + - hammer-vlsi[asap7]==1.2.0 # doc requirements - sphinx diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index 3f643e7f..b932c3e4 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 230abd6e27277e253d806c2833ec89f84bc6838b768d6ef1b4f3deecbdf15d67 + linux-64: 4352e035d7bb90946e06331a177d5f78586ad26885d9505a73f901d3c7a3f138 platforms: - linux-64 sources: - - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy/conda-reqs/esp-tools.yaml + - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml + - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -141,47 +141,47 @@ package: - category: main dependencies: {} hash: - md5: ed613582de7b8569fdc53ca141be176a - sha256: 7e12d0496389017ca526254913b24d9024e1728c849a0d6476a4b7fde9d03cba + md5: 1d7f6d1825bd6bf21ee04336ec87a777 + sha256: 92bec8177aacfcd49a8e5bda49c10e4b77e239e9d58a0ca4ef31344a2be1fc82 manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_2.conda + url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.3.0-h8bca6fd_103.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 7268a17e56eb099d1b8869bbbf46de4c - sha256: e8483069599561ef24b884c898442eadc510190f978fa388db3281b10c3c084e + md5: 3f784d2c059e960156d1ab3858cbf200 + sha256: 8a78b0ab9f845a90d3b66a5d83e4e1131a236d1c5badd3660fb7c12daac796bf manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_2.conda + url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_103.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 9172c297304f2a20134fc56c97fbe229 - sha256: ab22ecdc974cdbe148874ea876d9c564294d5eafa760f403ed4fd495307b4243 + md5: 937eaed008f6bf2191c5fe76f87755e9 + sha256: 6c6c49efedcc5709a66f19fb6b26b69c6a5245310fd1d9a901fd5e38aaf7f882 manager: conda name: libstdcxx-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda version: 13.2.0 - category: main dependencies: {} hash: - md5: b0813e784cf638d5498967384a1cba5b - sha256: 621935f2263d5920bf66a4c8df81ab9c4c80fd8d318aec767b78aa804ca3a8ad + md5: 731008e7ad6e66cbc00ffe0ebbdd149f + sha256: 7c8277700bf1cdac0cf20f3eafd5d79f371d63face6d517d8af7c7e72f7f4ca3 manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.455_1_ge0f692f-20231025_070436.tar.bz2 - version: 1.0.455_1_ge0f692f + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.457_0_g32e8f23-20231104_052339.tar.bz2 + version: 1.0.457_0_g32e8f23 - category: main dependencies: {} hash: @@ -235,13 +235,13 @@ package: dependencies: _libgcc_mutex: 0.1 conda_forge hash: - md5: e2042154faafe61969556f28bade94b9 - sha256: e1e82348f8296abfe344162b3b5f0ddc2f504759ebeb8b337ba99beaae583b15 + md5: 7124cbb46b13d395bdde68f2d215c989 + sha256: 6ebedee39b6bbbc969715d0d7fa4b381cce67e1139862604ffa393f821c08e81 manager: conda name: libgomp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda version: 13.2.0 - category: main dependencies: @@ -299,13 +299,13 @@ package: _libgcc_mutex: 0.1 conda_forge _openmp_mutex: '>=4.5' hash: - md5: c28003b0be0494f9a7664389146716ff - sha256: d361d3c87c376642b99c1fc25cddec4b9905d3d9b9203c1c545b8c8c1b04539a + md5: 23fdf1fef05baeb7eadc2aed5fb0011f + sha256: 5e88f658e07a30ab41b154b42c59f079b168acfa9551a75bdc972099453f4105 manager: conda name: libgcc-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda version: 13.2.0 - category: main dependencies: @@ -323,14 +323,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 8dacaf703f8e57aa0c4f0c5c8f4be39b - sha256: 75dbc43b047ac1675422099293a2622fd9fd462dc8159c87322cd9847ca7b228 + md5: 1fd5f2ae093f2dbf28dc4f18fca57309 + sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b manager: conda name: aws-c-common optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.4-hd590300_0.conda - version: 0.9.4 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda + version: 0.9.8 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -357,15 +357,15 @@ package: version: '2.40' - category: main dependencies: - libgcc-ng: '>=9.3.0' + libgcc-ng: '>=12' hash: - md5: a1fd65c7ccbf10880423d82bca54eb54 - sha256: cb521319804640ff2ad6a9f118d972ed76d86bea44e5626c09a13d38f562e1fa + md5: 69b8b6202a07720f448be700e300ccf4 + sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8 manager: conda name: bzip2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda version: 1.0.8 - category: main dependencies: @@ -454,17 +454,17 @@ package: version: 5.2.1 - category: main dependencies: - libgcc-ng: '>=7.5.0' - libstdcxx-ng: '>=7.5.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: b94cf2db16066b242ebd26db2facbd56 - sha256: 07a5319e1ac54fe5d38f50c60f7485af7f830b036da56957d0bfb7558a886198 + md5: 0e33ef437202db431aa5a928248cf2e8 + sha256: 2a50495b6bbbacb03107ea0b752d8358d4a40b572d124a8cade068c147f344f5 manager: conda name: gmp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2 - version: 6.2.1 + url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_0.conda + version: 6.3.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -617,13 +617,13 @@ package: dependencies: libgcc-ng: '>=13.2.0' hash: - md5: 78fdab09d9138851dde2b5fe2a11019e - sha256: 55ecf5c46c05a98b4822a041d6e1cb196a7b0606126eb96b24131b7d2c8ca561 + md5: c714d905cdfa0e70200f68b80cc04764 + sha256: 0084a1d29a4f8ee3b8edad80eb6c42e5f0480f054f28cf713fb314bebb347a50 manager: conda name: libgfortran5 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda version: 13.2.0 - category: main dependencies: @@ -665,13 +665,13 @@ package: dependencies: libgcc-ng: '>=12.3.0' hash: - md5: 4655db64eca78a6fcc4fb654fc1f8d57 - sha256: a58add0b4477c59aee324b508d834267360b659f9c543f551ca4442196e656fe + md5: eda05ab0db8f8490945fd99244183e3a + sha256: 903c5786e0379da751e297dbe603be19b030994bac3caa74b3a596c1858c0296 manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_3.conda version: 12.3.0 - category: main dependencies: @@ -1098,56 +1098,56 @@ package: version: 0.2.5 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: cdbd44927a53a313d69f3c206a418dd2 - sha256: 2dcb57436fe20a03373ede39c0cbb046c44b181392eb2e68963ac4ffcace0da4 + md5: ab28ae62aa4738f7ca0622554aadc31b + sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd manager: conda name: aws-c-cal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.7-h6e18cf3_0.conda - version: 0.6.7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda + version: 0.6.9 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: 72cb3661f349a95ea48b0ddcdc4c0f18 - sha256: 71a740e9c092d4119aad6ba3ee3fcbfd33faf078ffd7b80802efe218829bd931 + md5: aee687dcfcc2a75d77b6e6024273978a + sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76 manager: conda name: aws-c-compression optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h037bafe_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda version: 0.2.17 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: 6c2ea725535e0f2a18f645a0bf03a8f6 - sha256: 249727a6ebffe314759bf367209fea9c23f96ac3b8f0a7fd7f61bad2712ec545 + md5: af2bccdb4cf6e9254969426fd53c7c65 + sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h037bafe_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda version: 0.1.12 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: ac1b0e60de127cc46a04e76a907434a1 - sha256: 1a65c1bb49c1345f824db0129895f45434751cedd3e55a89d0300dd1b68794ed + md5: 92077b8c5f72e9b81f069b1eb492ab80 + sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282 manager: conda name: aws-checksums optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h037bafe_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda version: 0.1.17 - category: main dependencies: @@ -1233,20 +1233,20 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_2 + libgcc-devel_linux-64: 12.3.0 h8bca6fd_103 libgcc-ng: '>=12.3.0' libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_2 + libsanitizer: 12.3.0 h0f45ef3_3 libstdcxx-ng: '>=12.3.0' sysroot_linux-64: '' hash: - md5: 2f4d8677dc7dd87f93e9abfb2ce86808 - sha256: 62a897343229e6dc4a3ace4f419a30e60a0a22ce7d0eac0b9bfb8f0308cf3de5 + md5: 71c68ea75afe6ac7a9c62c08f5d67a5a + sha256: ab2ea2890f43d45dc49ff59a3c35348e675ba728e088957209fa8f0e40a498e5 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_3.conda version: 12.3.0 - category: main dependencies: @@ -1302,15 +1302,15 @@ package: version: 3.1.20191231 - category: main dependencies: - libgfortran5: 13.2.0 ha4646dd_2 + libgfortran5: 13.2.0 ha4646dd_3 hash: - md5: e75a75a6eaf6f318dae2631158c46575 - sha256: 767d71999e5386210fe2acaf1b67073e7943c2af538efa85c101e3401e94ff62 + md5: 73031c79546ad06f1fe62e57fdd021bc + sha256: 5b918950b84605b6865de438757f507b1eff73c96fd562f7022c80028b088c14 manager: conda name: libgfortran-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda version: 13.2.0 - category: main dependencies: @@ -1341,21 +1341,21 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.20.1,<2.0a0' + c-ares: '>=1.21.0,<2.0a0' libev: '>=4.33,<4.34.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' openssl: '>=3.1.4,<4.0a0' hash: - md5: a802251d1eaeeae041c867faf0f94fa8 - sha256: 5e60b852dbde156ef1fa939af2491fe0e9eb3000de146786dede7cda8991ae4c + md5: 9b13d5ee90fc9f09d54fd403247342b4 + sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.55.1-h47da74e_0.conda - version: 1.55.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + version: 1.58.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1538,16 +1538,16 @@ package: - category: main dependencies: libgcc-ng: '>=12' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: 8cdfb7d58bdfd543717eeacc0801f3c0 - sha256: d9b8c7f6dcab6c34c9eec7dae8aa05ec0ad79365ff5512456f19fa35c5084ecf + md5: 04b4845b9e9b5a0ee6eba013ecdbbddb + sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29 manager: conda name: s2n optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.55-h06160fa_0.conda - version: 1.3.55 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda + version: 1.3.56 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1579,13 +1579,13 @@ package: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 513336054f884f95d9fd925748f41ef3 - sha256: 679e944eb93fde45d0963a22598fafacbb429bb9e7ee26009ba81c4e0c435055 + md5: d453b98d9c83e71da0741bb0ff4d76bc + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e manager: conda name: tk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda version: 8.6.13 - category: main dependencies: @@ -1657,18 +1657,18 @@ package: version: '2.71' - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' - s2n: '>=1.3.55,<1.3.56.0a0' + s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: a0728c6591063bee78f037741d1da83b - sha256: 74843ac64d018e27460d2b45d5fafc613e45073da64bb346c6d8d059a39d22d5 + md5: 4cabe68190c1ff4c72154c0a7d2e980c + sha256: 89103265c27cb5ad67a0f6b67149532e7addae4b6ddfb704e77f0369f5520591 manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hd1885a1_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc23c90e_8.conda version: 0.13.35 - category: main dependencies: @@ -1715,13 +1715,13 @@ package: dependencies: gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' hash: - md5: 3d38e0cc20ff49d767408f2bf69117a8 - sha256: 87e2b89a542cf19c1876ca872841293104214d73e30898ce6542d1751948231d + md5: 93700ef8b49aebbfb0bf40e0b1448834 + sha256: f361a244a51874065b4d9a2d27089647e7966050abb8a76cad57471776b8ba19 manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_3.conda version: 12.3.0 - category: main dependencies: @@ -1795,17 +1795,17 @@ package: version: 3.7.8 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_2 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_2 + gcc_impl_linux-64: 12.3.0 he2b93b0_3 + libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_103 sysroot_linux-64: '' hash: - md5: f89b9916afc36fc5562fbfc11330a8a2 - sha256: 1ca91c1a3892b61da7efe150f9a1830e18aac82f563b27bf707520cb3297cc7a + md5: b6ce9868fc6c65a18c22fd983e2d7e6f + sha256: 63e75858b60fe6d7227cd6026ed7ad0a8df4c5592454f752ff7ffc1e283e66a7 manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_3.conda version: 12.3.0 - category: main dependencies: @@ -1853,14 +1853,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: e618003da3547216310088478e475945 - sha256: 96ec4dc5e38f434aa5862cb46d74923cce1445de3cd0b9d61e3e63102b163af6 + md5: ddd09e8904fde46b85f41896621803e6 + sha256: 44c5f58593b074886436db7d13fdfcba2fe3731867ea52237f049b8400341a2b manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda - version: 2.78.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda + version: 2.78.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2063,26 +2063,26 @@ package: dependencies: python: '>=3.6' hash: - md5: aae3d4ea593ef245ea19d192623f0593 - sha256: af1dc5bee3b83aa167ad5991e7a98a3bd058b15847fef37424b8ea668a7c7ce6 + md5: 0dc2fce00a160271714647c019e3a8a8 + sha256: e030c0993ef56def50fb3b0262a98ba17295c83b6c696748add22aee406b7bd9 manager: conda name: archspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.1-pyhd8ed1ab_1.conda - version: 0.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.2-pyhd8ed1ab_0.conda + version: 0.2.2 - category: main dependencies: python: '>=3.8' hash: - md5: 1be9feadb435ef26456efaf70852ce93 - sha256: e0abc3e71e9f0af65afb9dc3f3d4991c117508023ebcef223b2394a43313ccc9 + md5: c629a13439d80b37c6a946b098c4ac2b + sha256: 62c3486961e43fb9b495b7854f48fea9b486b2176a9629c6faf80c445543b1aa manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.4-pyhd8ed1ab_0.conda - version: 3.1.4 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.6-pyhd8ed1ab_0.conda + version: 3.1.6 - category: main dependencies: libgcc-ng: '>=12' @@ -2111,36 +2111,36 @@ package: version: 23.1.0 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: 38da036c9d74d4d44f35e05474135f77 - sha256: 465ea78fe57381c86e35c81b7bbdbbcfdb88ea1181e7d211b714ad892fb39e22 + md5: b4e69f0e7f832dc901bd585f353487f0 + sha256: b7b00593f4cd835780d3a4f61f6f77181b33b8e85cc0f78d9cb48dc1d84e8443 manager: conda name: aws-c-event-stream optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-he4fbe49_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hae413d4_6.conda version: 0.3.2 - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-compression: '>=0.2.17,<0.2.18.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' libgcc-ng: '>=12' hash: - md5: 2c4c47d83a0e111799dda4059c88621d - sha256: c537317a4490f085a3a58679fa05d4132a2d2b8f5480ffa51175135987faddb6 + md5: e1b49ef8ddc4faca06a63a7e25da644f + sha256: dc4cda9ffef3b5859c5943f010e947e082315e7d84eb1f5e0b3cd58565eaf405 manager: conda name: aws-c-http optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-hbbfb9a7_7.conda - version: 0.7.13 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-h162056d_1.conda + version: 0.7.14 - category: main dependencies: python: '>=2.7' @@ -2181,7 +2181,7 @@ package: version: 1.7.0 - category: main dependencies: - python: ==2.7.*|>=3.7 + python: 2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2373,14 +2373,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 9851752658704495f8adf28f6d2b3cb3 - sha256: 75e15fea05b5334912856e467017af5718259633aecc50d7f3af22b26cb7376f + md5: adb733ec2ee669f6d010758d054da60f + sha256: 826ae2374fc37a9bb29dd3c7783ba11ffa1e215660a60144e7f759c49686b1af manager: conda name: docutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py39hf3d152e_1.tar.bz2 - version: 0.18.1 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.19-py39hf3d152e_1.tar.bz2 + version: '0.19' - category: main dependencies: expat: '>=2.4.8,<3.0a0' @@ -3039,7 +3039,7 @@ package: version: 0.6.6 - category: main dependencies: - python: ==2.7.*|>=3.4 + python: 2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3182,14 +3182,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 07f3775b21f8cf32a3635f203d3f9669 - sha256: 4925ae665a1860a4eb136faed34f12d308983d3b01dc81a7aef84bdd8ffefb18 + md5: 6db337e18a061e407cd34e6520d62a8b + sha256: fbb990dc109b77c2e9a431fc237245f1f1c8ea35fa53630bd0c1f5655c198f6c manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py39h9fdd4d6_0.conda - version: 0.10.6 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.12.0-py39h9fdd4d6_0.conda + version: 0.12.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3449,14 +3449,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: e811d65206edbab1699d452d9e67f29e - sha256: 31bce58bbe4f0a72d6bc4ed9d7e282b735631955b23831e5958e9905f8c188c7 + md5: 3f562f7f2196e9569cef20e0d5280244 + sha256: cb48fd73e68deb8fac83a254897166fb9e396ed86199796075eace9fbceca04e manager: conda name: wrapt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py39hd1e30aa_1.conda - version: 1.15.0 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py39hd1e30aa_0.conda + version: 1.16.0 - category: main dependencies: python: '>=3.6' @@ -3555,36 +3555,36 @@ package: version: 1.3.1 - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' libgcc-ng: '>=12' hash: - md5: 02305820d0dbfe542c6e4d67ddb0f13b - sha256: 45d41ef052d0e362d0c031af7392bd1d755b29b1e6af9e3796abdd7b8b712611 + md5: 31836ccf72bc70ce2ec38a2ec2c8b504 + sha256: 6f44ef79e2ab5005961847cdefd2a71aa3a33c741adc77e774ac9dbedd9a2f81 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.5-h1a24852_0.conda - version: 0.7.5 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.6-h37ad1db_0.conda + version: 0.7.6 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' libgcc-ng: '>=12' hash: - md5: cf4834799534b9fcb7bca1c136bcd7a9 - sha256: 0ec0363fa5c78f0daa50bb1313abd02d3c59d57af380fae7b9d39e0a702562f3 + md5: d03181571be036cfbe7accf52256efe7 + sha256: 1df6ad0f5db319090718f5d4575b8829ff5aa5b663c8580e191fa9005e71072d manager: conda name: aws-c-mqtt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.8-h31a96f8_0.conda - version: 0.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.9-h1387108_0.conda + version: 0.9.9 - category: main dependencies: python: '>=3.7' @@ -3850,14 +3850,14 @@ package: python: '>=3.8' zipp: '>=3.1.0' hash: - md5: 48b0d98e0c0ec810d3ccc2a0926c8c0e - sha256: adab6da633ec3b642f036ab5c1196c3e2db0e8db57fb0c7fc9a8e06e29fa9bdc + md5: 3d5fa25cf42f3f32a12b2d874ace8574 + sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed manager: conda name: importlib_resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda + version: 6.1.1 - category: main dependencies: more-itertools: '' @@ -3983,14 +3983,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: d310175f151cab774a8357ec1b1561c7 - sha256: 39a10de0deb1322dbef975dbce782fbd6abed46ba0229cbd023f09ac10df8a67 + md5: 302c2f64bdf5c828254e4259c122b7fa + sha256: 47f05c1fc7ea7883f69ebe296969fe3a94dfe90f9c50a5df519fd2d1601954e2 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.1-py39hd1e30aa_0.conda - version: 1.6.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.0-py39hd1e30aa_0.conda + version: 1.7.0 - category: main dependencies: python: 2.7|>=3.7 @@ -4307,23 +4307,23 @@ package: version: 4.0.3 - category: main dependencies: - aws-c-auth: '>=0.7.5,<0.7.6.0a0' - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' openssl: '>=3.1.4,<4.0a0' hash: - md5: e7b72928833ea245d8bfb89a35ae7d5e - sha256: 6831f6c6af9cfc346e4d6ff63e8a46b9949cdd4e3454bcde98a6cad4f26208e9 + md5: 76eebe9871477c883d04042758493b98 + sha256: a145f456f0a47f8f7482ce6c23f4bfc3b71cb013598d4e1294930dcc8db56c65 manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.20-he249171_1.conda - version: 0.3.20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.23-h7630044_1.conda + version: 0.3.23 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -4331,14 +4331,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 4b1ebbd11ffe33a61602a0a78d319ffc - sha256: 4575ab6abd1bea6c29c6fced00283012815874cba55e19524c094ab279b238f8 + md5: e6d5b6f6e9920c48eddcc8228d7cfacc + sha256: 74a6d6051bea01f4b68d5bb7397d8805432dbb4e74fa1bc889d05e34e3b9e367 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.78-pyhd8ed1ab_0.conda - version: 1.31.78 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.84-pyhd8ed1ab_0.conda + version: 1.31.84 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4457,17 +4457,17 @@ package: version: 7.3.0 - category: main dependencies: - importlib_resources: '>=6.1.0,<6.1.1.0a0' - python: '>=3.7' + importlib_resources: '>=6.1.1,<6.1.2.0a0' + python: '>=3.8' hash: - md5: 6a62c2cc25376a0d050b3d1d221c3ee9 - sha256: e1f0e12343a916c887648900680f93591d8a1db7c74b2d3f583f8b93855b052a + md5: d04bd1b5bed9177dd7c3cef15e2b6710 + sha256: 89492a6619776e83d30fcdc6915fcb3a657cd345abcf68fdf6655540494ab0f0 manager: conda name: importlib-resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.1.0-pyhd8ed1ab_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.1.1-pyhd8ed1ab_0.conda + version: 6.1.1 - category: main dependencies: importlib-metadata: '>=6.8.0,<6.8.1.0a0' @@ -4530,14 +4530,14 @@ package: pip: '' python: '>=3.6' hash: - md5: 5bde4ebca51438054099b9527c904ecb - sha256: bb6b283c27a8293cfd6d439959da45e848e401130fe3b44e31cde8243fdebdee + md5: 8dbab5ba746ed14aa32cb232dc437f8f + sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87 manager: conda name: pbr optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pbr-5.11.1-pyhd8ed1ab_0.conda - version: 5.11.1 + url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + version: 6.0.0 - category: main dependencies: python: '>=3.7' @@ -4630,14 +4630,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: ed7e8910d14780ff0c8bf85cc0c62384 - sha256: 476acb62cafa9091e5dacb5fc82afcdb90be828cea54abef371b93e2a1f7748e + md5: aca8818a70e54b3763d8eb13ea4cfca0 + sha256: b2ebcf97c7db95fd5ca8b1cf6766d4e467fd4c07de0039c134e14f8e4179df91 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.8-pyhd8ed1ab_0.conda - version: 0.19.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.10-pyhd8ed1ab_0.conda + version: 0.19.10 - category: main dependencies: cffi: '' @@ -4737,28 +4737,28 @@ package: version: 2.12.1 - category: main dependencies: - aws-c-auth: '>=0.7.5,<0.7.6.0a0' - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' - aws-c-mqtt: '>=0.9.8,<0.9.9.0a0' - aws-c-s3: '>=0.3.20,<0.3.21.0a0' + aws-c-mqtt: '>=0.9.9,<0.9.10.0a0' + aws-c-s3: '>=0.3.23,<0.3.24.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 - s2n: '>=1.3.55,<1.3.56.0a0' + s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: b3097849a780af6aaa3be17acd63527f - sha256: 3445ec9095251aa2ae69442ef88e681d315f8ca95720b04cb375a137dcaf6fcd + md5: 08cc5d2eadcfc8d1f32e17dff5de2e92 + sha256: 4712939532aa861f0884abb2dfcc94b8e0854a5604d2f9e49ddceca42d0fa810 manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.6-py39h6237ec6_2.conda - version: 0.19.6 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.10-py39hb0d4f8a_2.conda + version: 0.19.10 - category: main dependencies: python: '>=3.6' @@ -4780,14 +4780,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: d89fbc67fee8b775ecd0cd6ae52a6ca0 - sha256: 08b6fe79cf30a5efc3f3b6da14ba6c9fcd8ad7f297f885d7b4846b1aeeccd8f2 + md5: 362237c4d50dc1e4465e749d002bec95 + sha256: bb613a1ad8a5722504b7240bba4e8bf4773b07f3acfb9a6235c6120aea19c430 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.77-pyhd8ed1ab_0.conda - version: 1.31.77 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.84-pyhd8ed1ab_0.conda + version: 1.31.84 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4959,14 +4959,14 @@ package: python: '>=3.6' requests: <3,>=2.0.0 hash: - md5: d113dcd5f7307ac7d4acc3fc71b6cac9 - sha256: f23aacce006804deed2176a317ed8584b511a2307f3926789089a507c26e1ffb + md5: 4b2d7e21aa309356a9396d54800cd271 + sha256: 8a37a7c3efae510b90669cbae7b4f736477361406028953cd804d09a2d24c53a manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.24.1-pyhd8ed1ab_0.conda - version: 1.24.1 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.25.0-pyhd8ed1ab_0.conda + version: 1.25.0 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -5008,14 +5008,14 @@ package: python_abi: 3.9.* *_cp39 pytz: '>=2020.1' hash: - md5: e21e23161a1627475021844a887ecd4f - sha256: bd10bd91e8e9a6bc39ed78d76b0febf74b9ab998afb2bca15122e16b1487428a + md5: 961b398d8c421a3752e26f01f2dcbdac + sha256: cb67f58e2a5c3c5f033e5901dbc067fcf8b1caebb8c9afd728471c9e75f2073f manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.2-py39hddac248_0.conda - version: 2.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py39hddac248_0.conda + version: 2.1.3 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5199,19 +5199,19 @@ package: version: 20.24.6 - category: main dependencies: - botocore: '>=1.31.78,<1.32.0' + botocore: '>=1.31.84,<1.32.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.7.0,<0.8.0' hash: - md5: 533f30aebff7a261fc8706fbfbff3cac - sha256: 99cc42c0ec102fa316f9b5baf96887be976c0c09143ff745f7da5d6e4cac08bd + md5: a9bfc60aeab9081481db109399739a0e + sha256: 22a8b32548ea3bff700a5dc2c5d52ea59b3ed2776c557c47ee929c10acf50f5b manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.78-pyhd8ed1ab_0.conda - version: 1.28.78 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5443,7 +5443,7 @@ package: version: 1.79.0 - category: main dependencies: - awscrt: '>=0.16.4,<=0.19.6' + awscrt: '>=0.16.4,<=0.19.10' colorama: '>=0.2.5,<0.4.7' cryptography: '>=3.3.2,<=40.0.2' distro: '>=1.5.0,<1.9.0' @@ -5458,14 +5458,14 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: 92be618ccb9eaea78c76e03bb0608ea0 - sha256: f2723a8fd51181119dd3b9de73a117b6573602ce8c9766770a0317a24058fd93 + md5: 4aaf89b9a988b7c058ccf03a20ac125b + sha256: 27b02a7a180786fa3cd6e2d1c57311c3c48a0b529624f3d2027369c0568eaa0d manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.32-py39hf3d152e_0.conda - version: 2.13.32 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.34-py39hf3d152e_0.conda + version: 2.13.34 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5488,14 +5488,14 @@ package: python: '' typing_extensions: '' hash: - md5: 7dbbfc76325bbc7fa7d72b879e5b3712 - sha256: 99743530b8bda235c60678276723bdd2499c65f58422613a8b9facf15e50a8ec + md5: ed34395e930881e637ff3972b14a8cb8 + sha256: e03ff2ce7a063f7511bf1f69f23c3f85e692cd0c154929136e44403da69fd758 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.77-pyhd8ed1ab_0.conda - version: 1.28.77 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: archspec: '' @@ -5605,14 +5605,14 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: f64cd26ce98b92dabe21ad9c5ba9ce60 - sha256: f660b474d2e796bb761d2fcf3fb1fe71b9293216c6c73b776d45ab523c454b12 + md5: 058b95d63b780eaaf07ec142f409f42e + sha256: c744e0354b04aedd724d3046ba34cc931d20e6817c86f5d77e20359d48a5ca44 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.75-pyhd8ed1ab_0.conda - version: 1.28.75 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5741,14 +5741,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 7bce233565ad81fe3117ef952116bcf0 - sha256: 90a3055b864cb711747211085b9ddd891a9477d648e666b8821347156af12f34 + md5: 5c83e6282026138d61086e1f6a689349 + sha256: cd1c6f4386002a7bb4a3debdb331c5a8eeaed7d237b806b3ff481a57f3a3726e manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.7-pyhd8ed1ab_0.conda - version: 4.2.7 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.8-pyhd8ed1ab_0.conda + version: 4.2.8 - category: main dependencies: livereload: '>=2.3.0' @@ -5763,6 +5763,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 version: 2021.3.14 +- category: main + dependencies: + python: '>=2.7' + sphinx: <6 + hash: + md5: 231a6798e540439299666e2eae31751e + sha256: 3b80b31fe1298c04c28285e3c2b1acb019be726acdc76fcd24d0123dc97bee6d + manager: conda + name: sphinx_rtd_theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_0.tar.bz2 + version: 0.5.2 - category: main dependencies: python: '>=3.9' @@ -5802,34 +5815,6 @@ package: 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' @@ -5848,30 +5833,30 @@ package: alabaster: '>=0.7,<0.8' babel: '>=2.9' colorama: '>=0.4.5' - docutils: '>=0.18.1,<0.21' + docutils: '>=0.14,<0.20' imagesize: '>=1.3' importlib-metadata: '>=4.8' jinja2: '>=3.0' packaging: '>=21.0' - pygments: '>=2.14' - python: '>=3.9' - requests: '>=2.25.0' + pygments: '>=2.12' + python: '>=3.7' + requests: '>=2.5.0' snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.9' + sphinxcontrib-serializinghtml: '>=1.1.5' hash: - md5: bbfd1120d1824d2d073bc65935f0e4c0 - sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 + md5: f9e1fcfe235d655900bfeb6aee426472 + sha256: f11fd5fb4ae2c65f41ae86e7408e3ab44844898d928264aa9e89929fffc685c8 manager: conda name: sphinx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda - version: 7.2.6 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.3.0-pyhd8ed1ab_0.tar.bz2 + version: 5.3.0 - category: main dependencies: python: '>=3.9' @@ -5981,25 +5966,25 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: 47f1fc5904756b01d46a8d23a4f3950382086b716138e21a027cd44dc5101f27 + sha256: 7c237557d2a7c5f403474e54f9e5498758c71c24844e524a02656ac16369196d manager: pip name: hammer-vlsi optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/30/e4/37b77c7921b80d58d8b2a325c031e75d656319b676e7fd4555e02b651a9d/hammer_vlsi-1.1.2-py3-none-any.whl - version: 1.1.2 + url: https://files.pythonhosted.org/packages/dd/85/8a7ffd385db1dc84295ef3101559fe7ae0f8fa39942253ca270728642dc5/hammer_vlsi-1.2.0-py3-none-any.whl + version: 1.2.0 - category: main dependencies: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: 17cafeddda48637677e854aae51f29177b916c9c4cb94d66d73fc1f8541a8fc0 + sha256: f1479ed931cf17f6e27aa36c548e16ecea832919890c4240e76b0c1ff14b664e manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/ab/11/f55bf95fa952c492b5cac0e3c47a542e2b4b91791b0f1d64807e1018078c/icontract-2.6.4-py3-none-any.whl - version: 2.6.4 + url: https://files.pythonhosted.org/packages/1f/a6/aed79965cd83f1ec358b2d37d5e5456e0f03ae5b19ebbed76708e976939f/icontract-2.6.5-py3-none-any.whl + version: 2.6.5 - category: main dependencies: icontract: '>=2.0.1,<3' diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 8cc20743..93bde7bf 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 93a869dc0877b2364deeee14c69593a84494391c0255828dc6f4b6b17dbbf62d + linux-64: ad6312b18b2993786fb78ba82f84ec194b56d171665578c08543be2f7cf7bc15 platforms: - linux-64 sources: - - /scratch/abejgonza/cy/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy/conda-reqs/riscv-tools.yaml + - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml + - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -141,47 +141,47 @@ package: - category: main dependencies: {} hash: - md5: ed613582de7b8569fdc53ca141be176a - sha256: 7e12d0496389017ca526254913b24d9024e1728c849a0d6476a4b7fde9d03cba + md5: 1d7f6d1825bd6bf21ee04336ec87a777 + sha256: 92bec8177aacfcd49a8e5bda49c10e4b77e239e9d58a0ca4ef31344a2be1fc82 manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-12.3.0-h8bca6fd_2.conda + url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.3.0-h8bca6fd_103.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 7268a17e56eb099d1b8869bbbf46de4c - sha256: e8483069599561ef24b884c898442eadc510190f978fa388db3281b10c3c084e + md5: 3f784d2c059e960156d1ab3858cbf200 + sha256: 8a78b0ab9f845a90d3b66a5d83e4e1131a236d1c5badd3660fb7c12daac796bf manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_2.conda + url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_103.conda version: 12.3.0 - category: main dependencies: {} hash: - md5: 9172c297304f2a20134fc56c97fbe229 - sha256: ab22ecdc974cdbe148874ea876d9c564294d5eafa760f403ed4fd495307b4243 + md5: 937eaed008f6bf2191c5fe76f87755e9 + sha256: 6c6c49efedcc5709a66f19fb6b26b69c6a5245310fd1d9a901fd5e38aaf7f882 manager: conda name: libstdcxx-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-h7e041cc_3.conda version: 13.2.0 - category: main dependencies: {} hash: - md5: b0813e784cf638d5498967384a1cba5b - sha256: 621935f2263d5920bf66a4c8df81ab9c4c80fd8d318aec767b78aa804ca3a8ad + md5: 731008e7ad6e66cbc00ffe0ebbdd149f + sha256: 7c8277700bf1cdac0cf20f3eafd5d79f371d63face6d517d8af7c7e72f7f4ca3 manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.455_1_ge0f692f-20231025_070436.tar.bz2 - version: 1.0.455_1_ge0f692f + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.457_0_g32e8f23-20231104_052339.tar.bz2 + version: 1.0.457_0_g32e8f23 - category: main dependencies: {} hash: @@ -235,13 +235,13 @@ package: dependencies: _libgcc_mutex: 0.1 conda_forge hash: - md5: e2042154faafe61969556f28bade94b9 - sha256: e1e82348f8296abfe344162b3b5f0ddc2f504759ebeb8b337ba99beaae583b15 + md5: 7124cbb46b13d395bdde68f2d215c989 + sha256: 6ebedee39b6bbbc969715d0d7fa4b381cce67e1139862604ffa393f821c08e81 manager: conda name: libgomp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h807b86a_3.conda version: 13.2.0 - category: main dependencies: @@ -299,13 +299,13 @@ package: _libgcc_mutex: 0.1 conda_forge _openmp_mutex: '>=4.5' hash: - md5: c28003b0be0494f9a7664389146716ff - sha256: d361d3c87c376642b99c1fc25cddec4b9905d3d9b9203c1c545b8c8c1b04539a + md5: 23fdf1fef05baeb7eadc2aed5fb0011f + sha256: 5e88f658e07a30ab41b154b42c59f079b168acfa9551a75bdc972099453f4105 manager: conda name: libgcc-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h807b86a_3.conda version: 13.2.0 - category: main dependencies: @@ -323,14 +323,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 8dacaf703f8e57aa0c4f0c5c8f4be39b - sha256: 75dbc43b047ac1675422099293a2622fd9fd462dc8159c87322cd9847ca7b228 + md5: 1fd5f2ae093f2dbf28dc4f18fca57309 + sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b manager: conda name: aws-c-common optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.4-hd590300_0.conda - version: 0.9.4 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda + version: 0.9.8 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -357,15 +357,15 @@ package: version: '2.40' - category: main dependencies: - libgcc-ng: '>=9.3.0' + libgcc-ng: '>=12' hash: - md5: a1fd65c7ccbf10880423d82bca54eb54 - sha256: cb521319804640ff2ad6a9f118d972ed76d86bea44e5626c09a13d38f562e1fa + md5: 69b8b6202a07720f448be700e300ccf4 + sha256: 242c0c324507ee172c0e0dd2045814e746bb303d1eb78870d182ceb0abc726a8 manager: conda name: bzip2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda version: 1.0.8 - category: main dependencies: @@ -454,17 +454,17 @@ package: version: 5.2.1 - category: main dependencies: - libgcc-ng: '>=7.5.0' - libstdcxx-ng: '>=7.5.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: b94cf2db16066b242ebd26db2facbd56 - sha256: 07a5319e1ac54fe5d38f50c60f7485af7f830b036da56957d0bfb7558a886198 + md5: 0e33ef437202db431aa5a928248cf2e8 + sha256: 2a50495b6bbbacb03107ea0b752d8358d4a40b572d124a8cade068c147f344f5 manager: conda name: gmp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.2.1-h58526e2_0.tar.bz2 - version: 6.2.1 + url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-h59595ed_0.conda + version: 6.3.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -617,13 +617,13 @@ package: dependencies: libgcc-ng: '>=13.2.0' hash: - md5: 78fdab09d9138851dde2b5fe2a11019e - sha256: 55ecf5c46c05a98b4822a041d6e1cb196a7b0606126eb96b24131b7d2c8ca561 + md5: c714d905cdfa0e70200f68b80cc04764 + sha256: 0084a1d29a4f8ee3b8edad80eb6c42e5f0480f054f28cf713fb314bebb347a50 manager: conda name: libgfortran5 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-ha4646dd_3.conda version: 13.2.0 - category: main dependencies: @@ -665,13 +665,13 @@ package: dependencies: libgcc-ng: '>=12.3.0' hash: - md5: 4655db64eca78a6fcc4fb654fc1f8d57 - sha256: a58add0b4477c59aee324b508d834267360b659f9c543f551ca4442196e656fe + md5: eda05ab0db8f8490945fd99244183e3a + sha256: 903c5786e0379da751e297dbe603be19b030994bac3caa74b3a596c1858c0296 manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_3.conda version: 12.3.0 - category: main dependencies: @@ -1098,56 +1098,56 @@ package: version: 0.2.5 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: cdbd44927a53a313d69f3c206a418dd2 - sha256: 2dcb57436fe20a03373ede39c0cbb046c44b181392eb2e68963ac4ffcace0da4 + md5: ab28ae62aa4738f7ca0622554aadc31b + sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd manager: conda name: aws-c-cal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.7-h6e18cf3_0.conda - version: 0.6.7 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda + version: 0.6.9 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: 72cb3661f349a95ea48b0ddcdc4c0f18 - sha256: 71a740e9c092d4119aad6ba3ee3fcbfd33faf078ffd7b80802efe218829bd931 + md5: aee687dcfcc2a75d77b6e6024273978a + sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76 manager: conda name: aws-c-compression optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h037bafe_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda version: 0.2.17 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: 6c2ea725535e0f2a18f645a0bf03a8f6 - sha256: 249727a6ebffe314759bf367209fea9c23f96ac3b8f0a7fd7f61bad2712ec545 + md5: af2bccdb4cf6e9254969426fd53c7c65 + sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h037bafe_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda version: 0.1.12 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' hash: - md5: ac1b0e60de127cc46a04e76a907434a1 - sha256: 1a65c1bb49c1345f824db0129895f45434751cedd3e55a89d0300dd1b68794ed + md5: 92077b8c5f72e9b81f069b1eb492ab80 + sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282 manager: conda name: aws-checksums optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h037bafe_3.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda version: 0.1.17 - category: main dependencies: @@ -1233,20 +1233,20 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_2 + libgcc-devel_linux-64: 12.3.0 h8bca6fd_103 libgcc-ng: '>=12.3.0' libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_2 + libsanitizer: 12.3.0 h0f45ef3_3 libstdcxx-ng: '>=12.3.0' sysroot_linux-64: '' hash: - md5: 2f4d8677dc7dd87f93e9abfb2ce86808 - sha256: 62a897343229e6dc4a3ace4f419a30e60a0a22ce7d0eac0b9bfb8f0308cf3de5 + md5: 71c68ea75afe6ac7a9c62c08f5d67a5a + sha256: ab2ea2890f43d45dc49ff59a3c35348e675ba728e088957209fa8f0e40a498e5 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_3.conda version: 12.3.0 - category: main dependencies: @@ -1302,15 +1302,15 @@ package: version: 3.1.20191231 - category: main dependencies: - libgfortran5: 13.2.0 ha4646dd_2 + libgfortran5: 13.2.0 ha4646dd_3 hash: - md5: e75a75a6eaf6f318dae2631158c46575 - sha256: 767d71999e5386210fe2acaf1b67073e7943c2af538efa85c101e3401e94ff62 + md5: 73031c79546ad06f1fe62e57fdd021bc + sha256: 5b918950b84605b6865de438757f507b1eff73c96fd562f7022c80028b088c14 manager: conda name: libgfortran-ng optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_3.conda version: 13.2.0 - category: main dependencies: @@ -1341,21 +1341,21 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.20.1,<2.0a0' + c-ares: '>=1.21.0,<2.0a0' libev: '>=4.33,<4.34.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' openssl: '>=3.1.4,<4.0a0' hash: - md5: a802251d1eaeeae041c867faf0f94fa8 - sha256: 5e60b852dbde156ef1fa939af2491fe0e9eb3000de146786dede7cda8991ae4c + md5: 9b13d5ee90fc9f09d54fd403247342b4 + sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.55.1-h47da74e_0.conda - version: 1.55.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + version: 1.58.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1538,16 +1538,16 @@ package: - category: main dependencies: libgcc-ng: '>=12' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.1.4,<4.0a0' hash: - md5: 8cdfb7d58bdfd543717eeacc0801f3c0 - sha256: d9b8c7f6dcab6c34c9eec7dae8aa05ec0ad79365ff5512456f19fa35c5084ecf + md5: 04b4845b9e9b5a0ee6eba013ecdbbddb + sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29 manager: conda name: s2n optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.55-h06160fa_0.conda - version: 1.3.55 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda + version: 1.3.56 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1579,13 +1579,13 @@ package: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 513336054f884f95d9fd925748f41ef3 - sha256: 679e944eb93fde45d0963a22598fafacbb429bb9e7ee26009ba81c4e0c435055 + md5: d453b98d9c83e71da0741bb0ff4d76bc + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e manager: conda name: tk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-h2797004_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda version: 8.6.13 - category: main dependencies: @@ -1657,18 +1657,18 @@ package: version: '2.71' - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' libgcc-ng: '>=12' - s2n: '>=1.3.55,<1.3.56.0a0' + s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: a0728c6591063bee78f037741d1da83b - sha256: 74843ac64d018e27460d2b45d5fafc613e45073da64bb346c6d8d059a39d22d5 + md5: 4cabe68190c1ff4c72154c0a7d2e980c + sha256: 89103265c27cb5ad67a0f6b67149532e7addae4b6ddfb704e77f0369f5520591 manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hd1885a1_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc23c90e_8.conda version: 0.13.35 - category: main dependencies: @@ -1715,13 +1715,13 @@ package: dependencies: gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' hash: - md5: 3d38e0cc20ff49d767408f2bf69117a8 - sha256: 87e2b89a542cf19c1876ca872841293104214d73e30898ce6542d1751948231d + md5: 93700ef8b49aebbfb0bf40e0b1448834 + sha256: f361a244a51874065b4d9a2d27089647e7966050abb8a76cad57471776b8ba19 manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_3.conda version: 12.3.0 - category: main dependencies: @@ -1795,17 +1795,17 @@ package: version: 3.7.8 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_2 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_2 + gcc_impl_linux-64: 12.3.0 he2b93b0_3 + libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_103 sysroot_linux-64: '' hash: - md5: f89b9916afc36fc5562fbfc11330a8a2 - sha256: 1ca91c1a3892b61da7efe150f9a1830e18aac82f563b27bf707520cb3297cc7a + md5: b6ce9868fc6c65a18c22fd983e2d7e6f + sha256: 63e75858b60fe6d7227cd6026ed7ad0a8df4c5592454f752ff7ffc1e283e66a7 manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_3.conda version: 12.3.0 - category: main dependencies: @@ -1853,14 +1853,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: e618003da3547216310088478e475945 - sha256: 96ec4dc5e38f434aa5862cb46d74923cce1445de3cd0b9d61e3e63102b163af6 + md5: ddd09e8904fde46b85f41896621803e6 + sha256: 44c5f58593b074886436db7d13fdfcba2fe3731867ea52237f049b8400341a2b manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.0-hebfc3b9_0.conda - version: 2.78.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda + version: 2.78.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2063,26 +2063,26 @@ package: dependencies: python: '>=3.6' hash: - md5: aae3d4ea593ef245ea19d192623f0593 - sha256: af1dc5bee3b83aa167ad5991e7a98a3bd058b15847fef37424b8ea668a7c7ce6 + md5: 0dc2fce00a160271714647c019e3a8a8 + sha256: e030c0993ef56def50fb3b0262a98ba17295c83b6c696748add22aee406b7bd9 manager: conda name: archspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.1-pyhd8ed1ab_1.conda - version: 0.2.1 + url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.2-pyhd8ed1ab_0.conda + version: 0.2.2 - category: main dependencies: python: '>=3.8' hash: - md5: 1be9feadb435ef26456efaf70852ce93 - sha256: e0abc3e71e9f0af65afb9dc3f3d4991c117508023ebcef223b2394a43313ccc9 + md5: c629a13439d80b37c6a946b098c4ac2b + sha256: 62c3486961e43fb9b495b7854f48fea9b486b2176a9629c6faf80c445543b1aa manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.4-pyhd8ed1ab_0.conda - version: 3.1.4 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.6-pyhd8ed1ab_0.conda + version: 3.1.6 - category: main dependencies: libgcc-ng: '>=12' @@ -2111,36 +2111,36 @@ package: version: 23.1.0 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: 38da036c9d74d4d44f35e05474135f77 - sha256: 465ea78fe57381c86e35c81b7bbdbbcfdb88ea1181e7d211b714ad892fb39e22 + md5: b4e69f0e7f832dc901bd585f353487f0 + sha256: b7b00593f4cd835780d3a4f61f6f77181b33b8e85cc0f78d9cb48dc1d84e8443 manager: conda name: aws-c-event-stream optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-he4fbe49_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hae413d4_6.conda version: 0.3.2 - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-compression: '>=0.2.17,<0.2.18.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' libgcc-ng: '>=12' hash: - md5: 2c4c47d83a0e111799dda4059c88621d - sha256: c537317a4490f085a3a58679fa05d4132a2d2b8f5480ffa51175135987faddb6 + md5: e1b49ef8ddc4faca06a63a7e25da644f + sha256: dc4cda9ffef3b5859c5943f010e947e082315e7d84eb1f5e0b3cd58565eaf405 manager: conda name: aws-c-http optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.13-hbbfb9a7_7.conda - version: 0.7.13 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-h162056d_1.conda + version: 0.7.14 - category: main dependencies: python: '>=2.7' @@ -2181,7 +2181,7 @@ package: version: 1.7.0 - category: main dependencies: - python: ==2.7.*|>=3.7 + python: 2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2373,14 +2373,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 6405f87c427cdbc25b6b6a21bd6bfc2a - sha256: 2071bf7c56305d234161bef00c0c2ba7ae345484105d2ccc448c7c734634f346 + md5: 21b8fa2179290505e607f5ccd65b01b0 + sha256: f3a564449daedafe5931ab4efe7bc4f240182f2b760e7877f15b2898b7f1c988 manager: conda name: docutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py310hff52083_1.tar.bz2 - version: 0.18.1 + url: https://conda.anaconda.org/conda-forge/linux-64/docutils-0.19-py310hff52083_1.tar.bz2 + version: '0.19' - category: main dependencies: python: '>=3.7' @@ -3022,7 +3022,7 @@ package: version: 0.6.6 - category: main dependencies: - python: ==2.7.*|>=3.4 + python: 2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3184,14 +3184,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 43c12d8f7891a87378eb5339c49ef051 - sha256: a23d2f15c48cc689d26dc3f50ee91be9ed2925c5fbae7bc5d93e49db7517b847 + md5: 559e61c9a0a1b0a905965a60e5243cee + sha256: 7364e531276bdcad8e805685684a542f046b5693cf9cd20fa6804b01bda09200 manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.10.6-py310hcb5633a_0.conda - version: 0.10.6 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.12.0-py310hcb5633a_0.conda + version: 0.12.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3463,14 +3463,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 43e5d746d736ae6c71060ed923179d6d - sha256: a48a93a409bed1fbdb2598acebce08343e7f6006110adf8e0335829df3cee41a + md5: d9dc9c45bdc2b38403e6b388581e92f0 + sha256: 2adc15cd1e66845c1ab498735e2f828003e2d5fe20eed1febddb712f58793c31 manager: conda name: wrapt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.15.0-py310h2372a71_1.conda - version: 1.15.0 + url: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.16.0-py310h2372a71_0.conda + version: 1.16.0 - category: main dependencies: python: '>=3.6' @@ -3569,36 +3569,36 @@ package: version: 1.3.1 - category: main dependencies: - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' libgcc-ng: '>=12' hash: - md5: 02305820d0dbfe542c6e4d67ddb0f13b - sha256: 45d41ef052d0e362d0c031af7392bd1d755b29b1e6af9e3796abdd7b8b712611 + md5: 31836ccf72bc70ce2ec38a2ec2c8b504 + sha256: 6f44ef79e2ab5005961847cdefd2a71aa3a33c741adc77e774ac9dbedd9a2f81 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.5-h1a24852_0.conda - version: 0.7.5 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.6-h37ad1db_0.conda + version: 0.7.6 - category: main dependencies: - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' libgcc-ng: '>=12' hash: - md5: cf4834799534b9fcb7bca1c136bcd7a9 - sha256: 0ec0363fa5c78f0daa50bb1313abd02d3c59d57af380fae7b9d39e0a702562f3 + md5: d03181571be036cfbe7accf52256efe7 + sha256: 1df6ad0f5db319090718f5d4575b8829ff5aa5b663c8580e191fa9005e71072d manager: conda name: aws-c-mqtt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.8-h31a96f8_0.conda - version: 0.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.9-h1387108_0.conda + version: 0.9.9 - category: main dependencies: python: '>=3.7' @@ -3864,14 +3864,14 @@ package: python: '>=3.8' zipp: '>=3.1.0' hash: - md5: 48b0d98e0c0ec810d3ccc2a0926c8c0e - sha256: adab6da633ec3b642f036ab5c1196c3e2db0e8db57fb0c7fc9a8e06e29fa9bdc + md5: 3d5fa25cf42f3f32a12b2d874ace8574 + sha256: e584f9ae08fb2d242af0ce7e19e3cd2f85f362d8523119e08f99edb962db99ed manager: conda name: importlib_resources optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.0-pyhd8ed1ab_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.1.1-pyhd8ed1ab_0.conda + version: 6.1.1 - category: main dependencies: more-itertools: '' @@ -3997,14 +3997,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: 5b55a903c463183b6a7e1be0785c57eb - sha256: 1d1a86da2e680f707a9289497e3c5c745d73733a3b8e923a0ed56176c9519928 + md5: ae6a9aaa6528278cf589741c67fb88ed + sha256: 9414d8d19ac5b51c16f96284cb6a33d9e3b74368099eada8497f975f8f552549 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.6.1-py310h2372a71_0.conda - version: 1.6.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.0-py310h2372a71_0.conda + version: 1.7.0 - category: main dependencies: python: 2.7|>=3.7 @@ -4321,23 +4321,23 @@ package: version: 4.0.3 - category: main dependencies: - aws-c-auth: '>=0.7.5,<0.7.6.0a0' - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' openssl: '>=3.1.4,<4.0a0' hash: - md5: e7b72928833ea245d8bfb89a35ae7d5e - sha256: 6831f6c6af9cfc346e4d6ff63e8a46b9949cdd4e3454bcde98a6cad4f26208e9 + md5: 76eebe9871477c883d04042758493b98 + sha256: a145f456f0a47f8f7482ce6c23f4bfc3b71cb013598d4e1294930dcc8db56c65 manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.20-he249171_1.conda - version: 0.3.20 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.23-h7630044_1.conda + version: 0.3.23 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -4345,14 +4345,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 4b1ebbd11ffe33a61602a0a78d319ffc - sha256: 4575ab6abd1bea6c29c6fced00283012815874cba55e19524c094ab279b238f8 + md5: e6d5b6f6e9920c48eddcc8228d7cfacc + sha256: 74a6d6051bea01f4b68d5bb7397d8805432dbb4e74fa1bc889d05e34e3b9e367 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.78-pyhd8ed1ab_0.conda - version: 1.31.78 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.84-pyhd8ed1ab_0.conda + version: 1.31.84 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4531,14 +4531,14 @@ package: pip: '' python: '>=3.6' hash: - md5: 5bde4ebca51438054099b9527c904ecb - sha256: bb6b283c27a8293cfd6d439959da45e848e401130fe3b44e31cde8243fdebdee + md5: 8dbab5ba746ed14aa32cb232dc437f8f + sha256: 4c83853fc6349de163c2871613e064e5fdab91723db9b50bcda681adc05e4b87 manager: conda name: pbr optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pbr-5.11.1-pyhd8ed1ab_0.conda - version: 5.11.1 + url: https://conda.anaconda.org/conda-forge/noarch/pbr-6.0.0-pyhd8ed1ab_0.conda + version: 6.0.0 - category: main dependencies: python: '>=3.7' @@ -4631,14 +4631,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: ed7e8910d14780ff0c8bf85cc0c62384 - sha256: 476acb62cafa9091e5dacb5fc82afcdb90be828cea54abef371b93e2a1f7748e + md5: aca8818a70e54b3763d8eb13ea4cfca0 + sha256: b2ebcf97c7db95fd5ca8b1cf6766d4e467fd4c07de0039c134e14f8e4179df91 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.8-pyhd8ed1ab_0.conda - version: 0.19.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.10-pyhd8ed1ab_0.conda + version: 0.19.10 - category: main dependencies: cffi: '' @@ -4738,28 +4738,28 @@ package: version: 2.12.1 - category: main dependencies: - aws-c-auth: '>=0.7.5,<0.7.6.0a0' - aws-c-cal: '>=0.6.7,<0.6.8.0a0' - aws-c-common: '>=0.9.4,<0.9.5.0a0' + aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-cal: '>=0.6.9,<0.6.10.0a0' + aws-c-common: '>=0.9.8,<0.9.9.0a0' aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' - aws-c-http: '>=0.7.13,<0.7.14.0a0' + aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.35,<0.13.36.0a0' - aws-c-mqtt: '>=0.9.8,<0.9.9.0a0' - aws-c-s3: '>=0.3.20,<0.3.21.0a0' + aws-c-mqtt: '>=0.9.9,<0.9.10.0a0' + aws-c-s3: '>=0.3.23,<0.3.24.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - s2n: '>=1.3.55,<1.3.56.0a0' + s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: 6a4cf9185328e2a31c229b5f5496cda3 - sha256: 6562d91b390c5355884ecfe32feccd535ae1d3730ee539b65797a369c0b245f6 + md5: a0440a8f71220fdcef4105199b3e6660 + sha256: c46284b44e1119aa58be99e4d9c37409d79fd29aac2b00d8b4d8f0873e12d418 manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.6-py310hf79136a_2.conda - version: 0.19.6 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.10-py310h63da47a_2.conda + version: 0.19.10 - category: main dependencies: python: '>=3.6' @@ -4781,14 +4781,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: d89fbc67fee8b775ecd0cd6ae52a6ca0 - sha256: 08b6fe79cf30a5efc3f3b6da14ba6c9fcd8ad7f297f885d7b4846b1aeeccd8f2 + md5: 362237c4d50dc1e4465e749d002bec95 + sha256: bb613a1ad8a5722504b7240bba4e8bf4773b07f3acfb9a6235c6120aea19c430 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.77-pyhd8ed1ab_0.conda - version: 1.31.77 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.84-pyhd8ed1ab_0.conda + version: 1.31.84 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4960,14 +4960,14 @@ package: python: '>=3.6' requests: <3,>=2.0.0 hash: - md5: d113dcd5f7307ac7d4acc3fc71b6cac9 - sha256: f23aacce006804deed2176a317ed8584b511a2307f3926789089a507c26e1ffb + md5: 4b2d7e21aa309356a9396d54800cd271 + sha256: 8a37a7c3efae510b90669cbae7b4f736477361406028953cd804d09a2d24c53a manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.24.1-pyhd8ed1ab_0.conda - version: 1.24.1 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.25.0-pyhd8ed1ab_0.conda + version: 1.25.0 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -5009,14 +5009,14 @@ package: python_abi: 3.10.* *_cp310 pytz: '>=2020.1' hash: - md5: 775a7709c5b7554340876a6c4a0f6b61 - sha256: 657ce7a2c716298483137c54ef40a5afe016af6c4e3164bf313171f26b260f16 + md5: 30a39c1064e5efc578d83c2a5f7cd749 + sha256: bb2b3e4a3f3d40b87ac214b88393a7f1ee5b2cac41d249c580d184f7edb30653 manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.2-py310hcc13569_0.conda - version: 2.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py310hcc13569_0.conda + version: 2.1.3 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5200,19 +5200,19 @@ package: version: 20.24.6 - category: main dependencies: - botocore: '>=1.31.78,<1.32.0' + botocore: '>=1.31.84,<1.32.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.7.0,<0.8.0' hash: - md5: 533f30aebff7a261fc8706fbfbff3cac - sha256: 99cc42c0ec102fa316f9b5baf96887be976c0c09143ff745f7da5d6e4cac08bd + md5: a9bfc60aeab9081481db109399739a0e + sha256: 22a8b32548ea3bff700a5dc2c5d52ea59b3ed2776c557c47ee929c10acf50f5b manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.78-pyhd8ed1ab_0.conda - version: 1.28.78 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5443,7 +5443,7 @@ package: version: 1.79.0 - category: main dependencies: - awscrt: '>=0.16.4,<=0.19.6' + awscrt: '>=0.16.4,<=0.19.10' colorama: '>=0.2.5,<0.4.7' cryptography: '>=3.3.2,<=40.0.2' distro: '>=1.5.0,<1.9.0' @@ -5458,14 +5458,14 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: de603cf1b46103c94b8c3d9b88f77169 - sha256: 242dbeb4e7b8df6fc35918c53a3a79aee57b3b3c37879a659674cb9d3b1605f5 + md5: 84165c3fdcbb81cfac32d8e31f9bb212 + sha256: d05fcb2547625bb3262eeb91d8686eb728b179f54020f17dcea0c683161e98ef manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.32-py310hff52083_0.conda - version: 2.13.32 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.34-py310hff52083_0.conda + version: 2.13.34 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5488,14 +5488,14 @@ package: python: '' typing_extensions: '' hash: - md5: 7dbbfc76325bbc7fa7d72b879e5b3712 - sha256: 99743530b8bda235c60678276723bdd2499c65f58422613a8b9facf15e50a8ec + md5: ed34395e930881e637ff3972b14a8cb8 + sha256: e03ff2ce7a063f7511bf1f69f23c3f85e692cd0c154929136e44403da69fd758 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.77-pyhd8ed1ab_0.conda - version: 1.28.77 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: archspec: '' @@ -5606,14 +5606,14 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: f64cd26ce98b92dabe21ad9c5ba9ce60 - sha256: f660b474d2e796bb761d2fcf3fb1fe71b9293216c6c73b776d45ab523c454b12 + md5: 058b95d63b780eaaf07ec142f409f42e + sha256: c744e0354b04aedd724d3046ba34cc931d20e6817c86f5d77e20359d48a5ca44 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.75-pyhd8ed1ab_0.conda - version: 1.28.75 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.84-pyhd8ed1ab_0.conda + version: 1.28.84 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5742,14 +5742,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 7bce233565ad81fe3117ef952116bcf0 - sha256: 90a3055b864cb711747211085b9ddd891a9477d648e666b8821347156af12f34 + md5: 5c83e6282026138d61086e1f6a689349 + sha256: cd1c6f4386002a7bb4a3debdb331c5a8eeaed7d237b806b3ff481a57f3a3726e manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.7-pyhd8ed1ab_0.conda - version: 4.2.7 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.8-pyhd8ed1ab_0.conda + version: 4.2.8 - category: main dependencies: livereload: '>=2.3.0' @@ -5764,6 +5764,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 version: 2021.3.14 +- category: main + dependencies: + python: '>=2.7' + sphinx: <6 + hash: + md5: 231a6798e540439299666e2eae31751e + sha256: 3b80b31fe1298c04c28285e3c2b1acb019be726acdc76fcd24d0123dc97bee6d + manager: conda + name: sphinx_rtd_theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_0.tar.bz2 + version: 0.5.2 - category: main dependencies: python: '>=3.9' @@ -5803,34 +5816,6 @@ package: 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' @@ -5849,30 +5834,30 @@ package: alabaster: '>=0.7,<0.8' babel: '>=2.9' colorama: '>=0.4.5' - docutils: '>=0.18.1,<0.21' + docutils: '>=0.14,<0.20' imagesize: '>=1.3' importlib-metadata: '>=4.8' jinja2: '>=3.0' packaging: '>=21.0' - pygments: '>=2.14' - python: '>=3.9' - requests: '>=2.25.0' + pygments: '>=2.12' + python: '>=3.7' + requests: '>=2.5.0' snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.9' + sphinxcontrib-serializinghtml: '>=1.1.5' hash: - md5: bbfd1120d1824d2d073bc65935f0e4c0 - sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 + md5: f9e1fcfe235d655900bfeb6aee426472 + sha256: f11fd5fb4ae2c65f41ae86e7408e3ab44844898d928264aa9e89929fffc685c8 manager: conda name: sphinx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda - version: 7.2.6 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.3.0-pyhd8ed1ab_0.tar.bz2 + version: 5.3.0 - category: main dependencies: python: '>=3.9' @@ -5982,25 +5967,25 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: 47f1fc5904756b01d46a8d23a4f3950382086b716138e21a027cd44dc5101f27 + sha256: 7c237557d2a7c5f403474e54f9e5498758c71c24844e524a02656ac16369196d manager: pip name: hammer-vlsi optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/30/e4/37b77c7921b80d58d8b2a325c031e75d656319b676e7fd4555e02b651a9d/hammer_vlsi-1.1.2-py3-none-any.whl - version: 1.1.2 + url: https://files.pythonhosted.org/packages/dd/85/8a7ffd385db1dc84295ef3101559fe7ae0f8fa39942253ca270728642dc5/hammer_vlsi-1.2.0-py3-none-any.whl + version: 1.2.0 - category: main dependencies: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: 17cafeddda48637677e854aae51f29177b916c9c4cb94d66d73fc1f8541a8fc0 + sha256: f1479ed931cf17f6e27aa36c548e16ecea832919890c4240e76b0c1ff14b664e manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/ab/11/f55bf95fa952c492b5cac0e3c47a542e2b4b91791b0f1d64807e1018078c/icontract-2.6.4-py3-none-any.whl - version: 2.6.4 + url: https://files.pythonhosted.org/packages/1f/a6/aed79965cd83f1ec358b2d37d5e5456e0f03ae5b19ebbed76708e976939f/icontract-2.6.5-py3-none-any.whl + version: 2.6.5 - category: main dependencies: icontract: '>=2.0.1,<3' From 842c9f01a7355aba0fb93b1d7f026859056ed0d5 Mon Sep 17 00:00:00 2001 From: Nayiri Date: Tue, 14 Nov 2023 09:56:24 -0800 Subject: [PATCH 085/184] bumping sky130 pdk to fix VLSI tutorial --- .github/workflows/chipyard-full-flow.yml | 2 +- docs/VLSI/Sky130-Commercial-Tutorial.rst | 2 +- docs/VLSI/Sky130-OpenROAD-Tutorial.rst | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/chipyard-full-flow.yml b/.github/workflows/chipyard-full-flow.yml index 338d41bb..3d4a9866 100644 --- a/.github/workflows/chipyard-full-flow.yml +++ b/.github/workflows/chipyard-full-flow.yml @@ -124,7 +124,7 @@ jobs: conda config --add channels litex-hub # installs for example-sky130.yml - conda create -y --prefix ./.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9 + conda create -y --prefix ./.conda-sky130 open_pdks.sky130a=1.0.457_0_g32e8f23 git clone https://github.com/rahulk29/sram22_sky130_macros.git # installs for example-openroad.yml diff --git a/docs/VLSI/Sky130-Commercial-Tutorial.rst b/docs/VLSI/Sky130-Commercial-Tutorial.rst index 9ca81583..70be799e 100644 --- a/docs/VLSI/Sky130-Commercial-Tutorial.rst +++ b/docs/VLSI/Sky130-Commercial-Tutorial.rst @@ -60,7 +60,7 @@ The prerequisite setup for this tutorial may eventually be scripted, but for now .. code-block:: shell # download all files for Sky130A PDK - conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9 + conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.457_0_g32e8f23 # clone the SRAM22 Sky130 SRAM macros git clone https://github.com/rahulk29/sram22_sky130_macros ~/sram22_sky130_macros diff --git a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst index a9cfa7b1..f9bbbffb 100644 --- a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst +++ b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst @@ -73,7 +73,7 @@ Note that we create a new conda environment for each tool because some of them h conda config --add channels defaults # download all files for Sky130A PDK - conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.399_0_g63dbde9 + conda create -c litex-hub --prefix ~/.conda-sky130 open_pdks.sky130a=1.0.457_0_g32e8f23 # clone the SRAM22 Sky130 SRAM macros git clone https://github.com/rahulk29/sram22_sky130_macros ~/sram22_sky130_macros From b50d10418c95720827c2c57dfaffd1144665a23d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 14 Nov 2023 23:38:29 -0800 Subject: [PATCH 086/184] Add RocketBoundaryBuffers fragment --- .../main/scala/config/fragments/TileFragments.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index abd26769..6262fbcd 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -105,3 +105,13 @@ class WithTilePrefetchers extends Config((site, here, up) => { master = TilePrefetchingMasterPortParams(tp.tileParams.hartId, tp.crossingParams.master))) } }) + +// Adds boundary buffers to RocketTiles, which places buffers between the caches and the TileLink interface +// This typically makes it easier to close timing +class WithRocketBoundaryBuffers(buffers: Option[RocketTileBoundaryBufferParams] = Some(RocketTileBoundaryBufferParams(true))) extends Config((site, here, up) => { + case TilesLocated(InSubsystem) => up(TilesLocated(InSubsystem)) map { + case tp: RocketTileAttachParams => tp.copy(tileParams=tp.tileParams.copy( + boundaryBuffers=buffers + )) + } +}) From 41322968317b389578a24604dc5010b7f8f5761f Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Wed, 15 Nov 2023 16:49:19 -0800 Subject: [PATCH 087/184] Update TargetConfigs.scala --- generators/firechip/src/main/scala/TargetConfigs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 6f2a0291..16d5281b 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -106,7 +106,7 @@ class WithFireSimDesignTweaks extends Config( new chipyard.config.WithUARTInitBaudRate(BigInt(3686400L)) ++ // Optional: Adds IO to attach tracerV bridges new chipyard.config.WithTraceIO ++ - // Optional: Request 16 GiB of target-DRAM by default (can safely request up to 32 GiB on F1) + // Optional: Request 16 GiB of target-DRAM by default (can safely request up to 64 GiB on F1) new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 16L) ++ // Optional: Removing this will require using an initramfs under linux new testchipip.WithBlockDevice From 7c832415a8a80821696fd360f9759fde9939a71d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 16 Nov 2023 02:59:26 -0800 Subject: [PATCH 088/184] Add cfg fragment to insert LLC interior buffers --- .../main/scala/config/fragments/SubsystemFragments.scala | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index 40f18d5d..021bd7ab 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -1,8 +1,9 @@ package chipyard.config import org.chipsalliance.cde.config.{Config} -import freechips.rocketchip.subsystem.{SystemBusKey, BankedL2Key, CoherenceManagerWrapper} +import freechips.rocketchip.subsystem.{SystemBusKey, BankedL2Key, CoherenceManagerWrapper, InclusiveCacheKey} import freechips.rocketchip.diplomacy.{DTSTimebase} +import sifive.blocks.inclusivecache.{InclusiveCachePortParameters} // Replaces the L2 with a broadcast manager for maintaining coherence class WithBroadcastManager extends Config((site, here, up) => { @@ -16,3 +17,9 @@ class WithSystemBusWidth(bitWidth: Int) extends Config((site, here, up) => { class WithDTSTimebase(freqMHz: BigInt) extends Config((site, here, up) => { case DTSTimebase => freqMHz }) + +// Adds buffers on the interior of the inclusive L2, to improve PD +class WithInclusiveCacheInteriorBuffer(buffer: InclusiveCachePortParameters = InclusiveCachePortParameters.full) extends Config((site, here, up) => { + case InclusiveCacheKey => up(InclusiveCacheKey).copy(bufInnerInterior=buffer, bufOuterInterior=buffer) +}) + From ab4c4d809cf8c4a77d366465c92271ff694eabfe Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 16 Nov 2023 22:05:38 -0800 Subject: [PATCH 089/184] Add LLC exterior buffer cfg fragment --- .../src/main/scala/config/fragments/SubsystemFragments.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index 021bd7ab..f8119600 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -23,3 +23,6 @@ class WithInclusiveCacheInteriorBuffer(buffer: InclusiveCachePortParameters = In case InclusiveCacheKey => up(InclusiveCacheKey).copy(bufInnerInterior=buffer, bufOuterInterior=buffer) }) +class WithInclusiveCacheExteriorBuffer(buffer: InclusiveCachePortParameters = InclusiveCachePortParameters.full) extends Config((site, here, up) => { + case InclusiveCacheKey => up(InclusiveCacheKey).copy(bufInnerExterior=buffer, bufOuterExterior=buffer) +}) From 1e2667e0bce2ddd0f1e2faa63a085178f22aef52 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 16 Nov 2023 22:06:34 -0800 Subject: [PATCH 090/184] Add LLC bufExterior comment --- .../src/main/scala/config/fragments/SubsystemFragments.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index f8119600..b57ea4cb 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -18,11 +18,12 @@ class WithDTSTimebase(freqMHz: BigInt) extends Config((site, here, up) => { case DTSTimebase => freqMHz }) -// Adds buffers on the interior of the inclusive L2, to improve PD +// Adds buffers on the interior of the inclusive LLC, to improve PD class WithInclusiveCacheInteriorBuffer(buffer: InclusiveCachePortParameters = InclusiveCachePortParameters.full) extends Config((site, here, up) => { case InclusiveCacheKey => up(InclusiveCacheKey).copy(bufInnerInterior=buffer, bufOuterInterior=buffer) }) +// Adds buffers on the exterior of the inclusive LLC, to improve PD class WithInclusiveCacheExteriorBuffer(buffer: InclusiveCachePortParameters = InclusiveCachePortParameters.full) extends Config((site, here, up) => { case InclusiveCacheKey => up(InclusiveCacheKey).copy(bufInnerExterior=buffer, bufOuterExterior=buffer) }) From ff668a98ac9b452e5fc018d213d4414843cbf5b5 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 17 Nov 2023 14:37:07 -0800 Subject: [PATCH 091/184] Fix cloneType not inferring direction for arty100t uart-tsi --- fpga/src/main/scala/arty100t/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 1b1a95d5..4c821970 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -48,7 +48,7 @@ class WithArty100TDDRTL extends HarnessBinder({ class WithArty100TSerialTLToGPIO extends HarnessBinder({ case (th: HasHarnessInstantiators, port: SerialTLPort) => { val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] - val harnessIO = IO(port.io.cloneType).suggestName("serial_tl") + val harnessIO = IO(chiselTypeOf(port.io)).suggestName("serial_tl") harnessIO <> port.io val clkIO = IOPin(harnessIO.clock) val packagePinsWithPackageIOs = Seq( From 9dc0c8fe75ca9bafdc09ff855d432be9258980cf Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 17 Nov 2023 14:42:26 -0800 Subject: [PATCH 092/184] Fix bringup config timing --- fpga/src/main/scala/arty100t/Configs.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 21d4d8bc..213425f5 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -52,7 +52,9 @@ class NoCoresArty100TConfig extends Config( new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.NoCoresConfig) +// This will fail to close timing above 50 MHz class BringupArty100TConfig extends Config( new WithArty100TSerialTLToGPIO ++ - new WithArty100TTweaks(freqMHz = 75) ++ + new WithArty100TTweaks(freqMHz = 50) ++ + new testchipip.WithSerialTLClockDirection(provideClockFreqMHz = Some(50)) ++ new chipyard.ChipBringupHostConfig) From 709d4a21b5e19623d9c64f1e40fb96bf8d456a95 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Tue, 21 Nov 2023 14:29:12 -0700 Subject: [PATCH 093/184] Update common.mk --- common.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/common.mk b/common.mk index f6bc19c1..5e0e2fcd 100644 --- a/common.mk +++ b/common.mk @@ -261,6 +261,7 @@ $(SFC_MFC_TARGETS) &: $(TAPEOUT_CLASSPATH_TARGETS) $(FIRRTL_FILE) $(FINAL_ANNO_F $(SFC_FIRRTL_FILE) -mv $(SFC_SMEMS_CONF) $(MFC_SMEMS_CONF) 2> /dev/null $(SED) -i 's/.*/& /' $(MFC_SMEMS_CONF) # need trailing space for SFC macrocompiler + touch $(MFC_BB_MODS_FILELIST) # if there are no BB's then the file might not be generated, instead always generate it # DOC include end: FirrtlCompiler $(TOP_MODS_FILELIST) $(MODEL_MODS_FILELIST) $(ALL_MODS_FILELIST) $(BB_MODS_FILELIST) $(MFC_MODEL_HRCHY_JSON_UNIQUIFIED) &: $(MFC_MODEL_HRCHY_JSON) $(MFC_TOP_HRCHY_JSON) $(MFC_FILELIST) $(MFC_BB_MODS_FILELIST) From 8aef234f3b764432db1a325a17f96f901944e54d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 24 Nov 2023 16:01:31 -0800 Subject: [PATCH 094/184] Install uart_tsi utility as part of build-toolchain-extra --- scripts/build-toolchain-extra.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scripts/build-toolchain-extra.sh b/scripts/build-toolchain-extra.sh index 049e3424..cc69ae1d 100755 --- a/scripts/build-toolchain-extra.sh +++ b/scripts/build-toolchain-extra.sh @@ -118,4 +118,11 @@ cd tools/DRAMSim2 make libdramsim.so cp libdramsim.so $RISCV/lib/ +echo '==> Installing uart_tsi bringup utility' +cd $RDIR +git submodule update --init generators/testchipip +cd generators/testchipip/uart_tsi +make +cp uart_tsi $RISCV/bin + echo "Extra Toolchain Utilities/Tests Build Complete!" From b20f96a055f109e4256be35b74490e1ab8cf30fe Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 28 Nov 2023 10:29:49 -0800 Subject: [PATCH 095/184] Allow overriding generated-src dir name --- variables.mk | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/variables.mk b/variables.mk index 62f8cf19..5abcba12 100644 --- a/variables.mk +++ b/variables.mk @@ -293,9 +293,10 @@ endif # build output directory for compilation ######################################################################################### # output for all project builds -gen_dir=$(sim_dir)/generated-src +generated_src_name ?= generated-src +gen_dir = $(sim_dir)/$(generated_src_dir_name) # per-project output directory -build_dir=$(gen_dir)/$(long_name) +build_dir = $(gen_dir)/$(long_name) # final generated collateral per-project GEN_COLLATERAL_DIR ?= $(build_dir)/gen-collateral From bd3a456f9277459e83382b7d45bf9da651bfacde Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 28 Nov 2023 10:38:55 -0800 Subject: [PATCH 096/184] Fix generated_src_name make variable --- variables.mk | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/variables.mk b/variables.mk index 5abcba12..fcda57ef 100644 --- a/variables.mk +++ b/variables.mk @@ -293,12 +293,12 @@ endif # build output directory for compilation ######################################################################################### # output for all project builds -generated_src_name ?= generated-src -gen_dir = $(sim_dir)/$(generated_src_dir_name) +generated_src_name ?=generated-src +gen_dir =$(sim_dir)/$(generated_src_name) # per-project output directory -build_dir = $(gen_dir)/$(long_name) +build_dir =$(gen_dir)/$(long_name) # final generated collateral per-project -GEN_COLLATERAL_DIR ?= $(build_dir)/gen-collateral +GEN_COLLATERAL_DIR ?=$(build_dir)/gen-collateral ######################################################################################### # assembly/benchmark variables From 9e7fcc0f4e36fa64cfad35fa6c4b81466b6bc0dd Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 10:12:52 -0800 Subject: [PATCH 097/184] Add HasHarnessInstantiators into MultiHarnessBinder --- .../main/scala/harness/MultiHarnessBinders.scala | 16 ++++++++-------- .../src/main/scala/harness/package.scala | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index 1200208c..c4e96a3e 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -24,18 +24,18 @@ object ApplyMultiHarnessBinders { Seq.tabulate(chips.size, chips.size) { case (i, j) => if (i != j) { (chips(i), chips(j)) match { case (l0: HasChipyardPorts, l1: HasChipyardPorts) => p(MultiHarnessBinders(i, j)).foreach { f => - f(l0.ports, l1.ports) + f(th, l0.ports, l1.ports) } } }} } } -class MultiHarnessBinder[T <: Port[_]]( +class MultiHarnessBinder[T <: Port[_], S <: HasHarnessInstantiators]( chip0: Int, chip1: Int, chip0portFn: T => Boolean, chip1portFn: T => Boolean, - connectFn: (T, T) => Unit -)(implicit tag: ClassTag[T]) extends Config((site, here, up) => { + connectFn: (S, T, T) => Unit +)(implicit tag0: ClassTag[T], tag1: ClassTag[S]) extends Config((site, here, up) => { // Override any HarnessBinders for chip0/chip1 case MultiChipParameters(`chip0`) => new Config( new HarnessBinder({case (th, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) @@ -45,21 +45,21 @@ class MultiHarnessBinder[T <: Port[_]]( ) // Set the multiharnessbinder key case MultiHarnessBinders(`chip0`, `chip1`) => up(MultiHarnessBinders(chip0, chip1)) :+ { - ((chip0Ports: Seq[Port[_]], chip1Ports: Seq[Port[_]]) => { + ((th: S, chip0Ports: Seq[Port[_]], chip1Ports: Seq[Port[_]]) => { val chip0Port: Seq[T] = chip0Ports.collect { case (p: T) if chip0portFn(p) => p } val chip1Port: Seq[T] = chip1Ports.collect { case (p: T) if chip1portFn(p) => p } require(chip0Port.size == 1 && chip1Port.size == 1) - connectFn(chip0Port(0), chip1Port(0)) + connectFn(th, chip0Port(0), chip1Port(0)) }) } }) -class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1portId: Int = 0) extends MultiHarnessBinder[SerialTLPort]( +class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1portId: Int = 0) extends MultiHarnessBinder( chip0, chip1, (p0: SerialTLPort) => p0.portId == chip0portId, (p1: SerialTLPort) => p1.portId == chip1portId, - (p0: SerialTLPort, p1: SerialTLPort) => { + (th: HasHarnessInstantiators, p0: SerialTLPort, p1: SerialTLPort) => { (DataMirror.directionOf(p0.io.clock), DataMirror.directionOf(p1.io.clock)) match { case (Direction.Input, Direction.Output) => p0.io.clock := p1.io.clock case (Direction.Output, Direction.Input) => p1.io.clock := p0.io.clock diff --git a/generators/chipyard/src/main/scala/harness/package.scala b/generators/chipyard/src/main/scala/harness/package.scala index 258655a7..7586e8c6 100644 --- a/generators/chipyard/src/main/scala/harness/package.scala +++ b/generators/chipyard/src/main/scala/harness/package.scala @@ -7,5 +7,5 @@ package object harness { import chipyard.iobinders.Port type HarnessBinderFunction = PartialFunction[(HasHarnessInstantiators, Port[_]), Unit] - type MultiHarnessBinderFunction = (Seq[Port[_]], Seq[Port[_]]) => Unit + type MultiHarnessBinderFunction = (HasHarnessInstantiator, Seq[Port[_]], Seq[Port[_]]) => Unit } From 53b33d56d4ee6240b63bc94c760b17cc2e5cf5ad Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Thu, 30 Nov 2023 10:32:12 -0800 Subject: [PATCH 098/184] Update generators/chipyard/src/main/scala/harness/package.scala --- generators/chipyard/src/main/scala/harness/package.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/package.scala b/generators/chipyard/src/main/scala/harness/package.scala index 7586e8c6..d0366c55 100644 --- a/generators/chipyard/src/main/scala/harness/package.scala +++ b/generators/chipyard/src/main/scala/harness/package.scala @@ -7,5 +7,5 @@ package object harness { import chipyard.iobinders.Port type HarnessBinderFunction = PartialFunction[(HasHarnessInstantiators, Port[_]), Unit] - type MultiHarnessBinderFunction = (HasHarnessInstantiator, Seq[Port[_]], Seq[Port[_]]) => Unit + type MultiHarnessBinderFunction = (HasHarnessInstantiators, Seq[Port[_]], Seq[Port[_]]) => Unit } From ab1b77f3a44e74f76265021a76d3738f0dfc4583 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Thu, 30 Nov 2023 10:33:26 -0800 Subject: [PATCH 099/184] Update generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala --- .../chipyard/src/main/scala/harness/MultiHarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index c4e96a3e..f60ec418 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -38,7 +38,7 @@ class MultiHarnessBinder[T <: Port[_], S <: HasHarnessInstantiators]( )(implicit tag0: ClassTag[T], tag1: ClassTag[S]) extends Config((site, here, up) => { // Override any HarnessBinders for chip0/chip1 case MultiChipParameters(`chip0`) => new Config( - new HarnessBinder({case (th, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) + new HarnessBinder({case (th: S, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) ) case MultiChipParameters(`chip1`) => new Config( new HarnessBinder({case (th, port: T) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) From ebf0c7452700fb4fa232dfe7e5677e95aa8b5476 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Thu, 30 Nov 2023 10:33:44 -0800 Subject: [PATCH 100/184] Update generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala --- .../chipyard/src/main/scala/harness/MultiHarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index f60ec418..d3371dfd 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -41,7 +41,7 @@ class MultiHarnessBinder[T <: Port[_], S <: HasHarnessInstantiators]( new HarnessBinder({case (th: S, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) ) case MultiChipParameters(`chip1`) => new Config( - new HarnessBinder({case (th, port: T) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) + new HarnessBinder({case (th: S, port: T) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) ) // Set the multiharnessbinder key case MultiHarnessBinders(`chip0`, `chip1`) => up(MultiHarnessBinders(chip0, chip1)) :+ { From b9e504411a0e13b0c4014a4ba3beeaa48c786aff Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 15:47:14 -0800 Subject: [PATCH 101/184] Install CIRCT outside of conda (add CI to auto-update) --- .github/workflows/update-circt.yml | 24 +++++++++++++ .gitignore | 1 + .gitmodules | 3 ++ conda-reqs/chipyard.yaml | 2 +- conda-reqs/circt.json | 3 ++ conda-reqs/install-circt | 1 + scripts/build-setup.sh | 58 +++++++++++++++++++----------- 7 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 .github/workflows/update-circt.yml create mode 100644 conda-reqs/circt.json create mode 160000 conda-reqs/install-circt diff --git a/.github/workflows/update-circt.yml b/.github/workflows/update-circt.yml new file mode 100644 index 00000000..3487838f --- /dev/null +++ b/.github/workflows/update-circt.yml @@ -0,0 +1,24 @@ +name: update-circt + +# run weekly +on: push +# schedule: +# - cron: 0 0 * * 1 + +defaults: + run: + shell: bash -leo pipefail {0} + +jobs: + update-circt: + name: update-circt + runs-on: ubuntu-latest + steps: + - name: Update CIRCT + uses: circt/update-circt@v1.0.0 + with: + user: 'bartender' + email: 'firesimchipyard@gmail.com' + pr-reviewers: '' + pr-labels: 'changelog:changed' + circt-config: './conda-reqs/circt.json' diff --git a/.gitignore b/.gitignore index 5dd75bec..78147280 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ tags *~ .bsp/ .conda-env/ +.circt/ .#* first-clone-setup-fast-log .bloop/ diff --git a/.gitmodules b/.gitmodules index 622c5f68..3e12c05a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -139,3 +139,6 @@ [submodule "generators/rocc-acc-utils"] path = generators/rocc-acc-utils url = https://github.com/ucb-bar/rocc-acc-utils +[submodule "conda-reqs/install-circt"] + path = conda-reqs/install-circt + url = https://github.com/circt/install-circt/ diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 92e0843b..cc63f613 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -29,7 +29,7 @@ dependencies: - conda-gcc-specs - binutils - - firtool==1.58.0 # from ucb-bar channel - https://github.com/ucb-bar/firtool-feedstock + # firtool handled outside of conda # misc - autoconf diff --git a/conda-reqs/circt.json b/conda-reqs/circt.json new file mode 100644 index 00000000..1109fac4 --- /dev/null +++ b/conda-reqs/circt.json @@ -0,0 +1,3 @@ +{ + "version": "firtool-1.58.0" +} diff --git a/conda-reqs/install-circt b/conda-reqs/install-circt new file mode 160000 index 00000000..3f8dda6e --- /dev/null +++ b/conda-reqs/install-circt @@ -0,0 +1 @@ +Subproject commit 3f8dda6e1c1965537b5801a43c81c287bac4eae4 diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 2c682514..c312c155 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -152,6 +152,44 @@ if run_step "1"; then source $CYDIR/.conda-env/etc/profile.d/conda.sh && conda activate $CYDIR/.conda-env exit_if_last_command_failed + + # Conda Setup + # Provide a sourceable snippet that can be used in subshells that may not have + # inhereted conda functions that would be brought in under a login shell that + # has run conda init (e.g., VSCode, CI) + read -r -d '\0' CONDA_ACTIVATE_PREAMBLE <<'END_CONDA_ACTIVATE' +if ! type conda >& /dev/null; then + echo "::ERROR:: you must have conda in your environment first" + return 1 # don't want to exit here because this file is sourced +fi + +# if we're sourcing this in a sub process that has conda in the PATH but not as a function, init it again +conda activate --help >& /dev/null || source $(conda info --base)/etc/profile.d/conda.sh +\0 +END_CONDA_ACTIVATE + + replace_content env.sh build-setup-conda "# line auto-generated by $0 +$CONDA_ACTIVATE_PREAMBLE +conda activate $CYDIR/.conda-env +source $CYDIR/scripts/fix-open-files.sh" + + # install circt + CIRCT_INSTALL_DIR=$CYDIR/.circt + rm -rf $CIRCT_INSTALL_DIR + $CYDIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + -f circt-full-shared-linux-x64.tar.gz \ + -i $CIRCT_INSTALL_DIR \ + -x $CYDIR/conda-reqs/circt.json \ + -g null + + replace_content env.sh build-setup-circt "# line auto-generated by $0 +if [ -d "${CIRCT_INSTALL_DIR}/bin" ] && [[ ":$PATH:" != *":${CIRCT_INSTALL_DIR}/bin:"* ]]; then + PATH="${PATH:+"$PATH:"}${CIRCT_INSTALL_DIR}/bin" +fi +if [ -d "${CIRCT_INSTALL_DIR}/lib" ] && [[ ":$LD_LIBRARY_PATH:" != *":${CIRCT_INSTALL_DIR}/lib:"* ]]; then + LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"$LD_LIBRARY_PATH:"}${CIRCT_INSTALL_DIR}/lib" +fi +" fi if [ -z "$FORCE_FLAG" ]; then @@ -250,26 +288,6 @@ if run_step "10"; then exit_if_last_command_failed fi -# Conda Setup -# Provide a sourceable snippet that can be used in subshells that may not have -# inhereted conda functions that would be brought in under a login shell that -# has run conda init (e.g., VSCode, CI) -read -r -d '\0' CONDA_ACTIVATE_PREAMBLE <<'END_CONDA_ACTIVATE' -if ! type conda >& /dev/null; then - echo "::ERROR:: you must have conda in your environment first" - return 1 # don't want to exit here because this file is sourced -fi - -# if we're sourcing this in a sub process that has conda in the PATH but not as a function, init it again -conda activate --help >& /dev/null || source $(conda info --base)/etc/profile.d/conda.sh -\0 -END_CONDA_ACTIVATE - -replace_content env.sh build-setup "# line auto-generated by $0 -$CONDA_ACTIVATE_PREAMBLE -conda activate $CYDIR/.conda-env -source $CYDIR/scripts/fix-open-files.sh" - echo "Setup complete!" } 2>&1 | tee build-setup.log From 990cea9c8ec572dbc4e625d18f9d43250a139ff2 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 16:04:38 -0800 Subject: [PATCH 102/184] Update conda-lock --- ...irements-esp-tools-linux-64.conda-lock.yml | 851 +++++++++--------- ...ements-riscv-tools-linux-64.conda-lock.yml | 851 +++++++++--------- 2 files changed, 824 insertions(+), 878 deletions(-) diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index b932c3e4..f5fc3fbf 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fixes-1/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: 4352e035d7bb90946e06331a177d5f78586ad26885d9505a73f901d3c7a3f138 + linux-64: db7fdb1eff05509c5804999acd40af2d5f212a2f7d2eca69702241bfbebef70d platforms: - linux-64 sources: - - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml - - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/esp-tools.yaml + - /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml + - /scratch/abejgonza/cy-fixes-1/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -64,25 +64,25 @@ package: - category: main dependencies: {} hash: - md5: a73ecd2988327ad4c8f2c331482917f2 - sha256: 525b7b6b5135b952ec1808de84e5eca57c7c7ff144e29ef3e96ae4040ff432c1 + md5: 01ffc8d36f9eba0ce0b3c1955fa780ee + sha256: fb4b9f4b7d885002db0b93e22f44b5b03791ef3d4efdc9d0662185a0faafd6b6 manager: conda name: ca-certificates optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda - version: 2023.7.22 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda + version: 2023.11.17 - category: main dependencies: {} hash: - md5: c0c0febec28f66bc333a24d97b1d1242 - sha256: c82fc09d29115df65bea000da3f6c982db1d4f67e1d2a89759825a13c1dc8a7b + md5: 9936f9d4393c27069e6ee70338f955a5 + sha256: 5098310ea9ec4dae611a658c1ea26436001b2d2a4ed3c8e9468881337e02682f manager: conda name: conda-standalone optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.9.0-ha770c72_0.conda - version: 23.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.10.0-ha770c72_0.conda + version: 23.10.0 - category: main dependencies: {} hash: @@ -119,13 +119,13 @@ package: - category: main dependencies: {} hash: - md5: 19410c3df09dfb12d1206132a1d357c5 - sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e + md5: 6185f640c43843e5ad6fd1c5372c3f80 + sha256: 056c85b482d58faab5fd4670b6c1f5df0986314cca3bc831d458b22e4ef2c792 manager: conda name: font-ttf-ubuntu optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda version: '0.83' - category: main dependencies: {} @@ -174,14 +174,14 @@ package: - category: main dependencies: {} hash: - md5: 731008e7ad6e66cbc00ffe0ebbdd149f - sha256: 7c8277700bf1cdac0cf20f3eafd5d79f371d63face6d517d8af7c7e72f7f4ca3 + md5: 5b874a5f133b1bd0c5f227eed4758fdb + sha256: 9aa01c1102811cae6f60efa9d17f8f44365791d53a712dce3fe9a0488b6f6c2f manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.457_0_g32e8f23-20231104_052339.tar.bz2 - version: 1.0.457_0_g32e8f23 + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.458_0_g8c68aca-20231104_052339.tar.bz2 + version: 1.0.458_0_g8c68aca - category: main dependencies: {} hash: @@ -323,14 +323,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 1fd5f2ae093f2dbf28dc4f18fca57309 - sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b + md5: 93729f7a54b25cb135ac2b67ea3a7603 + sha256: dba8a20acedc6bc3574e4068c196969881462ad831aae267d25fbc9409785a6b manager: conda name: aws-c-common optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda - version: 0.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.10-hd590300_0.conda + version: 0.9.10 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -371,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: c06fa0440048270817b9e3142cc661bf - sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1 + md5: d459949bc10f64dee1595c176c2e6291 + sha256: 6b0eee827bade11c2964a05867499a50ad2a9d1b14dfe18fb867a3bc9357f56f manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda - version: 1.21.0 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda + version: 1.23.0 - category: main dependencies: libgcc-ng: '>=12' @@ -834,14 +834,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 3cb2c7df59990bd37c2ce27fd906de68 - sha256: 49c569a69608eee784e815179a70c6ae4d088dac42b7df999044f68058d593bb + md5: 2bf1915cc107738811368afcb0993a59 + sha256: 1ef1b7efa69c7fb4e2a36a88316f307c115713698d1c12e19f55ae57c0482995 manager: conda name: nettle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2 - version: 3.8.1 + url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda + version: 3.9.1 - category: main dependencies: libgcc-ng: '>=12' @@ -859,14 +859,14 @@ package: ca-certificates: '' libgcc-ng: '>=12' hash: - md5: 412ba6938c3e2abaca8b1129ea82e238 - sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 + md5: 603827b39ea2b835268adb8c821b8570 + sha256: 80efc6f429bd8e622d999652e5cba2ca56fcdb9c16a439d2ce9b4313116e4a87 manager: conda name: openssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda - version: 3.1.4 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.0-hd590300_1.conda + version: 3.2.0 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -1098,56 +1098,56 @@ package: version: 0.2.5 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: ab28ae62aa4738f7ca0622554aadc31b - sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd + md5: 9e51dfd5da37c1817d2a850188861987 + sha256: ec56734a24eee51e2f89bec3d686dd2c4dbb09d0305248b1d14e4c748065dc23 manager: conda name: aws-c-cal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h5d48c4d_2.conda version: 0.6.9 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: aee687dcfcc2a75d77b6e6024273978a - sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76 + md5: c55a1a0c1419fcdfce6d21c41b0f92ab + sha256: ce508018c1109d4e5c6b65695639deaa2beea31edc39145bb810efb13ffed2c3 manager: conda name: aws-c-compression optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h7f92143_7.conda version: 0.2.17 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: af2bccdb4cf6e9254969426fd53c7c65 - sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1 + md5: fe9b3bb0a3961dfb12506d865d818c00 + sha256: 8f3b8f8b7b1f021eac80018d03ff24e2b390627b53eb17f07476f38ea67f4c56 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h7f92143_6.conda version: 0.1.12 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: 92077b8c5f72e9b81f069b1eb492ab80 - sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282 + md5: 46bd4e9c2fd10de83bae22f0bb71139b + sha256: ac2082211e7d5fd3036f9abd7e398ef67d5327efb3808f17a30fcab59acacbfb manager: conda name: aws-checksums optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h7f92143_6.conda version: 0.1.17 - category: main dependencies: @@ -1202,20 +1202,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/findutils-4.6.0-h166bdaf_1001.tar.bz2 version: 4.6.0 -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - ncurses: '>=6.4,<7.0a0' - hash: - md5: 182d006cea9203d6023c354005506e7a - sha256: f2a81d08e73e1d40af8d00aaaa0fcb61e8648cf656f112d5c2705a0a1a651c43 - manager: conda - name: firtool - optional: false - platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.58.0-0_h1234567_gc1d84a851.conda - version: 1.58.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1250,17 +1236,17 @@ package: version: 12.3.0 - category: main dependencies: - libgcc-ng: '>=7.5.0' - oniguruma: '>=6.9.3,<6.10.0a0' + libgcc-ng: '>=12' + oniguruma: '>=6.9.9,<6.10.0a0' hash: - md5: 8578ae83310b8c9f5717f1aa65054f36 - sha256: 00e69aec19174e61c70b652bb62c77c0947a27d6720bda0cb8d5be654020804a + md5: c29cbd5ee663325f9bed9a2b2488ef3a + sha256: e994d4e162a882ed9706f1ce992b5c33419ef425eafcd321252a6f94d3a05ab8 manager: conda name: jq optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.6-h36c2ea0_1000.tar.bz2 - version: '1.6' + url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7-hd590300_0.conda + version: '1.7' - category: main dependencies: libbrotlicommon: 1.1.0 hd590300_1 @@ -1376,27 +1362,27 @@ package: libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 5097789a2bc83e697d7509df57f25bfd - sha256: 911ad483f051d96c9f07ecd8177546763c2da601e26941b434c3a09fa9fcd8f8 + md5: 1a0287ab734591ad63603734f923016b + sha256: 3e0f6454190abb27edd2aeb724688ee440de133edb02cbb17d5609ba36aa8be0 manager: conda name: libprotobuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_1.conda - version: 4.24.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.4-hf27288f_0.conda + version: 4.24.4 - category: main dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: b58e6816d137f3aabf77d341dd5d732b - sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 + md5: 3b6a9f225c3dbe0d24f4fedd4625c5bf + sha256: ee2c4d724a3ed60d5b458864d66122fb84c6ce1df62f735f90d8db17b66cd88a manager: conda name: libsqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda - version: 3.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda + version: 3.44.2 - category: main dependencies: libgcc-ng: '>=12' @@ -1486,16 +1472,16 @@ package: dependencies: bzip2: '>=1.0.8,<2.0a0' libgcc-ng: '>=12' - libzlib: '>=1.2.12,<1.3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 69e2c796349cd9b273890bee0febfe1b - sha256: 7a29ec847556eed4faa1646010baae371ced69059a4ade43851367a076d6108a + md5: 679c8961826aa4b50653bce17ee52abe + sha256: 3ca54ff0abcda964af7d4724d389ae20d931159ae1881cfe57ad4b0ab9e6a380 manager: conda name: pcre2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.40-hc3806b6_0.tar.bz2 - version: '10.40' + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda + version: '10.42' - category: main dependencies: libgcc-ng: '>=12' @@ -1658,18 +1644,18 @@ package: - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: 4cabe68190c1ff4c72154c0a7d2e980c - sha256: 89103265c27cb5ad67a0f6b67149532e7addae4b6ddfb704e77f0369f5520591 + md5: d15f4dfeef1d65de9a5283c984981776 + sha256: ca5094093d0f2de9b0b2bd4697088565d0ef930364df8a67c8b79172dc9c209d manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc23c90e_8.conda - version: 0.13.35 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he14a76f_1.conda + version: 0.13.36 - category: main dependencies: libgcc-ng: '>=12' @@ -1782,17 +1768,17 @@ package: libidn2: '>=2,<3.0a0' libstdcxx-ng: '>=12' libtasn1: '>=4.19.0,<5.0a0' - nettle: '>=3.8.1,<3.9.0a0' + nettle: '>=3.9.1,<3.10.0a0' p11-kit: '>=0.24.1,<0.25.0a0' hash: - md5: cbe8e27140d67c3f30e01cfb642a6e7c - sha256: 4a47e4558395b98fff4c1c44ad358dade62b350a03b5a784d4bc589d6eb7ac9e + md5: 33eded89024f21659b1975886a4acf70 + sha256: 52d824a5d2b8a5566cd469cae6ad6920469b5a15b3e0ddc609dd29151be71be2 manager: conda name: gnutls optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.7.8-hf3e180e_0.tar.bz2 - version: 3.7.8 + url: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.7.9-hb077bed_0.conda + version: 3.7.9 - category: main dependencies: gcc_impl_linux-64: 12.3.0 he2b93b0_3 @@ -1851,15 +1837,15 @@ package: libiconv: '>=1.17,<2.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - pcre2: '>=10.40,<10.41.0a0' + pcre2: '>=10.42,<10.43.0a0' hash: - md5: ddd09e8904fde46b85f41896621803e6 - sha256: 44c5f58593b074886436db7d13fdfcba2fe3731867ea52237f049b8400341a2b + md5: 70052d6c1e84643e30ffefb21ab6950f + sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda version: 2.78.1 - category: main dependencies: @@ -1883,14 +1869,14 @@ package: libgfortran-ng: '' libgfortran5: '>=12.3.0' hash: - md5: 6e4ef6ca28655124dcde9bd500e44c32 - sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 + md5: d172b34a443b95f86089e8229ddc9a17 + sha256: 628564517895ee1b09cf72c817548bd80ef1acce6a8214a8520d9f7b44c4cfaf manager: conda name: libopenblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda - version: 0.3.24 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda + version: 0.3.25 - category: main dependencies: lerc: '>=4.0.0,<5.0a0' @@ -1914,20 +1900,20 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libprotobuf: '>=4.24.3,<4.24.4.0a0' + libprotobuf: '>=4.24.4,<4.24.5.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.2.0,<4.0a0' perl: '>=5.32.1,<5.33.0a0 *_perl5' hash: - md5: a362a501d2ea92506a96174ecf6b4b90 - sha256: 059f665865d1a8c1346a026ec4480ebae6edef839d465d90fe9ed6afa8b128c9 + md5: 194cc570b66f8726e92eaa58d141b935 + sha256: 30ac68088afe7568df797549a091556cf55ea28154a3f27cb524005ea4be6086 manager: conda name: mosh optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h4b98680_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h2f1bd5e_5.conda version: 1.4.0 - category: main dependencies: @@ -1990,19 +1976,19 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libsqlite: 3.44.0 h2797004_0 + libsqlite: 3.44.2 h2797004_0 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' hash: - md5: df56c636df4a98990462d66ac7be2330 - sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb + md5: 4f2892c672829693fd978d065db4e8be + sha256: bae479520fe770fe11996b4c240923ed097f851fbd2401d55540e551c9dbbef7 manager: conda name: sqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda - version: 3.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.2-h2c6b66d_0.conda + version: 3.44.2 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -2111,62 +2097,50 @@ package: version: 23.1.0 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: b4e69f0e7f832dc901bd585f353487f0 - sha256: b7b00593f4cd835780d3a4f61f6f77181b33b8e85cc0f78d9cb48dc1d84e8443 + md5: 21dafb60b5854f82b196f32e5857dec6 + sha256: d2855cd791a95648ac773aa6561c61f9e77450f123c8aa82eea1d66e90d5bfb1 manager: conda name: aws-c-event-stream optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hae413d4_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-h0bcb0bb_8.conda version: 0.3.2 - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-compression: '>=0.2.17,<0.2.18.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' libgcc-ng: '>=12' hash: - md5: e1b49ef8ddc4faca06a63a7e25da644f - sha256: dc4cda9ffef3b5859c5943f010e947e082315e7d84eb1f5e0b3cd58565eaf405 + md5: 0b0f7174a0f94d2c9a02fb24f6fc0d00 + sha256: ff7e6252a299a59b7e6494723ef3043ba31643ec2a750b8593037bc757a2c4fa manager: conda name: aws-c-http optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-h162056d_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-hd268abd_3.conda version: 0.7.14 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: 54ca2e08b3220c148a1d8329c2678e02 - sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd - manager: conda - name: backports - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda - version: '1.0' - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 2b4dff8615211a9ed20a79a9f6d26df8 - sha256: 6e21b123757ca5579df40c970622c7a0c5c44474cd820c87402246e3d66a32b3 + md5: be773757df1f0a5f7c783d6c56666ee7 + sha256: 6c1ea83b3a9f7d7ae5681cbd2eb6d4cc770e103c86f303ab3c568a7249383561 manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py39h9fdd4d6_1.conda - version: 4.0.1 + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.1-py39h9fdd4d6_0.conda + version: 4.1.1 - category: main dependencies: python: '>=3.8' @@ -2181,7 +2155,7 @@ package: version: 1.7.0 - category: main dependencies: - python: 2.7.*|>=3.7 + python: ==2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2237,14 +2211,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 7f3dbc9179b4dde7da98dfb151d0ad22 - sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31 + md5: 2011bcf45376341dd1d690263fdbc789 + sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96 manager: conda name: certifi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda - version: 2023.7.22 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda + version: 2023.11.17 - category: main dependencies: python: '>=3.6.1' @@ -2402,14 +2376,14 @@ package: dependencies: python: '>=3.7' hash: - md5: e6518222753f519e911e83136d2158d9 - sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315 + md5: f6c211fee3c98229652b60a9a42ef363 + sha256: cf83dcaf9006015c8ccab3fc6770f478464a66a8769e1763ca5d7dff09d11d08 manager: conda name: exceptiongroup optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda - version: 1.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_0.conda + version: 1.2.0 - category: main dependencies: python: '>=3.7' @@ -2542,14 +2516,14 @@ package: dependencies: python: '>=3.6' hash: - md5: 34272b248891bddccc64479f9a7fffed - sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09 + md5: 1a76f09108576397c41c0b0c5bd84134 + sha256: 6ee4c986d69ce61e60a20b2459b6f2027baeba153f0a64995fd3cb47c2cc7e07 manager: conda name: idna optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 - version: '3.4' + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda + version: '3.6' - category: main dependencies: python: '>=3.4' @@ -2680,15 +2654,15 @@ package: version: '2.15' - category: main dependencies: - libopenblas: '>=0.3.24,<1.0a0' + libopenblas: '>=0.3.25,<1.0a0' hash: - md5: 420f4e9be59d0dc9133a0f43f7bab3f3 - sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce + md5: 2b7bb4f7562c8cf334fc2e20c2d28abc + sha256: 8a0ee1de693a9b3da4a11b95ec81b40dd434bd01fa1f5f38f8268cd2146bf8f0 manager: conda name: libblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -2838,14 +2812,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: e39816a8abd539079a9d0b3c9045b2cb - sha256: ec1775ee47127f6ffcda5ed177280cf21a6b1e2e466cb8ab911a54cf40370961 + md5: f668e146a2ed03a4e62ffbb98b3115fb + sha256: a47f46861f206043602b5f8b176e3957dd4a59876b819a2e089d63d52e312412 manager: conda name: msgpack-python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py39h7633fee_0.conda - version: 1.0.6 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py39h7633fee_0.conda + version: 1.0.7 - category: main dependencies: libgcc-ng: '>=12' @@ -3015,14 +2989,14 @@ package: dependencies: python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' hash: - md5: 4b1c0db24e212190be1969b0aa490ad8 - sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82 + md5: fb1a800972b072aa4d16450983c81418 + sha256: 8b116da9acbb471e107203c11acaffcb259aca2367aa7e83e796e43ed5d381b3 manager: conda name: pyasn1 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda - version: 0.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda + version: 0.5.1 - category: main dependencies: libgcc-ng: '>=12' @@ -3039,7 +3013,7 @@ package: version: 0.6.6 - category: main dependencies: - python: 2.7.*|>=3.4 + python: ==2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3053,14 +3027,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 40e5cb18165466773619e5c963f00a7b - sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389 + md5: 140a7f159396547e9799aa98f9f0742e + sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257 manager: conda name: pygments optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda - version: 2.16.1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda + version: 2.17.2 - category: main dependencies: python: '>=3.6' @@ -3182,14 +3156,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 6db337e18a061e407cd34e6520d62a8b - sha256: fbb990dc109b77c2e9a431fc237245f1f1c8ea35fa53630bd0c1f5655c198f6c + md5: 75f11bc5ee4f3cf1d12bc17066b6a367 + sha256: f7e4dc74a7c8928edd8bf63316f09443943faf723487310c0f4ab76a5c62a5e6 manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.12.0-py39h9fdd4d6_0.conda - version: 0.12.0 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py39h9fdd4d6_0.conda + version: 0.13.2 - category: main dependencies: libgcc-ng: '>=12' @@ -3292,14 +3266,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 495ddad84b81dde4ee1138dd59ef5805 - sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f + md5: 074d0ce7a6261ab8b497c3518796ef3e + sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117 manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda - version: 0.12.2 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda + version: 0.12.3 - category: main dependencies: python: '>=3.5' @@ -3407,6 +3381,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda version: '5.008' +- category: main + dependencies: + python: '>=3.8' + hash: + md5: bf4a1d1a97ca27b0b65bacd9e238b484 + sha256: ca757d0fc2dbd422af9d3238a8b4b630a6e11df3707a447bd89540656770d1d7 + manager: conda + name: wcwidth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.12-pyhd8ed1ab_0.conda + version: 0.2.12 - category: main dependencies: python: '>=2.6' @@ -3435,14 +3421,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3fc026b9c87d091c4b34a6c997324ae8 - sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d + md5: 1cdea58981c5cbc17b51973bcaddcea7 + sha256: 80be0ccc815ce22f80c141013302839b0ed938a2edb50b846cf48d8a8c1cfa01 manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda - version: 0.41.3 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda + version: 0.42.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3556,35 +3542,35 @@ package: - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' libgcc-ng: '>=12' hash: - md5: 31836ccf72bc70ce2ec38a2ec2c8b504 - sha256: 6f44ef79e2ab5005961847cdefd2a71aa3a33c741adc77e774ac9dbedd9a2f81 + md5: 65d47e98af07d5e361707dda2ce44f3a + sha256: 48c768d96b09396190b717e126d33ca68f3d2786a068af188fd16fa469cbad76 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.6-h37ad1db_0.conda - version: 0.7.6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h5c941e0_1.conda + version: 0.7.8 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' libgcc-ng: '>=12' hash: - md5: d03181571be036cfbe7accf52256efe7 - sha256: 1df6ad0f5db319090718f5d4575b8829ff5aa5b663c8580e191fa9005e71072d + md5: 0cca0a3d7dc82f219ac46635478952f6 + sha256: 246276b22393302b4e9acb934ec40bb78d3be74e7bd2c110272b46c5370a60ee manager: conda name: aws-c-mqtt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.9-h1387108_0.conda - version: 0.9.9 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.10-h35285c7_2.conda + version: 0.9.10 - category: main dependencies: python: '>=3.7' @@ -3599,20 +3585,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda version: 2.13.1 -- category: main - dependencies: - backports: '' - python: '>=3.6' - setuptools: '' - hash: - md5: 6b1b907661838a75d067a22f87996b2e - sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700 - manager: conda - name: backports.functools_lru_cache - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda - version: 1.6.5 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3784,14 +3756,14 @@ package: python_abi: 3.9.* *_cp39 unicodedata2: '>=14.0.0' hash: - md5: bbfd1e3ef6f66b07e025fe872e854b0d - sha256: 874b66537828d2c0c1586a46b60f57bdec99b7df11f4a6343cd2cb381168f1b1 + md5: 616bc0b442acefebdbe97c7b885d771e + sha256: f908a09abb6c53e65dcd36d6c269fae3f9d6fa41ddb90bd8382e9e8da18005a1 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.44.0-py39hd1e30aa_0.conda - version: 4.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.45.1-py39hd1e30aa_0.conda + version: 4.45.1 - category: main dependencies: python: '>=3.7' @@ -3912,15 +3884,15 @@ package: version: '1.9' - category: main dependencies: - libblas: 3.9.0 19_linux64_openblas + libblas: 3.9.0 20_linux64_openblas hash: - md5: d12374af44575413fbbd4a217d46ea33 - sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a + md5: 36d486d72ab64ffea932329a1d3729a3 + sha256: 0e34fb0f82262f02fcb279ab4a1db8d50875dc98e3019452f8f387e6bf3c0247 manager: conda name: libcblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -3948,15 +3920,15 @@ package: version: 2.3.3 - category: main dependencies: - libblas: 3.9.0 19_linux64_openblas + libblas: 3.9.0 20_linux64_openblas hash: - md5: 9f100edf65436e3eabc2a51fc00b2c37 - sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878 + md5: 6fabc51f5e647d09cc010c40061557e0 + sha256: ad7745b8d0f2ccb9c3ba7aaa7167d62fc9f02e45eb67172ae5f0dfb5a3b1a2cc manager: conda name: liblapack optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -3983,14 +3955,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: 302c2f64bdf5c828254e4259c122b7fa - sha256: 47f05c1fc7ea7883f69ebe296969fe3a94dfe90f9c50a5df519fd2d1601954e2 + md5: aa252e335aa572e5052c4bb54519f1b9 + sha256: e2ccf9efb93065d65337199d6aca1f1ee94f583d3cf78d5998ac3b261b080d1e manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.0-py39hd1e30aa_0.conda - version: 1.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.1-py39hd1e30aa_0.conda + version: 1.7.1 - category: main dependencies: python: 2.7|>=3.7 @@ -4041,6 +4013,32 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda version: 23.3.1 +- category: main + dependencies: + python: '>=3.7' + typing_extensions: '>=4.7.1' + hash: + md5: 6bb4ee32cd435deaeac72776c001e7ac + sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937 + manager: conda + name: platformdirs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda + version: 4.0.0 +- category: main + dependencies: + python: '>=3.7' + wcwidth: '' + hash: + md5: 59ba1bf8ea558751a0d391249a248765 + sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc + manager: conda + name: prompt-toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda + version: 3.0.38 - category: main dependencies: colorama: '' @@ -4271,14 +4269,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 8af6047a95775009261c0a896da31e2f - sha256: c7b2be7a3cf2f31f1adb0ea3276ea4d21918e0769a5c3f9e1b9ec387965beb1f + md5: c8654dea9ff4b633fbdfddff7e321bb9 + sha256: 871782b22363b3fb449e2a29a3620045a1c40643e3726767f5b9cd4455ec36c7 manager: conda name: yarl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py39hd1e30aa_1.conda - version: 1.9.2 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.3-py39hd1e30aa_0.conda + version: 1.9.3 - category: main dependencies: python: '>=3.7' @@ -4307,23 +4305,23 @@ package: version: 4.0.3 - category: main dependencies: - aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-auth: '>=0.7.8,<0.7.9.0a0' aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 76eebe9871477c883d04042758493b98 - sha256: a145f456f0a47f8f7482ce6c23f4bfc3b71cb013598d4e1294930dcc8db56c65 + md5: d193ad6b5c2d47c679202afe5b69b371 + sha256: d99862ce623c68dd86225520c08bfe5ff46a0af885530a3faca4d3d54c7480bf manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.23-h7630044_1.conda - version: 0.3.23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.3-h0448019_0.conda + version: 0.4.3 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -4331,14 +4329,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: e6d5b6f6e9920c48eddcc8228d7cfacc - sha256: 74a6d6051bea01f4b68d5bb7397d8805432dbb4e74fa1bc889d05e34e3b9e367 + md5: 352c39ba5cd9ea01996358f0748e102e + sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.84-pyhd8ed1ab_0.conda - version: 1.31.84 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4411,18 +4409,18 @@ package: libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.2,<4.0a0' - pcre2: '>=10.40,<10.41.0a0' + openssl: '>=3.2.0,<4.0a0' + pcre2: '>=10.42,<10.43.0a0' perl: 5.* hash: - md5: 96ad24c67e0056d171385859c43218a2 - sha256: 6f6b3d60da46f53f1e1708a63d6ce5f119e6aba0f5243326b7ecaf3b0cdbc6d4 + md5: 851970792301b407ba4c35e75e796791 + sha256: 73a065e160d759e8fb0b169e615955a8fe0c148ed00c7f6ddf076f2e4adfd765 manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda - version: 2.42.0 + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.43.0-pl5321h7bc287a_0.conda + version: 2.43.0 - category: main dependencies: gitdb: '>=4.0.1,<5' @@ -4517,14 +4515,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 62f1d2e05327bf62728afa448f2a9261 - sha256: 11efc6545e2f9a1d2c298e188c4f929930c87423f40c7c91e93bb21bba80ce5e + md5: 459a58eda3e74dd5e3d596c618e7f20a + sha256: da2439d911005c9c83e7586f72014f58958ff0b0dbc7a3c38c14fbbe2841b455 manager: conda name: numpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py39h474f0d3_0.conda - version: 1.26.0 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.2-py39h474f0d3_0.conda + version: 1.26.2 - category: main dependencies: pip: '' @@ -4540,17 +4538,16 @@ package: version: 6.0.0 - category: main dependencies: - python: '>=3.7' - typing-extensions: '>=4.6.3' + prompt-toolkit: '>=3.0.38,<3.0.39.0a0' hash: - md5: 8f567c0a74aa44cf732f15773b4083b0 - sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 + md5: 45b74f64d8808eda7e6f6e6b1d641fd2 + sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 manager: conda - name: platformdirs + name: prompt_toolkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda - version: 3.11.0 + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda + version: 3.0.38 - category: main dependencies: libgcc-ng: '>=12' @@ -4558,14 +4555,14 @@ package: python_abi: 3.9.* *_cp39 typing-extensions: '>=4.6.0' hash: - md5: 4f91c76f0449ef911f13862d97bb9a25 - sha256: 412653aa555032ad318e629b2ff8731eb2a439fd2d13bb39deab868634b769d9 + md5: edfef0feb17faf35c3d7b6665cf30343 + sha256: 90162f949a7008c8f018e34c2a5e88add11c7c802727b2fd38a53d6e03cce7ab manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.10.1-py39h9fdd4d6_0.conda - version: 2.10.1 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.5-py39h9fdd4d6_0.conda + version: 2.14.5 - category: main dependencies: cffi: '>=1.4.1' @@ -4630,14 +4627,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: aca8818a70e54b3763d8eb13ea4cfca0 - sha256: b2ebcf97c7db95fd5ca8b1cf6766d4e467fd4c07de0039c134e14f8e4179df91 + md5: 1205762a36a808c0976f959caf389e8e + sha256: 0040b85370375694ae48d21af3e14471f78578fb22cd284c80da3741def0ad4a manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.10-pyhd8ed1ab_0.conda - version: 0.19.10 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.19-pyhd8ed1ab_0.conda + version: 0.19.19 - category: main dependencies: cffi: '' @@ -4656,17 +4653,19 @@ package: version: 1.0.1 - category: main dependencies: - backports.functools_lru_cache: '' - python: '>=3.6' + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 + python: '>=3.8' hash: - md5: 8e8280dec091763dfdc29e066de52270 - sha256: 7552f6545ed212b9ae5d023870481fc377c7f18b4854b63160699b95a420c42e + md5: db990278c2c00b268eed778de44f6057 + sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a manager: conda - name: wcwidth + name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.9-pyhd8ed1ab_0.conda - version: 0.2.9 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda + version: 20.24.7 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4703,9 +4702,8 @@ package: - category: main dependencies: aiosignal: '>=1.1.2' - async-timeout: <5.0,>=4.0.0a3 + async-timeout: '>=4.0,<5.0' attrs: '>=17.3.0' - charset-normalizer: '>=2.0,<4.0' frozenlist: '>=1.1.1' libgcc-ng: '>=12' multidict: '>=4.5,<7.0' @@ -4713,14 +4711,14 @@ package: python_abi: 3.9.* *_cp39 yarl: '>=1.0,<2.0' hash: - md5: 1cd442d38b3a6f5a54ce57ab156a5e59 - sha256: 3bd784458b30fe5fd1867508d76c95a70021ed2bb943d74e3c5ed2d7133f1a08 + md5: c94f6e40db7d4828430ac0d8efe6a3d7 + sha256: 9ef3be4aed65d22f29a03a1bbc5b36ecab14b279efbe729241270831ff5f17b4 manager: conda name: aiohttp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py39hd1e30aa_1.conda - version: 3.8.6 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.1-py39hd1e30aa_0.conda + version: 3.9.1 - category: main dependencies: botocore: '>=1.11.3' @@ -4737,28 +4735,28 @@ package: version: 2.12.1 - category: main dependencies: - aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-auth: '>=0.7.8,<0.7.9.0a0' aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' - aws-c-mqtt: '>=0.9.9,<0.9.10.0a0' - aws-c-s3: '>=0.3.23,<0.3.24.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' + aws-c-mqtt: '>=0.9.10,<0.9.11.0a0' + aws-c-s3: '>=0.4.3,<0.4.4.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: 08cc5d2eadcfc8d1f32e17dff5de2e92 - sha256: 4712939532aa861f0884abb2dfcc94b8e0854a5604d2f9e49ddceca42d0fa810 + md5: b06d5b1342885fa70ce1371b695cc038 + sha256: b30260ea6484450ad8f5e2ad0cc342302ef199d6ee55f57c1c78fbb8c8b7dad6 manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.10-py39hb0d4f8a_2.conda - version: 0.19.10 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.18-py39h13f1633_0.conda + version: 0.19.18 - category: main dependencies: python: '>=3.6' @@ -4780,14 +4778,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 362237c4d50dc1e4465e749d002bec95 - sha256: bb613a1ad8a5722504b7240bba4e8bf4773b07f3acfb9a6235c6120aea19c430 + md5: 3e24267b0fce04a61f7532f3096c45a5 + sha256: 5e0daa0d40c5a6ea3b3798d31e0ae6bdc1d53c487e59153e5e4d9ee8c2ccc47c manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.84-pyhd8ed1ab_0.conda - version: 1.31.84 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4883,14 +4881,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: fea10604a45e974b110ea15a88913ebc - sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee + md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c + sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546 manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda - version: 2.5.31 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda + version: 2.5.32 - category: main dependencies: importlib_metadata: '' @@ -4914,14 +4912,14 @@ package: referencing: '>=0.28.4' rpds-py: '>=0.7.1' hash: - md5: 24d41c2f9cc199d0a180ecf7ef54739c - sha256: 07e5d395d83c4b12a7abe3989fb42abdcd3b1c51cd27549e5eab390bb8c7bf0f + md5: 1116d79def5268414fb0917520b2bbf1 + sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296 manager: conda name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.2-pyhd8ed1ab_0.conda - version: 4.19.2 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda + version: 4.20.0 - category: main dependencies: pathable: '>=0.4.1,<0.5.0' @@ -4930,14 +4928,14 @@ package: referencing: '>=0.28.0,<0.31.0' requests: '>=2.31.0,<3.0.0' hash: - md5: 4faa0a9ec46b2849c87b569799b78e0f - sha256: b6153bdaa0875ef3c30a093a7c45321f4e877558b9cffc6b2221325a652ccdd3 + md5: 397d8d6ea406285f184534976f5bc9ae + sha256: 37d650a156a086a113be9ae917ba9737000be54e8939edd25e8d9f6fdd208bf2 manager: conda name: jsonschema-path optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.1-pyhd8ed1ab_0.conda - version: 0.3.1 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.2-pyhd8ed1ab_0.conda + version: 0.3.2 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -5051,34 +5049,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.3.1-pyhd8ed1ab_0.conda version: 3.3.1 -- category: main - dependencies: - python: '>=3.7' - wcwidth: '' - hash: - md5: 59ba1bf8ea558751a0d391249a248765 - sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc - manager: conda - name: prompt-toolkit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda - version: 3.0.38 - category: main dependencies: annotated-types: '>=0.4.0' - pydantic-core: 2.10.1 + pydantic-core: 2.14.5 python: '>=3.7' typing-extensions: '>=4.6.1' hash: - md5: aad1d187156725d52e1f8ee7756c20f6 - sha256: dc6330364f92de95a315a19e842a26605d6ca5c7d346e77811d42ad0438e32d8 + md5: 3f908ebfccbfd09946961862d26bb9af + sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.4.2-pyhd8ed1ab_1.conda - version: 2.4.2 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda + version: 2.5.2 - category: main dependencies: cryptography: '>=38.0.0,<41' @@ -5117,27 +5102,27 @@ package: typing_extensions: '' urllib3: '>=1.25.10,<3.0' hash: - md5: 3b9575392a494595648f1abe295bd5a5 - sha256: e38de0da8c9cfff976a0a6bbc98d5da771a79f0a86a88f54b4081b26bfaa88fe + md5: b1b80aaa77d5e83183cd0c9e9025b1fa + sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67 manager: conda name: responses optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.0-pyhd8ed1ab_0.conda - version: 0.24.0 + url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda + version: 0.24.1 - category: main dependencies: - botocore: '>=1.12.36,<2.0a.0' + botocore: '>=1.33.2,<2.0a.0' python: '>=3.7' hash: - md5: 5fe335cb1420d13a818fe01310af2b80 - sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d + md5: 75e12933f4bf755c9cdd37072bcb6203 + sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79 manager: conda name: s3transfer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda - version: 0.7.0 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda + version: 0.8.2 - category: main dependencies: attrs: '' @@ -5184,34 +5169,44 @@ package: version: 3.3.1 - category: main dependencies: - distlib: <1,>=0.3.7 - filelock: <4,>=3.12.2 - platformdirs: <4,>=3.9.1 - python: '>=3.8' + awscrt: 0.19.18 + colorama: '>=0.2.5,<0.4.7' + cryptography: '>=3.3.2,<=40.0.2' + distro: '>=1.5.0,<1.9.0' + docutils: '>=0.10,<0.20' + jmespath: '>=0.7.1,<1.1.0' + prompt_toolkit: '>=3.0.24,<3.0.39' + pyopenssl: <23.2 + python: '>=3.9,<3.10.0a0' + python-dateutil: '>=2.1,<3.0.0' + python_abi: 3.9.* *_cp39 + ruamel.yaml: '>=0.15.0,<=0.17.21' + ruamel.yaml.clib: '>=0.2.0,<=0.2.7' + urllib3: '>=1.25.4,<1.27' hash: - md5: fb1fc875719e217ed799a7aae11d3be4 - sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde + md5: 5ffefcaa01088d683a89ed416cee51be + sha256: 272e0c846b7288e179e1a58ce18a5ec1d8bd4f3a0829df27dbe4ebe799ec3f3f manager: conda - name: virtualenv + name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda - version: 20.24.6 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.14.4-py39hf3d152e_0.conda + version: 2.14.4 - category: main dependencies: - botocore: '>=1.31.84,<1.32.0' + botocore: '>=1.33.4,<1.34.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' - s3transfer: '>=0.7.0,<0.8.0' + s3transfer: '>=0.8.2,<0.9.0' hash: - md5: a9bfc60aeab9081481db109399739a0e - sha256: 22a8b32548ea3bff700a5dc2c5d52ea59b3ed2776c557c47ee929c10acf50f5b + md5: 914d59cf685448451de9ac736cb0fb2a + sha256: cb63cadfb3c593cb7295b14450e4310af88d32dc1bbf185ec82a325a12e86f28 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.4-pyhd8ed1ab_0.conda + version: 1.33.4 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5300,14 +5295,14 @@ package: python_abi: 3.9.* *_cp39 secretstorage: '>=3.2' hash: - md5: b3d20489af92d28bf9b952529e95a425 - sha256: fbe9e8a0e2377a7607d29b49981fe556710e6da0a34c340b0b357b0549c1f798 + md5: 1426c4f9994cb7e55859b44b98bc7b3e + sha256: a7538a914feb54dc3e7ee46431af5f0a40e668b29224998e6d3be044a1a7606e manager: conda name: keyring optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py39hf3d152e_1.conda - version: 24.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.0-py39hf3d152e_0.conda + version: 24.3.0 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5346,14 +5341,14 @@ package: python_abi: 3.9.* *_cp39 tk: '>=8.6.13,<8.7.0a0' hash: - md5: 89615b866cb3b0d8ad4e2a11e2bcf9a0 - sha256: 757714b23660b4627465cb640e2e8102a22b54aa3b961d475e2baa085180ad77 + md5: 6085411aa2f0b2b801d3b46e1d3b83c5 + sha256: f5e1275e1e7f644d5c91780c08f9868153b8b1a00703e7b03f4b171be02879e1 manager: conda name: matplotlib-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.1-py39he9076e7_0.conda - version: 3.8.1 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py39he9076e7_0.conda + version: 3.8.2 - category: main dependencies: msal: '>=0.4.1,<2.0' @@ -5400,18 +5395,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda version: 3.5.0 -- category: main - dependencies: - prompt-toolkit: '>=3.0.38,<3.0.39.0a0' - hash: - md5: 45b74f64d8808eda7e6f6e6b1d641fd2 - sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 - manager: conda - name: prompt_toolkit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda - version: 3.0.38 - category: main dependencies: __unix: '' @@ -5433,39 +5416,14 @@ package: python: '>=3.7,<4.0' typing-extensions: <5,>=4.4 hash: - md5: af59efdd26e86fac14c2746c66cb706c - sha256: ea26d8d828b4e5c8796db950f8b8e8428c95376a536c541b8f0bf937b17ea8b3 + md5: d9f3ca99e7d10b05ead04edcdcb7e0cb + sha256: 1bf5fa0d34e4de0843eaa82311e3dd680fdbe02cd74a6945f9b662f504bbcd08 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.79.0-pyhd8ed1ab_0.conda - version: 1.79.0 -- category: main - dependencies: - awscrt: '>=0.16.4,<=0.19.10' - colorama: '>=0.2.5,<0.4.7' - cryptography: '>=3.3.2,<=40.0.2' - distro: '>=1.5.0,<1.9.0' - docutils: '>=0.10,<0.20' - jmespath: '>=0.7.1,<1.1.0' - prompt_toolkit: '>=3.0.24,<3.0.39' - pyopenssl: <23.2 - python: '>=3.9,<3.10.0a0' - python-dateutil: '>=2.1,<3.0.0' - python_abi: 3.9.* *_cp39 - ruamel.yaml: '>=0.15.0,<=0.17.21' - ruamel.yaml.clib: '>=0.2.0,<=0.2.7' - urllib3: '>=1.25.4,<1.27' - hash: - md5: 4aaf89b9a988b7c058ccf03a20ac125b - sha256: 27b02a7a180786fa3cd6e2d1c57311c3c48a0b529624f3d2027369c0568eaa0d - manager: conda - name: awscli - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.34-py39hf3d152e_0.conda - version: 2.13.34 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.81.0-pyhd8ed1ab_0.conda + version: 1.81.0 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5488,14 +5446,14 @@ package: python: '' typing_extensions: '' hash: - md5: ed34395e930881e637ff3972b14a8cb8 - sha256: e03ff2ce7a063f7511bf1f69f23c3f85e692cd0c154929136e44403da69fd758 + md5: 23cf1bb1fb33251d3f0caf4198a90782 + sha256: 44363a8ede827c4bac4c1e6535461ab6f12a19c658dff0a4d908c6d1e19c5d70 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: archspec: '' @@ -5591,28 +5549,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: e4613bd862e1d98d361028fc4c971ff8 - sha256: dffba76e4bc56360fa5657b45d0f976f39cc3f271efc73e4f51041ce195574a3 + md5: 01f46d3078f21041719d2c5fb83200de + sha256: ef1e693434f0d3c84389e459486d57abda67df228c2671d11285ba73baa5c11a manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.55-pyhd8ed1ab_0.conda - version: 1.28.55 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.33.2-pyhd8ed1ab_0.conda + version: 1.33.2 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 058b95d63b780eaaf07ec142f409f42e - sha256: c744e0354b04aedd724d3046ba34cc931d20e6817c86f5d77e20359d48a5ca44 + md5: 687d78daf8e04f4c5e5cfa92ead666c4 + sha256: 2fecbcc276e13a119ec87602d9547aa537bf690724288d368ebf606351c19f67 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.33.0-pyhd8ed1ab_0.conda + version: 1.33.0 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5646,7 +5604,7 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.77.0' + aws-sam-translator: '>=1.79.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' jsonschema: '>=3.0,<5' @@ -5658,14 +5616,14 @@ package: sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: bd38b7f9983057b8c28d718dbda22e61 - sha256: 36a7f4c7623eed2f0987ae7b716a3f39caee1a865be30aeb7c46bc0091b29835 + md5: 8fa5ac9497fc51cb02377e38500ce964 + sha256: a77254900a3bc62e4c216f1223c9a14982db30e3c24a1b3fcc9cd9dcf3d1f5a4 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.1-pyhd8ed1ab_0.conda - version: 0.83.1 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.3-pyhd8ed1ab_0.conda + version: 0.83.3 - category: main dependencies: colorama: '' @@ -5741,14 +5699,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 5c83e6282026138d61086e1f6a689349 - sha256: cd1c6f4386002a7bb4a3debdb331c5a8eeaed7d237b806b3ff481a57f3a3726e + md5: cd76850f625a821bd553380913baf5d6 + sha256: 307ce3acd4c5c3b25f25e871924e96ee052c09a8a2832fcb7a89a2dc26f309cb manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.8-pyhd8ed1ab_0.conda - version: 4.2.8 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.10-pyhd8ed1ab_0.conda + version: 4.2.10 - category: main dependencies: livereload: '>=2.3.0' @@ -5763,19 +5721,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 version: 2021.3.14 -- category: main - dependencies: - python: '>=2.7' - sphinx: <6 - hash: - md5: 231a6798e540439299666e2eae31751e - sha256: 3b80b31fe1298c04c28285e3c2b1acb019be726acdc76fcd24d0123dc97bee6d - manager: conda - name: sphinx_rtd_theme - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_0.tar.bz2 - version: 0.5.2 - category: main dependencies: python: '>=3.9' @@ -5815,6 +5760,34 @@ package: 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.21 + python: '>=3.6' + sphinx: '>=5,<8' + sphinxcontrib-jquery: '>=4,<5' + hash: + md5: baf6d9a33df1a789ca55e3b404c7ea28 + sha256: 8545c806d03092fd0236db6663c88036eab2dc99e34c91cd36c0704db03b148a + manager: conda + name: sphinx_rtd_theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + version: 2.0.0 - category: main dependencies: python: '>=3.9' @@ -5833,30 +5806,30 @@ package: alabaster: '>=0.7,<0.8' babel: '>=2.9' colorama: '>=0.4.5' - docutils: '>=0.14,<0.20' + docutils: '>=0.18.1,<0.21' imagesize: '>=1.3' importlib-metadata: '>=4.8' jinja2: '>=3.0' packaging: '>=21.0' - pygments: '>=2.12' - python: '>=3.7' - requests: '>=2.5.0' + pygments: '>=2.14' + python: '>=3.9' + requests: '>=2.25.0' snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.5' + sphinxcontrib-serializinghtml: '>=1.1.9' hash: - md5: f9e1fcfe235d655900bfeb6aee426472 - sha256: f11fd5fb4ae2c65f41ae86e7408e3ab44844898d928264aa9e89929fffc685c8 + md5: bbfd1120d1824d2d073bc65935f0e4c0 + sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 manager: conda name: sphinx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.3.0-pyhd8ed1ab_0.tar.bz2 - version: 5.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda + version: 7.2.6 - category: main dependencies: python: '>=3.9' @@ -5978,13 +5951,13 @@ package: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: f1479ed931cf17f6e27aa36c548e16ecea832919890c4240e76b0c1ff14b664e + sha256: 1ba4e88f909d3a4b97a565e1ea1199e5b050aa4bdad190c69086bfaed9680cc2 manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/1f/a6/aed79965cd83f1ec358b2d37d5e5456e0f03ae5b19ebbed76708e976939f/icontract-2.6.5-py3-none-any.whl - version: 2.6.5 + url: https://files.pythonhosted.org/packages/49/6f/92ae156eb6afd94ad4ecd38adadff16c83caa4c6d52bd4503a583cf054ab/icontract-2.6.6-py3-none-any.whl + version: 2.6.6 - category: main dependencies: icontract: '>=2.0.1,<3' diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 93bde7bf..760a7911 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml -f /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fixes-1/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: ad6312b18b2993786fb78ba82f84ec194b56d171665578c08543be2f7cf7bc15 + linux-64: f1bcd6ae2c33f314a2957b51c4689ea4e99a5ea5a2bf7e6d199abfb9f6ae65c4 platforms: - linux-64 sources: - - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/chipyard.yaml - - /nscratch/nayiri/chipyard-pr-nov23/conda-reqs/riscv-tools.yaml + - /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml + - /scratch/abejgonza/cy-fixes-1/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -64,25 +64,25 @@ package: - category: main dependencies: {} hash: - md5: a73ecd2988327ad4c8f2c331482917f2 - sha256: 525b7b6b5135b952ec1808de84e5eca57c7c7ff144e29ef3e96ae4040ff432c1 + md5: 01ffc8d36f9eba0ce0b3c1955fa780ee + sha256: fb4b9f4b7d885002db0b93e22f44b5b03791ef3d4efdc9d0662185a0faafd6b6 manager: conda name: ca-certificates optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.7.22-hbcca054_0.conda - version: 2023.7.22 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2023.11.17-hbcca054_0.conda + version: 2023.11.17 - category: main dependencies: {} hash: - md5: c0c0febec28f66bc333a24d97b1d1242 - sha256: c82fc09d29115df65bea000da3f6c982db1d4f67e1d2a89759825a13c1dc8a7b + md5: 9936f9d4393c27069e6ee70338f955a5 + sha256: 5098310ea9ec4dae611a658c1ea26436001b2d2a4ed3c8e9468881337e02682f manager: conda name: conda-standalone optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.9.0-ha770c72_0.conda - version: 23.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-standalone-23.10.0-ha770c72_0.conda + version: 23.10.0 - category: main dependencies: {} hash: @@ -119,13 +119,13 @@ package: - category: main dependencies: {} hash: - md5: 19410c3df09dfb12d1206132a1d357c5 - sha256: 470d5db54102bd51dbb0c5990324a2f4a0bc976faa493b22193338adb9882e2e + md5: 6185f640c43843e5ad6fd1c5372c3f80 + sha256: 056c85b482d58faab5fd4670b6c1f5df0986314cca3bc831d458b22e4ef2c792 manager: conda name: font-ttf-ubuntu optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_1.conda version: '0.83' - category: main dependencies: {} @@ -174,14 +174,14 @@ package: - category: main dependencies: {} hash: - md5: 731008e7ad6e66cbc00ffe0ebbdd149f - sha256: 7c8277700bf1cdac0cf20f3eafd5d79f371d63face6d517d8af7c7e72f7f4ca3 + md5: 5b874a5f133b1bd0c5f227eed4758fdb + sha256: 9aa01c1102811cae6f60efa9d17f8f44365791d53a712dce3fe9a0488b6f6c2f manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.457_0_g32e8f23-20231104_052339.tar.bz2 - version: 1.0.457_0_g32e8f23 + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.458_0_g8c68aca-20231104_052339.tar.bz2 + version: 1.0.458_0_g8c68aca - category: main dependencies: {} hash: @@ -323,14 +323,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 1fd5f2ae093f2dbf28dc4f18fca57309 - sha256: 09075cb426a0b903b7ca86e4f399eb0be02b6d24e403792a5f378064fcb7a08b + md5: 93729f7a54b25cb135ac2b67ea3a7603 + sha256: dba8a20acedc6bc3574e4068c196969881462ad831aae267d25fbc9409785a6b manager: conda name: aws-c-common optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.8-hd590300_0.conda - version: 0.9.8 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.10-hd590300_0.conda + version: 0.9.10 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -371,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: c06fa0440048270817b9e3142cc661bf - sha256: dfe0e81d5462fced79fd0f99edeec94c9b27268cb04238638180981af2f889f1 + md5: d459949bc10f64dee1595c176c2e6291 + sha256: 6b0eee827bade11c2964a05867499a50ad2a9d1b14dfe18fb867a3bc9357f56f manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.21.0-hd590300_0.conda - version: 1.21.0 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda + version: 1.23.0 - category: main dependencies: libgcc-ng: '>=12' @@ -834,14 +834,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 3cb2c7df59990bd37c2ce27fd906de68 - sha256: 49c569a69608eee784e815179a70c6ae4d088dac42b7df999044f68058d593bb + md5: 2bf1915cc107738811368afcb0993a59 + sha256: 1ef1b7efa69c7fb4e2a36a88316f307c115713698d1c12e19f55ae57c0482995 manager: conda name: nettle optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.8.1-hc379101_1.tar.bz2 - version: 3.8.1 + url: https://conda.anaconda.org/conda-forge/linux-64/nettle-3.9.1-h7ab15ed_0.conda + version: 3.9.1 - category: main dependencies: libgcc-ng: '>=12' @@ -859,14 +859,14 @@ package: ca-certificates: '' libgcc-ng: '>=12' hash: - md5: 412ba6938c3e2abaca8b1129ea82e238 - sha256: d15b3e83ce66c6f6fbb4707f2f5c53337124c01fb03bfda1cf25c5b41123efc7 + md5: 603827b39ea2b835268adb8c821b8570 + sha256: 80efc6f429bd8e622d999652e5cba2ca56fcdb9c16a439d2ce9b4313116e4a87 manager: conda name: openssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.1.4-hd590300_0.conda - version: 3.1.4 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.2.0-hd590300_1.conda + version: 3.2.0 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -1098,56 +1098,56 @@ package: version: 0.2.5 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: ab28ae62aa4738f7ca0622554aadc31b - sha256: 8bca41960971a2f6eea0d61a30e6d8b1bf80f520b5959aba92b87d1385d3d0cd + md5: 9e51dfd5da37c1817d2a850188861987 + sha256: ec56734a24eee51e2f89bec3d686dd2c4dbb09d0305248b1d14e4c748065dc23 manager: conda name: aws-c-cal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h3b91eb8_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.9-h5d48c4d_2.conda version: 0.6.9 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: aee687dcfcc2a75d77b6e6024273978a - sha256: d67e50aff37474eee393346d71c9e4bbb6d190f86722ac932b2837acfea33f76 + md5: c55a1a0c1419fcdfce6d21c41b0f92ab + sha256: ce508018c1109d4e5c6b65695639deaa2beea31edc39145bb810efb13ffed2c3 manager: conda name: aws-c-compression optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-hfd9eb17_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.17-h7f92143_7.conda version: 0.2.17 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: af2bccdb4cf6e9254969426fd53c7c65 - sha256: d109677012abbf7e062d2a64c0df55523b056e74e5895650841b49f7f94a48a1 + md5: fe9b3bb0a3961dfb12506d865d818c00 + sha256: 8f3b8f8b7b1f021eac80018d03ff24e2b390627b53eb17f07476f38ea67f4c56 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-hfd9eb17_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h7f92143_6.conda version: 0.1.12 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: 92077b8c5f72e9b81f069b1eb492ab80 - sha256: fa197cea5d34038066ac743ffa3ae688c057152fff55226ec740c5f68a136282 + md5: 46bd4e9c2fd10de83bae22f0bb71139b + sha256: ac2082211e7d5fd3036f9abd7e398ef67d5327efb3808f17a30fcab59acacbfb manager: conda name: aws-checksums optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-hfd9eb17_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.17-h7f92143_6.conda version: 0.1.17 - category: main dependencies: @@ -1202,20 +1202,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/findutils-4.6.0-h166bdaf_1001.tar.bz2 version: 4.6.0 -- category: main - dependencies: - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - ncurses: '>=6.4,<7.0a0' - hash: - md5: 182d006cea9203d6023c354005506e7a - sha256: f2a81d08e73e1d40af8d00aaaa0fcb61e8648cf656f112d5c2705a0a1a651c43 - manager: conda - name: firtool - optional: false - platform: linux-64 - url: https://conda.anaconda.org/ucb-bar/linux-64/firtool-1.58.0-0_h1234567_gc1d84a851.conda - version: 1.58.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1250,17 +1236,17 @@ package: version: 12.3.0 - category: main dependencies: - libgcc-ng: '>=7.5.0' - oniguruma: '>=6.9.3,<6.10.0a0' + libgcc-ng: '>=12' + oniguruma: '>=6.9.9,<6.10.0a0' hash: - md5: 8578ae83310b8c9f5717f1aa65054f36 - sha256: 00e69aec19174e61c70b652bb62c77c0947a27d6720bda0cb8d5be654020804a + md5: c29cbd5ee663325f9bed9a2b2488ef3a + sha256: e994d4e162a882ed9706f1ce992b5c33419ef425eafcd321252a6f94d3a05ab8 manager: conda name: jq optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.6-h36c2ea0_1000.tar.bz2 - version: '1.6' + url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7-hd590300_0.conda + version: '1.7' - category: main dependencies: libbrotlicommon: 1.1.0 hd590300_1 @@ -1376,27 +1362,27 @@ package: libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 5097789a2bc83e697d7509df57f25bfd - sha256: 911ad483f051d96c9f07ecd8177546763c2da601e26941b434c3a09fa9fcd8f8 + md5: 1a0287ab734591ad63603734f923016b + sha256: 3e0f6454190abb27edd2aeb724688ee440de133edb02cbb17d5609ba36aa8be0 manager: conda name: libprotobuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.3-hf27288f_1.conda - version: 4.24.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.24.4-hf27288f_0.conda + version: 4.24.4 - category: main dependencies: libgcc-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: b58e6816d137f3aabf77d341dd5d732b - sha256: 74ef5dcb900c38bec53140036e5e2a9cc7ffcd806da479ea2305f962a358a259 + md5: 3b6a9f225c3dbe0d24f4fedd4625c5bf + sha256: ee2c4d724a3ed60d5b458864d66122fb84c6ce1df62f735f90d8db17b66cd88a manager: conda name: libsqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.0-h2797004_0.conda - version: 3.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.44.2-h2797004_0.conda + version: 3.44.2 - category: main dependencies: libgcc-ng: '>=12' @@ -1486,16 +1472,16 @@ package: dependencies: bzip2: '>=1.0.8,<2.0a0' libgcc-ng: '>=12' - libzlib: '>=1.2.12,<1.3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 69e2c796349cd9b273890bee0febfe1b - sha256: 7a29ec847556eed4faa1646010baae371ced69059a4ade43851367a076d6108a + md5: 679c8961826aa4b50653bce17ee52abe + sha256: 3ca54ff0abcda964af7d4724d389ae20d931159ae1881cfe57ad4b0ab9e6a380 manager: conda name: pcre2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.40-hc3806b6_0.tar.bz2 - version: '10.40' + url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.42-hcad00b1_0.conda + version: '10.42' - category: main dependencies: libgcc-ng: '>=12' @@ -1658,18 +1644,18 @@ package: - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: 4cabe68190c1ff4c72154c0a7d2e980c - sha256: 89103265c27cb5ad67a0f6b67149532e7addae4b6ddfb704e77f0369f5520591 + md5: d15f4dfeef1d65de9a5283c984981776 + sha256: ca5094093d0f2de9b0b2bd4697088565d0ef930364df8a67c8b79172dc9c209d manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.35-hc23c90e_8.conda - version: 0.13.35 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he14a76f_1.conda + version: 0.13.36 - category: main dependencies: libgcc-ng: '>=12' @@ -1782,17 +1768,17 @@ package: libidn2: '>=2,<3.0a0' libstdcxx-ng: '>=12' libtasn1: '>=4.19.0,<5.0a0' - nettle: '>=3.8.1,<3.9.0a0' + nettle: '>=3.9.1,<3.10.0a0' p11-kit: '>=0.24.1,<0.25.0a0' hash: - md5: cbe8e27140d67c3f30e01cfb642a6e7c - sha256: 4a47e4558395b98fff4c1c44ad358dade62b350a03b5a784d4bc589d6eb7ac9e + md5: 33eded89024f21659b1975886a4acf70 + sha256: 52d824a5d2b8a5566cd469cae6ad6920469b5a15b3e0ddc609dd29151be71be2 manager: conda name: gnutls optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.7.8-hf3e180e_0.tar.bz2 - version: 3.7.8 + url: https://conda.anaconda.org/conda-forge/linux-64/gnutls-3.7.9-hb077bed_0.conda + version: 3.7.9 - category: main dependencies: gcc_impl_linux-64: 12.3.0 he2b93b0_3 @@ -1851,15 +1837,15 @@ package: libiconv: '>=1.17,<2.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - pcre2: '>=10.40,<10.41.0a0' + pcre2: '>=10.42,<10.43.0a0' hash: - md5: ddd09e8904fde46b85f41896621803e6 - sha256: 44c5f58593b074886436db7d13fdfcba2fe3731867ea52237f049b8400341a2b + md5: 70052d6c1e84643e30ffefb21ab6950f + sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-hebfc3b9_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda version: 2.78.1 - category: main dependencies: @@ -1883,14 +1869,14 @@ package: libgfortran-ng: '' libgfortran5: '>=12.3.0' hash: - md5: 6e4ef6ca28655124dcde9bd500e44c32 - sha256: c8e080ae4d57506238023e98869928ae93564e6407ef5b0c4d3a337e8c2b7662 + md5: d172b34a443b95f86089e8229ddc9a17 + sha256: 628564517895ee1b09cf72c817548bd80ef1acce6a8214a8520d9f7b44c4cfaf manager: conda name: libopenblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.24-pthreads_h413a1c8_0.conda - version: 0.3.24 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda + version: 0.3.25 - category: main dependencies: lerc: '>=4.0.0,<5.0a0' @@ -1914,20 +1900,20 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libprotobuf: '>=4.24.3,<4.24.4.0a0' + libprotobuf: '>=4.24.4,<4.24.5.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.3,<4.0a0' + openssl: '>=3.2.0,<4.0a0' perl: '>=5.32.1,<5.33.0a0 *_perl5' hash: - md5: a362a501d2ea92506a96174ecf6b4b90 - sha256: 059f665865d1a8c1346a026ec4480ebae6edef839d465d90fe9ed6afa8b128c9 + md5: 194cc570b66f8726e92eaa58d141b935 + sha256: 30ac68088afe7568df797549a091556cf55ea28154a3f27cb524005ea4be6086 manager: conda name: mosh optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h4b98680_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/mosh-1.4.0-pl5321h2f1bd5e_5.conda version: 1.4.0 - category: main dependencies: @@ -1990,19 +1976,19 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libsqlite: 3.44.0 h2797004_0 + libsqlite: 3.44.2 h2797004_0 libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' readline: '>=8.2,<9.0a0' hash: - md5: df56c636df4a98990462d66ac7be2330 - sha256: ae7031a471868c7057cc16eded7bb58fa3723d9c1650c9d3eb8de1ff65d89dbb + md5: 4f2892c672829693fd978d065db4e8be + sha256: bae479520fe770fe11996b4c240923ed097f851fbd2401d55540e551c9dbbef7 manager: conda name: sqlite optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.0-h2c6b66d_0.conda - version: 3.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.44.2-h2c6b66d_0.conda + version: 3.44.2 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -2111,62 +2097,50 @@ package: version: 23.1.0 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' hash: - md5: b4e69f0e7f832dc901bd585f353487f0 - sha256: b7b00593f4cd835780d3a4f61f6f77181b33b8e85cc0f78d9cb48dc1d84e8443 + md5: 21dafb60b5854f82b196f32e5857dec6 + sha256: d2855cd791a95648ac773aa6561c61f9e77450f123c8aa82eea1d66e90d5bfb1 manager: conda name: aws-c-event-stream optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-hae413d4_6.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.3.2-h0bcb0bb_8.conda version: 0.3.2 - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-compression: '>=0.2.17,<0.2.18.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' libgcc-ng: '>=12' hash: - md5: e1b49ef8ddc4faca06a63a7e25da644f - sha256: dc4cda9ffef3b5859c5943f010e947e082315e7d84eb1f5e0b3cd58565eaf405 + md5: 0b0f7174a0f94d2c9a02fb24f6fc0d00 + sha256: ff7e6252a299a59b7e6494723ef3043ba31643ec2a750b8593037bc757a2c4fa manager: conda name: aws-c-http optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-h162056d_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.7.14-hd268abd_3.conda version: 0.7.14 -- category: main - dependencies: - python: '>=2.7' - hash: - md5: 54ca2e08b3220c148a1d8329c2678e02 - sha256: 711602276ae39276cb0faaca6fd0ac851fff0ca17151917569174841ef830bbd - manager: conda - name: backports - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/backports-1.0-pyhd8ed1ab_3.conda - version: '1.0' - category: main dependencies: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 88243004051d2acbe4391c8477636bfd - sha256: fa39a0ca8e9d7a0748dabea86c3273c0c224b75eec1a4817b523ec6945eeb6c8 + md5: e6792675103087f822f9705a22e4845d + sha256: 070fdd2e887a0b898764bfd6aa603365cf79dda30b1161ae06c607d510920f7d manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.0.1-py310hcb5633a_1.conda - version: 4.0.1 + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.1-py310hcb5633a_0.conda + version: 4.1.1 - category: main dependencies: python: '>=3.8' @@ -2181,7 +2155,7 @@ package: version: 1.7.0 - category: main dependencies: - python: 2.7.*|>=3.7 + python: ==2.7.*|>=3.7 hash: md5: 033eb25fffd222aceeca6d58cd953680 sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee @@ -2237,14 +2211,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 7f3dbc9179b4dde7da98dfb151d0ad22 - sha256: db66e31866ff4250c190788769e3a8a1709237c3e9c38d7143aae95ab75fcb31 + md5: 2011bcf45376341dd1d690263fdbc789 + sha256: afa22b77128a812cb57bc707c297d926561bd225a3d9dd74205d87a3b2d14a96 manager: conda name: certifi optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.7.22-pyhd8ed1ab_0.conda - version: 2023.7.22 + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2023.11.17-pyhd8ed1ab_0.conda + version: 2023.11.17 - category: main dependencies: python: '>=3.6.1' @@ -2385,14 +2359,14 @@ package: dependencies: python: '>=3.7' hash: - md5: e6518222753f519e911e83136d2158d9 - sha256: c28f715e049fe0f09785660bcbffa175ffb438720e5bc5a60d56d4b08364b315 + md5: f6c211fee3c98229652b60a9a42ef363 + sha256: cf83dcaf9006015c8ccab3fc6770f478464a66a8769e1763ca5d7dff09d11d08 manager: conda name: exceptiongroup optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.1.3-pyhd8ed1ab_0.conda - version: 1.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_0.conda + version: 1.2.0 - category: main dependencies: python: '>=3.7' @@ -2525,14 +2499,14 @@ package: dependencies: python: '>=3.6' hash: - md5: 34272b248891bddccc64479f9a7fffed - sha256: 9887c35c374ec1847f167292d3fde023cb4c994a4ceeec283072b95440131f09 + md5: 1a76f09108576397c41c0b0c5bd84134 + sha256: 6ee4c986d69ce61e60a20b2459b6f2027baeba153f0a64995fd3cb47c2cc7e07 manager: conda name: idna optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.4-pyhd8ed1ab_0.tar.bz2 - version: '3.4' + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.6-pyhd8ed1ab_0.conda + version: '3.6' - category: main dependencies: python: '>=3.4' @@ -2663,15 +2637,15 @@ package: version: '2.15' - category: main dependencies: - libopenblas: '>=0.3.24,<1.0a0' + libopenblas: '>=0.3.25,<1.0a0' hash: - md5: 420f4e9be59d0dc9133a0f43f7bab3f3 - sha256: b1311b9414559c5760b08a32e0382ca27fa302c967968aa6f78e042519f728ce + md5: 2b7bb4f7562c8cf334fc2e20c2d28abc + sha256: 8a0ee1de693a9b3da4a11b95ec81b40dd434bd01fa1f5f38f8268cd2146bf8f0 manager: conda name: libblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -2821,14 +2795,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 03255e1437f31f25ad95bb45c8b398bb - sha256: cf37ee99132533005db95b611377d99f3cf4cb6feed494806d53aa7101768cd4 + md5: dc5263dcaa1347e5a456ead3537be27d + sha256: a5c7612029e3871b0af0bd69e8ee1545d3deb93b5bec29cf1bf72522375fda31 manager: conda name: msgpack-python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.6-py310hd41b1e2_0.conda - version: 1.0.6 + url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.7-py310hd41b1e2_0.conda + version: 1.0.7 - category: main dependencies: libgcc-ng: '>=12' @@ -2998,14 +2972,14 @@ package: dependencies: python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' hash: - md5: 4b1c0db24e212190be1969b0aa490ad8 - sha256: 259b1107ae7d6983a8fdebe1717b67005fdf5328e827f33d38a9df43dee5ef82 + md5: fb1a800972b072aa4d16450983c81418 + sha256: 8b116da9acbb471e107203c11acaffcb259aca2367aa7e83e796e43ed5d381b3 manager: conda name: pyasn1 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.0-pyhd8ed1ab_0.conda - version: 0.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.5.1-pyhd8ed1ab_0.conda + version: 0.5.1 - category: main dependencies: libgcc-ng: '>=12' @@ -3022,7 +2996,7 @@ package: version: 0.6.6 - category: main dependencies: - python: 2.7.*|>=3.4 + python: ==2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3036,14 +3010,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 40e5cb18165466773619e5c963f00a7b - sha256: 3f0f0fadc6084960ec8cc00a32a03529c562ffea3b527eb73b1653183daad389 + md5: 140a7f159396547e9799aa98f9f0742e + sha256: af5f8867450dc292f98ea387d4d8945fc574284677c8f60eaa9846ede7387257 manager: conda name: pygments optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.16.1-pyhd8ed1ab_0.conda - version: 2.16.1 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.17.2-pyhd8ed1ab_0.conda + version: 2.17.2 - category: main dependencies: python: '>=3.6' @@ -3184,14 +3158,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 559e61c9a0a1b0a905965a60e5243cee - sha256: 7364e531276bdcad8e805685684a542f046b5693cf9cd20fa6804b01bda09200 + md5: 99b553d12fe320478b5b094cc1558f5a + sha256: af3b44e6e9ef8b18292c4854cf07edce6051efce06b75367bf0fc0599ba2cdf7 manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.12.0-py310hcb5633a_0.conda - version: 0.12.0 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py310hcb5633a_0.conda + version: 0.13.2 - category: main dependencies: libgcc-ng: '>=12' @@ -3294,14 +3268,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 495ddad84b81dde4ee1138dd59ef5805 - sha256: 2db2564e0332f051f46670fb7c430b53d3d596f102f7d9994e84cf8afae2a12f + md5: 074d0ce7a6261ab8b497c3518796ef3e + sha256: 53cc436ab92d38683df1320e4468a8b978428e800195bf1c8c2460e90b0bc117 manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.2-pyha770c72_0.conda - version: 0.12.2 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.3-pyha770c72_0.conda + version: 0.12.3 - category: main dependencies: python: '>=3.5' @@ -3421,6 +3395,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda version: '5.008' +- category: main + dependencies: + python: '>=3.8' + hash: + md5: bf4a1d1a97ca27b0b65bacd9e238b484 + sha256: ca757d0fc2dbd422af9d3238a8b4b630a6e11df3707a447bd89540656770d1d7 + manager: conda + name: wcwidth + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.12-pyhd8ed1ab_0.conda + version: 0.2.12 - category: main dependencies: python: '>=2.6' @@ -3449,14 +3435,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3fc026b9c87d091c4b34a6c997324ae8 - sha256: 84c3b57fba778add2bd47b7cc70e86f746d2c55549ffd2ccb6f3d6bf7c94d21d + md5: 1cdea58981c5cbc17b51973bcaddcea7 + sha256: 80be0ccc815ce22f80c141013302839b0ed938a2edb50b846cf48d8a8c1cfa01 manager: conda name: wheel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.41.3-pyhd8ed1ab_0.conda - version: 0.41.3 + url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.42.0-pyhd8ed1ab_0.conda + version: 0.42.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3570,35 +3556,35 @@ package: - category: main dependencies: aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' libgcc-ng: '>=12' hash: - md5: 31836ccf72bc70ce2ec38a2ec2c8b504 - sha256: 6f44ef79e2ab5005961847cdefd2a71aa3a33c741adc77e774ac9dbedd9a2f81 + md5: 65d47e98af07d5e361707dda2ce44f3a + sha256: 48c768d96b09396190b717e126d33ca68f3d2786a068af188fd16fa469cbad76 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.6-h37ad1db_0.conda - version: 0.7.6 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h5c941e0_1.conda + version: 0.7.8 - category: main dependencies: - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' libgcc-ng: '>=12' hash: - md5: d03181571be036cfbe7accf52256efe7 - sha256: 1df6ad0f5db319090718f5d4575b8829ff5aa5b663c8580e191fa9005e71072d + md5: 0cca0a3d7dc82f219ac46635478952f6 + sha256: 246276b22393302b4e9acb934ec40bb78d3be74e7bd2c110272b46c5370a60ee manager: conda name: aws-c-mqtt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.9-h1387108_0.conda - version: 0.9.9 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.9.10-h35285c7_2.conda + version: 0.9.10 - category: main dependencies: python: '>=3.7' @@ -3613,20 +3599,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda version: 2.13.1 -- category: main - dependencies: - backports: '' - python: '>=3.6' - setuptools: '' - hash: - md5: 6b1b907661838a75d067a22f87996b2e - sha256: 7027bb689dd4ca4a08e3b25805de9d04239be6b31125993558f21f102a9d2700 - manager: conda - name: backports.functools_lru_cache - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/backports.functools_lru_cache-1.6.5-pyhd8ed1ab_0.conda - version: 1.6.5 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3798,14 +3770,14 @@ package: python_abi: 3.10.* *_cp310 unicodedata2: '>=14.0.0' hash: - md5: 3d1677945147b2d6eb0fef35e98e650f - sha256: 7db0b07b04562531bc27df8a19674b4879ee3efe576d929335e159e2459e5018 + md5: c2dcff257e040bcda00e2a30a9d85333 + sha256: 65239757b26d95fe4d4368a9892d68baad555f3f62b405c3a58309db7747f929 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.44.0-py310h2372a71_0.conda - version: 4.44.0 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.45.1-py310h2372a71_0.conda + version: 4.45.1 - category: main dependencies: python: '>=3.7' @@ -3926,15 +3898,15 @@ package: version: '1.9' - category: main dependencies: - libblas: 3.9.0 19_linux64_openblas + libblas: 3.9.0 20_linux64_openblas hash: - md5: d12374af44575413fbbd4a217d46ea33 - sha256: 84fddccaf58f42b07af7fb42512bd617efcb072f17bdef27f4c1884dbd33c86a + md5: 36d486d72ab64ffea932329a1d3729a3 + sha256: 0e34fb0f82262f02fcb279ab4a1db8d50875dc98e3019452f8f387e6bf3c0247 manager: conda name: libcblas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -3962,15 +3934,15 @@ package: version: 2.3.3 - category: main dependencies: - libblas: 3.9.0 19_linux64_openblas + libblas: 3.9.0 20_linux64_openblas hash: - md5: 9f100edf65436e3eabc2a51fc00b2c37 - sha256: 58f402aae605ebd0932e1cbbf855cd49dcdfa2fcb6aab790a4f6068ec5937878 + md5: 6fabc51f5e647d09cc010c40061557e0 + sha256: ad7745b8d0f2ccb9c3ba7aaa7167d62fc9f02e45eb67172ae5f0dfb5a3b1a2cc manager: conda name: liblapack optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-19_linux64_openblas.conda + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda version: 3.9.0 - category: main dependencies: @@ -3997,14 +3969,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: ae6a9aaa6528278cf589741c67fb88ed - sha256: 9414d8d19ac5b51c16f96284cb6a33d9e3b74368099eada8497f975f8f552549 + md5: 0d60b1efdb10a07411570305e9e9421d + sha256: d15de464eb41a105bd381779e6bf8311f72346afc9e7d6a79165d505403d4d54 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.0-py310h2372a71_0.conda - version: 1.7.0 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.1-py310h2372a71_0.conda + version: 1.7.1 - category: main dependencies: python: 2.7|>=3.7 @@ -4055,6 +4027,32 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda version: 23.3.1 +- category: main + dependencies: + python: '>=3.7' + typing_extensions: '>=4.7.1' + hash: + md5: 6bb4ee32cd435deaeac72776c001e7ac + sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937 + manager: conda + name: platformdirs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda + version: 4.0.0 +- category: main + dependencies: + python: '>=3.7' + wcwidth: '' + hash: + md5: 59ba1bf8ea558751a0d391249a248765 + sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc + manager: conda + name: prompt-toolkit + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda + version: 3.0.38 - category: main dependencies: colorama: '' @@ -4285,14 +4283,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 30ae8a8f248b4e7cd2622cff41cb05a7 - sha256: 0a9aeb8cf885ef6dd0a737693823a4e4d27b2ee724fa3af317d8ccd925fa4258 + md5: 10246f66639d9ca55e790410f0dbb465 + sha256: 159e9e292f841477dd1e4c897c055d364472720c79b16fa329faee1e7b878564 manager: conda name: yarl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.2-py310h2372a71_1.conda - version: 1.9.2 + url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.9.3-py310h2372a71_0.conda + version: 1.9.3 - category: main dependencies: python: '>=3.7' @@ -4321,23 +4319,23 @@ package: version: 4.0.3 - category: main dependencies: - aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-auth: '>=0.7.8,<0.7.9.0a0' aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 76eebe9871477c883d04042758493b98 - sha256: a145f456f0a47f8f7482ce6c23f4bfc3b71cb013598d4e1294930dcc8db56c65 + md5: d193ad6b5c2d47c679202afe5b69b371 + sha256: d99862ce623c68dd86225520c08bfe5ff46a0af885530a3faca4d3d54c7480bf manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.3.23-h7630044_1.conda - version: 0.3.23 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.3-h0448019_0.conda + version: 0.4.3 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' @@ -4345,14 +4343,14 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: e6d5b6f6e9920c48eddcc8228d7cfacc - sha256: 74a6d6051bea01f4b68d5bb7397d8805432dbb4e74fa1bc889d05e34e3b9e367 + md5: 352c39ba5cd9ea01996358f0748e102e + sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.31.84-pyhd8ed1ab_0.conda - version: 1.31.84 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4425,18 +4423,18 @@ package: libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.2,<4.0a0' - pcre2: '>=10.40,<10.41.0a0' + openssl: '>=3.2.0,<4.0a0' + pcre2: '>=10.42,<10.43.0a0' perl: 5.* hash: - md5: 96ad24c67e0056d171385859c43218a2 - sha256: 6f6b3d60da46f53f1e1708a63d6ce5f119e6aba0f5243326b7ecaf3b0cdbc6d4 + md5: 851970792301b407ba4c35e75e796791 + sha256: 73a065e160d759e8fb0b169e615955a8fe0c148ed00c7f6ddf076f2e4adfd765 manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.42.0-pl5321h86e50cf_0.conda - version: 2.42.0 + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.43.0-pl5321h7bc287a_0.conda + version: 2.43.0 - category: main dependencies: gitdb: '>=4.0.1,<5' @@ -4518,14 +4516,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: ac3b67e928cc71548efad9b522d42fef - sha256: d4671e365c2ed30bf8a376bdc65afcbeeae440ca2091c8712ff8f23678f64973 + md5: d3147cfbf72d6ae7bba10562208f6def + sha256: f5ea7769beb7827f4f5858d28bbdbc814c01649cb8cb81cccbba476ebe3798cd manager: conda name: numpy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.0-py310hb13e2d6_0.conda - version: 1.26.0 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.2-py310hb13e2d6_0.conda + version: 1.26.2 - category: main dependencies: pip: '' @@ -4541,17 +4539,16 @@ package: version: 6.0.0 - category: main dependencies: - python: '>=3.7' - typing-extensions: '>=4.6.3' + prompt-toolkit: '>=3.0.38,<3.0.39.0a0' hash: - md5: 8f567c0a74aa44cf732f15773b4083b0 - sha256: b3d809ff5a18ee8514bba8bc05a23b4cdf1758090a18a2cf742af38aed405144 + md5: 45b74f64d8808eda7e6f6e6b1d641fd2 + sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 manager: conda - name: platformdirs + name: prompt_toolkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.11.0-pyhd8ed1ab_0.conda - version: 3.11.0 + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda + version: 3.0.38 - category: main dependencies: libgcc-ng: '>=12' @@ -4559,14 +4556,14 @@ package: python_abi: 3.10.* *_cp310 typing-extensions: '>=4.6.0' hash: - md5: 166a33403c767f760c07ceae7fe2d0f9 - sha256: 3c02b3589dab5ad9cf593d1cf9d380ca21ad552fd8a1d424591b52119da31714 + md5: a47e1b53da51f577ee44e79f7589c388 + sha256: 58ce2738657c5b3c5539465fa54eb499361df836034501c4bf03b1fc0ba9a1b7 manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.10.1-py310hcb5633a_0.conda - version: 2.10.1 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.5-py310hcb5633a_0.conda + version: 2.14.5 - category: main dependencies: cffi: '>=1.4.1' @@ -4631,14 +4628,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: aca8818a70e54b3763d8eb13ea4cfca0 - sha256: b2ebcf97c7db95fd5ca8b1cf6766d4e467fd4c07de0039c134e14f8e4179df91 + md5: 1205762a36a808c0976f959caf389e8e + sha256: 0040b85370375694ae48d21af3e14471f78578fb22cd284c80da3741def0ad4a manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.10-pyhd8ed1ab_0.conda - version: 0.19.10 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.19-pyhd8ed1ab_0.conda + version: 0.19.19 - category: main dependencies: cffi: '' @@ -4657,17 +4654,19 @@ package: version: 1.0.1 - category: main dependencies: - backports.functools_lru_cache: '' - python: '>=3.6' + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 + python: '>=3.8' hash: - md5: 8e8280dec091763dfdc29e066de52270 - sha256: 7552f6545ed212b9ae5d023870481fc377c7f18b4854b63160699b95a420c42e + md5: db990278c2c00b268eed778de44f6057 + sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a manager: conda - name: wcwidth + name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.9-pyhd8ed1ab_0.conda - version: 0.2.9 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda + version: 20.24.7 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4704,9 +4703,8 @@ package: - category: main dependencies: aiosignal: '>=1.1.2' - async-timeout: <5.0,>=4.0.0a3 + async-timeout: '>=4.0,<5.0' attrs: '>=17.3.0' - charset-normalizer: '>=2.0,<4.0' frozenlist: '>=1.1.1' libgcc-ng: '>=12' multidict: '>=4.5,<7.0' @@ -4714,14 +4712,14 @@ package: python_abi: 3.10.* *_cp310 yarl: '>=1.0,<2.0' hash: - md5: d265a71480afd9479c9333ba86375d04 - sha256: e32892fd786dc4ba150701ffd0981c8e942fc77e52754f6f1c331392004bd6f1 + md5: f367877549376e985a3df1dc430692ae + sha256: 6a3983f2ee81308ae0716790ae780f63915f47fcd6a1038d3c75a78fcb675f23 manager: conda name: aiohttp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.8.6-py310h2372a71_1.conda - version: 3.8.6 + url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.9.1-py310h2372a71_0.conda + version: 3.9.1 - category: main dependencies: botocore: '>=1.11.3' @@ -4738,28 +4736,28 @@ package: version: 2.12.1 - category: main dependencies: - aws-c-auth: '>=0.7.6,<0.7.7.0a0' + aws-c-auth: '>=0.7.8,<0.7.9.0a0' aws-c-cal: '>=0.6.9,<0.6.10.0a0' - aws-c-common: '>=0.9.8,<0.9.9.0a0' + aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-event-stream: '>=0.3.2,<0.3.3.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' - aws-c-io: '>=0.13.35,<0.13.36.0a0' - aws-c-mqtt: '>=0.9.9,<0.9.10.0a0' - aws-c-s3: '>=0.3.23,<0.3.24.0a0' + aws-c-io: '>=0.13.36,<0.13.37.0a0' + aws-c-mqtt: '>=0.9.10,<0.9.11.0a0' + aws-c-s3: '>=0.4.3,<0.4.4.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 s2n: '>=1.3.56,<1.3.57.0a0' hash: - md5: a0440a8f71220fdcef4105199b3e6660 - sha256: c46284b44e1119aa58be99e4d9c37409d79fd29aac2b00d8b4d8f0873e12d418 + md5: 7fe0965c0d18613708e4b9793c0ac0c4 + sha256: 532660a9498d4c5728b803fb5476f2a327cb81ab832b9bf36fadeb4ed4d1b09f manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.10-py310h63da47a_2.conda - version: 0.19.10 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.18-py310h9381138_0.conda + version: 0.19.18 - category: main dependencies: python: '>=3.6' @@ -4781,14 +4779,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 362237c4d50dc1e4465e749d002bec95 - sha256: bb613a1ad8a5722504b7240bba4e8bf4773b07f3acfb9a6235c6120aea19c430 + md5: 3e24267b0fce04a61f7532f3096c45a5 + sha256: 5e0daa0d40c5a6ea3b3798d31e0ae6bdc1d53c487e59153e5e4d9ee8c2ccc47c manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.31.84-pyhd8ed1ab_0.conda - version: 1.31.84 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4884,14 +4882,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: fea10604a45e974b110ea15a88913ebc - sha256: a56ec678a4e58d0a450174fd813581e961829def274453e093c9dae836b80cee + md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c + sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546 manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.31-pyhd8ed1ab_0.conda - version: 2.5.31 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda + version: 2.5.32 - category: main dependencies: importlib_metadata: '' @@ -4915,14 +4913,14 @@ package: referencing: '>=0.28.4' rpds-py: '>=0.7.1' hash: - md5: 24d41c2f9cc199d0a180ecf7ef54739c - sha256: 07e5d395d83c4b12a7abe3989fb42abdcd3b1c51cd27549e5eab390bb8c7bf0f + md5: 1116d79def5268414fb0917520b2bbf1 + sha256: 77aae609097d06deedb8ef8407a44b23d5fef95962ba6fe1c959ac7bd6195296 manager: conda name: jsonschema optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.19.2-pyhd8ed1ab_0.conda - version: 4.19.2 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.20.0-pyhd8ed1ab_0.conda + version: 4.20.0 - category: main dependencies: pathable: '>=0.4.1,<0.5.0' @@ -4931,14 +4929,14 @@ package: referencing: '>=0.28.0,<0.31.0' requests: '>=2.31.0,<3.0.0' hash: - md5: 4faa0a9ec46b2849c87b569799b78e0f - sha256: b6153bdaa0875ef3c30a093a7c45321f4e877558b9cffc6b2221325a652ccdd3 + md5: 397d8d6ea406285f184534976f5bc9ae + sha256: 37d650a156a086a113be9ae917ba9737000be54e8939edd25e8d9f6fdd208bf2 manager: conda name: jsonschema-path optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.1-pyhd8ed1ab_0.conda - version: 0.3.1 + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-path-0.3.2-pyhd8ed1ab_0.conda + version: 0.3.2 - category: main dependencies: elfutils: '>=0.187,<0.188.0a0' @@ -5052,34 +5050,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.3.1-pyhd8ed1ab_0.conda version: 3.3.1 -- category: main - dependencies: - python: '>=3.7' - wcwidth: '' - hash: - md5: 59ba1bf8ea558751a0d391249a248765 - sha256: 78c2f3c6195ec350d7d6e5fa3e43274ca8191c181c97a867e2920faaeec0e9bc - manager: conda - name: prompt-toolkit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.38-pyha770c72_0.conda - version: 3.0.38 - category: main dependencies: annotated-types: '>=0.4.0' - pydantic-core: 2.10.1 + pydantic-core: 2.14.5 python: '>=3.7' typing-extensions: '>=4.6.1' hash: - md5: aad1d187156725d52e1f8ee7756c20f6 - sha256: dc6330364f92de95a315a19e842a26605d6ca5c7d346e77811d42ad0438e32d8 + md5: 3f908ebfccbfd09946961862d26bb9af + sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.4.2-pyhd8ed1ab_1.conda - version: 2.4.2 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda + version: 2.5.2 - category: main dependencies: cryptography: '>=38.0.0,<41' @@ -5118,27 +5103,27 @@ package: typing_extensions: '' urllib3: '>=1.25.10,<3.0' hash: - md5: 3b9575392a494595648f1abe295bd5a5 - sha256: e38de0da8c9cfff976a0a6bbc98d5da771a79f0a86a88f54b4081b26bfaa88fe + md5: b1b80aaa77d5e83183cd0c9e9025b1fa + sha256: 35a1cc20beca329bfa2b17feeb5ca66a2741bdccf39621dfe386f48206e73d67 manager: conda name: responses optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.0-pyhd8ed1ab_0.conda - version: 0.24.0 + url: https://conda.anaconda.org/conda-forge/noarch/responses-0.24.1-pyhd8ed1ab_0.conda + version: 0.24.1 - category: main dependencies: - botocore: '>=1.12.36,<2.0a.0' + botocore: '>=1.33.2,<2.0a.0' python: '>=3.7' hash: - md5: 5fe335cb1420d13a818fe01310af2b80 - sha256: 5ed09d013ad7f2c2f65d1637c04ee19da242ef9bed0d86aa9faae2c48aaa255d + md5: 75e12933f4bf755c9cdd37072bcb6203 + sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79 manager: conda name: s3transfer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.7.0-pyhd8ed1ab_0.conda - version: 0.7.0 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda + version: 0.8.2 - category: main dependencies: attrs: '' @@ -5185,34 +5170,44 @@ package: version: 3.3.1 - category: main dependencies: - distlib: <1,>=0.3.7 - filelock: <4,>=3.12.2 - platformdirs: <4,>=3.9.1 - python: '>=3.8' + awscrt: 0.19.18 + colorama: '>=0.2.5,<0.4.7' + cryptography: '>=3.3.2,<=40.0.2' + distro: '>=1.5.0,<1.9.0' + docutils: '>=0.10,<0.20' + jmespath: '>=0.7.1,<1.1.0' + prompt_toolkit: '>=3.0.24,<3.0.39' + pyopenssl: <23.2 + python: '>=3.10,<3.11.0a0' + python-dateutil: '>=2.1,<3.0.0' + python_abi: 3.10.* *_cp310 + ruamel.yaml: '>=0.15.0,<=0.17.21' + ruamel.yaml.clib: '>=0.2.0,<=0.2.7' + urllib3: '>=1.25.4,<1.27' hash: - md5: fb1fc875719e217ed799a7aae11d3be4 - sha256: 09492f89a22dc17d9b32f2a791deee93d06e99fb312c3d47430fe35343b7fbde + md5: 83b614ffebf970bc4c848a34be1afe2d + sha256: 85b91372b3343c70a52ac76eab1878b0ac41a2446778b2379c725c614a2c41be manager: conda - name: virtualenv + name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.6-pyhd8ed1ab_0.conda - version: 20.24.6 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.14.4-py310hff52083_0.conda + version: 2.14.4 - category: main dependencies: - botocore: '>=1.31.84,<1.32.0' + botocore: '>=1.33.4,<1.34.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' - s3transfer: '>=0.7.0,<0.8.0' + s3transfer: '>=0.8.2,<0.9.0' hash: - md5: a9bfc60aeab9081481db109399739a0e - sha256: 22a8b32548ea3bff700a5dc2c5d52ea59b3ed2776c557c47ee929c10acf50f5b + md5: 914d59cf685448451de9ac736cb0fb2a + sha256: cb63cadfb3c593cb7295b14450e4310af88d32dc1bbf185ec82a325a12e86f28 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.4-pyhd8ed1ab_0.conda + version: 1.33.4 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5301,14 +5296,14 @@ package: python_abi: 3.10.* *_cp310 secretstorage: '>=3.2' hash: - md5: 8992b7970e6996fef7fbd3e890d8c552 - sha256: 53b008f165b677b492dfb67bd1459329260ba21338858f20dd3ed6c9a70b3ea7 + md5: e710fd8e57356a64cace034413da9cb3 + sha256: 886a764e4bc2cfaabf2ea0a98461fbd526affd99c984a2789770eca43dd17c9b manager: conda name: keyring optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.2.0-py310hff52083_1.conda - version: 24.2.0 + url: https://conda.anaconda.org/conda-forge/linux-64/keyring-24.3.0-py310hff52083_0.conda + version: 24.3.0 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5346,14 +5341,14 @@ package: python_abi: 3.10.* *_cp310 tk: '>=8.6.13,<8.7.0a0' hash: - md5: e650bd952e5618050ccb088bc0c6dfb4 - sha256: 615197c8b2b816aa1f7874319bd41acb134fcb9cd55e7337563295c8ced0a30e + md5: 3cbbc7d0b54df02c9a006d3de14911d9 + sha256: 078f5f1ece533a03710dd6d644555f1f2f4cbe18f1412d695ffb304e3d8c9381 manager: conda name: matplotlib-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.1-py310h62c0568_0.conda - version: 3.8.1 + url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.2-py310h62c0568_0.conda + version: 3.8.2 - category: main dependencies: msal: '>=0.4.1,<2.0' @@ -5400,18 +5395,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda version: 3.5.0 -- category: main - dependencies: - prompt-toolkit: '>=3.0.38,<3.0.39.0a0' - hash: - md5: 45b74f64d8808eda7e6f6e6b1d641fd2 - sha256: c0f24a75d27918eb33f86902aa6024783d128a89eb3a169bcb22f24163a422b3 - manager: conda - name: prompt_toolkit - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.38-hd8ed1ab_0.conda - version: 3.0.38 - category: main dependencies: __unix: '' @@ -5433,39 +5416,14 @@ package: python: '>=3.7,<4.0' typing-extensions: <5,>=4.4 hash: - md5: af59efdd26e86fac14c2746c66cb706c - sha256: ea26d8d828b4e5c8796db950f8b8e8428c95376a536c541b8f0bf937b17ea8b3 + md5: d9f3ca99e7d10b05ead04edcdcb7e0cb + sha256: 1bf5fa0d34e4de0843eaa82311e3dd680fdbe02cd74a6945f9b662f504bbcd08 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.79.0-pyhd8ed1ab_0.conda - version: 1.79.0 -- category: main - dependencies: - awscrt: '>=0.16.4,<=0.19.10' - colorama: '>=0.2.5,<0.4.7' - cryptography: '>=3.3.2,<=40.0.2' - distro: '>=1.5.0,<1.9.0' - docutils: '>=0.10,<0.20' - jmespath: '>=0.7.1,<1.1.0' - prompt_toolkit: '>=3.0.24,<3.0.39' - pyopenssl: <23.2 - python: '>=3.10,<3.11.0a0' - python-dateutil: '>=2.1,<3.0.0' - python_abi: 3.10.* *_cp310 - ruamel.yaml: '>=0.15.0,<=0.17.21' - ruamel.yaml.clib: '>=0.2.0,<=0.2.7' - urllib3: '>=1.25.4,<1.27' - hash: - md5: 84165c3fdcbb81cfac32d8e31f9bb212 - sha256: d05fcb2547625bb3262eeb91d8686eb728b179f54020f17dcea0c683161e98ef - manager: conda - name: awscli - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.13.34-py310hff52083_0.conda - version: 2.13.34 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.81.0-pyhd8ed1ab_0.conda + version: 1.81.0 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5488,14 +5446,14 @@ package: python: '' typing_extensions: '' hash: - md5: ed34395e930881e637ff3972b14a8cb8 - sha256: e03ff2ce7a063f7511bf1f69f23c3f85e692cd0c154929136e44403da69fd758 + md5: 23cf1bb1fb33251d3f0caf4198a90782 + sha256: 44363a8ede827c4bac4c1e6535461ab6f12a19c658dff0a4d908c6d1e19c5d70 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.33.5-pyhd8ed1ab_0.conda + version: 1.33.5 - category: main dependencies: archspec: '' @@ -5592,28 +5550,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: e4613bd862e1d98d361028fc4c971ff8 - sha256: dffba76e4bc56360fa5657b45d0f976f39cc3f271efc73e4f51041ce195574a3 + md5: 01f46d3078f21041719d2c5fb83200de + sha256: ef1e693434f0d3c84389e459486d57abda67df228c2671d11285ba73baa5c11a manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.28.55-pyhd8ed1ab_0.conda - version: 1.28.55 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.33.2-pyhd8ed1ab_0.conda + version: 1.33.2 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 058b95d63b780eaaf07ec142f409f42e - sha256: c744e0354b04aedd724d3046ba34cc931d20e6817c86f5d77e20359d48a5ca44 + md5: 687d78daf8e04f4c5e5cfa92ead666c4 + sha256: 2fecbcc276e13a119ec87602d9547aa537bf690724288d368ebf606351c19f67 manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.28.84-pyhd8ed1ab_0.conda - version: 1.28.84 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.33.0-pyhd8ed1ab_0.conda + version: 1.33.0 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5647,7 +5605,7 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.77.0' + aws-sam-translator: '>=1.79.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' jsonschema: '>=3.0,<5' @@ -5659,14 +5617,14 @@ package: sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: bd38b7f9983057b8c28d718dbda22e61 - sha256: 36a7f4c7623eed2f0987ae7b716a3f39caee1a865be30aeb7c46bc0091b29835 + md5: 8fa5ac9497fc51cb02377e38500ce964 + sha256: a77254900a3bc62e4c216f1223c9a14982db30e3c24a1b3fcc9cd9dcf3d1f5a4 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.1-pyhd8ed1ab_0.conda - version: 0.83.1 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.3-pyhd8ed1ab_0.conda + version: 0.83.3 - category: main dependencies: colorama: '' @@ -5742,14 +5700,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 5c83e6282026138d61086e1f6a689349 - sha256: cd1c6f4386002a7bb4a3debdb331c5a8eeaed7d237b806b3ff481a57f3a3726e + md5: cd76850f625a821bd553380913baf5d6 + sha256: 307ce3acd4c5c3b25f25e871924e96ee052c09a8a2832fcb7a89a2dc26f309cb manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.8-pyhd8ed1ab_0.conda - version: 4.2.8 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.10-pyhd8ed1ab_0.conda + version: 4.2.10 - category: main dependencies: livereload: '>=2.3.0' @@ -5764,19 +5722,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/sphinx-autobuild-2021.3.14-pyhd8ed1ab_0.tar.bz2 version: 2021.3.14 -- category: main - dependencies: - python: '>=2.7' - sphinx: <6 - hash: - md5: 231a6798e540439299666e2eae31751e - sha256: 3b80b31fe1298c04c28285e3c2b1acb019be726acdc76fcd24d0123dc97bee6d - manager: conda - name: sphinx_rtd_theme - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_0.tar.bz2 - version: 0.5.2 - category: main dependencies: python: '>=3.9' @@ -5816,6 +5761,34 @@ package: 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.21 + python: '>=3.6' + sphinx: '>=5,<8' + sphinxcontrib-jquery: '>=4,<5' + hash: + md5: baf6d9a33df1a789ca55e3b404c7ea28 + sha256: 8545c806d03092fd0236db6663c88036eab2dc99e34c91cd36c0704db03b148a + manager: conda + name: sphinx_rtd_theme + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-2.0.0-pyha770c72_0.conda + version: 2.0.0 - category: main dependencies: python: '>=3.9' @@ -5834,30 +5807,30 @@ package: alabaster: '>=0.7,<0.8' babel: '>=2.9' colorama: '>=0.4.5' - docutils: '>=0.14,<0.20' + docutils: '>=0.18.1,<0.21' imagesize: '>=1.3' importlib-metadata: '>=4.8' jinja2: '>=3.0' packaging: '>=21.0' - pygments: '>=2.12' - python: '>=3.7' - requests: '>=2.5.0' + pygments: '>=2.14' + python: '>=3.9' + requests: '>=2.25.0' snowballstemmer: '>=2.0' sphinxcontrib-applehelp: '' sphinxcontrib-devhelp: '' sphinxcontrib-htmlhelp: '>=2.0.0' sphinxcontrib-jsmath: '' sphinxcontrib-qthelp: '' - sphinxcontrib-serializinghtml: '>=1.1.5' + sphinxcontrib-serializinghtml: '>=1.1.9' hash: - md5: f9e1fcfe235d655900bfeb6aee426472 - sha256: f11fd5fb4ae2c65f41ae86e7408e3ab44844898d928264aa9e89929fffc685c8 + md5: bbfd1120d1824d2d073bc65935f0e4c0 + sha256: 665d1fe6d20c6cc672ff20e6ebb405860f878b487d3d8d86a5952733fb7bbc42 manager: conda name: sphinx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/sphinx-5.3.0-pyhd8ed1ab_0.tar.bz2 - version: 5.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/sphinx-7.2.6-pyhd8ed1ab_0.conda + version: 7.2.6 - category: main dependencies: python: '>=3.9' @@ -5979,13 +5952,13 @@ package: asttokens: '>=2,<3' typing-extensions: '*' hash: - sha256: f1479ed931cf17f6e27aa36c548e16ecea832919890c4240e76b0c1ff14b664e + sha256: 1ba4e88f909d3a4b97a565e1ea1199e5b050aa4bdad190c69086bfaed9680cc2 manager: pip name: icontract optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/1f/a6/aed79965cd83f1ec358b2d37d5e5456e0f03ae5b19ebbed76708e976939f/icontract-2.6.5-py3-none-any.whl - version: 2.6.5 + url: https://files.pythonhosted.org/packages/49/6f/92ae156eb6afd94ad4ecd38adadff16c83caa4c6d52bd4503a583cf054ab/icontract-2.6.6-py3-none-any.whl + version: 2.6.6 - category: main dependencies: icontract: '>=2.0.1,<3' From d2b3181e483cce06e4b96c5ad2f1b8ed777c8385 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 16:09:42 -0800 Subject: [PATCH 103/184] Update CI to install circt | Update every day --- .github/actions/create-conda-env/action.yml | 8 ++++++ .github/workflows/update-circt.yml | 8 +++--- scripts/build-setup.sh | 27 +++++++-------------- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index 1c302764..a711e658 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -21,5 +21,13 @@ runs: conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools ./scripts/build-toolchain-extra.sh esp-tools -p $CONDA_PREFIX/esp-tools conda deactivate + + echo "Installing CIRCT to conda area" + $REMOTE_CHIPYARD_DIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + -f circt-full-shared-linux-x64.tar.gz \ + -i $CONDA_PREFIX \ + -v version-file \ + -x ./conda-reqs/circt.json \ + -g null fi shell: bash -leo pipefail {0} diff --git a/.github/workflows/update-circt.yml b/.github/workflows/update-circt.yml index 3487838f..173f1901 100644 --- a/.github/workflows/update-circt.yml +++ b/.github/workflows/update-circt.yml @@ -1,9 +1,9 @@ name: update-circt -# run weekly -on: push -# schedule: -# - cron: 0 0 * * 1 +# run daily +on: + schedule: + - cron: 0 8 * * * defaults: run: diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index c312c155..c2243969 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -153,6 +153,15 @@ if run_step "1"; then conda activate $CYDIR/.conda-env exit_if_last_command_failed + # install circt into conda + $CYDIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + -f circt-full-shared-linux-x64.tar.gz \ + -i $CONDA_PREFIX \ + -v version-file \ + -x $CYDIR/conda-reqs/circt.json \ + -g null + exit_if_last_command_failed + # Conda Setup # Provide a sourceable snippet that can be used in subshells that may not have # inhereted conda functions that would be brought in under a login shell that @@ -172,24 +181,6 @@ END_CONDA_ACTIVATE $CONDA_ACTIVATE_PREAMBLE conda activate $CYDIR/.conda-env source $CYDIR/scripts/fix-open-files.sh" - - # install circt - CIRCT_INSTALL_DIR=$CYDIR/.circt - rm -rf $CIRCT_INSTALL_DIR - $CYDIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ - -f circt-full-shared-linux-x64.tar.gz \ - -i $CIRCT_INSTALL_DIR \ - -x $CYDIR/conda-reqs/circt.json \ - -g null - - replace_content env.sh build-setup-circt "# line auto-generated by $0 -if [ -d "${CIRCT_INSTALL_DIR}/bin" ] && [[ ":$PATH:" != *":${CIRCT_INSTALL_DIR}/bin:"* ]]; then - PATH="${PATH:+"$PATH:"}${CIRCT_INSTALL_DIR}/bin" -fi -if [ -d "${CIRCT_INSTALL_DIR}/lib" ] && [[ ":$LD_LIBRARY_PATH:" != *":${CIRCT_INSTALL_DIR}/lib:"* ]]; then - LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+"$LD_LIBRARY_PATH:"}${CIRCT_INSTALL_DIR}/lib" -fi -" fi if [ -z "$FORCE_FLAG" ]; then From 6d5b506d80da5400a367bc94c0cd6584d7ee9b5b Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 16:10:28 -0800 Subject: [PATCH 104/184] Remove circt specific area --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 78147280..5dd75bec 100644 --- a/.gitignore +++ b/.gitignore @@ -17,7 +17,6 @@ tags *~ .bsp/ .conda-env/ -.circt/ .#* first-clone-setup-fast-log .bloop/ From 543d6834ac1f0b5c0cf310e1e00f09cdfc22c86d Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 17:17:25 -0800 Subject: [PATCH 105/184] Fix path --- .github/actions/create-conda-env/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index a711e658..02f190e2 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -23,7 +23,7 @@ runs: conda deactivate echo "Installing CIRCT to conda area" - $REMOTE_CHIPYARD_DIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ -v version-file \ From dae66b0d564a4edf23fccdabfb37f1638ed436cf Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 30 Nov 2023 17:30:36 -0800 Subject: [PATCH 106/184] Bump --- .github/actions/create-conda-env/action.yml | 1 + scripts/build-setup.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index 02f190e2..a0637176 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -23,6 +23,7 @@ runs: conda deactivate echo "Installing CIRCT to conda area" + git submodule update --init ./conda-reqs/install-circt ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index c2243969..d3644b26 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -154,6 +154,7 @@ if run_step "1"; then exit_if_last_command_failed # install circt into conda + git submodule update --init $CYDIR/conda-reqs/install-circt && $CYDIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ From dd6cff58a6f1a9a936ccacf38bfc97cc6fe6c73f Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Fri, 1 Dec 2023 10:11:13 -0800 Subject: [PATCH 107/184] Fix CI (proper use of CONDA_PREFIX + GH token) --- .github/actions/create-conda-env/action.yml | 22 ++++++++++++--------- scripts/build-setup.sh | 1 - 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index a0637176..cc9031e9 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -14,21 +14,25 @@ runs: conda-lock install --conda $(which conda) -n ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools ./conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml conda deactivate - echo "Add extra toolchain collateral to RISC-V install area" + echo "Add extra toolchain collateral + CIRCT to RISC-V install area" + git submodule update --init ./conda-reqs/install-circt conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-riscv-tools ./scripts/build-toolchain-extra.sh riscv-tools -p $CONDA_PREFIX/riscv-tools - conda deactivate - conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools - ./scripts/build-toolchain-extra.sh esp-tools -p $CONDA_PREFIX/esp-tools - conda deactivate - - echo "Installing CIRCT to conda area" - git submodule update --init ./conda-reqs/install-circt ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ -v version-file \ -x ./conda-reqs/circt.json \ - -g null + -g ${{ github.token }} + conda deactivate + conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools + ./scripts/build-toolchain-extra.sh esp-tools -p $CONDA_PREFIX/esp-tools + ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + -f circt-full-shared-linux-x64.tar.gz \ + -i $CONDA_PREFIX \ + -v version-file \ + -x ./conda-reqs/circt.json \ + -g ${{ github.token }} + conda deactivate fi shell: bash -leo pipefail {0} diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index d3644b26..763e98b1 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -148,7 +148,6 @@ if run_step "1"; then # use conda-lock to create env conda-lock install --conda $(which conda) -p $CYDIR/.conda-env $LOCKFILE && - source $CYDIR/.conda-env/etc/profile.d/conda.sh && conda activate $CYDIR/.conda-env exit_if_last_command_failed From 10e3192404abfcde911a49021c3a86b9a9f2b98b Mon Sep 17 00:00:00 2001 From: joey0320 Date: Fri, 1 Dec 2023 15:50:14 -0800 Subject: [PATCH 108/184] fix blkdev test --- tests/blkdev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/blkdev.c b/tests/blkdev.c index 994a341b..b740617c 100644 --- a/tests/blkdev.c +++ b/tests/blkdev.c @@ -59,8 +59,8 @@ void blkdev_write(unsigned long offset, void *addr, size_t nsectors) #define TEST_NSECTORS 4 #define TEST_SIZE (TEST_NSECTORS * BLKDEV_SECTOR_SIZE / sizeof(int)) -unsigned int test_data[TEST_SIZE]; -unsigned int res_data[TEST_SIZE]; +unsigned int test_data[TEST_SIZE] __attribute__ ((aligned (64))); +unsigned int res_data[TEST_SIZE] __attribute__ ((aligned (64))); int main(void) { From e078fcba49eea6a5bfa61c3587130a07fbce1a05 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Mon, 4 Dec 2023 01:54:59 -0800 Subject: [PATCH 109/184] REFACTOR: rename arty35t explicitly --- fpga/Makefile | 6 +++--- fpga/src/main/scala/arty/HarnessBinders.scala | 8 ++++---- fpga/src/main/scala/arty/TestHarness.scala | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fpga/Makefile b/fpga/Makefile index 3d3caf1c..cfe760f4 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -72,11 +72,11 @@ ifeq ($(SUB_PROJECT),nexysvideo) FPGA_BRAND ?= xilinx endif -ifeq ($(SUB_PROJECT),arty) +ifeq ($(SUB_PROJECT),arty35t) # TODO: Fix with Arty SBT_PROJECT ?= fpga_platforms - MODEL ?= ArtyFPGATestHarness - VLOG_MODEL ?= ArtyFPGATestHarness + MODEL ?= Arty35THarness + VLOG_MODEL ?= Arty35THarness MODEL_PACKAGE ?= chipyard.fpga.arty CONFIG ?= TinyRocketArtyConfig CONFIG_PACKAGE ?= chipyard.fpga.arty diff --git a/fpga/src/main/scala/arty/HarnessBinders.scala b/fpga/src/main/scala/arty/HarnessBinders.scala index 5cef5f80..d2ce5489 100644 --- a/fpga/src/main/scala/arty/HarnessBinders.scala +++ b/fpga/src/main/scala/arty/HarnessBinders.scala @@ -15,19 +15,19 @@ import chipyard.harness.{HarnessBinder} import chipyard.iobinders._ class WithArtyDebugResetHarnessBinder extends HarnessBinder({ - case (th: ArtyFPGATestHarness, port: DebugResetPort) => { + case (th: Arty35THarness, port: DebugResetPort) => { th.dut_ndreset := port.io // Debug module reset } }) class WithArtyJTAGResetHarnessBinder extends HarnessBinder({ - case (th: ArtyFPGATestHarness, port: JTAGResetPort) => { + case (th: Arty35THarness, port: JTAGResetPort) => { port.io := PowerOnResetFPGAOnly(th.clock_32MHz) // JTAG module reset } }) class WithArtyJTAGHarnessBinder extends HarnessBinder({ - case (th: ArtyFPGATestHarness, port: JTAGPort) => { + case (th: Arty35THarness, port: JTAGPort) => { val jtag_wire = Wire(new JTAGIO) jtag_wire.TDO.data := port.io.TDO jtag_wire.TDO.driven := true.B @@ -62,7 +62,7 @@ class WithArtyJTAGHarnessBinder extends HarnessBinder({ }) class WithArtyUARTHarnessBinder extends HarnessBinder({ - case (th: ArtyFPGATestHarness, port: UARTPort) => { + case (th: Arty35THarness, port: UARTPort) => { withClockAndReset(th.clock_32MHz, th.ck_rst) { IOBUF(th.uart_rxd_out, port.io.txd) port.io.rxd := IOBUF(th.uart_txd_in) diff --git a/fpga/src/main/scala/arty/TestHarness.scala b/fpga/src/main/scala/arty/TestHarness.scala index 0a81740a..cdb1d4e4 100644 --- a/fpga/src/main/scala/arty/TestHarness.scala +++ b/fpga/src/main/scala/arty/TestHarness.scala @@ -10,7 +10,7 @@ import sifive.fpgashells.shell.xilinx.artyshell.{ArtyShell} import chipyard.harness.{HasHarnessInstantiators} -class ArtyFPGATestHarness(override implicit val p: Parameters) extends ArtyShell with HasHarnessInstantiators { +class Arty35THarness(override implicit val p: Parameters) extends ArtyShell with HasHarnessInstantiators { // Convert harness resets from Bool to Reset type. val hReset = Wire(Reset()) hReset := ~ck_rst From 00c4992842e35e77bc327d152025298a4d24c6a3 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Mon, 4 Dec 2023 02:43:49 -0800 Subject: [PATCH 110/184] FIX: update github CI --- .github/scripts/defaults.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 5d98ad2b..d4eb7b56 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -34,7 +34,7 @@ grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipya grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" grouping["group-other"]="icenet testchipip constellation rocketchip-amba rocketchip-tlsimple rocketchip-tlwidth rocketchip-tlxbar" -grouping["group-fpga"]="arty arty100t nexysvideo vc707 vcu118" +grouping["group-fpga"]="arty35t arty100t nexysvideo vc707 vcu118" # key value store to get the build strings declare -A mapping @@ -79,7 +79,7 @@ mapping["rocketchip-tlsimple"]="SUB_PROJECT=rocketchip CONFIG=TLSimpleUnitTestCo mapping["rocketchip-tlwidth"]="SUB_PROJECT=rocketchip CONFIG=TLWidthUnitTestConfig" mapping["rocketchip-tlxbar"]="SUB_PROJECT=rocketchip CONFIG=TLXbarUnitTestConfig" -mapping["arty"]="SUB_PROJECT=arty verilog" +mapping["arty35t"]="SUB_PROJECT=arty35t verilog" mapping["arty100t"]="SUB_PROJECT=arty100t verilog" mapping["nexysvideo"]="SUB_PROJECT=nexysvideo verilog" mapping["vc707"]="SUB_PROJECT=vc707 verilog" From e78756704bcd2d2605bd845df6d37b41301a6dac Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Mon, 4 Dec 2023 18:14:50 -0800 Subject: [PATCH 111/184] FIX: fix vcu118 sd card frequency --- fpga/src/main/resources/vcu118/sdboot/sd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/fpga/src/main/resources/vcu118/sdboot/sd.c b/fpga/src/main/resources/vcu118/sdboot/sd.c index f1bdb61e..60bebbd8 100644 --- a/fpga/src/main/resources/vcu118/sdboot/sd.c +++ b/fpga/src/main/resources/vcu118/sdboot/sd.c @@ -22,7 +22,7 @@ #error Must define TL_CLK #endif -#define F_CLK TL_CLK +#define F_CLK (TL_CLK) static volatile uint32_t * const spi = (void *)(SPI_CTRL_ADDR); @@ -79,7 +79,9 @@ static inline void sd_cmd_end(void) static void sd_poweron(void) { long i; - REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 300000UL); + // HACK: frequency change + // REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 300000UL); + REG32(spi, SPI_REG_SCKDIV) = (F_CLK * 2.5); REG32(spi, SPI_REG_CSMODE) = SPI_CSMODE_OFF; for (i = 10; i > 0; i--) { sd_dummy(); @@ -176,7 +178,9 @@ static int copy(void) // TODO: Speed up SPI freq. (breaks between these two values) //REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 16666666UL); - REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 5000000UL); + // HACK: frequency change + // REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 5000000UL); + REG32(spi, SPI_REG_SCKDIV) = (F_CLK * 2); // / 0.5 if (sd_cmd(0x52, BBL_PARTITION_START_SECTOR, 0xE1) != 0x00) { sd_cmd_end(); return 1; From 069a9d2999d53b26550387506097c38fc420c4a3 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Tue, 5 Dec 2023 15:07:25 -0800 Subject: [PATCH 112/184] ADD: add equation for setting certain SPI clock speed --- fpga/src/main/resources/vcu118/sdboot/sd.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/fpga/src/main/resources/vcu118/sdboot/sd.c b/fpga/src/main/resources/vcu118/sdboot/sd.c index 60bebbd8..e8d45ba7 100644 --- a/fpga/src/main/resources/vcu118/sdboot/sd.c +++ b/fpga/src/main/resources/vcu118/sdboot/sd.c @@ -22,7 +22,14 @@ #error Must define TL_CLK #endif -#define F_CLK (TL_CLK) +#define F_CLK (TL_CLK) + +// SPI SCLK frequency, in kHz +#define SPI_CLK 1250 + +// SPI clock divisor value +// @see https://ucb-bar.gitbook.io/baremetal-ide/baremetal-ide/using-peripheral-devices/sifive-ips/serial-peripheral-interface-spi +#define SPI_DIV (((F_CLK * 1000) / SPI_CLK) / 2 - 1) static volatile uint32_t * const spi = (void *)(SPI_CTRL_ADDR); @@ -80,8 +87,8 @@ static void sd_poweron(void) { long i; // HACK: frequency change - // REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 300000UL); - REG32(spi, SPI_REG_SCKDIV) = (F_CLK * 2.5); + + REG32(spi, SPI_REG_SCKDIV) = SPI_DIV; REG32(spi, SPI_REG_CSMODE) = SPI_CSMODE_OFF; for (i = 10; i > 0; i--) { sd_dummy(); @@ -173,14 +180,10 @@ static int copy(void) dputs("CMD18"); - kprintf("LOADING 0x%xB PAYLOAD\r\n", PAYLOAD_SIZE_B); + kprintf("LOADING 0x%x B PAYLOAD\r\n", PAYLOAD_SIZE_B); kprintf("LOADING "); - // TODO: Speed up SPI freq. (breaks between these two values) - //REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 16666666UL); - // HACK: frequency change - // REG32(spi, SPI_REG_SCKDIV) = (F_CLK / 5000000UL); - REG32(spi, SPI_REG_SCKDIV) = (F_CLK * 2); // / 0.5 + REG32(spi, SPI_REG_SCKDIV) = SPI_DIV; if (sd_cmd(0x52, BBL_PARTITION_START_SECTOR, 0xE1) != 0x00) { sd_cmd_end(); return 1; From f3c3ecf1496be7f47baedf415cc2027059c19f23 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 7 Dec 2023 10:55:19 -0800 Subject: [PATCH 113/184] Move install-circt submodule --- .gitmodules | 2 +- {conda-reqs => tools}/install-circt | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {conda-reqs => tools}/install-circt (100%) diff --git a/.gitmodules b/.gitmodules index 3e12c05a..561102fc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -140,5 +140,5 @@ path = generators/rocc-acc-utils url = https://github.com/ucb-bar/rocc-acc-utils [submodule "conda-reqs/install-circt"] - path = conda-reqs/install-circt + path = tools/install-circt url = https://github.com/circt/install-circt/ diff --git a/conda-reqs/install-circt b/tools/install-circt similarity index 100% rename from conda-reqs/install-circt rename to tools/install-circt From 551c096bc931e053ade212bd8cf029922b92d86f Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Thu, 7 Dec 2023 11:00:59 -0800 Subject: [PATCH 114/184] Fix CIRCT installer path | Run CRON every 15m --- .github/actions/create-conda-env/action.yml | 6 +++--- .github/workflows/update-circt.yml | 3 ++- .gitmodules | 2 +- scripts/build-setup.sh | 5 +++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index cc9031e9..e29a06e9 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -15,10 +15,10 @@ runs: conda deactivate echo "Add extra toolchain collateral + CIRCT to RISC-V install area" - git submodule update --init ./conda-reqs/install-circt + git submodule update --init ./tools/install-circt conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-riscv-tools ./scripts/build-toolchain-extra.sh riscv-tools -p $CONDA_PREFIX/riscv-tools - ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + ./tools/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ -v version-file \ @@ -27,7 +27,7 @@ runs: conda deactivate conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools ./scripts/build-toolchain-extra.sh esp-tools -p $CONDA_PREFIX/esp-tools - ./conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + ./tools/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ -v version-file \ diff --git a/.github/workflows/update-circt.yml b/.github/workflows/update-circt.yml index 173f1901..2d52a155 100644 --- a/.github/workflows/update-circt.yml +++ b/.github/workflows/update-circt.yml @@ -3,7 +3,8 @@ name: update-circt # run daily on: schedule: - - cron: 0 8 * * * + - cron: 0,15,30,45 * * * * + #- cron: 0 8 * * * defaults: run: diff --git a/.gitmodules b/.gitmodules index 561102fc..db0837ec 100644 --- a/.gitmodules +++ b/.gitmodules @@ -139,6 +139,6 @@ [submodule "generators/rocc-acc-utils"] path = generators/rocc-acc-utils url = https://github.com/ucb-bar/rocc-acc-utils -[submodule "conda-reqs/install-circt"] +[submodule "tools/install-circt"] path = tools/install-circt url = https://github.com/circt/install-circt/ diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 763e98b1..9d79735a 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -153,8 +153,8 @@ if run_step "1"; then exit_if_last_command_failed # install circt into conda - git submodule update --init $CYDIR/conda-reqs/install-circt && - $CYDIR/conda-reqs/install-circt/bin/download-release-or-nightly-circt.sh \ + git submodule update --init $CYDIR/tools/install-circt && + $CYDIR/tools/install-circt/bin/download-release-or-nightly-circt.sh \ -f circt-full-shared-linux-x64.tar.gz \ -i $CONDA_PREFIX \ -v version-file \ @@ -181,6 +181,7 @@ END_CONDA_ACTIVATE $CONDA_ACTIVATE_PREAMBLE conda activate $CYDIR/.conda-env source $CYDIR/scripts/fix-open-files.sh" + fi if [ -z "$FORCE_FLAG" ]; then From 4937a1aff83c542f57e7798a89f06b47cf6c0eb2 Mon Sep 17 00:00:00 2001 From: bartender Date: Thu, 7 Dec 2023 21:33:27 +0000 Subject: [PATCH 115/184] [cd] Bump CIRCT from firtool-1.58.0 to firtool-1.60.0 This is an automated commit generated by the `circt/update-circt` GitHub Action. (cherry picked from commit 73e8bb2baece8abcb297747993c3b0d7a0cbc557) --- conda-reqs/circt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda-reqs/circt.json b/conda-reqs/circt.json index 1109fac4..42d4fa09 100644 --- a/conda-reqs/circt.json +++ b/conda-reqs/circt.json @@ -1,3 +1,3 @@ { - "version": "firtool-1.58.0" + "version": "firtool-1.60.0" } From 088e9ea45a4c9d00555f4a1fe087a5cc11875ad9 Mon Sep 17 00:00:00 2001 From: abejgonzalez Date: Wed, 13 Dec 2023 10:07:14 -0800 Subject: [PATCH 116/184] Remove references to ENABLE_YOSYS --- common.mk | 1 - docs/VLSI/Sky130-Commercial-Tutorial.rst | 3 +-- docs/VLSI/Sky130-OpenROAD-Tutorial.rst | 8 +++----- vlsi/example-designs/sky130-openroad-rockettile.yml | 2 -- vlsi/example-designs/sky130-openroad.yml | 2 -- vlsi/tutorial.mk | 3 --- 6 files changed, 4 insertions(+), 15 deletions(-) diff --git a/common.mk b/common.mk index 5e0e2fcd..f525b526 100644 --- a/common.mk +++ b/common.mk @@ -28,7 +28,6 @@ EXTRA_SIM_CXXFLAGS ?= EXTRA_SIM_LDFLAGS ?= EXTRA_SIM_SOURCES ?= EXTRA_SIM_REQS ?= -ENABLE_CUSTOM_FIRRTL_PASS += $(ENABLE_YOSYS_FLOW) ifneq ($(ASPECTS), ) comma = , diff --git a/docs/VLSI/Sky130-Commercial-Tutorial.rst b/docs/VLSI/Sky130-Commercial-Tutorial.rst index 70be799e..92e4330c 100644 --- a/docs/VLSI/Sky130-Commercial-Tutorial.rst +++ b/docs/VLSI/Sky130-Commercial-Tutorial.rst @@ -123,8 +123,7 @@ The ``buildfile`` make target has dependencies on both (1) the Verilog that is e and (2) the mapping of memory instances in the design to SRAM macros; all files related to these two steps reside in the ``generated-src/chipyard.harness.TestHarness.TinyRocketConfig-ChipTop`` directory. Note that the files in ``generated-src`` vary for each tool/technology flow. -This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows -(due to the ``ENABLE_YOSYS_FLOW`` flag present for the OpenROAD flow), so these flows should be run in separate +This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows, so these flows should be run in separate chipyard installations. If the wrong sources are generated, simply run ``make buildfile -B`` to rebuild all targets correctly. diff --git a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst index f9bbbffb..0c138d66 100644 --- a/docs/VLSI/Sky130-OpenROAD-Tutorial.rst +++ b/docs/VLSI/Sky130-OpenROAD-Tutorial.rst @@ -49,7 +49,7 @@ Prerequisites * OpenROAD flow tools (NOTE: tutorial may break with different tool versions): * **Yosys 0.27+3** (synthesis), install `using conda `__ or `from source `__ - * **OpenROAD v2.0-7070-g0264023b6** (place-and-route), install `using conda `__ (note that GUI is disabled in conda package) or + * **OpenROAD v2.0-7070-g0264023b6** (place-and-route), install `using conda `__ (note that GUI is disabled in conda package) or `from source `__ (git hash: 0264023b6c2a8ae803b8d440478d657387277d93) * **KLayout 0.28.5** (DEF to GDSII conversion, DRC), install `using conda `__ or `from source `__ * **Magic 8.3.376** (DRC), install `using conda `__ or `from source `__ @@ -161,8 +161,7 @@ The ``buildfile`` make target has dependencies on both (1) the Verilog that is e and (2) the mapping of memory instances in the design to SRAM macros; all files related to these two steps reside in the ``generated-src/chipyard.harness.TestHarness.TinyRocketConfig-ChipTop`` directory. Note that the files in ``generated-src`` vary for each tool/technology flow. -This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows -(due to the ``ENABLE_YOSYS_FLOW`` flag, explained below), so these flows should be run in separate +This especially applies to the Sky130 Commercial vs OpenROAD tutorial flows, so these flows should be run in separate chipyard installations. If the wrong sources are generated, simply run ``make buildfile -B`` to rebuild all targets correctly. @@ -175,7 +174,6 @@ which will cause additional variables to be set in ``tutorial.mk``, a few of whi * ``DESIGN_CONF`` and ``EXTRA_CONFS`` allow for additonal design-specific overrides of the Hammer IR in ``example-sky130.yml`` * ``VLSI_OBJ_DIR=build-sky130-openroad`` gives the build directory a unique name to allow running multiple flows in the same repo. Note that for the rest of the tutorial we will still refer to this directory in file paths as ``build``, again for brevity. * ``VLSI_TOP`` is by default ``ChipTop``, which is the name of the top-level Verilog module generated in the Chipyard SoC configs. By instead setting ``VLSI_TOP=Rocket``, we can use the Rocket core as the top-level module for the VLSI flow, which consists only of a single RISC-V core (and no caches, peripherals, buses, etc). This is useful to run through this tutorial quickly, and does not rely on any SRAMs. -* ``ENABLE_YOSYS_FLOW = 1`` is required for synthesis through Yosys. This reverts to the Scala FIRRTL Compiler so that unsupported multidimensional arrays are not generated in the Verilog. Running the VLSI Flow --------------------- @@ -275,7 +273,7 @@ This is because Magic and Netgen, as of the writing of this tutorial, do not hav so to view the DRC/LVS results for debugging you must launch the tool interactively, then run DRC/LVS checks, which is done by the ``generated-scripts/view_[drc|lvs]`` scripts. This is not the case for KLayout, which does have a loadable database format. -Below is the window you should see when loading the KLayout DRC results interactively. Note that most of these DRC errors are +Below is the window you should see when loading the KLayout DRC results interactively. Note that most of these DRC errors are from special rules relating to Sky130 SRAMs, which have been verified separately. In the future the KLayout tool plugin should blackbox these SRAM macros by default, but this feature does not exist yet. diff --git a/vlsi/example-designs/sky130-openroad-rockettile.yml b/vlsi/example-designs/sky130-openroad-rockettile.yml index c7300f9b..7db35c9b 100644 --- a/vlsi/example-designs/sky130-openroad-rockettile.yml +++ b/vlsi/example-designs/sky130-openroad-rockettile.yml @@ -22,8 +22,6 @@ vlsi.inputs.placement_constraints: bottom: 10 # Place SRAM memory instances - # SRAM paths and configurations are slightly different due to ENABLE_YOSYS_FLOW flag - # data cache - path: "RocketTile/dcache/data/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 diff --git a/vlsi/example-designs/sky130-openroad.yml b/vlsi/example-designs/sky130-openroad.yml index 33f01cad..3b95d982 100644 --- a/vlsi/example-designs/sky130-openroad.yml +++ b/vlsi/example-designs/sky130-openroad.yml @@ -54,8 +54,6 @@ vlsi.inputs.placement_constraints: bottom: 10 # Place SRAM memory instances - # SRAM paths and configurations are slightly different due to ENABLE_YOSYS_FLOW flag - # data cache - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 diff --git a/vlsi/tutorial.mk b/vlsi/tutorial.mk index 92ba0a98..ddafd80f 100644 --- a/vlsi/tutorial.mk +++ b/vlsi/tutorial.mk @@ -39,7 +39,4 @@ ifeq ($(tutorial),sky130-openroad) example-designs/sky130-openroad-rockettile.yml, ) VLSI_OBJ_DIR ?= build-sky130-openroad INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) - # Yosys compatibility for CIRCT-generated Verilog, at the expense of elaboration time. - ENABLE_YOSYS_FLOW = 1 endif - From 94b52baad1bfaaf38f6406edad4fb3be1a71161e Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 14 Dec 2023 11:20:02 -0800 Subject: [PATCH 117/184] Add comments on sbus noc-configs --- generators/chipyard/src/main/scala/config/NoCConfigs.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index 166050c7..3e2f5541 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -188,6 +188,7 @@ class SharedNoCConfig extends Config( ) // DOC include end: SharedNoCConfig +// This Config implements a simple ring interconnect for the system bus class SbusRingNoCConfig extends Config( new constellation.soc.WithSbusNoC(constellation.protocol.SplitACDxBETLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( @@ -221,6 +222,8 @@ class SbusRingNoCConfig extends Config( new chipyard.config.AbstractConfig ) +// This config integrates a mesh interconnect for the system bus, and divides the system bus +// tilelink messages across two isolated interconnects class SbusMeshNoCConfig extends Config( new constellation.soc.WithSbusNoC(constellation.protocol.SplitACDxBETLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( From cfa22d1a51da3732750b96ee41026e084191ddfc Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 14 Dec 2023 11:20:56 -0800 Subject: [PATCH 118/184] Bump constellation --- generators/constellation | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/constellation b/generators/constellation index 4eb05203..3632183f 160000 --- a/generators/constellation +++ b/generators/constellation @@ -1 +1 @@ -Subproject commit 4eb052037d00606f9642b8341f051a73b3e84aa0 +Subproject commit 3632183fd1171d00c7f78b32c305841d231031b7 From 42622919cd4833a20db2d36d1646a313a34fe966 Mon Sep 17 00:00:00 2001 From: Nayiri Date: Thu, 14 Dec 2023 18:02:32 -0800 Subject: [PATCH 119/184] fixing macro paths for yosys with circt generated verilog [skip ci] --- .../sky130-openroad-rockettile.yml | 19 +++++-------------- vlsi/example-sky130.yml | 5 +++++ vlsi/tutorial.mk | 2 ++ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/vlsi/example-designs/sky130-openroad-rockettile.yml b/vlsi/example-designs/sky130-openroad-rockettile.yml index 7db35c9b..4a6b664c 100644 --- a/vlsi/example-designs/sky130-openroad-rockettile.yml +++ b/vlsi/example-designs/sky130-openroad-rockettile.yml @@ -22,25 +22,16 @@ vlsi.inputs.placement_constraints: bottom: 10 # Place SRAM memory instances - - path: "RocketTile/dcache/data/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" + # data cache + - path: "RocketTile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_0_0" type: hardmacro x: 50 y: 50 orientation: r90 - - path: "RocketTile/dcache/data/data_arrays_0_1/data_arrays_0_0_ext/mem_0_0" + - path: "RocketTile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_1_0" type: hardmacro x: 50 - y: 450 - orientation: r90 - - path: "RocketTile/dcache/data/data_arrays_0_2/data_arrays_0_0_ext/mem_0_0" - type: hardmacro - x: 50 - y: 850 - orientation: r90 - - path: "RocketTile/dcache/data/data_arrays_0_3/data_arrays_0_0_ext/mem_0_0" - type: hardmacro - x: 50 - y: 1250 + y: 800 orientation: r90 # tag array @@ -51,7 +42,7 @@ vlsi.inputs.placement_constraints: orientation: r90 # instruction cache - - path: "RocketTile/frontend/icache/data_arrays_0_0/data_arrays_0_0_0_ext/mem_0_0" + - path: "RocketTile/frontend/icache/data_arrays_0_0/data_arrays_0_0_ext/mem_0_0" type: hardmacro x: 50 y: 2100 diff --git a/vlsi/example-sky130.yml b/vlsi/example-sky130.yml index 1cd281f7..1e3faf1c 100644 --- a/vlsi/example-sky130.yml +++ b/vlsi/example-sky130.yml @@ -48,6 +48,11 @@ vlsi.inputs.placement_constraints: x: 50 y: 50 orientation: r90 + - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/dcache/data/data_arrays_0/data_arrays_0_ext/mem_1_0" + type: hardmacro + x: 50 + y: 800 + orientation: r90 # tag array - path: "ChipTop/system/tile_prci_domain/tile_reset_domain_tile/frontend/icache/tag_array_0/tag_array_0_ext/mem_0_0" diff --git a/vlsi/tutorial.mk b/vlsi/tutorial.mk index ddafd80f..5e57455f 100644 --- a/vlsi/tutorial.mk +++ b/vlsi/tutorial.mk @@ -39,4 +39,6 @@ ifeq ($(tutorial),sky130-openroad) example-designs/sky130-openroad-rockettile.yml, ) VLSI_OBJ_DIR ?= build-sky130-openroad INPUT_CONFS ?= $(TOOLS_CONF) $(TECH_CONF) $(DESIGN_CONFS) $(EXTRA_CONFS) + # Yosys compatibility for CIRCT-generated Verilog + ENABLE_YOSYS_FLOW = 1 endif From d828879a7dd4612557673dccce5e7828b3039cca Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 13:23:47 -0800 Subject: [PATCH 120/184] Add CanHaveClockTap --- .../chipyard/src/main/scala/DigitalTop.scala | 1 + .../main/scala/clocking/CanHaveClockTap.scala | 26 +++++++++++++++++++ .../src/main/scala/iobinders/Ports.scala | 3 +++ 3 files changed, 30 insertions(+) create mode 100644 generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala diff --git a/generators/chipyard/src/main/scala/DigitalTop.scala b/generators/chipyard/src/main/scala/DigitalTop.scala index d7263008..7e73866c 100644 --- a/generators/chipyard/src/main/scala/DigitalTop.scala +++ b/generators/chipyard/src/main/scala/DigitalTop.scala @@ -33,6 +33,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem with chipyard.example.CanHavePeripheryStreamingPassthrough // Enables optionally adding the DSPTools streaming-passthrough example widget with nvidia.blocks.dla.CanHavePeripheryNVDLA // Enables optionally having an NVDLA with chipyard.clocking.HasChipyardPRCI // Use Chipyard reset/clock distribution + with chipyard.clocking.CanHaveClockTap // Enables optionally adding a clock tap output port with fftgenerator.CanHavePeripheryFFT // Enables optionally having an MMIO-based FFT block with constellation.soc.CanHaveGlobalNoC // Support instantiating a global NoC interconnect { diff --git a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala new file mode 100644 index 00000000..798dfda8 --- /dev/null +++ b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala @@ -0,0 +1,26 @@ +package chipyard.clocking + +import chisel3._ + +import org.chipsalliance.cde.config.{Parameters, Field, Config} +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.tilelink._ +import freechips.rocketchip.subsystem._ +import freechips.rocketchip.util._ +import freechips.rocketchip.tile._ +import freechips.rocketchip.prci._ + +case class ClockTapParams( + busWhere: TLBusWrapperLocation = SBUS, // by default, tap the sbus clock as a debug clock + divider: Int = 16, // a fixed clock division ratio for the clock tap +) + +case object ClockTapKey extends Field[Option[ClockTapParams]](Some(ClockTapParams())) + +trait CanHaveClockTap { this: BaseSubsystem => + val clockTapNode = p(ClockTapKey).map { tapParams => + val clockTap = ClockSinkNode(Seq(ClockSinkParameters(name=Some("clock_tap")))) + val clockTapDivider = LazyModule(new ClockDivider(tapParams.divider)) + clockTap := clockTapDivider.node := locateTLBusWrapper(tapParams.busWhere).fixedClockNode + } +} diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index c5c9f19e..867efdfd 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -86,6 +86,9 @@ case class CustomBootPort (val getIO: () => Bool) case class ClockPort (val getIO: () => Clock, val freqMHz: Double) extends Port[Clock] +case class ClockTapPort (val getIO: () => Clock) + extends Port[Clock] + case class ResetPort (val getIO: () => AsyncReset) extends Port[Reset] From 1d05eda438f43371b153081a5279ea42365189a6 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 13:53:11 -0800 Subject: [PATCH 121/184] Add debug Clock Tap IO --- .../src/main/scala/clocking/CanHaveClockTap.scala | 6 ++++++ .../src/main/scala/clocking/ClockBinders.scala | 11 ++++++++++- .../src/main/scala/config/AbstractConfig.scala | 7 ++++--- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala index 798dfda8..0bf7242b 100644 --- a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala +++ b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala @@ -22,5 +22,11 @@ trait CanHaveClockTap { this: BaseSubsystem => val clockTap = ClockSinkNode(Seq(ClockSinkParameters(name=Some("clock_tap")))) val clockTapDivider = LazyModule(new ClockDivider(tapParams.divider)) clockTap := clockTapDivider.node := locateTLBusWrapper(tapParams.busWhere).fixedClockNode + clockTap } + val clockTapIO = clockTapNode.map { node => InModuleBody { + val clock_tap = IO(Output(Clock())) + clock_tap := node.in.head._1.clock + clock_tap + }} } diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala index 36d1fa2f..0a5c09e7 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ import chisel3.util._ -import chipyard.iobinders.{OverrideLazyIOBinder, GetSystemParameters, IOCellKey, ClockPort, ResetPort} +import chipyard.iobinders._ import freechips.rocketchip.prci._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.subsystem._ @@ -119,3 +119,12 @@ class WithPassthroughClockGenerator extends OverrideLazyIOBinder({ } } }) + +class WithClockTapIOCells extends OverrideIOBinder({ + (system: CanHaveClockTap) => { + system.clockTapIO.map { tap => + val (clock_tap_io, clock_tap_cell) = IOCell.generateIOFromSignal(tap.getWrappedValue, "clock_tap") + (Seq(ClockTapPort(() => clock_tap_io)), clock_tap_cell) + }.getOrElse((Nil, Nil)) + } +}) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index a08abb6d..43cfc110 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -51,9 +51,10 @@ class AbstractConfig extends Config( new chipyard.iobinders.WithUARTTSIPunchthrough ++ new chipyard.iobinders.WithNMITiedOff ++ - // By default, punch out IOs to the Harness - new chipyard.clocking.WithPassthroughClockGenerator ++ - new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", Seq("sbus", "mbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ + new chipyard.clocking.WithClockTapIOCells ++ // Default generate a clock tapio + new chipyard.clocking.WithPassthroughClockGenerator ++ // Default punch out IOs to the Harness + new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", // Default merge all the bus clocks + Seq("sbus", "mbus", "pbus", "fbus", "cbus", "implicit"), Seq("tile"))) ++ new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Default 500 MHz pbus new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Default 500 MHz mbus From c5921ddef2f608c60eaab34250a1d56c35e2a520 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 15:50:34 -0800 Subject: [PATCH 122/184] Bump rocket-chip --- generators/rocket-chip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/rocket-chip b/generators/rocket-chip index 59e86fd2..562ab170 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit 59e86fd2ba98b02a763dad2bd51b6324671ca2b1 +Subproject commit 562ab1709f37a7e9cb4d52120cd3fe20d436e1f0 From b37b6b0d9be64722c9c79d010c12886fbbceed93 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 15:51:04 -0800 Subject: [PATCH 123/184] Remove clock tap from firesim designs --- .../src/main/scala/config/fragments/ClockingFragments.scala | 4 ++++ generators/firechip/src/main/scala/TargetConfigs.scala | 3 +++ 2 files changed, 7 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 567cc2f7..65b73015 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -122,3 +122,7 @@ class WithNoTileResetSetters extends Config((site, here, up) => { class WithNoResetSynchronizers extends Config((site, here, up) => { case ChipyardPRCIControlKey => up(ChipyardPRCIControlKey).copy(enableResetSynchronizers = false) }) + +class WithNoClockTap extends Config((site, here, up) => { + case ClockTapKey => None +}) diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 16d5281b..cf0ed66e 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -84,6 +84,7 @@ class WithMinimalFireSimDesignTweaks extends Config( new chipyard.harness.WithHarnessBinderClockFreqMHz(1000.0) ++ new chipyard.harness.WithClockFromHarness ++ new chipyard.harness.WithResetFromHarness ++ + new chipyard.config.WithNoClockTap ++ new chipyard.clocking.WithPassthroughClockGenerator ++ // Required*: When using FireSim-as-top to provide a correct path to the target bootrom source new WithBootROM ++ @@ -98,6 +99,8 @@ class WithMinimalFireSimDesignTweaks extends Config( // Non-frequency tweaks that are generally applied to all firesim configs class WithFireSimDesignTweaks extends Config( new WithMinimalFireSimDesignTweaks ++ + // Required: Remove the debug clock tap, this breaks compilation of target-level sim in FireSim + new chipyard.config.WithNoClockTap ++ // Required: Bake in the default FASED memory model new WithDefaultMemModel ++ // Optional: reduce the width of the Serial TL interface From 93d7c511f90708c1f154b089e76f9d8e830cf61f Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 16:10:46 -0800 Subject: [PATCH 124/184] replace-content.py should use python3 explicitly --- scripts/replace-content.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/replace-content.py b/scripts/replace-content.py index 4699ccca..a20acaa8 100755 --- a/scripts/replace-content.py +++ b/scripts/replace-content.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Replace text in a file given a key identifying a block to replace. # If the file doesn't exist, create it. From 7c8de34904bd40361bcf3bf9a85c736c5229fa4d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 15 Dec 2023 17:20:48 -0800 Subject: [PATCH 125/184] Use Chipyard's hardfloat --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index c3be6161..47b3dbba 100644 --- a/build.sbt +++ b/build.sbt @@ -95,7 +95,7 @@ lazy val chiselSettings = Seq( // -- Rocket Chip -- -lazy val hardfloat = freshProject("hardfloat", rocketChipDir / "hardfloat/hardfloat") +lazy val hardfloat = freshProject("hardfloat", file("generators/hardfloat/hardfloat")) .settings(chiselSettings) .dependsOn(midasTargetUtils) .settings(commonSettings) From 2e778675777848e20d6b3f49a1fd498989fbf140 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 16 Dec 2023 12:24:22 -0800 Subject: [PATCH 126/184] [ci skip] Add inline comments on some of the clocking fragments --- .../src/main/scala/config/fragments/ClockingFragments.scala | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 65b73015..eddcb803 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -111,18 +111,22 @@ class WithOffchipBusFrequency(freqMHz: Double) extends Config((site, here, up) = class WithRationalMemoryBusCrossing extends WithSbusToMbusCrossingType(RationalCrossing(Symmetric)) class WithAsynchrousMemoryBusCrossing extends WithSbusToMbusCrossingType(AsynchronousCrossing()) +// Remove the tile clock gaters in this system class WithNoTileClockGaters extends Config((site, here, up) => { case ChipyardPRCIControlKey => up(ChipyardPRCIControlKey).copy(enableTileClockGating = false) }) +// Remove the tile reset control blocks in this system class WithNoTileResetSetters extends Config((site, here, up) => { case ChipyardPRCIControlKey => up(ChipyardPRCIControlKey).copy(enableTileResetSetting = false) }) +// Remove the global reset synchronizers in this system class WithNoResetSynchronizers extends Config((site, here, up) => { case ChipyardPRCIControlKey => up(ChipyardPRCIControlKey).copy(enableResetSynchronizers = false) }) +// Remove any ClockTap ports in this system class WithNoClockTap extends Config((site, here, up) => { case ClockTapKey => None }) From d1822c04e27aa2b1e5e5629eac4db7a5ce0f3fd2 Mon Sep 17 00:00:00 2001 From: joey0320 Date: Mon, 11 Dec 2023 17:06:00 -0800 Subject: [PATCH 127/184] Bump spike --- toolchains/riscv-tools/riscv-isa-sim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolchains/riscv-tools/riscv-isa-sim b/toolchains/riscv-tools/riscv-isa-sim index 5a499ef7..4d8651be 160000 --- a/toolchains/riscv-tools/riscv-isa-sim +++ b/toolchains/riscv-tools/riscv-isa-sim @@ -1 +1 @@ -Subproject commit 5a499ef718bba2fc323e9771ebd7545c66825ff6 +Subproject commit 4d8651be943ea706eb8dcb3443add2e7ccc117a6 From 6bf915a89c9861cba3fc965f47a58f6d1cb4d796 Mon Sep 17 00:00:00 2001 From: joey0320 Date: Mon, 11 Dec 2023 17:11:45 -0800 Subject: [PATCH 128/184] Add spike-devices as a submodule --- .gitmodules | 3 +++ docs/Software/Spike.rst | 21 ++++++++++++++++ .../src/main/resources/csrc/spiketile.cc | 25 ++++++++++--------- generators/testchipip | 2 +- scripts/build-toolchain-extra.sh | 6 +++++ toolchains/riscv-tools/riscv-spike-devices | 1 + 6 files changed, 45 insertions(+), 13 deletions(-) create mode 160000 toolchains/riscv-tools/riscv-spike-devices diff --git a/.gitmodules b/.gitmodules index db0837ec..e1768873 100644 --- a/.gitmodules +++ b/.gitmodules @@ -142,3 +142,6 @@ [submodule "tools/install-circt"] path = tools/install-circt url = https://github.com/circt/install-circt/ +[submodule "toolchains/riscv-tools/riscv-spike-devices"] + path = toolchains/riscv-tools/riscv-spike-devices + url = https://github.com/ucb-bar/spike-devices.git diff --git a/docs/Software/Spike.rst b/docs/Software/Spike.rst index e9abe0c0..10fa8429 100644 --- a/docs/Software/Spike.rst +++ b/docs/Software/Spike.rst @@ -50,3 +50,24 @@ Spike-as-a-Tile can be configured with custom IPC, commit logging, and other beh * ``+spike-fast-clint``: Enables fast-forwarding through WFI stalls by generating fake timer interrupts * ``+spike-debug``: Enables debug Spike logging * ``+spike-verbose``: Enables Spike commit-log generation + +Adding a new spike device model +------------------------------- + +Spike comes with a few functional device models such as UART, CLINT, and PLIC. +However, you may want to add custom device models into Spike such as a block device. +Example devices are in the ``toolchains/riscv-tools/riscv-spike-devices`` directory. +These devices are compiled as a shared library that can be dynamically linked to Spike. + +To compile these plugins, run ``make`` inside ``toolchains/riscv-tools/riscv-spike-devices``. This will generate a ``libspikedevices.so``. + +To hook up a block device to spike and provide a default image to initialize the block device, run + +.. code-block:: shell + + spike --extlib=libspikedevices.so --device="iceblk,img=" + +. + +The ``--device`` option consists of the device name and arguments. +In the above example ``iceblk`` is the device name and ``img=`` is the argument passed on to the plugin device. diff --git a/generators/chipyard/src/main/resources/csrc/spiketile.cc b/generators/chipyard/src/main/resources/csrc/spiketile.cc index 3b14079b..5483cf6b 100644 --- a/generators/chipyard/src/main/resources/csrc/spiketile.cc +++ b/generators/chipyard/src/main/resources/csrc/spiketile.cc @@ -447,18 +447,6 @@ chipyard_simif_t::chipyard_simif_t(size_t icache_ways, use_stq(false), htif(nullptr), fast_clint(false), - cfg(std::make_pair(0, 0), - nullptr, - isastr, - "MSU", - "vlen:128,elen:64", - false, - endianness_little, - pmpregions, - std::vector(), - std::vector(), - false, - 0), accessed_tofrom_host(false), icache_ways(icache_ways), icache_sets(icache_sets), @@ -470,6 +458,19 @@ chipyard_simif_t::chipyard_simif_t(size_t icache_ways, mmio_inflight(false) { + cfg.initrd_bounds = std::make_pair(0, 0); + cfg.bootargs = nullptr; + cfg.isa = isastr; + cfg.priv = "MSU"; + cfg.varch = "vlen:128,elen:64"; + cfg.misaligned = false; + cfg.endianness = endianness_little; + cfg.pmpregions = pmpregions; + cfg.mem_layout = std::vector(); + cfg.hartids = std::vector(); + cfg.explicit_hartids = false; + cfg.trigger_count = 0; + icache.resize(icache_ways); for (auto &w : icache) { w.resize(icache_sets); diff --git a/generators/testchipip b/generators/testchipip index c4c0774f..7e075b9c 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit c4c0774f5ff7a407dd81e5f0b4289a2fdd9e8d63 +Subproject commit 7e075b9cf63da626234dc22fda45ac9f1e82ffbc diff --git a/scripts/build-toolchain-extra.sh b/scripts/build-toolchain-extra.sh index cc69ae1d..28cc9dfa 100755 --- a/scripts/build-toolchain-extra.sh +++ b/scripts/build-toolchain-extra.sh @@ -125,4 +125,10 @@ cd generators/testchipip/uart_tsi make cp uart_tsi $RISCV/bin +echo '==> Installing spike-devices' +cd $RDIR +git submodule update --init toolchains/riscv-tools/riscv-spike-devices +cd toolchains/riscv-tools/riscv-spike-devices +make install + echo "Extra Toolchain Utilities/Tests Build Complete!" diff --git a/toolchains/riscv-tools/riscv-spike-devices b/toolchains/riscv-tools/riscv-spike-devices new file mode 160000 index 00000000..8b4836db --- /dev/null +++ b/toolchains/riscv-tools/riscv-spike-devices @@ -0,0 +1 @@ +Subproject commit 8b4836db0b5b4ed0a9bab34e7707fe40c7c014be From ba7f3c21c8d106fe19765029d32c273ec124cde2 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Sun, 17 Dec 2023 23:22:49 -0800 Subject: [PATCH 129/184] ADD: bump fpga-shell --- fpga/fpga-shells | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/fpga-shells b/fpga/fpga-shells index 2ce3e6f3..a6cfb6f3 160000 --- a/fpga/fpga-shells +++ b/fpga/fpga-shells @@ -1 +1 @@ -Subproject commit 2ce3e6f3df06d64c858bc1073ba1c75e7eb71a07 +Subproject commit a6cfb6f36378de7b0fd760d79f5518af7d2bba66 From 8067bd061b2e053ebdd9b736b11dcf93fd9b4619 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 18 Dec 2023 13:44:39 -0800 Subject: [PATCH 130/184] Remove help text on nonexistent bmark_timeout_cycles --- variables.mk | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/variables.mk b/variables.mk index fcda57ef..71651bb2 100644 --- a/variables.mk +++ b/variables.mk @@ -29,8 +29,7 @@ HELP_SIMULATION_VARIABLES = \ " LOADMEM = riscv elf binary that should be loaded directly into simulated DRAM. LOADMEM=1 will load the BINARY elf" \ " LOADARCH = path to a architectural checkpoint directory that should end in .loadarch/, for restoring from a checkpoint" \ " VERBOSE_FLAGS = flags used when doing verbose simulation [$(VERBOSE_FLAGS)]" \ -" timeout_cycles = number of clock cycles before simulator times out, defaults to 10000000" \ -" bmark_timeout_cycles = number of clock cycles before benchmark simulator times out, defaults to 100000000" +" timeout_cycles = number of clock cycles before simulator times out, defaults to 10000000" # include default simulation rules HELP_COMMANDS = \ From 4d928c3c14d94723b40f870d74e117ee1635c0a1 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 18 Dec 2023 13:47:48 -0800 Subject: [PATCH 131/184] Rename timeout_cycles to TIMEOUT_CYCLES to match convention --- variables.mk | 15 ++++++++++----- vlsi/power.mk | 2 +- vlsi/sim.mk | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/variables.mk b/variables.mk index 71651bb2..dc3483ae 100644 --- a/variables.mk +++ b/variables.mk @@ -29,7 +29,7 @@ HELP_SIMULATION_VARIABLES = \ " LOADMEM = riscv elf binary that should be loaded directly into simulated DRAM. LOADMEM=1 will load the BINARY elf" \ " LOADARCH = path to a architectural checkpoint directory that should end in .loadarch/, for restoring from a checkpoint" \ " VERBOSE_FLAGS = flags used when doing verbose simulation [$(VERBOSE_FLAGS)]" \ -" timeout_cycles = number of clock cycles before simulator times out, defaults to 10000000" +" TIMEOUT_CYCLES = number of clock cycles before simulator times out, defaults to 10000000" # include default simulation rules HELP_COMMANDS = \ @@ -274,7 +274,7 @@ PERMISSIVE_ON=+permissive PERMISSIVE_OFF=+permissive-off BINARY ?= BINARIES ?= -override SIM_FLAGS += +dramsim +dramsim_ini_dir=$(TESTCHIP_DIR)/src/main/resources/dramsim2_ini +max-cycles=$(timeout_cycles) +override SIM_FLAGS += +dramsim +dramsim_ini_dir=$(TESTCHIP_DIR)/src/main/resources/dramsim2_ini +max-cycles=$(TIMEOUT_CYCLES) VERBOSE_FLAGS ?= +verbose # get_out_name is a function, 1st argument is the binary get_out_name = $(subst $() $(),_,$(notdir $(basename $(1)))) @@ -300,7 +300,12 @@ build_dir =$(gen_dir)/$(long_name) GEN_COLLATERAL_DIR ?=$(build_dir)/gen-collateral ######################################################################################### -# assembly/benchmark variables +# simulation variables ######################################################################################### -timeout_cycles = 10000000 -bmark_timeout_cycles = 100000000 +TIMEOUT_CYCLES = 10000000 + +# legacy timeout_cycles handling +timeout_cycles ?= +ifneq ($(timeout_cycles),) +TIMEOUT_CYCLES=$(timeout_cycles) +endif diff --git a/vlsi/power.mk b/vlsi/power.mk index ff1c1729..c006d338 100644 --- a/vlsi/power.mk +++ b/vlsi/power.mk @@ -23,7 +23,7 @@ endif endif echo " start_times: ['0ns']" >> $@ echo " end_times: [" >> $@ - echo " '`bc <<< $(timeout_cycles)*$(CLOCK_PERIOD)`ns'" >> $@ + echo " '`bc <<< $(TIMEOUT_CYCLES)*$(CLOCK_PERIOD)`ns'" >> $@ echo " ]" >> $@ $(POWER_RTL_CONF): $(VLSI_RTL) diff --git a/vlsi/sim.mk b/vlsi/sim.mk index 1da6f0bc..f5ff85ff 100644 --- a/vlsi/sim.mk +++ b/vlsi/sim.mk @@ -64,7 +64,7 @@ endif echo " execution_flags_meta: 'append'" >> $@ echo " saif.mode: 'time'" >> $@ echo " saif.start_time: '0ns'" >> $@ - echo " saif.end_time: '`bc <<< $(timeout_cycles)*$(CLOCK_PERIOD)`ns'" >> $@ + echo " saif.end_time: '`bc <<< $(TIMEOUT_CYCLES)*$(CLOCK_PERIOD)`ns'" >> $@ ifndef USE_VPD echo " options:" >> $@ echo ' - "-kdb"' >> $@ From e8f89d228ceb4e4c6311648a654157265898cf33 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 18 Dec 2023 09:31:42 -0800 Subject: [PATCH 132/184] Move CIRCT install to its own step in build-setup script --- scripts/build-setup.sh | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 9d79735a..d3a66ca6 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -29,7 +29,8 @@ usage() { echo " 7. FireSim pre-compile sources" echo " 8. FireMarshal" echo " 9. FireMarshal pre-compile default buildroot Linux sources" - echo " 10. Runs repository clean-up" + echo " 10. Install CIRCT" + echo " 11. Runs repository clean-up" echo "" echo "**See below for options to skip parts of the setup. Skipping parts of the setup is not guaranteed to be tested/working.**" echo "" @@ -152,16 +153,6 @@ if run_step "1"; then conda activate $CYDIR/.conda-env exit_if_last_command_failed - # install circt into conda - git submodule update --init $CYDIR/tools/install-circt && - $CYDIR/tools/install-circt/bin/download-release-or-nightly-circt.sh \ - -f circt-full-shared-linux-x64.tar.gz \ - -i $CONDA_PREFIX \ - -v version-file \ - -x $CYDIR/conda-reqs/circt.json \ - -g null - exit_if_last_command_failed - # Conda Setup # Provide a sourceable snippet that can be used in subshells that may not have # inhereted conda functions that would be brought in under a login shell that @@ -273,8 +264,31 @@ if run_step "8"; then popd fi -# do misc. cleanup for a "clean" git status if run_step "10"; then + # install circt into conda + if run_step "1"; then + PREFIX=$CONDA_PREFIX/$TOOLCHAIN_TYPE + else + if [ -z "$RISCV" ] ; then + error "ERROR: If conda initialization skipped, \$RISCV variable must be defined." + exit 1 + fi + PREFIX=$RISCV + fi + + git submodule update --init $CYDIR/tools/install-circt && + $CYDIR/tools/install-circt/bin/download-release-or-nightly-circt.sh \ + -f circt-full-shared-linux-x64.tar.gz \ + -i $PREFIX \ + -v version-file \ + -x $CYDIR/conda-reqs/circt.json \ + -g null + exit_if_last_command_failed +fi + + +# do misc. cleanup for a "clean" git status +if run_step "11"; then begin_step "10" "Cleaning up repository" $CYDIR/scripts/repo-clean.sh exit_if_last_command_failed From 4b9e9dacbcd4618926448f9787e4818df09bbbc0 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 18 Dec 2023 09:23:42 -0800 Subject: [PATCH 133/184] Move clock tap to its own async domain --- .../src/main/scala/clocking/CanHaveClockTap.scala | 13 ++++--------- .../src/main/scala/config/AbstractConfig.scala | 2 +- .../src/main/scala/config/RocketConfigs.scala | 2 +- .../scala/config/fragments/ClockingFragments.scala | 2 +- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala index 0bf7242b..5d0ce538 100644 --- a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala +++ b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala @@ -10,18 +10,13 @@ import freechips.rocketchip.util._ import freechips.rocketchip.tile._ import freechips.rocketchip.prci._ -case class ClockTapParams( - busWhere: TLBusWrapperLocation = SBUS, // by default, tap the sbus clock as a debug clock - divider: Int = 16, // a fixed clock division ratio for the clock tap -) - -case object ClockTapKey extends Field[Option[ClockTapParams]](Some(ClockTapParams())) +case object ClockTapKey extends Field[Boolean](true) trait CanHaveClockTap { this: BaseSubsystem => - val clockTapNode = p(ClockTapKey).map { tapParams => + require(p(SubsystemDriveAsyncClockGroupsKey).isEmpty, "Subsystem asyncClockGroups must be undriven") + val clockTapNode = Option.when(p(ClockTapKey)) { val clockTap = ClockSinkNode(Seq(ClockSinkParameters(name=Some("clock_tap")))) - val clockTapDivider = LazyModule(new ClockDivider(tapParams.divider)) - clockTap := clockTapDivider.node := locateTLBusWrapper(tapParams.busWhere).fixedClockNode + clockTap := ClockGroup() := asyncClockGroupsNode clockTap } val clockTapIO = clockTapNode.map { node => InModuleBody { diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 96794546..2e34f19c 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -54,7 +54,7 @@ class AbstractConfig extends Config( new chipyard.clocking.WithClockTapIOCells ++ // Default generate a clock tapio new chipyard.clocking.WithPassthroughClockGenerator ++ // Default punch out IOs to the Harness new chipyard.clocking.WithClockGroupsCombinedByName(("uncore", // Default merge all the bus clocks - Seq("sbus", "mbus", "pbus", "fbus", "cbus", "obus", "implicit"), Seq("tile"))) ++ + Seq("sbus", "mbus", "pbus", "fbus", "cbus", "obus", "implicit", "clock_tap"), Seq("tile"))) ++ new chipyard.config.WithPeripheryBusFrequency(500.0) ++ // Default 500 MHz pbus new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Default 500 MHz mbus new chipyard.config.WithControlBusFrequency(500.0) ++ // Default 500 MHz cbus diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index 929e8c59..3c0f66d7 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -60,7 +60,7 @@ class MulticlockRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNBigCores(1) ++ // Frequency specifications new chipyard.config.WithTileFrequency(1000.0) ++ // Matches the maximum frequency of U540 - new chipyard.clocking.WithClockGroupsCombinedByName(("uncore" , Seq("sbus", "cbus", "implicit"), Nil), + new chipyard.clocking.WithClockGroupsCombinedByName(("uncore" , Seq("sbus", "cbus", "implicit", "clock_tap"), Nil), ("periphery", Seq("pbus", "fbus"), Nil)) ++ new chipyard.config.WithSystemBusFrequency(500.0) ++ // Matches the maximum frequency of U540 new chipyard.config.WithMemoryBusFrequency(500.0) ++ // Matches the maximum frequency of U540 diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 8b061e5c..9869095f 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -130,5 +130,5 @@ class WithNoResetSynchronizers extends Config((site, here, up) => { // Remove any ClockTap ports in this system class WithNoClockTap extends Config((site, here, up) => { - case ClockTapKey => None + case ClockTapKey => false }) From 7e90fc3e5e0478aface52fc909b19c04d835c83a Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 18 Dec 2023 18:01:25 -0800 Subject: [PATCH 134/184] Disable JTAG reset synchronization for verilator CI --- generators/chipyard/src/main/scala/config/ChipConfigs.scala | 5 ++++- .../chipyard/src/main/scala/iobinders/IOBinders.scala | 6 ++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index e3d18375..e9b82223 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -110,5 +110,8 @@ class TetheredChipLikeRocketConfig extends Config( class VerilatorCITetheredChipLikeRocketConfig extends Config( new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ // use absolute freqs for sims in the harness new chipyard.harness.WithMultiChipSerialTL(0, 1) ++ // connect the serial-tl ports of the chips together - new chipyard.harness.WithMultiChip(0, new chipyard.config.WithNoResetSynchronizers ++ new ChipLikeRocketConfig) ++ + new chipyard.harness.WithMultiChip(0, + new chipyard.iobinders.WithDebugIOCells(syncReset = false) ++ + new chipyard.config.WithNoResetSynchronizers ++ + new ChipLikeRocketConfig) ++ new chipyard.harness.WithMultiChip(1, new ChipBringupHostConfig)) diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 7894ba51..9dde6544 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -275,7 +275,9 @@ class JTAGChipIO extends Bundle { val TDO = Output(Bool()) } -class WithDebugIOCells extends OverrideLazyIOBinder({ +// WARNING: Don't disable syncReset unless you are trying to +// get around bugs in RTL simulators +class WithDebugIOCells(syncReset: Boolean = true) extends OverrideLazyIOBinder({ (system: HasPeripheryDebug) => { implicit val p = GetSystemParameters(system) val tlbus = system.asInstanceOf[BaseSubsystem].locateTLBusWrapper(p(ExportDebug).slaveWhere) @@ -299,7 +301,7 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ d.disableDebug.foreach { d => d := false.B } // Drive JTAG on-chip IOs d.systemjtag.map { j => - j.reset := ResetCatchAndSync(j.jtag.TCK, clockBundle.reset.asBool) + j.reset := (if (syncReset) ResetCatchAndSync(j.jtag.TCK, clockBundle.reset.asBool) else clockBundle.reset.asBool) j.mfr_id := p(JtagDTMKey).idcodeManufId.U(11.W) j.part_number := p(JtagDTMKey).idcodePartNum.U(16.W) j.version := p(JtagDTMKey).idcodeVersion.U(4.W) From ca6f3d9fab8164d129eb6232cca8e1413117a061 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 09:10:19 -0800 Subject: [PATCH 135/184] Enabling disable all the PLLSelectorDivider features for Verilator CI This is to work-around Verilator's modeling of reset, which does not model a posedge reset as t=0 --- .../main/scala/clocking/ClockBinders.scala | 9 +++-- .../main/scala/clocking/TLClockDivider.scala | 38 +++++++++++++++---- .../main/scala/clocking/TLClockSelector.scala | 33 +++++++++++++--- .../src/main/scala/config/ChipConfigs.scala | 3 +- 4 files changed, 67 insertions(+), 16 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala index 0a5c09e7..76b26698 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -14,7 +14,10 @@ import barstools.iocell.chisel._ // blocks, which allow memory-mapped control of clock division, and clock muxing // between the FakePLL and the slow off-chip clock // Note: This will not simulate properly with firesim -class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ +// Unsetting enable will prevent the divider/selector from actually modifying the clock, +// while preserving the address map. Unsetting enable should only be done for RTL +// simulators (Verilator) which do not model reset properly +class WithPLLSelectorDividerClockGenerator(enable: Boolean = true) extends OverrideLazyIOBinder({ (system: HasChipyardPRCI) => { // Connect the implicit clock implicit val p = GetSystemParameters(system) @@ -30,8 +33,8 @@ class WithPLLSelectorDividerClockGenerator extends OverrideLazyIOBinder({ } val tlbus = system.asInstanceOf[BaseSubsystem].locateTLBusWrapper(system.prciParams.slaveWhere) val baseAddress = system.prciParams.baseAddress - val clockDivider = system.prci_ctrl_domain { LazyModule(new TLClockDivider (baseAddress + 0x20000, tlbus.beatBytes)) } - val clockSelector = system.prci_ctrl_domain { LazyModule(new TLClockSelector(baseAddress + 0x30000, tlbus.beatBytes)) } + val clockDivider = system.prci_ctrl_domain { LazyModule(new TLClockDivider (baseAddress + 0x20000, tlbus.beatBytes, enable=enable)) } + val clockSelector = system.prci_ctrl_domain { LazyModule(new TLClockSelector(baseAddress + 0x30000, tlbus.beatBytes, enable=enable)) } val pllCtrl = system.prci_ctrl_domain { LazyModule(new FakePLLCtrl (baseAddress + 0x40000, tlbus.beatBytes)) } clockDivider.tlNode := system.prci_ctrl_domain { TLFragmenter(tlbus.beatBytes, tlbus.blockBytes) := system.prci_ctrl_bus.get } diff --git a/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala index 45f9374d..e5597f06 100644 --- a/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala +++ b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala @@ -15,11 +15,27 @@ import testchipip._ // This module adds a TileLink memory-mapped clock divider to the clock graph // The output clock/reset pairs from this module should be synchronized later -class TLClockDivider(address: BigInt, beatBytes: Int, divBits: Int = 8)(implicit p: Parameters) extends LazyModule { +// If enable is unset, this will not divide the clock +// DO NOT unset enable for VLSI, or prototyping flows. The disable feature is a work around for +// some RTL simulators which do not simulate the reset synchronization properly +class TLClockDivider(address: BigInt, beatBytes: Int, divBits: Int = 8, enable: Boolean = true)(implicit p: Parameters) extends LazyModule { val device = new SimpleDevice(s"clk-div-ctrl", Nil) val clockNode = ClockGroupIdentityNode() val tlNode = TLRegisterNode(Seq(AddressSet(address, 4096-1)), device, "reg/control", beatBytes=beatBytes) + if (!enable) println(Console.RED + s""" + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +WARNING: + +YOU ARE USING THE TLCLOCKDIVIDER IN +"DISABLED" MODE. THIS SHOULD ONLY BE DONE +FOR RTL SIMULATION + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +""" + Console.RESET) + lazy val module = new LazyModuleImp(this) { require (clockNode.out.size == 1) val sources = clockNode.in.head._1.member.data.toSeq @@ -45,13 +61,21 @@ class TLClockDivider(address: BigInt, beatBytes: Int, divBits: Int = 8)(implicit // by setting divisor=0. The divisor signal into the ClockDividerOrPass is synchronized internally divider.io.divisor := Mux(busReset.asBool, 0.U, reg.io.q) divider.io.resetAsync := ResetStretcher(sources(i).clock, asyncReset, 20).asAsyncReset - sinks(i)._2.clock := divider.io.clockOut - // Note this is not synchronized to the output clock, which takes time to appear - // so this is still asyncreset - // Stretch the reset for 40 cycles, to give enough time to reset any downstream - // digital logic - sinks(i)._2.reset := ResetStretcher(sources(i).clock, asyncReset, 40).asAsyncReset + if (enable) { + sinks(i)._2.clock := divider.io.clockOut + + // Note this is not synchronized to the output clock, which takes time to appear + // so this is still asyncreset + // Stretch the reset for 40 cycles, to give enough time to reset any downstream + // digital logic + sinks(i)._2.reset := ResetStretcher(sources(i).clock, asyncReset, 40).asAsyncReset + } else { + // WARNING: THIS IS FOR RTL SIMULATION ONLY + sinks(i)._2.clock := sources(i).clock + sinks(i)._2.reset := sources(i).reset + } + reg } diff --git a/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala index 27870428..45405926 100644 --- a/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala +++ b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala @@ -21,12 +21,30 @@ case class ClockSelNode()(implicit valName: ValName) // This module adds a TileLink memory-mapped clock mux for each downstream clock domain // in the clock graph. The output clock/reset should be synchronized downstream -class TLClockSelector(address: BigInt, beatBytes: Int)(implicit p: Parameters) extends LazyModule { +// If enable is unset, this will always pass through the 0'th clock +// DO NOT unset enable for VLSI, or prototyping flows. The disable feature is a work around for +// some RTL simulators which do not simulate the reset synchronization properly +class TLClockSelector(address: BigInt, beatBytes: Int, enable: Boolean = true)(implicit p: Parameters) extends LazyModule { val device = new SimpleDevice("clk-sel-ctrl", Nil) val tlNode = TLRegisterNode(Seq(AddressSet(address, 4096-1)), device, "reg/control", beatBytes=beatBytes) val clockNode = ClockSelNode() + if (!enable) println(Console.RED + s""" + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +WARNING: + +YOU ARE USING THE TLCLOCKSELECTOR IN +"DISABLED" MODE. THIS SHOULD ONLY BE DONE +FOR RTL SIMULATION + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +""" + Console.RESET) + + + lazy val module = new LazyModuleImp(this) { val asyncReset = clockNode.in.map(_._1).map(_.reset).toSeq(0) val clocks = clockNode.in.map(_._1).map(_.clock) @@ -43,10 +61,15 @@ class TLClockSelector(address: BigInt, beatBytes: Int)(implicit p: Parameters) e val mux = testchipip.ClockMutexMux(clocks).suggestName(s"${sinkName}_clkmux") mux.io.sel := sel mux.io.resetAsync := asyncReset.asAsyncReset - sinks(i).clock := mux.io.clockOut - // Stretch the reset for 20 cycles, to give time to reset any downstream digital logic - sinks(i).reset := ResetStretcher(clocks(0), asyncReset, 20).asAsyncReset - + if (enable) { + sinks(i).clock := mux.io.clockOut + // Stretch the reset for 20 cycles, to give time to reset any downstream digital logic + sinks(i).reset := ResetStretcher(clocks(0), asyncReset, 20).asAsyncReset + } else { + // WARNING: THIS IS FOR RTL SIMULATION ONLY + sinks(i).clock := clocks(0) + sinks(i).reset := asyncReset + } reg } tlNode.regmap((0 until sinks.size).map { i => diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index e9b82223..526ea43a 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -110,7 +110,8 @@ class TetheredChipLikeRocketConfig extends Config( class VerilatorCITetheredChipLikeRocketConfig extends Config( new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ // use absolute freqs for sims in the harness new chipyard.harness.WithMultiChipSerialTL(0, 1) ++ // connect the serial-tl ports of the chips together - new chipyard.harness.WithMultiChip(0, + new chipyard.harness.WithMultiChip(0, // These fragments remove all troublesome + new chipyard.clocking.WithPLLSelectorDividerClockGenerator(enable=false) ++ // clocking features from the design new chipyard.iobinders.WithDebugIOCells(syncReset = false) ++ new chipyard.config.WithNoResetSynchronizers ++ new ChipLikeRocketConfig) ++ From 733bd3e7eaadd071e6e0f9653ebcaf33ef725636 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 12:03:50 -0800 Subject: [PATCH 136/184] Bump testchipip for more organized package --- generators/caliptra-aes-acc | 2 +- .../chipyard/src/main/scala/DigitalTop.scala | 16 ++++++------- .../chipyard/src/main/scala/Subsystem.scala | 2 +- .../main/scala/clocking/HasChipyardPRCI.scala | 3 ++- .../main/scala/clocking/TLClockDivider.scala | 4 ++-- .../main/scala/clocking/TLClockSelector.scala | 4 ++-- .../main/scala/config/AbstractConfig.scala | 14 ++++++----- .../src/main/scala/config/ChipConfigs.scala | 24 +++++++++---------- .../scala/config/MemorySystemConfigs.scala | 4 ++-- .../src/main/scala/config/NoCoreConfigs.scala | 4 ++-- .../config/PeripheralDeviceConfigs.scala | 22 ++++++++--------- .../src/main/scala/config/SodorConfigs.scala | 12 +++++----- .../src/main/scala/config/SpikeConfigs.scala | 2 +- .../main/scala/config/TracegenConfigs.scala | 2 +- .../config/fragments/ClockingFragments.scala | 4 +--- .../config/fragments/TileFragments.scala | 2 +- .../src/main/scala/example/FlatChipTop.scala | 2 +- .../main/scala/example/FlatTestHarness.scala | 5 +++- .../main/scala/harness/HarnessBinders.scala | 9 ++++++- .../src/main/scala/iobinders/IOBinders.scala | 8 ++++++- .../src/main/scala/iobinders/Ports.scala | 8 +++++-- generators/testchipip | 2 +- 22 files changed, 88 insertions(+), 67 deletions(-) diff --git a/generators/caliptra-aes-acc b/generators/caliptra-aes-acc index 15d2f852..82fa7080 160000 --- a/generators/caliptra-aes-acc +++ b/generators/caliptra-aes-acc @@ -1 +1 @@ -Subproject commit 15d2f85262125a3ba5a674868d4bcbdfbf720df1 +Subproject commit 82fa7080f428b2e59062a55e948f507805c98ef5 diff --git a/generators/chipyard/src/main/scala/DigitalTop.scala b/generators/chipyard/src/main/scala/DigitalTop.scala index d7263008..01b6626d 100644 --- a/generators/chipyard/src/main/scala/DigitalTop.scala +++ b/generators/chipyard/src/main/scala/DigitalTop.scala @@ -13,13 +13,13 @@ import freechips.rocketchip.devices.tilelink._ // DOC include start: DigitalTop class DigitalTop(implicit p: Parameters) extends ChipyardSystem - with testchipip.CanHavePeripheryUARTTSI // Enables optional UART-based TSI transport - with testchipip.CanHavePeripheryCustomBootPin // Enables optional custom boot pin - with testchipip.CanHavePeripheryBootAddrReg // Use programmable boot address register - with testchipip.CanHaveTraceIO // Enables optionally adding trace IO - with testchipip.CanHaveBankedScratchpad // Enables optionally adding a banked scratchpad - with testchipip.CanHavePeripheryBlockDevice // Enables optionally adding the block device - with testchipip.CanHavePeripheryTLSerial // Enables optionally adding the backing memory and serial adapter + with testchipip.tsi.CanHavePeripheryUARTTSI // Enables optional UART-based TSI transport + with testchipip.boot.CanHavePeripheryCustomBootPin // Enables optional custom boot pin + with testchipip.boot.CanHavePeripheryBootAddrReg // Use programmable boot address register + with testchipip.cosim.CanHaveTraceIO // Enables optionally adding trace IO + with testchipip.soc.CanHaveBankedScratchpad // Enables optionally adding a banked scratchpad + with testchipip.iceblk.CanHavePeripheryBlockDevice // Enables optionally adding the block device + with testchipip.serdes.CanHavePeripheryTLSerial // Enables optionally adding the backing memory and serial adapter with sifive.blocks.devices.i2c.HasPeripheryI2C // Enables optionally adding the sifive I2C with sifive.blocks.devices.pwm.HasPeripheryPWM // Enables optionally adding the sifive PWM with sifive.blocks.devices.uart.HasPeripheryUART // Enables optionally adding the sifive UART @@ -40,7 +40,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem } class DigitalTopModule[+L <: DigitalTop](l: L) extends ChipyardSystemModule(l) - with testchipip.CanHaveTraceIOModuleImp + with testchipip.cosim.CanHaveTraceIOModuleImp with sifive.blocks.devices.i2c.HasPeripheryI2CModuleImp with sifive.blocks.devices.pwm.HasPeripheryPWMModuleImp with sifive.blocks.devices.uart.HasPeripheryUARTModuleImp diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index a3ba679e..8654d561 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -24,7 +24,7 @@ import freechips.rocketchip.amba.axi4._ import boom.common.{BoomTile} -import testchipip.{CanHavePeripheryTLSerial, SerialTLKey} +import testchipip.serdes.{CanHavePeripheryTLSerial, SerialTLKey} trait CanHaveHTIF { this: BaseSubsystem => // Advertise HTIF if system can communicate with fesvr diff --git a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala index 356a0432..7aa676d5 100644 --- a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala +++ b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala @@ -14,7 +14,8 @@ import freechips.rocketchip.util._ import freechips.rocketchip.tile._ import freechips.rocketchip.prci._ -import testchipip.{TLTileResetCtrl, ClockGroupFakeResetSynchronizer} +import testchipip.boot.{TLTileResetCtrl} +import testchipip.clocking.{ClockGroupFakeResetSynchronizer} case class ChipyardPRCIControlParams( slaveWhere: TLBusWrapperLocation = CBUS, diff --git a/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala index 45f9374d..a3c33561 100644 --- a/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala +++ b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala @@ -11,7 +11,7 @@ import freechips.rocketchip.util._ import freechips.rocketchip.prci._ import freechips.rocketchip.util.ElaborationArtefacts -import testchipip._ +import testchipip.clocking._ // This module adds a TileLink memory-mapped clock divider to the clock graph // The output clock/reset pairs from this module should be synchronized later @@ -38,7 +38,7 @@ class TLClockDivider(address: BigInt, beatBytes: Int, divBits: Int = 8)(implicit val reg = Module(new AsyncResetRegVec(w=divBits, init=0)) println(s"${(address+i*4).toString(16)}: Clock domain $sinkName divider") - val divider = Module(new testchipip.ClockDivideOrPass(divBits, depth = 3, genClockGate = p(ClockGateImpl))) + val divider = Module(new ClockDivideOrPass(divBits, depth = 3, genClockGate = p(ClockGateImpl))) divider.io.clockIn := sources(i).clock // busReset is expected to be high for a long time, since reset will take a while to propagate // to the TL bus. While reset is propagating, make sure we propagate a fast, undivided clock diff --git a/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala index 27870428..1d0a149d 100644 --- a/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala +++ b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala @@ -11,7 +11,7 @@ import freechips.rocketchip.util._ import freechips.rocketchip.prci._ import freechips.rocketchip.util.ElaborationArtefacts -import testchipip._ +import testchipip.clocking._ case class ClockSelNode()(implicit valName: ValName) extends MixedNexusNode(ClockImp, ClockGroupImp)( @@ -40,7 +40,7 @@ class TLClockSelector(address: BigInt, beatBytes: Int)(implicit p: Parameters) e sel := reg.io.q println(s"${(address+i*4).toString(16)}: Clock domain $sinkName clock mux") - val mux = testchipip.ClockMutexMux(clocks).suggestName(s"${sinkName}_clkmux") + val mux = ClockMutexMux(clocks).suggestName(s"${sinkName}_clkmux") mux.io.sel := sel mux.io.resetAsync := asyncReset.asAsyncReset sinks(i).clock := mux.io.clockOut diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 06f9af3b..cef46e04 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -61,12 +61,14 @@ class AbstractConfig extends Config( new chipyard.config.WithFrontBusFrequency(500.0) ++ // Default 500 MHz fbus new chipyard.config.WithOffchipBusFrequency(500.0) ++ // Default 500 MHz obus - new testchipip.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address - new testchipip.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address - new testchipip.WithSerialTL(Seq(testchipip.SerialTLParams( // add a serial-tilelink interface - client = Some(testchipip.SerialTLClientParams(idBits = 4)), // serial-tilelink interface will master the FBUS, and support 4 idBits - width = 32 // serial-tilelink interface with 32 lanes - ))) ++ + new testchipip.boot.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address + new testchipip.boot.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address + new testchipip.serdes.WithSerialTL(Seq( // add a serial-tilelink interface + testchipip.serdes.SerialTLParams( + client = Some(testchipip.serdes.SerialTLClientParams(idBits=4)), // serial-tilelink interface will master the FBUS, and support 4 idBits + width = 32 // serial-tilelink interface with 32 lanes + ) + )) ++ new chipyard.config.WithDebugModuleAbstractDataWords(8) ++ // increase debug module data capacity new chipyard.config.WithBootROM ++ // use default bootrom new chipyard.config.WithUART ++ // add a UART diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index e3d18375..ffcb3f77 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -3,7 +3,7 @@ package chipyard import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.subsystem.{MBUS, SBUS} -import testchipip.{OBUS} +import testchipip.soc.{OBUS} // A simple config demonstrating how to set up a basic chip in Chipyard class ChipLikeRocketConfig extends Config( @@ -22,16 +22,16 @@ class ChipLikeRocketConfig extends Config( //================================== // Set up I/O //================================== - new testchipip.WithSerialTLWidth(4) ++ // 4bit wide Serialized TL interface to minimize IO - new testchipip.WithSerialTLMem(size = (1 << 30) * 4L) ++ // Configure the off-chip memory accessible over serial-tl as backing memory + new testchipip.serdes.WithSerialTLWidth(4) ++ // 4bit wide Serialized TL interface to minimize IO + new testchipip.serdes.WithSerialTLMem(size = (1 << 30) * 4L) ++ // Configure the off-chip memory accessible over serial-tl as backing memory new freechips.rocketchip.subsystem.WithNoMemPort ++ // Remove axi4 mem port new freechips.rocketchip.subsystem.WithNMemoryChannels(1) ++ // 1 memory channel //================================== // Set up buses //================================== - new testchipip.WithOffchipBusClient(MBUS) ++ // offchip bus connects to MBUS, since the serial-tl needs to provide backing memory - new testchipip.WithOffchipBus ++ // attach a offchip bus, since the serial-tl will master some external tilelink memory + new testchipip.soc.WithOffchipBusClient(MBUS) ++ // offchip bus connects to MBUS, since the serial-tl needs to provide backing memory + new testchipip.soc.WithOffchipBus ++ // attach a offchip bus, since the serial-tl will master some external tilelink memory //================================== // Set up clock./reset @@ -60,17 +60,17 @@ class ChipBringupHostConfig extends Config( //============================= // Setup the SerialTL side on the bringup device //============================= - new testchipip.WithSerialTLWidth(4) ++ // match width with the chip - new testchipip.WithSerialTLMem(base = 0x0, size = 0x80000000L, // accessible memory of the chip that doesn't come from the tethered host - idBits = 4, isMainMemory = false) ++ // This assumes off-chip mem starts at 0x8000_0000 - new testchipip.WithSerialTLClockDirection(provideClockFreqMHz = Some(75)) ++ // bringup board drives the clock for the serial-tl receiver on the chip, use 75MHz clock + new testchipip.serdes.WithSerialTLWidth(4) ++ // match width with the chip + new testchipip.serdes.WithSerialTLMem(base = 0x0, size = 0x80000000L, // accessible memory of the chip that doesn't come from the tethered host + idBits = 4, isMainMemory = false) ++ // This assumes off-chip mem starts at 0x8000_0000 + new testchipip.serdes.WithSerialTLClockDirection(provideClockFreqMHz = Some(75)) ++ // bringup board drives the clock for the serial-tl receiver on the chip, use 75MHz clock //============================ // Setup bus topology on the bringup system //============================ - new testchipip.WithOffchipBusClient(SBUS, // offchip bus hangs off the SBUS + new testchipip.soc.WithOffchipBusClient(SBUS, // offchip bus hangs off the SBUS blockRange = AddressSet.misaligned(0x80000000L, (BigInt(1) << 30) * 4)) ++ // offchip bus should not see the main memory of the testchip, since that can be accessed directly - new testchipip.WithOffchipBus ++ // offchip bus + new testchipip.soc.WithOffchipBus ++ // offchip bus //============================= // Set up memory on the bringup system @@ -80,7 +80,7 @@ class ChipBringupHostConfig extends Config( //============================= // Generate the TSI-over-UART side of the bringup system //============================= - new testchipip.WithUARTTSIClient(initBaudRate = BigInt(921600)) ++ // nonstandard baud rate to improve performance + new testchipip.tsi.WithUARTTSIClient(initBaudRate = BigInt(921600)) ++ // nonstandard baud rate to improve performance //============================= // Set up clocks of the bringup system diff --git a/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala b/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala index aab7fb7f..c49f85ee 100644 --- a/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala +++ b/generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala @@ -19,14 +19,14 @@ class GB1MemoryRocketConfig extends Config( // DOC include start: mbusscratchpadrocket class MbusScratchpadOnlyRocketConfig extends Config( - new testchipip.WithMbusScratchpad(banks=2, partitions=2) ++ // add 2 partitions of 2 banks mbus backing scratchpad + new testchipip.soc.WithMbusScratchpad(banks=2, partitions=2) ++ // add 2 partitions of 2 banks mbus backing scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove offchip mem port new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) // DOC include end: mbusscratchpadrocket class SbusScratchpadRocketConfig extends Config( - new testchipip.WithSbusScratchpad(base=0x70000000L, banks=4) ++ // add 4 banks sbus scratchpad + new testchipip.soc.WithSbusScratchpad(base=0x70000000L, banks=4) ++ // add 4 banks sbus scratchpad new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) diff --git a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala index 19e9a7e0..4f70f9ee 100644 --- a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala @@ -4,8 +4,8 @@ import org.chipsalliance.cde.config.{Config} // A empty config with no cores. Useful for testing class NoCoresConfig extends Config( - new testchipip.WithNoBootAddrReg ++ - new testchipip.WithNoCustomBootPin ++ + new testchipip.boot.WithNoBootAddrReg ++ + new testchipip.boot.WithNoCustomBootPin ++ new chipyard.config.WithNoCLINT ++ new chipyard.config.WithNoBootROM ++ new chipyard.config.WithBroadcastManager ++ diff --git a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala index 5473b99e..99400743 100644 --- a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala +++ b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala @@ -22,13 +22,13 @@ class SmallSPIFlashRocketConfig extends Config( class SimBlockDeviceRocketConfig extends Config( new chipyard.harness.WithSimBlockDevice ++ // drive block-device IOs with SimBlockDevice - new testchipip.WithBlockDevice ++ // add block-device module to peripherybus + new testchipip.iceblk.WithBlockDevice ++ // add block-device module to peripherybus new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) class BlockDeviceModelRocketConfig extends Config( new chipyard.harness.WithBlockDeviceModel ++ // drive block-device IOs with a BlockDeviceModel - new testchipip.WithBlockDevice ++ // add block-device module to periphery bus + new testchipip.iceblk.WithBlockDevice ++ // add block-device module to periphery bus new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) @@ -53,10 +53,10 @@ class MMIORocketConfig extends Config( class LBWIFRocketConfig extends Config( new chipyard.config.WithOffchipBusFrequency(500) ++ - new testchipip.WithOffchipBusClient(MBUS) ++ - new testchipip.WithOffchipBus ++ - new testchipip.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory - new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove AXI4 backing memory + new testchipip.soc.WithOffchipBusClient(MBUS) ++ + new testchipip.soc.WithOffchipBus ++ + new testchipip.serdes.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory + new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove AXI4 backing memory new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) @@ -69,10 +69,10 @@ class dmiRocketConfig extends Config( // DOC include end: DmiRocket class ManyPeripheralsRocketConfig extends Config( - new testchipip.WithBlockDevice ++ // add block-device module to peripherybus - new testchipip.WithOffchipBusClient(MBUS) ++ // OBUS provides backing memory to the MBUS - new testchipip.WithOffchipBus ++ // OBUS must exist for serial-tl to master off-chip memory - new testchipip.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory + new testchipip.iceblk.WithBlockDevice ++ // add block-device module to peripherybus + new testchipip.soc.WithOffchipBusClient(MBUS) ++ // OBUS provides backing memory to the MBUS + new testchipip.soc.WithOffchipBus ++ // OBUS must exist for serial-tl to master off-chip memory + new testchipip.serdes.WithSerialTLMem(isMainMemory=true) ++ // set lbwif memory base to DRAM_BASE, use as main memory new chipyard.harness.WithSimSPIFlashModel(true) ++ // add the SPI flash model in the harness (read-only) new chipyard.harness.WithSimBlockDevice ++ // drive block-device IOs with SimBlockDevice new chipyard.config.WithSPIFlash ++ // add the SPI flash controller @@ -84,7 +84,7 @@ class ManyPeripheralsRocketConfig extends Config( class UARTTSIRocketConfig extends Config( new chipyard.harness.WithSerialTLTiedOff ++ - new testchipip.WithUARTTSIClient ++ + new testchipip.tsi.WithUARTTSIClient ++ new chipyard.config.WithMemoryBusFrequency(10) ++ new chipyard.config.WithFrontBusFrequency(10) ++ new chipyard.config.WithPeripheryBusFrequency(10) ++ diff --git a/generators/chipyard/src/main/scala/config/SodorConfigs.scala b/generators/chipyard/src/main/scala/config/SodorConfigs.scala index 4181083c..7d7c7ac3 100644 --- a/generators/chipyard/src/main/scala/config/SodorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/SodorConfigs.scala @@ -7,7 +7,7 @@ import org.chipsalliance.cde.config.{Config} class Sodor1StageConfig extends Config( // Create a Sodor 1-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage1Factory) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ @@ -16,7 +16,7 @@ class Sodor1StageConfig extends Config( class Sodor2StageConfig extends Config( // Create a Sodor 2-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage2Factory) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ @@ -25,7 +25,7 @@ class Sodor2StageConfig extends Config( class Sodor3StageConfig extends Config( // Create a Sodor 1-stage core with two ports new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage3Factory(ports = 2)) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ @@ -34,7 +34,7 @@ class Sodor3StageConfig extends Config( class Sodor3StageSinglePortConfig extends Config( // Create a Sodor 3-stage core with one ports (instruction and data memory access controlled by arbiter) new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage3Factory(ports = 1)) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ @@ -43,7 +43,7 @@ class Sodor3StageSinglePortConfig extends Config( class Sodor5StageConfig extends Config( // Create a Sodor 5-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage5Factory) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ @@ -52,7 +52,7 @@ class Sodor5StageConfig extends Config( class SodorUCodeConfig extends Config( // Construct a Sodor microcode-based single-bus core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.UCodeFactory) ++ - new testchipip.WithSerialTLWidth(32) ++ + new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory new freechips.rocketchip.subsystem.WithNBanks(0) ++ diff --git a/generators/chipyard/src/main/scala/config/SpikeConfigs.scala b/generators/chipyard/src/main/scala/config/SpikeConfigs.scala index 4c1fc303..6f4c6ab7 100644 --- a/generators/chipyard/src/main/scala/config/SpikeConfigs.scala +++ b/generators/chipyard/src/main/scala/config/SpikeConfigs.scala @@ -43,7 +43,7 @@ class SpikeUltraFastDevicesConfig extends Config( new chipyard.harness.WithSimBlockDevice ++ new chipyard.harness.WithLoopbackNIC ++ new icenet.WithIceNIC ++ - new testchipip.WithBlockDevice ++ + new testchipip.iceblk.WithBlockDevice ++ new chipyard.WithSpikeTCM ++ new chipyard.WithNSpikeCores(1) ++ diff --git a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala index 55cce1b8..4235bf1e 100644 --- a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala @@ -43,6 +43,6 @@ class NonBlockingTraceGenL2Config extends Config( class NonBlockingTraceGenL2RingConfig extends Config( new tracegen.WithL2TraceGen()(List.fill(2)(DCacheParams(nMSHRs = 2, nSets = 16, nWays = 4))) ++ - new testchipip.WithRingSystemBus ++ + new testchipip.soc.WithRingSystemBus ++ new freechips.rocketchip.subsystem.WithInclusiveCache ++ new AbstractTraceGenConfig) diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 9191bc0c..f86254c4 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -13,9 +13,7 @@ import freechips.rocketchip.tilelink.{HasTLBusParams} import chipyard._ import chipyard.clocking._ -import testchipip.{OffchipBusKey} - -import testchipip.{OffchipBusKey} +import testchipip.soc.{OffchipBusKey} // The default RocketChip BaseSubsystem drives its diplomatic clock graph // with the implicit clocks of Subsystem. Don't do that, instead we extend diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index 6262fbcd..92d8fc6f 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -11,7 +11,7 @@ import boom.common.{BoomTileAttachParams} import cva6.{CVA6TileAttachParams} import sodor.common.{SodorTileAttachParams} import ibex.{IbexTileAttachParams} -import testchipip._ +import testchipip.cosim.{TracePortKey, TracePortParams} import barf.{TilePrefetchingMasterPortParams} class WithL2TLBs(entries: Int) extends Config((site, here, up) => { diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala index 24fcad8e..96139ef5 100644 --- a/generators/chipyard/src/main/scala/example/FlatChipTop.scala +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -14,7 +14,7 @@ import chipyard.harness.{BuildTop} import chipyard.clocking._ import chipyard.iobinders._ import barstools.iocell.chisel._ -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} class WithFlatChipTop extends Config((site, here, up) => { case BuildTop => (p: Parameters) => new FlatChipTop()(p) diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala index 5f6c69f1..304c58a3 100644 --- a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -11,7 +11,10 @@ import freechips.rocketchip.util.{PlusArg} import freechips.rocketchip.subsystem.{CacheBlockBytes} import freechips.rocketchip.devices.debug.{SimJTAG} import freechips.rocketchip.jtag.{JTAGIO} -import testchipip.{SerialTLKey, UARTAdapter, SimDRAM, TSIHarness, SimTSI} +import testchipip.serdes.{SerialTLKey} +import testchipip.uart.{UARTAdapter} +import testchipip.dram.{SimDRAM} +import testchipip.tsi.{TSIHarness, SimTSI} import chipyard.harness.{BuildTop} // A "flat" TestHarness that doesn't use IOBinders diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 94321506..9748f597 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -12,7 +12,14 @@ import freechips.rocketchip.util._ import freechips.rocketchip.jtag.{JTAGIO} import freechips.rocketchip.devices.debug.{SimJTAG} import barstools.iocell.chisel._ -import testchipip._ +import testchipip.dram.{SimDRAM} +import testchipip.tsi.{SimTSI, SerialRAM, TSI, TSIIO} +import testchipip.soc.{TestchipSimDTM} +import testchipip.spi.{SimSPIFlashModel} +import testchipip.uart.{UARTAdapter} +import testchipip.serdes.{UARTToSerial, SerialWidthAdapter} +import testchipip.iceblk.{SimBlockDevice, BlockDeviceModel} +import testchipip.cosim.{SpikeCosim} import icenet.{NicLoopback, SimNetwork} import chipyard._ import chipyard.clocking.{HasChipyardPRCI} diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 7894ba51..45f72641 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -23,7 +23,13 @@ import tracegen.{TraceGenSystemModuleImp} import barstools.iocell.chisel._ -import testchipip._ +import testchipip.serdes.{CanHavePeripheryTLSerial, SerialTLKey} +import testchipip.spi.{SPIChipIO} +import testchipip.boot.{CanHavePeripheryCustomBootPin} +import testchipip.util.{ClockedIO} +import testchipip.iceblk.{CanHavePeripheryBlockDevice, BlockDeviceKey, BlockDeviceIO} +import testchipip.cosim.{CanHaveTraceIOModuleImp, TraceOutputTop, SpikeCosimConfig} +import testchipip.tsi.{CanHavePeripheryUARTTSI, UARTTSIIO} import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} import chipyard.{CanHaveMasterTLMemPort, ChipyardSystem, ChipyardSystemModule} diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index c5c9f19e..ba14cc39 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -4,9 +4,13 @@ import chisel3._ import chisel3.experimental.{Analog} import sifive.blocks.devices.uart.{UARTPortIO} import sifive.blocks.devices.spi.{SPIFlashParams, SPIPortIO} -import sifive.blocks.devices.i2c.{I2CPort} import sifive.blocks.devices.gpio.{GPIOPortIO} -import testchipip._ +import testchipip.util.{ClockedIO} +import testchipip.serdes.{TLSerdesser, SerialIO, SerialTLParams} +import testchipip.spi.{SPIChipIO} +import testchipip.cosim.{TraceOutputTop, SpikeCosimConfig} +import testchipip.iceblk.{BlockDeviceIO, BlockDeviceConfig} +import testchipip.tsi.{UARTTSIIO} import icenet.{NICIOvonly, NICConfig} import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.amba.axi4.{AXI4Bundle, AXI4EdgeParameters} diff --git a/generators/testchipip b/generators/testchipip index 50a05b07..17109544 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 50a05b078295f91798bee9d506a47a4e967dd493 +Subproject commit 171095445e15bb8f002fbb3ec8b0f0b26dfcc5fe From 1e5ebf192ad8686c6ec02ceb1ab9cd69cac2aae5 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 12:11:12 -0800 Subject: [PATCH 137/184] Update firesim/firechip with new testchipip packaging --- .../src/main/scala/BridgeBinders.scala | 2 +- .../src/main/scala/TargetConfigs.scala | 21 ++++++++++--------- sims/firesim | 2 +- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index ad643deb..954c104c 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -15,7 +15,7 @@ import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters} import freechips.rocketchip.util.{ResetCatchAndSync} import sifive.blocks.devices.uart._ -import testchipip._ +import testchipip.tsi.{SerialRAM} import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} import junctions.{NastiKey, NastiParameters} diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 944fe9cf..9f5f7ef6 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -13,7 +13,8 @@ import freechips.rocketchip.subsystem._ import freechips.rocketchip.devices.tilelink.{BootROMLocated, BootROMParams} import freechips.rocketchip.devices.debug.{DebugModuleParams, DebugModuleKey} import freechips.rocketchip.diplomacy.{LazyModule, AsynchronousCrossing} -import testchipip.{BlockDeviceKey, BlockDeviceConfig, TracePortKey, TracePortParams} +import testchipip.iceblk.{BlockDeviceKey, BlockDeviceConfig} +import testchipip.cosim.{TracePortKey, TracePortParams} import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTParams} import scala.math.{min, max} @@ -101,7 +102,7 @@ class WithFireSimDesignTweaks extends Config( // Required: Bake in the default FASED memory model new WithDefaultMemModel ++ // Optional: reduce the width of the Serial TL interface - new testchipip.WithSerialTLWidth(4) ++ + new testchipip.serdes.WithSerialTLWidth(4) ++ // Required*: Scale default baud rate with periphery bus frequency new chipyard.config.WithUARTInitBaudRate(BigInt(3686400L)) ++ // Optional: Adds IO to attach tracerV bridges @@ -109,7 +110,7 @@ class WithFireSimDesignTweaks extends Config( // Optional: Request 16 GiB of target-DRAM by default (can safely request up to 64 GiB on F1) new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 16L) ++ // Optional: Removing this will require using an initramfs under linux - new testchipip.WithBlockDevice + new testchipip.iceblk.WithBlockDevice ) // Tweaks to modify target clock frequencies / crossings to legacy firesim defaults @@ -151,7 +152,7 @@ class WithFireSimConfigTweaks extends Config( class WithMinimalFireSimHighPerfConfigTweaks extends Config( new WithFireSimHighPerfClocking ++ new freechips.rocketchip.subsystem.WithNoMemPort ++ - new testchipip.WithMbusScratchpad ++ + new testchipip.soc.WithMbusScratchpad ++ new WithMinimalFireSimDesignTweaks ) @@ -161,8 +162,8 @@ class WithMinimalFireSimHighPerfConfigTweaks extends Config( class WithMinimalAndBlockDeviceFireSimHighPerfConfigTweaks extends Config( new WithFireSimHighPerfClocking ++ new freechips.rocketchip.subsystem.WithNoMemPort ++ // removes mem port for FASEDBridge to match against - new testchipip.WithMbusScratchpad ++ // adds backing scratchpad for memory to replace FASED model - new testchipip.WithBlockDevice(true) ++ // add in block device + new testchipip.soc.WithMbusScratchpad ++ // adds backing scratchpad for memory to replace FASED model + new testchipip.iceblk.WithBlockDevice(true) ++ // add in block device new WithMinimalFireSimDesignTweaks ) @@ -257,11 +258,11 @@ class FireSimSmallSystemConfig extends Config( new WithoutClockGating ++ new WithoutTLMonitors ++ new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++ - new testchipip.WithSerialTL(Seq(testchipip.SerialTLParams( - client = Some(testchipip.SerialTLClientParams(idBits = 4)), + new testchipip.serdes.WithSerialTL(Seq(testchipip.serdes.SerialTLParams( + client = Some(testchipip.serdes.SerialTLClientParams(idBits = 4)), width = 32 ))) ++ - new testchipip.WithBlockDevice ++ + new testchipip.iceblk.WithBlockDevice ++ new chipyard.config.WithUARTInitBaudRate(BigInt(3686400L)) ++ new freechips.rocketchip.subsystem.WithInclusiveCache(nWays = 2, capacityKB = 64) ++ new chipyard.RocketConfig) @@ -339,7 +340,7 @@ class FireSim16LargeBoomConfig extends Config( class FireSimNoMemPortConfig extends Config( new WithDefaultFireSimBridges ++ new freechips.rocketchip.subsystem.WithNoMemPort ++ - new testchipip.WithMbusScratchpad ++ + new testchipip.soc.WithMbusScratchpad ++ new WithFireSimConfigTweaks ++ new chipyard.RocketConfig) diff --git a/sims/firesim b/sims/firesim index 73fe6a51..e9758935 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 73fe6a51b28a2dbbe3f307bdbc6ba2407b311a27 +Subproject commit e975893595129c2682a72fb7e5898273fcc2d071 From 604cb6358f559cac8220a59a9539a084ae11413d Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 12:17:00 -0800 Subject: [PATCH 138/184] Bump fpga-platforms to new organized testchipip --- docs/Customization/Memory-Hierarchy.rst | 2 +- fpga/bootrom.rv32.img | Bin 0 -> 192 bytes fpga/bootrom.rv64.img | Bin 0 -> 192 bytes fpga/src/main/scala/arty/Configs.scala | 4 ++-- fpga/src/main/scala/arty100t/Configs.scala | 6 +++--- fpga/src/main/scala/arty100t/HarnessBinders.scala | 2 -- fpga/src/main/scala/nexysvideo/Configs.scala | 6 +++--- .../main/scala/nexysvideo/HarnessBinders.scala | 2 -- fpga/src/main/scala/vc707/Configs.scala | 2 +- fpga/src/main/scala/vcu118/Configs.scala | 2 +- fpga/src/main/scala/vcu118/bringup/Configs.scala | 2 +- .../scala/vcu118/bringup/CustomOverlays.scala | 2 +- .../main/scala/vcu118/bringup/DigitalTop.scala | 2 +- .../scala/vcu118/bringup/HarnessBinders.scala | 2 +- .../src/main/scala/vcu118/bringup/IOBinders.scala | 2 +- .../main/scala/vcu118/bringup/TestHarness.scala | 3 ++- variables.mk | 2 +- 17 files changed, 19 insertions(+), 22 deletions(-) create mode 100755 fpga/bootrom.rv32.img create mode 100755 fpga/bootrom.rv64.img diff --git a/docs/Customization/Memory-Hierarchy.rst b/docs/Customization/Memory-Hierarchy.rst index 62ccf684..ecb666d1 100644 --- a/docs/Customization/Memory-Hierarchy.rst +++ b/docs/Customization/Memory-Hierarchy.rst @@ -94,7 +94,7 @@ memory channel. Instead of connecting to off-chip DRAM, you can instead connect a scratchpad and remove the off-chip link. This is done by adding a fragment like -``testchipip.WithScratchpad`` to your configuration and removing the +``testchipip.soc.WithScratchpad`` to your configuration and removing the memory port with ``freechips.rocketchip.subsystem.WithNoMemPort``. .. literalinclude:: ../../generators/chipyard/src/main/scala/config/MemorySystemConfigs.scala diff --git a/fpga/bootrom.rv32.img b/fpga/bootrom.rv32.img new file mode 100755 index 0000000000000000000000000000000000000000..fbab5033ab69b24d54a0175d735a0f2cf21f5364 GIT binary patch literal 192 zcmdna%D_~t>hLj{g_R+np@Chv&6Qy?n*f8d!ZikAHaCW5wPXJu&tm(R&v1Z^0Sgdk zWnd6yW&Kku5NhyQNx)$8B_+qnpM)5aTbLM%1q=*?SsQ?~t3j~>t3feCfI$9-`~Q)R z$^Rh#r+E=8!{d2O|Aa+V88)+SWl&zg%3$uwz`(4^3e+oV0&?GUpgogYTN#Df7&wXz N*nnm!7zhIm0s!cFEFk~@ literal 0 HcmV?d00001 diff --git a/fpga/bootrom.rv64.img b/fpga/bootrom.rv64.img new file mode 100755 index 0000000000000000000000000000000000000000..8d4fea0554d5c5f953b25cfe015ae3c9bd3b1189 GIT binary patch literal 192 zcmdna%D_~t>hLj{g_R+np@Chv&6Qy?n*f8d!ZikAHaCW5wPXJu&tm(R&v1Z^0Sgdk zWnd6yW&Kku5NhyQNx)$8B_+qnpM)5aTbLM%1q=*?SsQ?~t3j~>t3feCfI$9-`~Q)R z$^Rh#r+E=8!{d2O|Aa+V88)+SWl&zg%3$uwz`$(E3e+oV0&?GUpgogYTN#Df7&wXz N*nnm!7zhIm0s!i%EHMB8 literal 0 HcmV?d00001 diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index 1bf2b643..eeb26b60 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -11,7 +11,7 @@ import freechips.rocketchip.tile._ import sifive.blocks.devices.uart._ -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} import chipyard.{BuildSystem} @@ -30,7 +30,7 @@ class WithArtyTweaks extends Config( new chipyard.config.WithFrontBusFrequency(32) ++ new chipyard.config.WithControlBusFrequency(32) ++ new chipyard.config.WithPeripheryBusFrequency(32) ++ - new testchipip.WithNoSerialTL + new testchipip.serdes.WithNoSerialTL ) class TinyRocketArtyConfig extends Config( diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 213425f5..c9892aa8 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -12,7 +12,7 @@ import freechips.rocketchip.tile._ import sifive.blocks.devices.uart._ import sifive.fpgashells.shell.{DesignKey} -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} import chipyard.{BuildSystem} @@ -25,7 +25,7 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( new WithArty100TUARTTSI ++ new WithArty100TDDRTL ++ new WithNoDesignKey ++ - new testchipip.WithUARTTSIClient ++ + new testchipip.tsi.WithUARTTSIClient ++ new chipyard.harness.WithSerialTLTiedOff ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(freqMHz) ++ new chipyard.config.WithMemoryBusFrequency(freqMHz) ++ @@ -56,5 +56,5 @@ class NoCoresArty100TConfig extends Config( class BringupArty100TConfig extends Config( new WithArty100TSerialTLToGPIO ++ new WithArty100TTweaks(freqMHz = 50) ++ - new testchipip.WithSerialTLClockDirection(provideClockFreqMHz = Some(50)) ++ + new testchipip.serdes.WithSerialTLClockDirection(provideClockFreqMHz = Some(50)) ++ new chipyard.ChipBringupHostConfig) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 4c821970..dd7c1a35 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -20,8 +20,6 @@ import chipyard._ import chipyard.harness._ import chipyard.iobinders._ -import testchipip._ - class WithArty100TUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] diff --git a/fpga/src/main/scala/nexysvideo/Configs.scala b/fpga/src/main/scala/nexysvideo/Configs.scala index 01b095fa..fe53b96d 100644 --- a/fpga/src/main/scala/nexysvideo/Configs.scala +++ b/fpga/src/main/scala/nexysvideo/Configs.scala @@ -12,7 +12,7 @@ import freechips.rocketchip.tile._ import sifive.blocks.devices.uart._ import sifive.fpgashells.shell.{DesignKey} -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} import chipyard.{BuildSystem} @@ -26,7 +26,7 @@ class WithNexysVideoTweaks extends Config( new WithNexysVideoUARTTSI ++ new WithNexysVideoDDRTL ++ new WithNoDesignKey ++ - new testchipip.WithUARTTSIClient ++ + new testchipip.tsi.WithUARTTSIClient ++ new chipyard.harness.WithSerialTLTiedOff ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ new chipyard.config.WithMemoryBusFrequency(50.0) ++ @@ -53,7 +53,7 @@ class WithTinyNexysVideoTweaks extends Config( new WithNexysVideoUARTTSI ++ new WithNoDesignKey ++ new sifive.fpgashells.shell.xilinx.WithNoNexysVideoShellDDR ++ // no DDR - new testchipip.WithUARTTSIClient ++ + new testchipip.tsi.WithUARTTSIClient ++ new chipyard.harness.WithSerialTLTiedOff ++ new chipyard.harness.WithHarnessBinderClockFreqMHz(50) ++ new chipyard.config.WithMemoryBusFrequency(50.0) ++ diff --git a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala index 4027cbcf..e6865eff 100644 --- a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala +++ b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala @@ -12,8 +12,6 @@ import sifive.blocks.devices.uart.{UARTParams} import chipyard._ import chipyard.harness._ - -import testchipip._ import chipyard.iobinders._ class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder({ diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index 124920d7..4842434e 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -15,7 +15,7 @@ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTParams} import sifive.fpgashells.shell.{DesignKey} import sifive.fpgashells.shell.xilinx.{VC7074GDDRSize} -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} import chipyard.{BuildSystem, ExtTLMem} import chipyard.harness._ diff --git a/fpga/src/main/scala/vcu118/Configs.scala b/fpga/src/main/scala/vcu118/Configs.scala index 32dc3c2c..3f99fdb9 100644 --- a/fpga/src/main/scala/vcu118/Configs.scala +++ b/fpga/src/main/scala/vcu118/Configs.scala @@ -15,7 +15,7 @@ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTParams} import sifive.fpgashells.shell.{DesignKey} import sifive.fpgashells.shell.xilinx.{VCU118ShellPMOD, VCU118DDRSize} -import testchipip.{SerialTLKey} +import testchipip.serdes.{SerialTLKey} import chipyard._ import chipyard.harness._ diff --git a/fpga/src/main/scala/vcu118/bringup/Configs.scala b/fpga/src/main/scala/vcu118/bringup/Configs.scala index 65a23a1f..0760fa72 100644 --- a/fpga/src/main/scala/vcu118/bringup/Configs.scala +++ b/fpga/src/main/scala/vcu118/bringup/Configs.scala @@ -15,7 +15,7 @@ import sifive.blocks.devices.uart.{PeripheryUARTKey, UARTParams} import sifive.fpgashells.shell.{DesignKey} import sifive.fpgashells.shell.xilinx.{VCU118ShellPMOD, VCU118DDRSize} -import testchipip.{PeripheryTSIHostKey, TSIHostParams, TSIHostSerdesParams} +import testchipip.tsi.{PeripheryTSIHostKey, TSIHostParams, TSIHostSerdesParams} import chipyard.{BuildSystem} diff --git a/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala b/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala index 4b9604f9..a52a1b5e 100644 --- a/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala +++ b/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala @@ -13,7 +13,7 @@ import sifive.fpgashells.shell.xilinx._ import sifive.fpgashells.clocks._ import sifive.fpgashells.devices.xilinx.xilinxvcu118mig.{XilinxVCU118MIGPads, XilinxVCU118MIGParams, XilinxVCU118MIG} -import testchipip.{TSIHostWidgetIO} +import testchipip.tsi.{TSIHostWidgetIO} import chipyard.fpga.vcu118.{FMCPMap} diff --git a/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala b/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala index c5401d32..e4efbdc7 100644 --- a/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala +++ b/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala @@ -17,7 +17,7 @@ import chipyard.{DigitalTop, DigitalTopModule} class BringupVCU118DigitalTop(implicit p: Parameters) extends DigitalTop with sifive.blocks.devices.i2c.HasPeripheryI2C - with testchipip.HasPeripheryTSIHostWidget + with testchipip.tsi.HasPeripheryTSIHostWidget { override lazy val module = new BringupVCU118DigitalTopModule(this) } diff --git a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala index d60de620..c130a697 100644 --- a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala @@ -11,7 +11,7 @@ import sifive.blocks.devices.spi.{HasPeripherySPI, SPIPortIO} import sifive.blocks.devices.i2c.{HasPeripheryI2CModuleImp, I2CPort} import sifive.blocks.devices.gpio.{HasPeripheryGPIOModuleImp, GPIOPortIO} -import testchipip.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} +import testchipip.tsi.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} import chipyard.harness._ import chipyard.iobinders._ diff --git a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala index 155f2647..24b7aa9a 100644 --- a/fpga/src/main/scala/vcu118/bringup/IOBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/IOBinders.scala @@ -9,7 +9,7 @@ import freechips.rocketchip.tilelink.{TLBundle} import sifive.blocks.devices.gpio.{HasPeripheryGPIOModuleImp} import sifive.blocks.devices.i2c.{HasPeripheryI2CModuleImp} -import testchipip.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} +import testchipip.tsi.{HasPeripheryTSIHostWidget, TSIHostWidgetIO} import chipyard.iobinders.{OverrideIOBinder, Port, TLMemPort} diff --git a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala index 12398d8f..94d28258 100644 --- a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala @@ -16,7 +16,8 @@ import sifive.blocks.devices.spi._ import sifive.blocks.devices.i2c._ import sifive.blocks.devices.gpio._ -import testchipip.{HasPeripheryTSIHostWidget, PeripheryTSIHostKey, TSIHostWidgetIO, TLSinkSetter} +import testchipip.tsi.{HasPeripheryTSIHostWidget, PeripheryTSIHostKey, TSIHostWidgetIO} +import testchipip.util.{TLSinkSetter} import chipyard.fpga.vcu118.{VCU118FPGATestHarness, VCU118FPGATestHarnessImp, DDR2VCU118ShellPlacer, SysClock2VCU118ShellPlacer} diff --git a/variables.mk b/variables.mk index fcda57ef..65f493d2 100644 --- a/variables.mk +++ b/variables.mk @@ -97,7 +97,7 @@ ifeq ($(SUB_PROJECT),testchipip) VLOG_MODEL ?= $(MODEL) MODEL_PACKAGE ?= chipyard.unittest CONFIG ?= TestChipUnitTestConfig - CONFIG_PACKAGE ?= testchipip + CONFIG_PACKAGE ?= testchipip.test GENERATOR_PACKAGE ?= chipyard TB ?= TestDriver TOP ?= UnitTestSuite From b7176b3c29b8437e7ec85ceeb518891a88c2de28 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 15:14:39 -0800 Subject: [PATCH 139/184] Bump testchipip --- .../chipyard/src/main/scala/harness/HarnessBinders.scala | 4 ++-- generators/testchipip | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 9748f597..6710696d 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -16,8 +16,8 @@ import testchipip.dram.{SimDRAM} import testchipip.tsi.{SimTSI, SerialRAM, TSI, TSIIO} import testchipip.soc.{TestchipSimDTM} import testchipip.spi.{SimSPIFlashModel} -import testchipip.uart.{UARTAdapter} -import testchipip.serdes.{UARTToSerial, SerialWidthAdapter} +import testchipip.uart.{UARTAdapter, UARTToSerial} +import testchipip.serdes.{SerialWidthAdapter} import testchipip.iceblk.{SimBlockDevice, BlockDeviceModel} import testchipip.cosim.{SpikeCosim} import icenet.{NicLoopback, SimNetwork} diff --git a/generators/testchipip b/generators/testchipip index 17109544..70e19831 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 171095445e15bb8f002fbb3ec8b0f0b26dfcc5fe +Subproject commit 70e198313a7e467f9219e4caba0158a96f851503 From 81a2857ec77a93c424012e7a5f1d98ba896cbc5f Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 19 Dec 2023 15:45:20 -0800 Subject: [PATCH 140/184] Add arty100t harness binder to map UART to PMOD JD --- fpga/src/main/scala/arty100t/Configs.scala | 4 ++- fpga/src/main/scala/arty100t/Harness.scala | 3 -- .../main/scala/arty100t/HarnessBinders.scala | 33 ++++++++++++++++++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 213425f5..fce9177d 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -21,7 +21,10 @@ class WithNoDesignKey extends Config((site, here, up) => { case DesignKey => (p: Parameters) => new SimpleLazyModule()(p) }) +// By default, this uses the on-board USB-UART for the TSI-over-UART link +// The PMODUART HarnessBinder maps the actual UART device to JD pin class WithArty100TTweaks(freqMHz: Double = 50) extends Config( + new WithArty100TPMODUART ++ new WithArty100TUARTTSI ++ new WithArty100TDDRTL ++ new WithNoDesignKey ++ @@ -37,7 +40,6 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ new chipyard.config.WithNoDebug ++ // no jtag - new chipyard.config.WithNoUART ++ // use UART for the UART-TSI thing instad new chipyard.config.WithTLBackingMemory ++ // FPGA-shells converts the AXI to TL for us new freechips.rocketchip.subsystem.WithExtMemSize(BigInt(256) << 20) ++ // 256mb on ARTY new freechips.rocketchip.subsystem.WithoutTLMonitors) diff --git a/fpga/src/main/scala/arty100t/Harness.scala b/fpga/src/main/scala/arty100t/Harness.scala index a535e65f..577bd1b2 100644 --- a/fpga/src/main/scala/arty100t/Harness.scala +++ b/fpga/src/main/scala/arty100t/Harness.scala @@ -33,9 +33,6 @@ class Arty100THarness(override implicit val p: Parameters) extends Arty100TShell harnessSysPLLNode := clockOverlay.overlayOutput.node - val io_uart_bb = BundleBridgeSource(() => new UARTPortIO(dp(PeripheryUARTKey).headOption.getOrElse(UARTParams(0)))) - val uartOverlay = dp(UARTOverlayKey).head.place(UARTDesignInput(io_uart_bb)) - val ddrOverlay = dp(DDROverlayKey).head.place(DDRDesignInput(dp(ExtTLMem).get.master.base, dutWrangler.node, harnessSysPLLNode)).asInstanceOf[DDRArtyPlacedOverlay] val ddrClient = TLClientNode(Seq(TLMasterPortParameters.v1(Seq(TLMasterParameters.v1( name = "chip_ddr", diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 4c821970..6ad8defd 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -25,7 +25,17 @@ import testchipip._ class WithArty100TUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] - ath.io_uart_bb.bundle <> port.io.uart + val harnessIO = IO(chiselTypeOf(port.io)).suggestName("uart_tsi") + harnessIO <> port.io + val packagePinsWithPackageIOs = Seq( + ("A9" , IOPin(harnessIO.uart.rxd)), + ("D10", IOPin(harnessIO.uart.txd))) + packagePinsWithPackageIOs foreach { case (pin, io) => { + ath.xdc.addPackagePin(io, pin) + ath.xdc.addIOStandard(io, "LVCMOS33") + ath.xdc.addIOB(io) + } } + ath.other_leds(1) := port.io.dropped ath.other_leds(9) := port.io.tsi2tl_state(0) ath.other_leds(10) := port.io.tsi2tl_state(1) @@ -34,6 +44,7 @@ class WithArty100TUARTTSI extends HarnessBinder({ } }) + class WithArty100TDDRTL extends HarnessBinder({ case (th: HasHarnessInstantiators, port: TLMemPort) => { val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] @@ -83,3 +94,23 @@ class WithArty100TSerialTLToGPIO extends HarnessBinder({ artyTh.xdc.clockDedicatedRouteFalse(clkIO) } }) + +// Maps the UART device to the on-board USB-UART +class WithArty100TUART(rxdPin: String = "A9", txdPin: String = "D10") extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: UARTPort) => { + val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] + val harnessIO = IO(chiselTypeOf(port.io)).suggestName("uart") + harnessIO <> port.io + val packagePinsWithPackageIOs = Seq( + (rxdPin, IOPin(harnessIO.rxd)), + (txdPin, IOPin(harnessIO.txd))) + packagePinsWithPackageIOs foreach { case (pin, io) => { + ath.xdc.addPackagePin(io, pin) + ath.xdc.addIOStandard(io, "LVCMOS33") + ath.xdc.addIOB(io) + } } + } +}) + +// Maps the UART device to PMOD JD pins 3/7 +class WithArty100TPMODUART extends WithArty100TUART("E2", "F4") From 902d33ebd1448ef80c6596b8ffe887a8e8b412ed Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 20 Dec 2023 08:43:35 -0800 Subject: [PATCH 141/184] Add Arty100T JTAG --- fpga/src/main/scala/arty100t/Configs.scala | 2 +- .../main/scala/arty100t/HarnessBinders.scala | 25 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index fce9177d..df29d5af 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -27,6 +27,7 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( new WithArty100TPMODUART ++ new WithArty100TUARTTSI ++ new WithArty100TDDRTL ++ + new WithArty100TJTAG ++ new WithNoDesignKey ++ new testchipip.WithUARTTSIClient ++ new chipyard.harness.WithSerialTLTiedOff ++ @@ -39,7 +40,6 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( new chipyard.config.WithOffchipBusFrequency(freqMHz) ++ new chipyard.harness.WithAllClocksFromHarnessClockInstantiator ++ new chipyard.clocking.WithPassthroughClockGenerator ++ - new chipyard.config.WithNoDebug ++ // no jtag new chipyard.config.WithTLBackingMemory ++ // FPGA-shells converts the AXI to TL for us new freechips.rocketchip.subsystem.WithExtMemSize(BigInt(256) << 20) ++ // 256mb on ARTY new freechips.rocketchip.subsystem.WithoutTLMonitors) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 6ad8defd..64676584 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -113,4 +113,27 @@ class WithArty100TUART(rxdPin: String = "A9", txdPin: String = "D10") extends Ha }) // Maps the UART device to PMOD JD pins 3/7 -class WithArty100TPMODUART extends WithArty100TUART("E2", "F4") +class WithArty100TPMODUART extends WithArty100TUART("G2", "F3") + +class WithArty100TJTAG extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: JTAGPort) => { + val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] + val harnessIO = IO(chiselTypeOf(port.io)).suggestName("jtag") + harnessIO <> port.io + + ath.sdc.addClock("JTCK", IOPin(harnessIO.TCK), 10) + ath.sdc.addGroup(clocks = Seq("JTCK")) + ath.xdc.clockDedicatedRouteFalse(IOPin(harnessIO.TCK)) + val packagePinsWithPackageIOs = Seq( + ("F4", IOPin(harnessIO.TCK)), + ("D2", IOPin(harnessIO.TMS)), + ("E2", IOPin(harnessIO.TDI)), + ("D4", IOPin(harnessIO.TDO)) + ) + packagePinsWithPackageIOs foreach { case (pin, io) => { + ath.xdc.addPackagePin(io, pin) + ath.xdc.addIOStandard(io, "LVCMOS33") + ath.xdc.addPullup(io) + } } + } +}) From 516ecf9d9e61fd3ee2cedb1681947bd0bcf6a12c Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Wed, 20 Dec 2023 22:16:15 -0800 Subject: [PATCH 142/184] ADD: increase frequency to maximum --- fpga/src/main/resources/vcu118/sdboot/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/src/main/resources/vcu118/sdboot/sd.c b/fpga/src/main/resources/vcu118/sdboot/sd.c index e8d45ba7..c89f1556 100644 --- a/fpga/src/main/resources/vcu118/sdboot/sd.c +++ b/fpga/src/main/resources/vcu118/sdboot/sd.c @@ -25,7 +25,7 @@ #define F_CLK (TL_CLK) // SPI SCLK frequency, in kHz -#define SPI_CLK 1250 +#define SPI_CLK 25000 // 1250 // SPI clock divisor value // @see https://ucb-bar.gitbook.io/baremetal-ide/baremetal-ide/using-peripheral-devices/sifive-ips/serial-peripheral-interface-spi From c32de04b5d0535df406cccc25109311fb08c49ff Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Wed, 20 Dec 2023 22:25:05 -0800 Subject: [PATCH 143/184] ADD: add inline docs --- fpga/src/main/resources/vcu118/sdboot/sd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fpga/src/main/resources/vcu118/sdboot/sd.c b/fpga/src/main/resources/vcu118/sdboot/sd.c index c89f1556..bc1a68e8 100644 --- a/fpga/src/main/resources/vcu118/sdboot/sd.c +++ b/fpga/src/main/resources/vcu118/sdboot/sd.c @@ -25,7 +25,9 @@ #define F_CLK (TL_CLK) // SPI SCLK frequency, in kHz -#define SPI_CLK 25000 // 1250 +// We are using the 25MHz High Speed mode. If this speed is not supported by the +// SD card, consider changing to the Default Speed mode (12.5 MHz). +#define SPI_CLK 25000 // SPI clock divisor value // @see https://ucb-bar.gitbook.io/baremetal-ide/baremetal-ide/using-peripheral-devices/sifive-ips/serial-peripheral-interface-spi From cfd555ee94faa34c27906436c648b3eb4c3d2907 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 21 Dec 2023 14:18:06 -0800 Subject: [PATCH 144/184] Bump testchipip for updated sertl type names --- .../main/scala/arty100t/HarnessBinders.scala | 70 +++++++++++-------- .../main/scala/example/FlatTestHarness.scala | 33 +++++---- .../main/scala/harness/HarnessBinders.scala | 50 +++++++------ .../scala/harness/MultiHarnessBinders.scala | 15 ++-- .../src/main/scala/iobinders/Ports.scala | 5 +- .../src/main/scala/BridgeBinders.scala | 26 ++++--- generators/testchipip | 2 +- 7 files changed, 118 insertions(+), 83 deletions(-) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index dd7c1a35..d6371ed5 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -19,6 +19,7 @@ import sifive.fpgashells.clocks._ import chipyard._ import chipyard.harness._ import chipyard.iobinders._ +import testchipip.serdes._ class WithArty100TUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTTSIPort) => { @@ -48,36 +49,47 @@ class WithArty100TSerialTLToGPIO extends HarnessBinder({ val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val harnessIO = IO(chiselTypeOf(port.io)).suggestName("serial_tl") harnessIO <> port.io - val clkIO = IOPin(harnessIO.clock) - val packagePinsWithPackageIOs = Seq( - ("G13", clkIO), - ("B11", IOPin(harnessIO.bits.out.valid)), - ("A11", IOPin(harnessIO.bits.out.ready)), - ("D12", IOPin(harnessIO.bits.in.valid)), - ("D13", IOPin(harnessIO.bits.in.ready)), - ("B18", IOPin(harnessIO.bits.out.bits, 0)), - ("A18", IOPin(harnessIO.bits.out.bits, 1)), - ("K16", IOPin(harnessIO.bits.out.bits, 2)), - ("E15", IOPin(harnessIO.bits.out.bits, 3)), - ("E16", IOPin(harnessIO.bits.in.bits, 0)), - ("D15", IOPin(harnessIO.bits.in.bits, 1)), - ("C15", IOPin(harnessIO.bits.in.bits, 2)), - ("J17", IOPin(harnessIO.bits.in.bits, 3)) - ) - packagePinsWithPackageIOs foreach { case (pin, io) => { - artyTh.xdc.addPackagePin(io, pin) - artyTh.xdc.addIOStandard(io, "LVCMOS33") - }} - // Don't add IOB to the clock, if its an input - if (DataMirror.directionOf(port.io.clock) == Direction.Input) { - packagePinsWithPackageIOs foreach { case (pin, io) => { - artyTh.xdc.addIOB(io) - }} + harnessIO match { + case io: DecoupledSerialIO => { + val clkIO = io match { + case io: LocallySyncSerialIO => IOPin(io.clock_out) + case io: ExternallySyncSerialIO => IOPin(io.clock_in) + } + val packagePinsWithPackageIOs = Seq( + ("G13", clkIO), + ("B11", IOPin(io.out.valid)), + ("A11", IOPin(io.out.ready)), + ("D12", IOPin(io.in.valid)), + ("D13", IOPin(io.in.ready)), + ("B18", IOPin(io.out.bits, 0)), + ("A18", IOPin(io.out.bits, 1)), + ("K16", IOPin(io.out.bits, 2)), + ("E15", IOPin(io.out.bits, 3)), + ("E16", IOPin(io.in.bits, 0)), + ("D15", IOPin(io.in.bits, 1)), + ("C15", IOPin(io.in.bits, 2)), + ("J17", IOPin(io.in.bits, 3)) + ) + packagePinsWithPackageIOs foreach { case (pin, io) => { + artyTh.xdc.addPackagePin(io, pin) + artyTh.xdc.addIOStandard(io, "LVCMOS33") + }} + + // Don't add IOB to the clock, if its an input + io match { + case io: LocallySyncSerialIO => packagePinsWithPackageIOs foreach { case (pin, io) => { + artyTh.xdc.addIOB(io) + }} + case io: ExternallySyncSerialIO => packagePinsWithPackageIOs.drop(1).foreach { case (pin, io) => { + artyTh.xdc.addIOB(io) + }} + } + + artyTh.sdc.addClock("ser_tl_clock", clkIO, 100) + artyTh.sdc.addGroup(pins = Seq(clkIO)) + artyTh.xdc.clockDedicatedRouteFalse(clkIO) + } } - - artyTh.sdc.addClock("ser_tl_clock", clkIO, 100) - artyTh.sdc.addGroup(pins = Seq(clkIO)) - artyTh.xdc.clockDedicatedRouteFalse(clkIO) } }) diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala index 304c58a3..d9e37918 100644 --- a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -11,10 +11,10 @@ import freechips.rocketchip.util.{PlusArg} import freechips.rocketchip.subsystem.{CacheBlockBytes} import freechips.rocketchip.devices.debug.{SimJTAG} import freechips.rocketchip.jtag.{JTAGIO} -import testchipip.serdes.{SerialTLKey} +import testchipip.serdes.{SerialTLKey, LocallySyncSerialIO, ExternallySyncSerialIO} import testchipip.uart.{UARTAdapter} import testchipip.dram.{SimDRAM} -import testchipip.tsi.{TSIHarness, SimTSI} +import testchipip.tsi.{TSIHarness, SimTSI, SerialRAM} import chipyard.harness.{BuildTop} // A "flat" TestHarness that doesn't use IOBinders @@ -46,18 +46,25 @@ class FlatTestHarness(implicit val p: Parameters) extends Module { val serialTLManagerParams = sVal.manager.get require(serialTLManagerParams.isMemoryDevice) - withClockAndReset(clock, reset) { - val serial_bits = dut.serial_tl_pad.bits - if (DataMirror.directionOf(dut.serial_tl_pad.clock) == Direction.Input) { - dut.serial_tl_pad.clock := clock - } - val harnessRAM = TSIHarness.connectRAM( - p(SerialTLKey)(0), - lazyDut.system.serdessers(0), - serial_bits, - reset) - io.success := SimTSI.connect(harnessRAM.module.io.tsi, clock, reset) + // Figure out which clock drives the harness TLSerdes, based on the port type + val serial_ram_clock = dut.serial_tl_pad match { + case io: LocallySyncSerialIO => io.clock_out + case io: ExternallySyncSerialIO => clock + } + withClockAndReset(serial_ram_clock, reset) { + dut.serial_tl_pad match { + case io: ExternallySyncSerialIO => io.clock_in := clock + case io: LocallySyncSerialIO => + } + + // SerialRAM implements the memory regions the chip expects + val ram = Module(LazyModule(new SerialRAM(lazyDut.system.serdessers(0), p(SerialTLKey)(0))).module) + ram.io.ser.in <> dut.serial_tl_pad.out + dut.serial_tl_pad.in <> ram.io.ser.out + + // Allow TSI to master the chip + io.success := SimTSI.connect(ram.io.tsi, serial_ram_clock, reset) } // JTAG diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 6710696d..128cae0e 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -17,7 +17,7 @@ import testchipip.tsi.{SimTSI, SerialRAM, TSI, TSIIO} import testchipip.soc.{TestchipSimDTM} import testchipip.spi.{SimSPIFlashModel} import testchipip.uart.{UARTAdapter, UARTToSerial} -import testchipip.serdes.{SerialWidthAdapter} +import testchipip.serdes._ import testchipip.iceblk.{SimBlockDevice, BlockDeviceModel} import testchipip.cosim.{SpikeCosim} import icenet.{NicLoopback, SimNetwork} @@ -207,33 +207,41 @@ class WithTiedOffDMI extends HarnessBinder({ class WithSerialTLTiedOff extends HarnessBinder({ case (th: HasHarnessInstantiators, port: SerialTLPort) => { - if (DataMirror.directionOf(port.io.clock) == Direction.Input) { - port.io.clock := false.B.asClock + port.io match { + case io: DecoupledSerialIO => io.out.ready := false.B; io.in.valid := false.B; io.in.bits := DontCare; + } + port.io match { + case io: LocallySyncSerialIO => + case io: ExternallySyncSerialIO => io.clock_in := false.B.asClock } - port.io.bits.out.ready := false.B - port.io.bits.in.valid := false.B - port.io.bits.in.bits := DontCare } }) class WithSimTSIOverSerialTL extends HarnessBinder({ case (th: HasHarnessInstantiators, port: SerialTLPort) => { - val bits = port.io.bits - if (DataMirror.directionOf(port.io.clock) == Direction.Input) { - port.io.clock := th.harnessBinderClock + port.io match { + case io: LocallySyncSerialIO => + case io: ExternallySyncSerialIO => io.clock_in := false.B.asClock + } + + port.io match { + case io: DecoupledSerialIO => { + // If the port is locally synchronous (provides a clock), drive everything with that clock + // Else, drive everything with the harnes clock + val clock = port.io match { + case io: LocallySyncSerialIO => io.clock_out + case io: ExternallySyncSerialIO => th.harnessBinderClock + } + withClock(clock) { + val ram = Module(LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)).module) + ram.io.ser.in <> io.out + io.in <> ram.io.ser.out + + val success = SimTSI.connect(ram.io.tsi, clock, th.harnessBinderReset) + when (success) { th.success := true.B } + } + } } - val ram = LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)) - Module(ram.module) - ram.module.io.ser <> port.io.bits - val tsi = Module(new SimTSI) - tsi.io.clock := th.harnessBinderClock - tsi.io.reset := th.harnessBinderReset - tsi.io.tsi <> ram.module.io.tsi.get - val exit = tsi.io.exit - val success = exit === 1.U - val error = exit >= 2.U - assert(!error, "*** FAILED *** (exit code = %d)\n", exit >> 1.U) - when (success) { th.success := true.B } } }) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index d3371dfd..d89d2d98 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -10,7 +10,7 @@ import freechips.rocketchip.devices.debug._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.util._ -import testchipip._ +import testchipip.serdes._ import chipyard._ import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, HasChipyardPorts, Port, SerialTLPort} @@ -60,11 +60,14 @@ class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1p (p0: SerialTLPort) => p0.portId == chip0portId, (p1: SerialTLPort) => p1.portId == chip1portId, (th: HasHarnessInstantiators, p0: SerialTLPort, p1: SerialTLPort) => { - (DataMirror.directionOf(p0.io.clock), DataMirror.directionOf(p1.io.clock)) match { - case (Direction.Input, Direction.Output) => p0.io.clock := p1.io.clock - case (Direction.Output, Direction.Input) => p1.io.clock := p0.io.clock + def connectDecoupledSyncSerialIO(clkSource: LocallySyncSerialIO, clkSink: ExternallySyncSerialIO) = { + clkSink.clock_in := clkSource.clock_out + clkSink.in <> clkSource.out + clkSource.in <> clkSink.out + } + (p0.io, p1.io) match { + case (io0: LocallySyncSerialIO , io1: ExternallySyncSerialIO) => connectDecoupledSyncSerialIO(io0, io1) + case (io0: ExternallySyncSerialIO, io1: LocallySyncSerialIO) => connectDecoupledSyncSerialIO(io1, io0) } - p0.io.bits.in <> p1.io.bits.out - p1.io.bits.in <> p0.io.bits.out } ) diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index ba14cc39..feb7bccb 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -72,8 +72,9 @@ case class DMIPort (val getIO: () => ClockedDMIIO) case class JTAGPort (val getIO: () => JTAGChipIO) extends Port[JTAGChipIO] -case class SerialTLPort (val getIO: () => ClockedIO[SerialIO], val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) - extends Port[ClockedIO[SerialIO]] +// Lack of nice union types in scala-2 means we have to set this type as Data +case class SerialTLPort (val getIO: () => Data, val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) + extends Port[Data] case class UARTTSIPort (val getIO: () => UARTTSIIO) extends Port[UARTTSIIO] diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index 954c104c..25ae6668 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -15,6 +15,7 @@ import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters} import freechips.rocketchip.util.{ResetCatchAndSync} import sifive.blocks.devices.uart._ +import testchipip.serdes.{ExternallySyncSerialIO} import testchipip.tsi.{SerialRAM} import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} @@ -67,18 +68,21 @@ class WithFireSimIOCellModels extends Config((site, here, up) => { class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ case (th: FireSim, port: SerialTLPort) => { - val bits = port.io.bits - port.io.clock := th.harnessBinderClock - val ram = LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)) - Module(ram.module) - ram.module.io.ser <> port.io.bits + port.io match { + case io: ExternallySyncSerialIO => { + io.clock_in := th.harnessBinderClock + val ram = Module(LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)).module) + ram.io.ser.in <> io.out + io.in <> ram.io.ser.out - // This assumes that: - // If ExtMem for the target is defined, then FASED bridge will be attached - // If FASED bridge is attached, loadmem widget is present - val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined - val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) - TSIBridge(th.harnessBinderClock, ram.module.io.tsi.get, mainMemoryName, th.harnessBinderReset.asBool)(th.p) + // This assumes that: + // If ExtMem for the target is defined, then FASED bridge will be attached + // If FASED bridge is attached, loadmem widget is present + val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined + val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) + TSIBridge(th.harnessBinderClock, ram.io.tsi.get, mainMemoryName, th.harnessBinderReset.asBool)(th.p) + } + } } }) diff --git a/generators/testchipip b/generators/testchipip index 70e19831..e53f78aa 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 70e198313a7e467f9219e4caba0158a96f851503 +Subproject commit e53f78aa189c0cf7e0d3a9b08b44222ca05ab160 From 194d4462f9d6588d28d538a1d9711391bbd2db00 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 21 Dec 2023 20:33:24 -0800 Subject: [PATCH 145/184] Update testchipip with source-synchronous serdes --- fpga/src/main/scala/arty100t/Configs.scala | 2 +- .../main/scala/arty100t/HarnessBinders.scala | 8 ++--- .../main/scala/config/AbstractConfig.scala | 4 +-- .../src/main/scala/config/ChipConfigs.scala | 28 ++++++++++++---- .../main/scala/example/FlatTestHarness.scala | 33 ++++++++++--------- .../main/scala/harness/HarnessBinders.scala | 12 +++---- .../scala/harness/MultiHarnessBinders.scala | 6 ++-- .../src/main/scala/BridgeBinders.scala | 4 +-- .../src/main/scala/TargetConfigs.scala | 2 +- generators/testchipip | 2 +- 10 files changed, 60 insertions(+), 41 deletions(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index c9892aa8..9588d80e 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -56,5 +56,5 @@ class NoCoresArty100TConfig extends Config( class BringupArty100TConfig extends Config( new WithArty100TSerialTLToGPIO ++ new WithArty100TTweaks(freqMHz = 50) ++ - new testchipip.serdes.WithSerialTLClockDirection(provideClockFreqMHz = Some(50)) ++ + new testchipip.serdes.WithSerialTLPHYParams(testchipip.serdes.InternalSyncSerialParams(freqMHz=50)) ++ new chipyard.ChipBringupHostConfig) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index d6371ed5..d1af6fdc 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -53,8 +53,8 @@ class WithArty100TSerialTLToGPIO extends HarnessBinder({ harnessIO match { case io: DecoupledSerialIO => { val clkIO = io match { - case io: LocallySyncSerialIO => IOPin(io.clock_out) - case io: ExternallySyncSerialIO => IOPin(io.clock_in) + case io: InternalSyncSerialIO => IOPin(io.clock_out) + case io: ExternalSyncSerialIO => IOPin(io.clock_in) } val packagePinsWithPackageIOs = Seq( ("G13", clkIO), @@ -78,10 +78,10 @@ class WithArty100TSerialTLToGPIO extends HarnessBinder({ // Don't add IOB to the clock, if its an input io match { - case io: LocallySyncSerialIO => packagePinsWithPackageIOs foreach { case (pin, io) => { + case io: InternalSyncSerialIO => packagePinsWithPackageIOs foreach { case (pin, io) => { artyTh.xdc.addIOB(io) }} - case io: ExternallySyncSerialIO => packagePinsWithPackageIOs.drop(1).foreach { case (pin, io) => { + case io: ExternalSyncSerialIO => packagePinsWithPackageIOs.drop(1).foreach { case (pin, io) => { artyTh.xdc.addIOB(io) }} } diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index cef46e04..c234e21a 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -65,8 +65,8 @@ class AbstractConfig extends Config( new testchipip.boot.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address new testchipip.serdes.WithSerialTL(Seq( // add a serial-tilelink interface testchipip.serdes.SerialTLParams( - client = Some(testchipip.serdes.SerialTLClientParams(idBits=4)), // serial-tilelink interface will master the FBUS, and support 4 idBits - width = 32 // serial-tilelink interface with 32 lanes + client = Some(testchipip.serdes.SerialTLClientParams()), // serial-tilelink interface will master the FBUS, and support 4 idBits + phyParams = testchipip.serdes.ExternalSyncSerialParams(width=32) // serial-tilelink interface with 32 lanes ) )) ++ new chipyard.config.WithDebugModuleAbstractDataWords(8) ++ // increase debug module data capacity diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala index ffcb3f77..583d40bc 100644 --- a/generators/chipyard/src/main/scala/config/ChipConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -22,8 +22,18 @@ class ChipLikeRocketConfig extends Config( //================================== // Set up I/O //================================== - new testchipip.serdes.WithSerialTLWidth(4) ++ // 4bit wide Serialized TL interface to minimize IO - new testchipip.serdes.WithSerialTLMem(size = (1 << 30) * 4L) ++ // Configure the off-chip memory accessible over serial-tl as backing memory + new testchipip.serdes.WithSerialTL(Seq(testchipip.serdes.SerialTLParams( // 1 serial tilelink port + manager = Some(testchipip.serdes.SerialTLManagerParams( // port acts as a manager of offchip memory + memParams = Seq(testchipip.serdes.ManagerRAMParams( // 4 GB of off-chip memory + address = BigInt("80000000", 16), + size = BigInt("100000000", 16) + )), + isMemoryDevice = true + )), + client = Some(testchipip.serdes.SerialTLClientParams()), // Allow an external manager to probe this chip + phyParams = testchipip.serdes.ExternalSyncSerialParams(width=4) // 4-bit bidir interface, sync'd to an external clock + ))) ++ + new freechips.rocketchip.subsystem.WithNoMemPort ++ // Remove axi4 mem port new freechips.rocketchip.subsystem.WithNMemoryChannels(1) ++ // 1 memory channel @@ -60,10 +70,16 @@ class ChipBringupHostConfig extends Config( //============================= // Setup the SerialTL side on the bringup device //============================= - new testchipip.serdes.WithSerialTLWidth(4) ++ // match width with the chip - new testchipip.serdes.WithSerialTLMem(base = 0x0, size = 0x80000000L, // accessible memory of the chip that doesn't come from the tethered host - idBits = 4, isMainMemory = false) ++ // This assumes off-chip mem starts at 0x8000_0000 - new testchipip.serdes.WithSerialTLClockDirection(provideClockFreqMHz = Some(75)) ++ // bringup board drives the clock for the serial-tl receiver on the chip, use 75MHz clock + new testchipip.serdes.WithSerialTL(Seq(testchipip.serdes.SerialTLParams( + manager = Some(testchipip.serdes.SerialTLManagerParams( + memParams = Seq(testchipip.serdes.ManagerRAMParams( // Bringup platform can access all memory from 0 to DRAM_BASE + address = BigInt("00000000", 16), + size = BigInt("80000000", 16) + )) + )), + client = Some(testchipip.serdes.SerialTLClientParams()), // Allow chip to access this device's memory (DRAM) + phyParams = testchipip.serdes.InternalSyncSerialParams(width=4, freqMHz = 75) // bringup platform provides the clock + ))) ++ //============================ // Setup bus topology on the bringup system diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala index d9e37918..9eeabecf 100644 --- a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -11,7 +11,7 @@ import freechips.rocketchip.util.{PlusArg} import freechips.rocketchip.subsystem.{CacheBlockBytes} import freechips.rocketchip.devices.debug.{SimJTAG} import freechips.rocketchip.jtag.{JTAGIO} -import testchipip.serdes.{SerialTLKey, LocallySyncSerialIO, ExternallySyncSerialIO} +import testchipip.serdes._ import testchipip.uart.{UARTAdapter} import testchipip.dram.{SimDRAM} import testchipip.tsi.{TSIHarness, SimTSI, SerialRAM} @@ -48,23 +48,26 @@ class FlatTestHarness(implicit val p: Parameters) extends Module { // Figure out which clock drives the harness TLSerdes, based on the port type val serial_ram_clock = dut.serial_tl_pad match { - case io: LocallySyncSerialIO => io.clock_out - case io: ExternallySyncSerialIO => clock + case io: InternalSyncSerialIO => io.clock_out + case io: ExternalSyncSerialIO => clock + } + dut.serial_tl_pad match { + case io: ExternalSyncSerialIO => io.clock_in := clock + case io: InternalSyncSerialIO => } - withClockAndReset(serial_ram_clock, reset) { - dut.serial_tl_pad match { - case io: ExternallySyncSerialIO => io.clock_in := clock - case io: LocallySyncSerialIO => + dut.serial_tl_pad match { + case pad: DecoupledSerialIO => { + withClockAndReset(serial_ram_clock, reset) { + // SerialRAM implements the memory regions the chip expects + val ram = Module(LazyModule(new SerialRAM(lazyDut.system.serdessers(0), p(SerialTLKey)(0))).module) + ram.io.ser.in <> pad.out + pad.in <> ram.io.ser.out + + // Allow TSI to master the chip + io.success := SimTSI.connect(ram.io.tsi, serial_ram_clock, reset) + } } - - // SerialRAM implements the memory regions the chip expects - val ram = Module(LazyModule(new SerialRAM(lazyDut.system.serdessers(0), p(SerialTLKey)(0))).module) - ram.io.ser.in <> dut.serial_tl_pad.out - dut.serial_tl_pad.in <> ram.io.ser.out - - // Allow TSI to master the chip - io.success := SimTSI.connect(ram.io.tsi, serial_ram_clock, reset) } // JTAG diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 128cae0e..a29cf5c0 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -211,8 +211,8 @@ class WithSerialTLTiedOff extends HarnessBinder({ case io: DecoupledSerialIO => io.out.ready := false.B; io.in.valid := false.B; io.in.bits := DontCare; } port.io match { - case io: LocallySyncSerialIO => - case io: ExternallySyncSerialIO => io.clock_in := false.B.asClock + case io: InternalSyncSerialIO => + case io: ExternalSyncSerialIO => io.clock_in := false.B.asClock } } }) @@ -220,8 +220,8 @@ class WithSerialTLTiedOff extends HarnessBinder({ class WithSimTSIOverSerialTL extends HarnessBinder({ case (th: HasHarnessInstantiators, port: SerialTLPort) => { port.io match { - case io: LocallySyncSerialIO => - case io: ExternallySyncSerialIO => io.clock_in := false.B.asClock + case io: InternalSyncSerialIO => + case io: ExternalSyncSerialIO => io.clock_in := false.B.asClock } port.io match { @@ -229,8 +229,8 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ // If the port is locally synchronous (provides a clock), drive everything with that clock // Else, drive everything with the harnes clock val clock = port.io match { - case io: LocallySyncSerialIO => io.clock_out - case io: ExternallySyncSerialIO => th.harnessBinderClock + case io: InternalSyncSerialIO => io.clock_out + case io: ExternalSyncSerialIO => th.harnessBinderClock } withClock(clock) { val ram = Module(LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)).module) diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index d89d2d98..e159e345 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -60,14 +60,14 @@ class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1p (p0: SerialTLPort) => p0.portId == chip0portId, (p1: SerialTLPort) => p1.portId == chip1portId, (th: HasHarnessInstantiators, p0: SerialTLPort, p1: SerialTLPort) => { - def connectDecoupledSyncSerialIO(clkSource: LocallySyncSerialIO, clkSink: ExternallySyncSerialIO) = { + def connectDecoupledSyncSerialIO(clkSource: InternalSyncSerialIO, clkSink: ExternalSyncSerialIO) = { clkSink.clock_in := clkSource.clock_out clkSink.in <> clkSource.out clkSource.in <> clkSink.out } (p0.io, p1.io) match { - case (io0: LocallySyncSerialIO , io1: ExternallySyncSerialIO) => connectDecoupledSyncSerialIO(io0, io1) - case (io0: ExternallySyncSerialIO, io1: LocallySyncSerialIO) => connectDecoupledSyncSerialIO(io1, io0) + case (io0: InternalSyncSerialIO, io1: ExternalSyncSerialIO) => connectDecoupledSyncSerialIO(io0, io1) + case (io0: ExternalSyncSerialIO, io1: InternalSyncSerialIO) => connectDecoupledSyncSerialIO(io1, io0) } } ) diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index 25ae6668..1cb365bd 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -15,7 +15,7 @@ import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters} import freechips.rocketchip.util.{ResetCatchAndSync} import sifive.blocks.devices.uart._ -import testchipip.serdes.{ExternallySyncSerialIO} +import testchipip.serdes.{ExternalSyncSerialIO} import testchipip.tsi.{SerialRAM} import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} @@ -69,7 +69,7 @@ class WithFireSimIOCellModels extends Config((site, here, up) => { class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ case (th: FireSim, port: SerialTLPort) => { port.io match { - case io: ExternallySyncSerialIO => { + case io: ExternalSyncSerialIO => { io.clock_in := th.harnessBinderClock val ram = Module(LazyModule(new SerialRAM(port.serdesser, port.params)(port.serdesser.p)).module) ram.io.ser.in <> io.out diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 9f5f7ef6..eb092944 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -260,7 +260,7 @@ class FireSimSmallSystemConfig extends Config( new freechips.rocketchip.subsystem.WithExtMemSize(1 << 28) ++ new testchipip.serdes.WithSerialTL(Seq(testchipip.serdes.SerialTLParams( client = Some(testchipip.serdes.SerialTLClientParams(idBits = 4)), - width = 32 + phyParams = testchipip.serdes.ExternalSyncSerialParams(width=32) ))) ++ new testchipip.iceblk.WithBlockDevice ++ new chipyard.config.WithUARTInitBaudRate(BigInt(3686400L)) ++ diff --git a/generators/testchipip b/generators/testchipip index e53f78aa..9011ac85 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit e53f78aa189c0cf7e0d3a9b08b44222ca05ab160 +Subproject commit 9011ac8530f8186e013409f0e2d65f54b2b512d4 From 5a96abeb146c5a2993654ccef8f24e4664c9af93 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Thu, 21 Dec 2023 21:09:39 -0800 Subject: [PATCH 146/184] FIX: fix conda-lock version, >1.4.0 does not work! --- docs/Chipyard-Basics/Initial-Repo-Setup.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Chipyard-Basics/Initial-Repo-Setup.rst b/docs/Chipyard-Basics/Initial-Repo-Setup.rst index 9f31624e..948b7e2e 100644 --- a/docs/Chipyard-Basics/Initial-Repo-Setup.rst +++ b/docs/Chipyard-Basics/Initial-Repo-Setup.rst @@ -46,7 +46,7 @@ This is done by the following: .. code-block:: shell - conda install -n base conda-lock=1.4 + conda install -n base conda-lock==1.4.0 conda activate base From 77c3b65fc93b23fd6336858b55b3b20297eaefd7 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 09:39:08 -0800 Subject: [PATCH 147/184] Don't punch out uart2tsi debug io --- fpga/src/main/scala/arty100t/HarnessBinders.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 64676584..bbb966bb 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -25,11 +25,11 @@ import testchipip._ class WithArty100TUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTTSIPort) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] - val harnessIO = IO(chiselTypeOf(port.io)).suggestName("uart_tsi") - harnessIO <> port.io + val harnessIO = IO(new UARTPortIO(port.io.uartParams)).suggestName("uart_tsi") + harnessIO <> port.io.uart val packagePinsWithPackageIOs = Seq( - ("A9" , IOPin(harnessIO.uart.rxd)), - ("D10", IOPin(harnessIO.uart.txd))) + ("A9" , IOPin(harnessIO.rxd)), + ("D10", IOPin(harnessIO.txd))) packagePinsWithPackageIOs foreach { case (pin, io) => { ath.xdc.addPackagePin(io, pin) ath.xdc.addIOStandard(io, "LVCMOS33") From 81cc556c3b79e727a69ae2437e42bd9e85bb3359 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 10:05:44 -0800 Subject: [PATCH 148/184] Add symmetric rocket config --- .../main/scala/config/ChipletConfigs.scala | 38 +++++++++++++++++++ .../main/scala/harness/HarnessBinders.scala | 17 +++++++-- .../scala/harness/MultiHarnessBinders.scala | 11 ++++++ generators/testchipip | 2 +- 4 files changed, 63 insertions(+), 5 deletions(-) create mode 100644 generators/chipyard/src/main/scala/config/ChipletConfigs.scala diff --git a/generators/chipyard/src/main/scala/config/ChipletConfigs.scala b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala new file mode 100644 index 00000000..3b802c57 --- /dev/null +++ b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala @@ -0,0 +1,38 @@ +package chipyard + +import org.chipsalliance.cde.config.{Config} +import freechips.rocketchip.diplomacy.{AddressSet} +import freechips.rocketchip.subsystem.{SBUS} +import testchipip.soc.{OBUS} + +// ------------------------------------------------ +// Configs demonstrating chip-to-chip communication +// ------------------------------------------------ + +// Simple design which exposes a second serial-tl port that can connect to another instance of itself +class SymmetricChipletRocketConfig extends Config( + new chipyard.harness.WithSerialTLTiedOff(tieoffs=Some(Seq(1))) ++ // Tie-off the chip-to-chip link in single-chip sims + new testchipip.serdes.WithSerialTL(Seq( + testchipip.serdes.SerialTLParams( // 0th serial-tl is chip-to-bringup-fpga + client = Some(testchipip.serdes.SerialTLClientParams()), // bringup serial-tl acts only as a client + phyParams = testchipip.serdes.ExternalSyncSerialParams() // bringup serial-tl is sync'd to external clock + ), + testchipip.serdes.SerialTLParams( // 1st serial-tl is chip-to-chip + client = Some(testchipip.serdes.SerialTLClientParams()), // chip-to-chip serial-tl acts as a client + manager = Some(testchipip.serdes.SerialTLManagerParams( // chip-to-chip serial-tl managers other chip's memory + memParams = Seq(testchipip.serdes.ManagerRAMParams( + address = 0, + size = 1L << 32, + )), + slaveWhere = OBUS + )), + phyParams = testchipip.serdes.SourceSyncSerialParams() // chip-to-chip serial-tl is symmetric source-sync'd + )) + ) ++ + new testchipip.soc.WithOffchipBusClient(SBUS, // obus provides path to other chip's memory + blockRange = Seq(AddressSet(0, (1L << 32) - 1)), // The lower 4GB is mapped to this chip + replicationBase = Some(1L << 32) // The upper 4GB goes off-chip + ) ++ + new testchipip.soc.WithOffchipBus ++ + new freechips.rocketchip.subsystem.WithNBigCores(1) ++ + new chipyard.config.AbstractConfig) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index a29cf5c0..a50f1743 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -205,23 +205,32 @@ class WithTiedOffDMI extends HarnessBinder({ } }) -class WithSerialTLTiedOff extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SerialTLPort) => { +// If tieoffs is specified, a list of serial portIds to tie off +// If tieoffs is unspecified, ties off all serial ports +class WithSerialTLTiedOff(tieoffs: Option[Seq[Int]] = None) extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: SerialTLPort) if (tieoffs.map(_.contains(port.portId)).getOrElse(true)) => { port.io match { case io: DecoupledSerialIO => io.out.ready := false.B; io.in.valid := false.B; io.in.bits := DontCare; + case io: SourceSyncSerialIO => { + io.clock_in := false.B.asClock + io.reset_in := false.B.asAsyncReset + io.in := DontCare + io.credit_in := DontCare + } } port.io match { case io: InternalSyncSerialIO => case io: ExternalSyncSerialIO => io.clock_in := false.B.asClock + case _ => } } }) class WithSimTSIOverSerialTL extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SerialTLPort) => { + case (th: HasHarnessInstantiators, port: SerialTLPort) if (port.portId == 0) => { port.io match { case io: InternalSyncSerialIO => - case io: ExternalSyncSerialIO => io.clock_in := false.B.asClock + case io: ExternalSyncSerialIO => io.clock_in := th.harnessBinderClock } port.io match { diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index e159e345..9cd6afd2 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -65,9 +65,20 @@ class WithMultiChipSerialTL(chip0: Int, chip1: Int, chip0portId: Int = 0, chip1p clkSink.in <> clkSource.out clkSource.in <> clkSink.out } + def connectSourceSyncSerialIO(a: SourceSyncSerialIO, b: SourceSyncSerialIO) = { + a.clock_in := b.clock_out + b.clock_in := a.clock_out + a.reset_in := b.reset_out + b.reset_in := a.reset_out + a.in := b.out + b.in := a.out + a.credit_in := b.credit_out + b.credit_in := a.credit_out + } (p0.io, p1.io) match { case (io0: InternalSyncSerialIO, io1: ExternalSyncSerialIO) => connectDecoupledSyncSerialIO(io0, io1) case (io0: ExternalSyncSerialIO, io1: InternalSyncSerialIO) => connectDecoupledSyncSerialIO(io1, io0) + case (io0: SourceSyncSerialIO , io1: SourceSyncSerialIO ) => connectSourceSyncSerialIO (io0, io1) } } ) diff --git a/generators/testchipip b/generators/testchipip index 9011ac85..11551255 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 9011ac8530f8186e013409f0e2d65f54b2b512d4 +Subproject commit 11551255834ff4f98c1474a806b7c733cb53d6ee From 8e37dcdf81d18649f21725014e6e3b07b7a98229 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 12:52:23 -0800 Subject: [PATCH 149/184] Support multi-TSI/multi-SimDRAM --- .../chipyard/src/main/scala/config/ChipletConfigs.scala | 8 ++++++++ .../chipyard/src/main/scala/harness/HarnessBinders.scala | 8 +++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/ChipletConfigs.scala b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala index 3b802c57..e07aa73d 100644 --- a/generators/chipyard/src/main/scala/config/ChipletConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala @@ -36,3 +36,11 @@ class SymmetricChipletRocketConfig extends Config( new testchipip.soc.WithOffchipBus ++ new freechips.rocketchip.subsystem.WithNBigCores(1) ++ new chipyard.config.AbstractConfig) + +// Simulates 2X of the SymmetricChipletRocketConfig in a multi-sim config +class MultiSimSymmetricChipletRocketConfig extends Config( + new chipyard.harness.WithAbsoluteFreqHarnessClockInstantiator ++ + new chipyard.harness.WithMultiChipSerialTL(chip0=0, chip1=1, chip0portId=1, chip1portId=1) ++ + new chipyard.harness.WithMultiChip(0, new SymmetricChipletRocketConfig) ++ + new chipyard.harness.WithMultiChip(1, new SymmetricChipletRocketConfig) +) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index a50f1743..5d71c1bd 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -50,9 +50,7 @@ class WithGPIOTiedOff extends HarnessBinder({ class WithUARTAdapter extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTPort) => { val div = (th.getHarnessBinderClockFreqMHz.toDouble * 1000000 / port.io.c.initBaudRate.toDouble).toInt - val uart_sim = Module(new UARTAdapter(port.uartNo, div, false)).suggestName(s"uart_sim_uartno${port.uartNo}") - uart_sim.io.uart.txd := port.io.txd - port.io.rxd := uart_sim.io.uart.rxd + UARTAdapter.connect(Seq(port.io), div, false) } }) // DOC include end: WithUARTAdapter @@ -113,7 +111,7 @@ class WithBlackBoxSimMem(additionalLatency: Int = 0) extends HarnessBinder({ val memBase = port.params.master.base val lineSize = 64 // cache block size val clockFreq = port.clockFreqMHz - val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, port.edge.bundle)).suggestName("simdram") + val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, port.edge.bundle, th.p(MultiChipIdx))).suggestName("simdram") mem.io.clock := port.io.clock mem.io.reset := th.harnessBinderReset.asAsyncReset @@ -246,7 +244,7 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ ram.io.ser.in <> io.out io.in <> ram.io.ser.out - val success = SimTSI.connect(ram.io.tsi, clock, th.harnessBinderReset) + val success = SimTSI.connect(ram.io.tsi, clock, th.harnessBinderReset, th.p(MultiChipIdx)) when (success) { th.success := true.B } } } From fdeede7b0bbbf1ce818812f27264da7363cda274 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 12:55:32 -0800 Subject: [PATCH 150/184] Add tests for symmetric rocket chiplet config --- .github/scripts/defaults.sh | 3 ++- .github/scripts/run-tests.sh | 4 ++++ .github/workflows/chipyard-run-tests.yml | 24 +++++++++++++++++++ generators/testchipip | 2 +- tests/Makefile | 2 +- tests/symmetric.c | 30 ++++++++++++++++++++++++ 6 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 tests/symmetric.c diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index d4eb7b56..94339a5b 100755 --- a/.github/scripts/defaults.sh +++ b/.github/scripts/defaults.sh @@ -29,7 +29,7 @@ REMOTE_COURSIER_CACHE=$REMOTE_WORK_DIR/.coursier-cache # key value store to get the build groups declare -A grouping grouping["group-cores"]="chipyard-cva6 chipyard-ibex chipyard-rocket chipyard-hetero chipyard-boom chipyard-sodor chipyard-digitaltop chipyard-multiclock-rocket chipyard-nomem-scratchpad chipyard-spike chipyard-clone chipyard-prefetchers chipyard-shuttle" -grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboom chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered" +grouping["group-peripherals"]="chipyard-dmirocket chipyard-dmiboom chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike chipyard-tethered chipyard-symmetric" grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels chipyard-nvdla chipyard-aes256ecb" grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" @@ -58,6 +58,7 @@ mapping["chipyard-spiflashwrite"]=" CONFIG=SmallSPIFlashRocketConfig EXTRA_SIM_F mapping["chipyard-manyperipherals"]=" CONFIG=ManyPeripheralsRocketConfig EXTRA_SIM_FLAGS='+spiflash0=${LOCAL_CHIPYARD_DIR}/tests/spiflash.img'" mapping["chipyard-chiplike"]=" CONFIG=ChipLikeRocketConfig MODEL=FlatTestHarness MODEL_PACKAGE=chipyard.example verilog" mapping["chipyard-tethered"]=" CONFIG=VerilatorCITetheredChipLikeRocketConfig" +mapping["chipyard-symmetric"]=" CONFIG=MultiSimSymmetricChipletRocketConfig" mapping["chipyard-cloneboom"]=" CONFIG=Cloned64MegaBoomConfig verilog" mapping["chipyard-nocores"]=" CONFIG=NoCoresConfig verilog" mapping["tracegen"]=" CONFIG=NonBlockingTraceGenL2Config" diff --git a/.github/scripts/run-tests.sh b/.github/scripts/run-tests.sh index ce272737..eccc5563 100755 --- a/.github/scripts/run-tests.sh +++ b/.github/scripts/run-tests.sh @@ -118,6 +118,10 @@ case $1 in make -C $LOCAL_CHIPYARD_DIR/tests run_binary BINARY=$LOCAL_CHIPYARD_DIR/tests/hello.riscv LOADMEM=1 EXTRA_SIM_FLAGS="+cflush_addr=0x2010200" ;; + chipyard-symmetric) + make -C $LOCAL_CHIPYARD_DIR/tests + run_binary BINARY=$LOCAL_CHIPYARD_DIR/tests/symmetric.riscv LOADMEM=1 + ;; tracegen) run_tracegen ;; diff --git a/.github/workflows/chipyard-run-tests.yml b/.github/workflows/chipyard-run-tests.yml index 1c0f10d8..b524ae37 100644 --- a/.github/workflows/chipyard-run-tests.yml +++ b/.github/workflows/chipyard-run-tests.yml @@ -708,6 +708,29 @@ jobs: group-key: "group-peripherals" project-key: "chipyard-tethered" + chipyard-symmetric-run-tests: + name: chipyard-symmetric-run-tests + needs: prepare-chipyard-peripherals + runs-on: as4 + steps: + - name: Delete old checkout + run: | + ls -alh . + rm -rf ${{ github.workspace }}/* || true + rm -rf ${{ github.workspace }}/.* || true + ls -alh . + - name: Checkout + uses: actions/checkout@v3 + - name: Git workaround + uses: ./.github/actions/git-workaround + - name: Create conda env + uses: ./.github/actions/create-conda-env + - name: Run tests + uses: ./.github/actions/run-tests + with: + group-key: "group-peripherals" + project-key: "chipyard-symmetric" + chipyard-sha3-run-tests: name: chipyard-sha3-run-tests needs: prepare-chipyard-accels @@ -1071,6 +1094,7 @@ jobs: chipyard-spiflashwrite-run-tests, chipyard-manyperipherals-run-tests, chipyard-tethered-run-tests, + chipyard-symmetric-run-tests, chipyard-sha3-run-tests, chipyard-gemmini-run-tests, chipyard-manymmioaccels-run-tests, # chipyard-nvdla-run-tests, diff --git a/generators/testchipip b/generators/testchipip index 11551255..9d1a2125 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 11551255834ff4f98c1474a806b7c733cb53d6ee +Subproject commit 9d1a2125799cd7179e280e6901e84235f3f479a8 diff --git a/tests/Makefile b/tests/Makefile index 670b49ea..1c6df31b 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -29,7 +29,7 @@ include libgloss.mk PROGRAMS = pwm blkdev accum charcount nic-loopback big-blkdev pingd \ streaming-passthrough streaming-fir nvdla spiflashread spiflashwrite fft gcd \ - hello mt-hello + hello mt-hello symmetric .DEFAULT_GOAL := default diff --git a/tests/symmetric.c b/tests/symmetric.c new file mode 100644 index 00000000..a6d37627 --- /dev/null +++ b/tests/symmetric.c @@ -0,0 +1,30 @@ +#include +#include +#include +#include "marchid.h" + +#define OBUS_OFFSET (0x1L << 32) + +char src[] = "This is a test string. It will be written into the off-chip memory address, then copied back."; +char dest[4096]; +char test[4096]; + +int main(void) { + size_t write_start = rdcycle(); + memcpy(dest + OBUS_OFFSET, src, sizeof(src)); + size_t write_end = rdcycle(); + + printf("Wrote %ld bytes in %ld cycles\n", sizeof(src), write_end - write_start); + + size_t read_start = rdcycle(); + memcpy(test, dest + OBUS_OFFSET, sizeof(src)); + size_t read_end = rdcycle(); + + if (memcmp(src, test, sizeof(src))) { + printf("Remote write/read failed\n"); + exit(1); + } + printf("Read %ld bytes in %ld cycles\n", sizeof(src), read_end - read_start); + + return 0; +} From 3885e79f7734ecd5650ee6cd7644744514178ad2 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 17:19:09 -0800 Subject: [PATCH 151/184] Bump testchipip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index 9d1a2125..e1fc05b0 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 9d1a2125799cd7179e280e6901e84235f3f479a8 +Subproject commit e1fc05b09283524fc09bee7d3ff351b6f83825ca From 835562238add317102f3312844675826e1e50ce9 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 26 Dec 2023 18:37:39 -0800 Subject: [PATCH 152/184] Explicitly pass chipId to all HarnessBinders --- fpga/src/main/scala/arty/HarnessBinders.scala | 8 +-- .../main/scala/arty100t/HarnessBinders.scala | 6 +- .../scala/nexysvideo/HarnessBinders.scala | 4 +- .../src/main/scala/vc707/HarnessBinders.scala | 6 +- .../main/scala/vcu118/HarnessBinders.scala | 6 +- .../scala/vcu118/bringup/HarnessBinders.scala | 10 ++-- .../main/scala/harness/HarnessBinders.scala | 58 +++++++++---------- .../harness/HasHarnessInstantiators.scala | 2 +- .../scala/harness/MultiHarnessBinders.scala | 4 +- .../src/main/scala/harness/package.scala | 2 +- .../src/main/scala/BridgeBinders.scala | 22 +++---- 11 files changed, 64 insertions(+), 64 deletions(-) diff --git a/fpga/src/main/scala/arty/HarnessBinders.scala b/fpga/src/main/scala/arty/HarnessBinders.scala index d2ce5489..39ddd204 100644 --- a/fpga/src/main/scala/arty/HarnessBinders.scala +++ b/fpga/src/main/scala/arty/HarnessBinders.scala @@ -15,19 +15,19 @@ import chipyard.harness.{HarnessBinder} import chipyard.iobinders._ class WithArtyDebugResetHarnessBinder extends HarnessBinder({ - case (th: Arty35THarness, port: DebugResetPort) => { + case (th: Arty35THarness, port: DebugResetPort, chipId: Int) => { th.dut_ndreset := port.io // Debug module reset } }) class WithArtyJTAGResetHarnessBinder extends HarnessBinder({ - case (th: Arty35THarness, port: JTAGResetPort) => { + case (th: Arty35THarness, port: JTAGResetPort, chipId: Int) => { port.io := PowerOnResetFPGAOnly(th.clock_32MHz) // JTAG module reset } }) class WithArtyJTAGHarnessBinder extends HarnessBinder({ - case (th: Arty35THarness, port: JTAGPort) => { + case (th: Arty35THarness, port: JTAGPort, chipId: Int) => { val jtag_wire = Wire(new JTAGIO) jtag_wire.TDO.data := port.io.TDO jtag_wire.TDO.driven := true.B @@ -62,7 +62,7 @@ class WithArtyJTAGHarnessBinder extends HarnessBinder({ }) class WithArtyUARTHarnessBinder extends HarnessBinder({ - case (th: Arty35THarness, port: UARTPort) => { + case (th: Arty35THarness, port: UARTPort, chipId: Int) => { withClockAndReset(th.clock_32MHz, th.ck_rst) { IOBUF(th.uart_rxd_out, port.io.txd) port.io.rxd := IOBUF(th.uart_txd_in) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index d1af6fdc..b6c7273a 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -22,7 +22,7 @@ import chipyard.iobinders._ import testchipip.serdes._ class WithArty100TUARTTSI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTTSIPort) => { + case (th: HasHarnessInstantiators, port: UARTTSIPort, chipId: Int) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] ath.io_uart_bb.bundle <> port.io.uart ath.other_leds(1) := port.io.dropped @@ -34,7 +34,7 @@ class WithArty100TUARTTSI extends HarnessBinder({ }) class WithArty100TDDRTL extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: TLMemPort) => { + case (th: HasHarnessInstantiators, port: TLMemPort, chipId: Int) => { val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val bundles = artyTh.ddrClient.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) @@ -45,7 +45,7 @@ class WithArty100TDDRTL extends HarnessBinder({ // Uses PMOD JA/JB class WithArty100TSerialTLToGPIO extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SerialTLPort) => { + case (th: HasHarnessInstantiators, port: SerialTLPort, chipId: Int) => { val artyTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val harnessIO = IO(chiselTypeOf(port.io)).suggestName("serial_tl") harnessIO <> port.io diff --git a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala index e6865eff..29deeadb 100644 --- a/fpga/src/main/scala/nexysvideo/HarnessBinders.scala +++ b/fpga/src/main/scala/nexysvideo/HarnessBinders.scala @@ -15,7 +15,7 @@ import chipyard.harness._ import chipyard.iobinders._ class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTTSIPort) => { + case (th: HasHarnessInstantiators, port: UARTTSIPort, chipId: Int) => { val nexysvideoth = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] nexysvideoth.io_uart_bb.bundle <> port.io.uart nexysvideoth.other_leds(1) := port.io.dropped @@ -27,7 +27,7 @@ class WithNexysVideoUARTTSI(uartBaudRate: BigInt = 115200) extends HarnessBinder }) class WithNexysVideoDDRTL extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: TLMemPort) => { + case (th: HasHarnessInstantiators, port: TLMemPort, chipId: Int) => { val nexysTh = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[NexysVideoHarness] val bundles = nexysTh.ddrClient.get.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) diff --git a/fpga/src/main/scala/vc707/HarnessBinders.scala b/fpga/src/main/scala/vc707/HarnessBinders.scala index 25224d57..d08fba76 100644 --- a/fpga/src/main/scala/vc707/HarnessBinders.scala +++ b/fpga/src/main/scala/vc707/HarnessBinders.scala @@ -16,21 +16,21 @@ import chipyard.iobinders._ /*** UART ***/ class WithVC707UARTHarnessBinder extends HarnessBinder({ - case (th: VC707FPGATestHarnessImp, port: UARTPort) => { + case (th: VC707FPGATestHarnessImp, port: UARTPort, chipId: Int) => { th.vc707Outer.io_uart_bb.bundle <> port.io } }) /*** SPI ***/ class WithVC707SPISDCardHarnessBinder extends HarnessBinder({ - case (th: VC707FPGATestHarnessImp, port: SPIPort) => { + case (th: VC707FPGATestHarnessImp, port: SPIPort, chipId: Int) => { th.vc707Outer.io_spi_bb.bundle <> port.io } }) /*** Experimental DDR ***/ class WithVC707DDRMemHarnessBinder extends HarnessBinder({ - case (th: VC707FPGATestHarnessImp, port: TLMemPort) => { + case (th: VC707FPGATestHarnessImp, port: TLMemPort, chipId: Int) => { val bundles = th.vc707Outer.ddrClient.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } diff --git a/fpga/src/main/scala/vcu118/HarnessBinders.scala b/fpga/src/main/scala/vcu118/HarnessBinders.scala index 769e5b42..c03f551f 100644 --- a/fpga/src/main/scala/vcu118/HarnessBinders.scala +++ b/fpga/src/main/scala/vcu118/HarnessBinders.scala @@ -15,21 +15,21 @@ import chipyard.iobinders._ /*** UART ***/ class WithUART extends HarnessBinder({ - case (th: VCU118FPGATestHarnessImp, port: UARTPort) => { + case (th: VCU118FPGATestHarnessImp, port: UARTPort, chipId: Int) => { th.vcu118Outer.io_uart_bb.bundle <> port.io } }) /*** SPI ***/ class WithSPISDCard extends HarnessBinder({ - case (th: VCU118FPGATestHarnessImp, port: SPIPort) => { + case (th: VCU118FPGATestHarnessImp, port: SPIPort, chipId: Int) => { th.vcu118Outer.io_spi_bb.bundle <> port.io } }) /*** Experimental DDR ***/ class WithDDRMem extends HarnessBinder({ - case (th: VCU118FPGATestHarnessImp, port: TLMemPort) => { + case (th: VCU118FPGATestHarnessImp, port: TLMemPort, chipId: Int) => { val bundles = th.vcu118Outer.ddrClient.out.map(_._1) val ddrClientBundle = Wire(new HeterogeneousBag(bundles.map(_.cloneType))) bundles.zip(ddrClientBundle).foreach { case (bundle, io) => bundle <> io } diff --git a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala index c130a697..27933bf6 100644 --- a/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala +++ b/fpga/src/main/scala/vcu118/bringup/HarnessBinders.scala @@ -18,34 +18,34 @@ import chipyard.iobinders._ /*** UART ***/ class WithBringupUART extends HarnessBinder({ - case (th: BringupVCU118FPGATestHarnessImp, port: UARTPort) => { + case (th: BringupVCU118FPGATestHarnessImp, port: UARTPort, chipId: Int) => { th.bringupOuter.io_fmc_uart_bb.bundle <> port.io } }) /*** I2C ***/ class WithBringupI2C extends HarnessBinder({ - case (th: BringupVCU118FPGATestHarnessImp, port: chipyard.iobinders.I2CPort) => { + case (th: BringupVCU118FPGATestHarnessImp, port: chipyard.iobinders.I2CPort, chipId: Int) => { th.bringupOuter.io_i2c_bb.bundle <> port.io } }) /*** GPIO ***/ class WithBringupGPIO extends HarnessBinder({ - case (th: BringupVCU118FPGATestHarnessImp, port: GPIOPort) => { + case (th: BringupVCU118FPGATestHarnessImp, port: GPIOPort, chipId: Int) => { th.bringupOuter.io_gpio_bb(port.pinId).bundle <> port.io } }) /*** TSI Host Widget ***/ class WithBringupTSIHost extends HarnessBinder({ - case (th: BringupVCU118FPGATestHarnessImp, port: TLMemPort) => { + case (th: BringupVCU118FPGATestHarnessImp, port: TLMemPort, chipId: Int) => { val tsiBundles = th.bringupOuter.tsiDdrClient.out.map(_._1) val tsiDdrClientBundle = Wire(new HeterogeneousBag(tsiBundles.map(_.cloneType))) tsiBundles.zip(tsiDdrClientBundle).foreach { case (bundle, io) => bundle <> io } tsiDdrClientBundle <> port.io } - case (th: BringupVCU118FPGATestHarnessImp, port: TSIHostWidgetPort) => { + case (th: BringupVCU118FPGATestHarnessImp, port: TSIHostWidgetPort, chipId: Int) => { th.bringupOuter.io_tsi_serial_bb.bundle <> port.io } }) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 5d71c1bd..999c8877 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -28,8 +28,8 @@ import chipyard.iobinders._ case object HarnessBinders extends Field[HarnessBinderFunction]({case _ => }) object ApplyHarnessBinders { - def apply(th: HasHarnessInstantiators, ports: Seq[Port[_]])(implicit p: Parameters): Unit = { - ports.foreach(port => p(HarnessBinders)(th, port)) + def apply(th: HasHarnessInstantiators, ports: Seq[Port[_]], chipId: Int)(implicit p: Parameters): Unit = { + ports.foreach(port => p(HarnessBinders)(th, port, chipId)) } } @@ -41,14 +41,14 @@ class HarnessBinder[T <: HasHarnessInstantiators, S <: Port[_]]( class WithGPIOTiedOff extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: GPIOPort) => { + case (th: HasHarnessInstantiators, port: GPIOPort, chipId: Int) => { port.io <> AnalogConst(0) } }) // DOC include start: WithUARTAdapter class WithUARTAdapter extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTPort) => { + case (th: HasHarnessInstantiators, port: UARTPort, chipId: Int) => { val div = (th.getHarnessBinderClockFreqMHz.toDouble * 1000000 / port.io.c.initBaudRate.toDouble).toInt UARTAdapter.connect(Seq(port.io), div, false) } @@ -56,7 +56,7 @@ class WithUARTAdapter extends HarnessBinder({ // DOC include end: WithUARTAdapter class WithSimSPIFlashModel(rdOnly: Boolean = true) extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SPIFlashPort) => { + case (th: HasHarnessInstantiators, port: SPIFlashPort, chipId: Int) => { val spi_mem = Module(new SimSPIFlashModel(port.params.fSize, port.spiId, rdOnly)).suggestName(s"spi_mem${port.spiId}") spi_mem.io.sck := port.io.sck require(port.params.csWidth == 1, "I don't know what to do with your extra CS bits. Fix me please.") @@ -67,7 +67,7 @@ class WithSimSPIFlashModel(rdOnly: Boolean = true) extends HarnessBinder({ }) class WithSimBlockDevice extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: BlockDevicePort) => { + case (th: HasHarnessInstantiators, port: BlockDevicePort, chipId: Int) => { val sim_blkdev = Module(new SimBlockDevice(port.params)) sim_blkdev.io.bdev <> port.io.bits sim_blkdev.io.clock := port.io.clock @@ -76,7 +76,7 @@ class WithSimBlockDevice extends HarnessBinder({ }) class WithBlockDeviceModel extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: BlockDevicePort) => { + case (th: HasHarnessInstantiators, port: BlockDevicePort, chipId: Int) => { val blkdev_model = Module(new BlockDeviceModel(16, port.params)) blkdev_model.io <> port.io.bits blkdev_model.clock := port.io.clock @@ -85,19 +85,19 @@ class WithBlockDeviceModel extends HarnessBinder({ }) class WithLoopbackNIC extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: NICPort) => { + case (th: HasHarnessInstantiators, port: NICPort, chipId: Int) => { withClock(port.io.clock) { NicLoopback.connect(port.io.bits, port.params) } } }) class WithSimNetwork extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: NICPort) => { + case (th: HasHarnessInstantiators, port: NICPort, chipId: Int) => { withClock(port.io.clock) { SimNetwork.connect(Some(port.io.bits), port.io.clock, th.harnessBinderReset.asBool) } } }) class WithSimAXIMem extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: AXI4MemPort) => { + case (th: HasHarnessInstantiators, port: AXI4MemPort, chipId: Int) => { val mem = LazyModule(new SimAXIMem(port.edge, size=port.params.master.size)(Parameters.empty)) withClock(port.io.clock) { Module(mem.module) } mem.io_axi4.head <> port.io @@ -105,13 +105,13 @@ class WithSimAXIMem extends HarnessBinder({ }) class WithBlackBoxSimMem(additionalLatency: Int = 0) extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: AXI4MemPort) => { + case (th: HasHarnessInstantiators, port: AXI4MemPort, chipId: Int) => { // TODO FIX: This currently makes each SimDRAM contain the entire memory space val memSize = port.params.master.size val memBase = port.params.master.base val lineSize = 64 // cache block size val clockFreq = port.clockFreqMHz - val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, port.edge.bundle, th.p(MultiChipIdx))).suggestName("simdram") + val mem = Module(new SimDRAM(memSize, lineSize, clockFreq, memBase, port.edge.bundle, chipId)).suggestName("simdram") mem.io.clock := port.io.clock mem.io.reset := th.harnessBinderReset.asAsyncReset @@ -138,7 +138,7 @@ class WithBlackBoxSimMem(additionalLatency: Int = 0) extends HarnessBinder({ }) class WithSimAXIMMIO extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: AXI4MMIOPort) => { + case (th: HasHarnessInstantiators, port: AXI4MMIOPort, chipId: Int) => { val mmio_mem = LazyModule(new SimAXIMem(port.edge, size = port.params.size)(Parameters.empty)) withClock(port.io.clock) { Module(mmio_mem.module).suggestName("mmio_mem") } mmio_mem.io_axi4.head <> port.io.bits @@ -146,13 +146,13 @@ class WithSimAXIMMIO extends HarnessBinder({ }) class WithTieOffInterrupts extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: ExtIntPort) => { + case (th: HasHarnessInstantiators, port: ExtIntPort, chipId: Int) => { port.io := 0.U } }) class WithTieOffL2FBusAXI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: AXI4InPort) => { + case (th: HasHarnessInstantiators, port: AXI4InPort, chipId: Int) => { port.io := DontCare port.io.bits.aw.valid := false.B port.io.bits.w.valid := false.B @@ -163,7 +163,7 @@ class WithTieOffL2FBusAXI extends HarnessBinder({ }) class WithSimJTAGDebug extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: JTAGPort) => { + case (th: HasHarnessInstantiators, port: JTAGPort, chipId: Int) => { val dtm_success = WireInit(false.B) when (dtm_success) { th.success := true.B } val jtag_wire = Wire(new JTAGIO) @@ -178,7 +178,7 @@ class WithSimJTAGDebug extends HarnessBinder({ }) class WithSimDMI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: DMIPort) => { + case (th: HasHarnessInstantiators, port: DMIPort, chipId: Int) => { val dtm_success = WireInit(false.B) when (dtm_success) { th.success := true.B } val dtm = Module(new TestchipSimDTM()(Parameters.empty)).connect(th.harnessBinderClock, th.harnessBinderReset.asBool, port.io, dtm_success) @@ -186,7 +186,7 @@ class WithSimDMI extends HarnessBinder({ }) class WithTiedOffJTAG extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: JTAGPort) => { + case (th: HasHarnessInstantiators, port: JTAGPort, chipId: Int) => { port.io.TCK := true.B.asClock port.io.TMS := true.B port.io.TDI := true.B @@ -194,7 +194,7 @@ class WithTiedOffJTAG extends HarnessBinder({ }) class WithTiedOffDMI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: DMIPort) => { + case (th: HasHarnessInstantiators, port: DMIPort, chipId: Int) => { port.io.dmi.req.valid := false.B port.io.dmi.req.bits := DontCare port.io.dmi.resp.ready := true.B @@ -206,7 +206,7 @@ class WithTiedOffDMI extends HarnessBinder({ // If tieoffs is specified, a list of serial portIds to tie off // If tieoffs is unspecified, ties off all serial ports class WithSerialTLTiedOff(tieoffs: Option[Seq[Int]] = None) extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SerialTLPort) if (tieoffs.map(_.contains(port.portId)).getOrElse(true)) => { + case (th: HasHarnessInstantiators, port: SerialTLPort, chipId: Int) if (tieoffs.map(_.contains(port.portId)).getOrElse(true)) => { port.io match { case io: DecoupledSerialIO => io.out.ready := false.B; io.in.valid := false.B; io.in.bits := DontCare; case io: SourceSyncSerialIO => { @@ -225,7 +225,7 @@ class WithSerialTLTiedOff(tieoffs: Option[Seq[Int]] = None) extends HarnessBinde }) class WithSimTSIOverSerialTL extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SerialTLPort) if (port.portId == 0) => { + case (th: HasHarnessInstantiators, port: SerialTLPort, chipId: Int) if (port.portId == 0) => { port.io match { case io: InternalSyncSerialIO => case io: ExternalSyncSerialIO => io.clock_in := th.harnessBinderClock @@ -244,7 +244,7 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ ram.io.ser.in <> io.out io.in <> ram.io.ser.out - val success = SimTSI.connect(ram.io.tsi, clock, th.harnessBinderReset, th.p(MultiChipIdx)) + val success = SimTSI.connect(ram.io.tsi, clock, th.harnessBinderReset, chipId) when (success) { th.success := true.B } } } @@ -253,7 +253,7 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ }) class WithSimUARTToUARTTSI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTPort) => { + case (th: HasHarnessInstantiators, port: UARTPort, chipId: Int) => { UARTAdapter.connect(Seq(port.io), baudrate=port.io.c.initBaudRate, clockFrequency=th.getHarnessBinderClockFreqHz.toInt, @@ -262,7 +262,7 @@ class WithSimUARTToUARTTSI extends HarnessBinder({ }) class WithSimTSIToUARTTSI extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTTSIPort) => { + case (th: HasHarnessInstantiators, port: UARTTSIPort, chipId: Int) => { val freq = th.getHarnessBinderClockFreqHz.toInt val uart_to_serial = Module(new UARTToSerial(freq, port.io.uart.c)) val serial_width_adapter = Module(new SerialWidthAdapter(8, TSI.WIDTH)) @@ -276,27 +276,27 @@ class WithSimTSIToUARTTSI extends HarnessBinder({ }) class WithTraceGenSuccess extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: SuccessPort) => { + case (th: HasHarnessInstantiators, port: SuccessPort, chipId: Int) => { when (port.io) { th.success := true.B } } }) class WithCospike extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: TracePort) => { + case (th: HasHarnessInstantiators, port: TracePort, chipId: Int) => { port.io.traces.zipWithIndex.map(t => SpikeCosim(t._1, t._2, port.cosimCfg)) } }) class WithCustomBootPinPlusArg extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: CustomBootPort) => { + case (th: HasHarnessInstantiators, port: CustomBootPort, chipId: Int) => { val pin = PlusArg("custom_boot_pin", width=1) port.io := pin } }) class WithClockFromHarness extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: ClockPort) => { + case (th: HasHarnessInstantiators, port: ClockPort, chipId: Int) => { // DOC include start: HarnessClockInstantiatorEx port.io := th.harnessClockInstantiator.requestClockMHz(s"clock_${port.freqMHz}MHz", port.freqMHz) // DOC include end: HarnessClockInstantiatorEx @@ -304,7 +304,7 @@ class WithClockFromHarness extends HarnessBinder({ }) class WithResetFromHarness extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: ResetPort) => { + case (th: HasHarnessInstantiators, port: ResetPort, chipId: Int) => { port.io := th.referenceReset.asAsyncReset } }) diff --git a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala index 35331715..b8674623 100644 --- a/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala +++ b/generators/chipyard/src/main/scala/harness/HasHarnessInstantiators.scala @@ -89,7 +89,7 @@ trait HasHarnessInstantiators { withClockAndReset (harnessBinderClock, harnessBinderReset) { lazyDuts.zipWithIndex.foreach { case (d: HasChipyardPorts, i: Int) => { - ApplyHarnessBinders(this, d.ports)(chipParameters(i)) + ApplyHarnessBinders(this, d.ports, i)(chipParameters(i)) } case _ => } diff --git a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala index 9cd6afd2..4f32880e 100644 --- a/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/MultiHarnessBinders.scala @@ -38,10 +38,10 @@ class MultiHarnessBinder[T <: Port[_], S <: HasHarnessInstantiators]( )(implicit tag0: ClassTag[T], tag1: ClassTag[S]) extends Config((site, here, up) => { // Override any HarnessBinders for chip0/chip1 case MultiChipParameters(`chip0`) => new Config( - new HarnessBinder({case (th: S, port: T) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) + new HarnessBinder({case (th: S, port: T, chipId: Int) if chip0portFn(port) => }) ++ up(MultiChipParameters(chip0)) ) case MultiChipParameters(`chip1`) => new Config( - new HarnessBinder({case (th: S, port: T) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) + new HarnessBinder({case (th: S, port: T, chipId: Int) if chip1portFn(port) => }) ++ up(MultiChipParameters(chip1)) ) // Set the multiharnessbinder key case MultiHarnessBinders(`chip0`, `chip1`) => up(MultiHarnessBinders(chip0, chip1)) :+ { diff --git a/generators/chipyard/src/main/scala/harness/package.scala b/generators/chipyard/src/main/scala/harness/package.scala index d0366c55..d49c1119 100644 --- a/generators/chipyard/src/main/scala/harness/package.scala +++ b/generators/chipyard/src/main/scala/harness/package.scala @@ -6,6 +6,6 @@ import scala.collection.immutable.ListMap package object harness { import chipyard.iobinders.Port - type HarnessBinderFunction = PartialFunction[(HasHarnessInstantiators, Port[_]), Unit] + type HarnessBinderFunction = PartialFunction[(HasHarnessInstantiators, Port[_], Int), Unit] type MultiHarnessBinderFunction = (HasHarnessInstantiators, Seq[Port[_]], Seq[Port[_]]) => Unit } diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index 1cb365bd..bd662a27 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -67,7 +67,7 @@ class WithFireSimIOCellModels extends Config((site, here, up) => { }) class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ - case (th: FireSim, port: SerialTLPort) => { + case (th: FireSim, port: SerialTLPort, chipId: Int) => { port.io match { case io: ExternalSyncSerialIO => { io.clock_in := th.harnessBinderClock @@ -78,8 +78,8 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ // This assumes that: // If ExtMem for the target is defined, then FASED bridge will be attached // If FASED bridge is attached, loadmem widget is present - val hasMainMemory = th.chipParameters(th.p(MultiChipIdx))(ExtMem).isDefined - val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(th.p(MultiChipIdx))) + val hasMainMemory = th.chipParameters(chipId)(ExtMem).isDefined + val mainMemoryName = Option.when(hasMainMemory)(MainMemoryConsts.globalName(chipId)) TSIBridge(th.harnessBinderClock, ram.io.tsi.get, mainMemoryName, th.harnessBinderReset.asBool)(th.p) } } @@ -87,26 +87,26 @@ class WithTSIBridgeAndHarnessRAMOverSerialTL extends HarnessBinder({ }) class WithNICBridge extends HarnessBinder({ - case (th: FireSim, port: NICPort) => { + case (th: FireSim, port: NICPort, chipId: Int) => { NICBridge(port.io.clock, port.io.bits)(th.p) } }) class WithUARTBridge extends HarnessBinder({ - case (th: FireSim, port: UARTPort) => + case (th: FireSim, port: UARTPort, chipId: Int) => val uartSyncClock = th.harnessClockInstantiator.requestClockMHz("uart_clock", port.freqMHz) UARTBridge(uartSyncClock, port.io, th.harnessBinderReset.asBool, port.freqMHz)(th.p) }) class WithBlockDeviceBridge extends HarnessBinder({ - case (th: FireSim, port: BlockDevicePort) => { + case (th: FireSim, port: BlockDevicePort, chipId: Int) => { BlockDevBridge(port.io.clock, port.io.bits, th.harnessBinderReset.asBool) } }) class WithFASEDBridge extends HarnessBinder({ - case (th: FireSim, port: AXI4MemPort) => { + case (th: FireSim, port: AXI4MemPort, chipId: Int) => { val nastiKey = NastiParameters(port.io.bits.r.bits.data.getWidth, port.io.bits.ar.bits.addr.getWidth, port.io.bits.ar.bits.id.getWidth) @@ -114,24 +114,24 @@ class WithFASEDBridge extends HarnessBinder({ CompleteConfig(th.p(firesim.configs.MemModelKey), nastiKey, Some(AXI4EdgeSummary(port.edge)), - Some(MainMemoryConsts.globalName(th.p(MultiChipIdx)))))(th.p) + Some(MainMemoryConsts.globalName(chipId))))(th.p) } }) class WithTracerVBridge extends HarnessBinder({ - case (th: FireSim, port: TracePort) => { + case (th: FireSim, port: TracePort, chipId: Int) => { port.io.traces.map(tileTrace => TracerVBridge(tileTrace)(th.p)) } }) class WithCospikeBridge extends HarnessBinder({ - case (th: FireSim, port: TracePort) => { + case (th: FireSim, port: TracePort, chipId: Int) => { port.io.traces.zipWithIndex.map(t => CospikeBridge(t._1, t._2, port.cosimCfg)) } }) class WithSuccessBridge extends HarnessBinder({ - case (th: FireSim, port: SuccessPort) => { + case (th: FireSim, port: SuccessPort, chipId: Int) => { GroundTestBridge(th.harnessBinderClock, port.io)(th.p) } }) From 86f028ac783dd8327efd0283be68788afc21e7d0 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 27 Dec 2023 07:55:00 -0800 Subject: [PATCH 153/184] Update SimTSI API in spiketile --- generators/chipyard/src/main/resources/csrc/spiketile.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generators/chipyard/src/main/resources/csrc/spiketile.cc b/generators/chipyard/src/main/resources/csrc/spiketile.cc index 5483cf6b..dd02d55e 100644 --- a/generators/chipyard/src/main/resources/csrc/spiketile.cc +++ b/generators/chipyard/src/main/resources/csrc/spiketile.cc @@ -12,7 +12,7 @@ #if __has_include("spiketile_tsi.h") #define SPIKETILE_HTIF_TSI -extern htif_t* tsi; +extern std::map tsis; #endif #if __has_include("spiketile_dtm.h") #define SPIKETILE_HTIF_DTM @@ -346,8 +346,8 @@ extern "C" void spike_tile(int hartid, char* isa, chipyard_simif_t* simif = tile->simif; processor_t* proc = tile->proc; #if defined(SPIKETILE_HTIF_TSI) - if (!simif->htif && tsi) - simif->htif = tsi; + if (!simif->htif && tsis.size() > 0 && tsis[0]) + simif->htif = tsis[0]; #endif #if defined(SPIKETILE_HTIF_DTM) if (!simif->htif && dtm) From cce5122fd22dacda35dd97bb107c4a6cdee8322b Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 27 Dec 2023 12:05:26 -0800 Subject: [PATCH 154/184] Bump testchipip to fix memory leak --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index e1fc05b0..b3b74435 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit e1fc05b09283524fc09bee7d3ff351b6f83825ca +Subproject commit b3b744353875056cbe865d5b767e488713f4c7f1 From 638d40e988e5b39f02614b9ea03f1fe373580b17 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Wed, 27 Dec 2023 12:53:38 -0800 Subject: [PATCH 155/184] Remove esp-conda-env from CI conda envs This was unused --- .github/actions/create-conda-env/action.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/actions/create-conda-env/action.yml b/.github/actions/create-conda-env/action.yml index e29a06e9..b9fd6066 100644 --- a/.github/actions/create-conda-env/action.yml +++ b/.github/actions/create-conda-env/action.yml @@ -11,7 +11,6 @@ runs: echo "Creating a conda environment for each toolchain with the toolchain installed" conda activate base conda-lock install --conda $(which conda) -n ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-riscv-tools ./conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml - conda-lock install --conda $(which conda) -n ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools ./conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml conda deactivate echo "Add extra toolchain collateral + CIRCT to RISC-V install area" @@ -25,14 +24,5 @@ runs: -x ./conda-reqs/circt.json \ -g ${{ github.token }} conda deactivate - conda activate ${{ env.conda-env-name-no-time }}-$(date --date "${{ env.workflow-timestamp }}" +%Y%m%d)-esp-tools - ./scripts/build-toolchain-extra.sh esp-tools -p $CONDA_PREFIX/esp-tools - ./tools/install-circt/bin/download-release-or-nightly-circt.sh \ - -f circt-full-shared-linux-x64.tar.gz \ - -i $CONDA_PREFIX \ - -v version-file \ - -x ./conda-reqs/circt.json \ - -g ${{ github.token }} - conda deactivate fi shell: bash -leo pipefail {0} From 81fd8edb066124ea1c5cb0286b269c68e37f5ac9 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Fri, 29 Dec 2023 15:35:35 -0800 Subject: [PATCH 156/184] ADD: add scratchpad --- fpga/src/main/scala/arty100t/Configs.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index d5c83af3..03ab2b1e 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -46,6 +46,7 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( class RocketArty100TConfig extends Config( new WithArty100TTweaks ++ + new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 128 * 1024) ++ // use rocket l1 DCache scratchpad as base phys mem new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.RocketConfig) From 0ba5c62b30fb50f4e87331c3c7942909a0053def Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Fri, 29 Dec 2023 16:15:59 -0800 Subject: [PATCH 157/184] FIX: fix scratchpad description --- fpga/src/main/scala/arty100t/Configs.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 03ab2b1e..140df42b 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -46,7 +46,7 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( class RocketArty100TConfig extends Config( new WithArty100TTweaks ++ - new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 128 * 1024) ++ // use rocket l1 DCache scratchpad as base phys mem + new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 128 * 1024) ++ // add on-chip scratchpad for small programs new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.RocketConfig) From 9529c13610bd1f698c51bd00bc868543669b346c Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 29 Dec 2023 18:01:14 -0800 Subject: [PATCH 158/184] Add generators/ submodule status check --- common.mk | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/common.mk b/common.mk index f525b526..d52af1a0 100644 --- a/common.mk +++ b/common.mk @@ -118,7 +118,7 @@ $(BOOTROM_TARGETS): $(build_dir)/bootrom.%.img: $(TESTCHIP_RSRCS_DIR)/testchipip ######################################################################################### # compile scala jars ######################################################################################### -$(CHIPYARD_CLASSPATH_TARGETS) &: $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(CHIPYARD_VLOG_SOURCES) +$(CHIPYARD_CLASSPATH_TARGETS) &: check-submodule-status $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(CHIPYARD_VLOG_SOURCES) mkdir -p $(dir $@) $(call run_sbt_assembly,$(SBT_PROJECT),$(CHIPYARD_CLASSPATH)) @@ -451,6 +451,15 @@ find-config-fragments: help: @for line in $(HELP_LINES); do echo "$$line"; done +######################################################################################### +# Check submodule status +######################################################################################### + +.PHONY: check-submodule-status +check-submodule-status: + echo "Checking all submodules in generators/ are initialized. Uninitialized submodules will be displayed" + ! git submodule status $(base_dir)/generators | grep ^- + ######################################################################################### # Implicit rule handling ######################################################################################### From 8600640a40c232717acf6530c373a226c53a9fa8 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 28 Dec 2023 07:36:53 -0800 Subject: [PATCH 159/184] Bump verilator to v5.018 --- conda-reqs/chipyard.yaml | 6 +- ...irements-esp-tools-linux-64.conda-lock.yml | 664 +++++++++--------- ...ements-riscv-tools-linux-64.conda-lock.yml | 660 ++++++++--------- sims/verilator/Makefile | 7 +- 4 files changed, 680 insertions(+), 657 deletions(-) diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index cc63f613..564f05e3 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -23,8 +23,8 @@ dependencies: # bundle FireSim driver with deps into installer shell-script - constructor - - gcc<13 - - gxx<13 + - gcc<12 + - gxx<12 - sysroot_linux-64=2.17 # needed to match pre-built CI XRT glibc version - conda-gcc-specs - binutils @@ -88,7 +88,7 @@ dependencies: - graphviz - expect - dtc - - verilator==5.008 + - verilator==5.018 - screen - elfutils - libdwarf-dev==0.0.0.20190110_28_ga81397fc4 # from ucb-bar channel - using mainline libdwarf-feedstock diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index f5fc3fbf..f61642e8 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fixes-1/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml +# conda-lock -f /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/chipyard.yaml -f /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/esp-tools.yaml --lockfile conda-requirements-esp-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: db7fdb1eff05509c5804999acd40af2d5f212a2f7d2eca69702241bfbebef70d + linux-64: ff6d08e475547b935387001d63d60acbd5f49e2b4fe52cca99a819e4d97a1861 platforms: - linux-64 sources: - - /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-fixes-1/conda-reqs/esp-tools.yaml + - /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/chipyard.yaml + - /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/esp-tools.yaml package: - category: main dependencies: {} @@ -141,25 +141,25 @@ package: - category: main dependencies: {} hash: - md5: 1d7f6d1825bd6bf21ee04336ec87a777 - sha256: 92bec8177aacfcd49a8e5bda49c10e4b77e239e9d58a0ca4ef31344a2be1fc82 + md5: 2390dcf3fd78c2c426f1c5b6664fa4b7 + sha256: 12904b795e5cb877ce6a7bb30feba9bfbe1dd38bd5f520e6af8d89a51bb6b6a6 manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.3.0-h8bca6fd_103.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-11.4.0-h922705a_103.conda + version: 11.4.0 - category: main dependencies: {} hash: - md5: 3f784d2c059e960156d1ab3858cbf200 - sha256: 8a78b0ab9f845a90d3b66a5d83e4e1131a236d1c5badd3660fb7c12daac796bf + md5: be10a739476d68c464101836773463f1 + sha256: 4957848888d7a8cdc77c605357e759f0c9b08c18510f08a205f567666602ca2b manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_103.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-11.4.0-h922705a_103.conda + version: 11.4.0 - category: main dependencies: {} hash: @@ -174,14 +174,14 @@ package: - category: main dependencies: {} hash: - md5: 5b874a5f133b1bd0c5f227eed4758fdb - sha256: 9aa01c1102811cae6f60efa9d17f8f44365791d53a712dce3fe9a0488b6f6c2f + md5: ca8ce27415e2e304ec35b3de2af12364 + sha256: b6f56d6c0a95dbd27bdcd5c666781c58c037850cebbaf62536a4fdf2bdcf2a2e manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.458_0_g8c68aca-20231104_052339.tar.bz2 - version: 1.0.458_0_g8c68aca + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.460_0_gfdb1863-20231104_052339.tar.bz2 + version: 1.0.460_0_gfdb1863 - category: main dependencies: {} hash: @@ -196,14 +196,14 @@ package: - category: main dependencies: {} hash: - md5: 939e3e74d8be4dac89ce83b20de2492a - sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 + md5: 8dee24b8be2d9ff81e7bd4d7d97ff1b0 + sha256: 04f2ab3e36f2015841551415bf16bf62933bd94b7085d4be5493b388e95a9c3d manager: conda name: tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda - version: 2023c + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda + version: 2023d - category: main dependencies: font-ttf-dejavu-sans-mono: '' @@ -371,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: d459949bc10f64dee1595c176c2e6291 - sha256: 6b0eee827bade11c2964a05867499a50ad2a9d1b14dfe18fb867a3bc9357f56f + md5: f5842b88e9cbfa177abfaeacd457a45d + sha256: b68b0611d1c9d0222b56d5fe3d634e7a26979c3aef30f5f48b1593e7249e8f7a manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda - version: 1.23.0 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.24.0-hd590300_0.conda + version: 1.24.0 - category: main dependencies: libgcc-ng: '>=12' @@ -567,15 +567,15 @@ package: version: '1.18' - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' hash: - md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3 - sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9 + md5: 172bf1cd1ff8629f2b1179945ed45055 + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 manager: conda name: libev optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda version: '4.33' - category: main dependencies: @@ -627,15 +627,15 @@ package: version: 13.2.0 - category: main dependencies: - libgcc-ng: '>=10.3.0' + libgcc-ng: '>=12' hash: - md5: b62b52da46c39ee2bc3c162ac7f1804d - sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7 + md5: d66573916ffcf376178462f1b61c941e + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 manager: conda name: libiconv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda version: '1.17' - category: main dependencies: @@ -663,16 +663,16 @@ package: version: 2.0.1 - category: main dependencies: - libgcc-ng: '>=12.3.0' + libgcc-ng: '>=11.4.0' hash: - md5: eda05ab0db8f8490945fd99244183e3a - sha256: 903c5786e0379da751e297dbe603be19b030994bac3caa74b3a596c1858c0296 + md5: e6f89a7be0ec320c1b1746971045b0e7 + sha256: c4c5c87f5c717e83299740f6a20393f9a131f05e2e9df63faafd6bb71dc58346 manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-11.4.0-h4dcbe23_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -757,6 +757,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda version: 1.3.1 +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 5aa797f8787fe7a17d1b0821485b5adc + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + manager: conda + name: libxcrypt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + version: 4.4.36 - category: main dependencies: libgcc-ng: '>=12' @@ -1128,14 +1140,14 @@ package: aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: fe9b3bb0a3961dfb12506d865d818c00 - sha256: 8f3b8f8b7b1f021eac80018d03ff24e2b390627b53eb17f07476f38ea67f4c56 + md5: a4a83424ad4eab023c6e5b4adf264006 + sha256: 8696e7023fde7c4588db8aedd08ffc0b4041c8449bd9edd50f237534cbcfac93 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h7f92143_6.conda - version: 0.1.12 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.13-h7f92143_0.conda + version: 0.1.13 - category: main dependencies: aws-c-common: '>=0.9.10,<0.9.11.0a0' @@ -1219,34 +1231,34 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_103 - libgcc-ng: '>=12.3.0' - libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_3 - libstdcxx-ng: '>=12.3.0' + libgcc-devel_linux-64: 11.4.0 h922705a_103 + libgcc-ng: '>=11.4.0' + libgomp: '>=11.4.0' + libsanitizer: 11.4.0 h4dcbe23_3 + libstdcxx-ng: '>=11.4.0' sysroot_linux-64: '' hash: - md5: 71c68ea75afe6ac7a9c62c08f5d67a5a - sha256: ab2ea2890f43d45dc49ff59a3c35348e675ba728e088957209fa8f0e40a498e5 + md5: b17749a6ae62cf9a5eafd96a6bcaad0e + sha256: 24d34853611b8758c40fa9d6a0d0b738312f51af9fed8fa6c6422f15ec475763 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-11.4.0-h7aa1c59_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=12' oniguruma: '>=6.9.9,<6.10.0a0' hash: - md5: c29cbd5ee663325f9bed9a2b2488ef3a - sha256: e994d4e162a882ed9706f1ce992b5c33419ef425eafcd321252a6f94d3a05ab8 + md5: 80814f94713e35df60aad6c4b235de87 + sha256: a04a1603e405ea9ae5c4a492a8e361086cb441a91ef7299bd4bf3eca0b485b6d manager: conda name: jq optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7-hd590300_0.conda - version: '1.7' + url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7.1-hd590300_0.conda + version: 1.7.1 - category: main dependencies: libbrotlicommon: 1.1.0 hd590300_1 @@ -1327,20 +1339,20 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.21.0,<2.0a0' - libev: '>=4.33,<4.34.0a0' + c-ares: '>=1.23.0,<2.0a0' + libev: '>=4.33,<5.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 9b13d5ee90fc9f09d54fd403247342b4 - sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca + md5: 700ac6ea6d53d5510591c4344d5c989a + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda version: 1.58.0 - category: main dependencies: @@ -1485,15 +1497,15 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libnsl: '>=2.0.0,<2.1.0a0' + libxcrypt: '>=4.4.36' hash: - md5: 3e785bff761095eb7f8676f4694bd1b1 - sha256: 6e18c1488d191cb1a43a483f44fffa75668779a29927319b4adeb10da12ad06b + md5: f2cfec9406850991f4e3d960cc9e3321 + sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 manager: conda name: perl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-4_hd590300_perl5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda version: 5.32.1 - category: main dependencies: @@ -1524,16 +1536,16 @@ package: - category: main dependencies: libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 04b4845b9e9b5a0ee6eba013ecdbbddb - sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29 + md5: 3d1b58d2664d96f9fbc0afe5e1d04632 + sha256: f6cc2bdcb5d809bbaae218e03bdefef4a309d1fc7ccc9444fda59bd4553a83f8 manager: conda name: s2n optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda - version: 1.3.56 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.0-h06160fa_0.conda + version: 1.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1646,15 +1658,15 @@ package: aws-c-cal: '>=0.6.9,<0.6.10.0a0' aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' - s2n: '>=1.3.56,<1.3.57.0a0' + s2n: '>=1.4.0,<1.4.1.0a0' hash: - md5: d15f4dfeef1d65de9a5283c984981776 - sha256: ca5094093d0f2de9b0b2bd4697088565d0ef930364df8a67c8b79172dc9c209d + md5: c930336aa72995f1b5459b51df3ba841 + sha256: 7426f7444cd43cd7a649670c7330c163b40f40aa832e82be873d9de91e49b05e manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he14a76f_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he0cd244_2.conda version: 0.13.36 - category: main dependencies: @@ -1699,16 +1711,16 @@ package: version: 1.1.0 - category: main dependencies: - gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' + gcc_impl_linux-64: '>=11.4.0,<11.4.1.0a0' hash: - md5: 93700ef8b49aebbfb0bf40e0b1448834 - sha256: f361a244a51874065b4d9a2d27089647e7966050abb8a76cad57471776b8ba19 + md5: 42003d7074d4daaf287d19987cd927bf + sha256: 2c30ddc6cb51a03fb5f671f55eaabcb9208d6ce701e6de2234518eec43a6f2d1 manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-11.4.0-h240829a_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1752,16 +1764,16 @@ package: version: 2.12.1 - category: main dependencies: - gcc_impl_linux-64: 12.3.0.* + gcc_impl_linux-64: 11.4.0.* hash: - md5: e2f2f81f367e14ca1f77a870bda2fe59 - sha256: 1bbf077688822993c39518056fb43d83ff0920eb42fef11e8714d2a298cc0f27 + md5: 0c8d100583c5fd6d20cd5307aaedaf0d + sha256: b515e9222a8af974024b02c7265bed8e4edf912707a5a8fc207cbc8bc2ac0bff manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_2.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-11.4.0-h7baecda_2.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1781,18 +1793,18 @@ package: version: 3.7.9 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_3 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_103 + gcc_impl_linux-64: 11.4.0 h7aa1c59_3 + libstdcxx-devel_linux-64: 11.4.0 h922705a_103 sysroot_linux-64: '' hash: - md5: b6ce9868fc6c65a18c22fd983e2d7e6f - sha256: 63e75858b60fe6d7227cd6026ed7ad0a8df4c5592454f752ff7ffc1e283e66a7 + md5: dbee4be21eb6dbf596afddf60ff120bf + sha256: 424d9989ea82e6777e569de6873cc56229a8982e274409c344473ad89bb7bbb7 manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-11.4.0-h7aa1c59_3.conda + version: 11.4.0 - category: main dependencies: keyutils: '>=1.6.1,<2.0a0' @@ -1839,14 +1851,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.42,<10.43.0a0' hash: - md5: 70052d6c1e84643e30ffefb21ab6950f - sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b + md5: 9bd06b12bbfa6fd1740fd23af4b0f0c7 + sha256: b1b594294a0fe4c9a51596ef027efed9268d60827e8ae61fb7545c521a631e33 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda - version: 2.78.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda + version: 2.78.3 - category: main dependencies: libgcc-ng: '>=12' @@ -1935,24 +1947,25 @@ package: ld_impl_linux-64: '>=2.36.1' libffi: '>=3.4,<4.0a0' libgcc-ng: '>=12' - libnsl: '>=2.0.0,<2.1.0a0' - libsqlite: '>=3.43.0,<4.0a0' + libnsl: '>=2.0.1,<2.1.0a0' + libsqlite: '>=3.44.2,<4.0a0' libuuid: '>=2.38.1,<3.0a0' + libxcrypt: '>=4.4.36' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.2,<4.0a0' + openssl: '>=3.2.0,<4.0a0' readline: '>=8.2,<9.0a0' - tk: '>=8.6.12,<8.7.0a0' + tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' hash: - md5: 3ede353bc605068d9677e700b1847382 - sha256: 18db2220328abee8eb19f51c8df88bcfdf3a557b8181e7f5bda291deb067e40f + md5: 255a7002aeec7a067ff19b545aca6328 + sha256: c0e800d255a771926007043d2859cbbbdb1387477ec813f085640c8887b391a2 manager: conda name: python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.9.18-h0755675_0_cpython.conda + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.9.18-h0755675_1_cpython.conda version: 3.9.18 - category: main dependencies: @@ -2061,14 +2074,14 @@ package: dependencies: python: '>=3.8' hash: - md5: c629a13439d80b37c6a946b098c4ac2b - sha256: 62c3486961e43fb9b495b7854f48fea9b486b2176a9629c6faf80c445543b1aa + md5: 0801250abb3d5b86010e20324f0dde94 + sha256: af221f16a23feea4d91db75b35c5720c9c448814af815fe6d45c5627eb75e897 manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.6-pyhd8ed1ab_0.conda - version: 3.1.6 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.2.1-pyhd8ed1ab_0.conda + version: 3.2.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2133,14 +2146,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: be773757df1f0a5f7c783d6c56666ee7 - sha256: 6c1ea83b3a9f7d7ae5681cbd2eb6d4cc770e103c86f303ab3c568a7249383561 + md5: 171d33a4f1694713e0646dbc98e7f7cf + sha256: 72c5a63962463b0d7c7c95db33266c8dbcdd72cd8ae9ca81d42f253f9d80cdf3 manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.1-py39h9fdd4d6_0.conda - version: 4.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py39h9fdd4d6_0.conda + version: 4.1.2 - category: main dependencies: python: '>=3.8' @@ -2155,16 +2168,16 @@ package: version: 1.7.0 - category: main dependencies: - python: ==2.7.*|>=3.7 + python: 2.7.*|>=3.7 hash: - md5: 033eb25fffd222aceeca6d58cd953680 - sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee + md5: 56febe65315cc388a5d20adf2b39a74d + sha256: 0ff5173f6b20a5c95401aa52d10dbdc05c322fc568dc7417c6f76cf68e706d16 manager: conda name: boltons optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boltons-23.0.0-pyhd8ed1ab_0.conda - version: 23.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 - category: main dependencies: brotli-bin: 1.1.0 hd590300_1 @@ -2322,14 +2335,14 @@ package: dependencies: python: 2.7|>=3.6 hash: - md5: 12d8aae6994f342618443a8f05c652a0 - sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619 + md5: db16c66b759a64dc5183d69cc3745a52 + sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e manager: conda name: distlib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda - version: 0.3.7 + url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + version: 0.3.8 - category: main dependencies: python: '>=3.6' @@ -2418,26 +2431,26 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 5ccdccec4ed5576ae7382e33cd343dc2 - sha256: f1d0981597be0e7f78c4454517e16e09f0c7290af30e0e705a5a6a4952cf7bdd + md5: 194fa03bd6b1054b8de8d48d335e45b2 + sha256: a011b537e04ef72d85ff47d7d60ebc815c457a2790a6ab8d77a0956db78b08e1 manager: conda name: frozenlist optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py39hd1e30aa_1.conda - version: 1.4.0 + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py39hd1e30aa_0.conda + version: 1.4.1 - category: main dependencies: python: '>=3.8' hash: - md5: 5b86cf1ceaaa9be2ec4627377e538db1 - sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6 + md5: bf40f2a8835b78b1f91083d306b493d2 + sha256: 9269a5464698e0fde1f9c78544552817370c26df86e2a5a7518544b6a55ae8ee manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda - version: 2023.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda + version: 2023.12.2 - category: main dependencies: libgcc-ng: '>=12' @@ -2488,17 +2501,17 @@ package: version: 0.7.6 - category: main dependencies: - gcc: 12.3.0.* - gxx_impl_linux-64: 12.3.0.* + gcc: 11.4.0.* + gxx_impl_linux-64: 11.4.0.* hash: - md5: 673bac341be6b90ef9e8abae7e52ca46 - sha256: 5fd65768fb602fd21466831c96e7a2355a4df692507abbd481aa65a777151d85 + md5: 4821dd86fa505a0d5b6aacd28ed8291f + sha256: e07c2da262b374fc9aad422a4927660ef96aec6d1445c7673a6ba58a445523a5 manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_2.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-11.4.0-h7baecda_2.conda + version: 11.4.0 - category: main dependencies: __unix: '' @@ -2630,14 +2643,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 3bb122939197cec97f376a56e8dce6ea - sha256: ec6eec84b5279ea1d099a8a919ff76c9418ebe8cd4302b05fe22a58651fb0e55 + md5: c078f60a823037c75efeb602d2496e3b + sha256: fd3b9387f1edef65c6b82c887e4510ec188f2e2f61d7e9f72795c0bb00dccaa9 manager: conda name: lazy-object-proxy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py39hd1e30aa_1.conda - version: 1.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.10.0-py39hd1e30aa_0.conda + version: 1.10.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2946,6 +2959,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda version: 1.3.10 +- category: main + dependencies: + python: '>=3.8' + hash: + md5: 45a5065664da0d1dfa8f8cd2eaf05ab9 + sha256: 9e4ff17ce802159ed31344eb913eaa877688226765b77947b102b42255a53853 + manager: conda + name: platformdirs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda + version: 4.1.0 - category: main dependencies: python: '>=3.8' @@ -2977,14 +3002,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: c2e412b0f11e5983bcfc35d9beb91ecb - sha256: 02df40691ebe8632ad18ca641c70b74302b538922ccc86c3afee5de83f4298f0 + md5: 34d2731732bc7de6269657d5d9fd6e79 + sha256: 1f5e5d4ce98df5dbfc8478a3339e3848891fed2f26405676ee39010777245894 manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py39hd1e30aa_1.conda - version: 5.9.5 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.7-py39hd1e30aa_0.conda + version: 5.9.7 - category: main dependencies: python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' @@ -3013,7 +3038,7 @@ package: version: 0.6.6 - category: main dependencies: - python: ==2.7.*|>=3.4 + python: 2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3088,14 +3113,14 @@ package: dependencies: python: '>=3.6' hash: - md5: 2590495f608a63625e165915fb4e2e34 - sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6 + md5: c79cacf8a06a51552fc651652f170208 + sha256: d2381037bf362c78654a8ece0e0f54715e09113448ddd7ed837f688536cbf176 manager: conda name: python-tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda - version: '2023.3' + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.4-pyhd8ed1ab_0.conda + version: '2023.4' - category: main dependencies: python: '>=3.6' @@ -3142,28 +3167,28 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 4f76a945255f9bae15ca3979e9b129ea - sha256: 4eed688717096aadabbfb29039d80eb47b659a10a9ec298bef3ff3bd1286a703 + md5: 775fa081f76b6e6197bd12bd28856546 + sha256: 9dc5eb83c637131caac6cdc6e48775712475eb02820d0eba30c10605cfde0f89 manager: conda name: regex optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py39hd1e30aa_0.conda - version: 2023.10.3 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py39hd1e30aa_0.conda + version: 2023.12.25 - category: main dependencies: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 75f11bc5ee4f3cf1d12bc17066b6a367 - sha256: f7e4dc74a7c8928edd8bf63316f09443943faf723487310c0f4ab76a5c62a5e6 + md5: d6358075cf3adab3d41db038560943ad + sha256: 92ffa0aea7f984a2fab97d517aa54f8370ca45f8bdd9bbdb245cd577f8e68c8c manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py39h9fdd4d6_0.conda - version: 0.13.2 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.16.2-py39h9fdd4d6_0.conda + version: 0.16.2 - category: main dependencies: libgcc-ng: '>=12' @@ -3340,14 +3365,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 - sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde + md5: a92a6440c3fe7052d63244f3aba2a4a7 + sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda - version: 4.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda + version: 4.9.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3373,14 +3398,14 @@ package: perl: '' python: '' hash: - md5: efb0e7909f1a41159856e688e216bd26 - sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 + md5: 6ecc6f19e3a0661c096d0e84015c8122 + sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda - version: '5.008' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda + version: '5.018' - category: main dependencies: python: '>=3.8' @@ -3409,14 +3434,14 @@ package: dependencies: python: '>=3.8' hash: - md5: bdb77b28cf16deac0eef431a068320e8 - sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6 + md5: 50ad31e07d706aae88b14a4ac9c73f23 + sha256: d9b537d5b7c5aa7a02a4ce4c6b755e458bd8083b67752a73c92d113ccec6c10f manager: conda name: websocket-client optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda - version: 1.6.4 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda + version: 1.7.0 - category: main dependencies: python: '>=3.7' @@ -3545,16 +3570,16 @@ package: aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.36,<0.13.37.0a0' - aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' + aws-c-sdkutils: '>=0.1.13,<0.1.14.0a0' libgcc-ng: '>=12' hash: - md5: 65d47e98af07d5e361707dda2ce44f3a - sha256: 48c768d96b09396190b717e126d33ca68f3d2786a068af188fd16fa469cbad76 + md5: d42aebb91e28e2fee2a0218cfbff2c90 + sha256: b06ef95458fc70af4230c9c6690011235cd25288752ff7aa25492fc6d1c0e028 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h5c941e0_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h538f98c_2.conda version: 0.7.8 - category: main dependencies: @@ -3577,14 +3602,14 @@ package: pytz: '' setuptools: '' hash: - md5: 3ccff479c246692468f604df9c85ef26 - sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147 + md5: 9669586875baeced8fc30c0826c3270e + sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6 manager: conda name: babel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda - version: 2.13.1 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + version: 2.14.0 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3756,14 +3781,14 @@ package: python_abi: 3.9.* *_cp39 unicodedata2: '>=14.0.0' hash: - md5: 616bc0b442acefebdbe97c7b885d771e - sha256: f908a09abb6c53e65dcd36d6c269fae3f9d6fa41ddb90bd8382e9e8da18005a1 + md5: 01eba09d574310de928abf121f89b116 + sha256: 1678f7623f057f07760c26a81f74180355c14cb808addcfc45b7a4ea04356b8d manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.45.1-py39hd1e30aa_0.conda - version: 4.45.1 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.0-py39hd1e30aa_0.conda + version: 4.47.0 - category: main dependencies: python: '>=3.7' @@ -3809,14 +3834,14 @@ package: python: '>=3.8' zipp: '>=0.5' hash: - md5: 4e9f59a060c3be52bc4ddc46ee9b6946 - sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf + md5: 746623a787e06191d80a2133e5daff17 + sha256: e72d05f171f4567004c9360a838e9d5df21e23dcfeb945066b53a6e5f754b861 manager: conda name: importlib-metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda - version: 6.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.1-pyha770c72_0.conda + version: 7.0.1 - category: main dependencies: python: '>=3.8' @@ -3955,14 +3980,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: aa252e335aa572e5052c4bb54519f1b9 - sha256: e2ccf9efb93065d65337199d6aca1f1ee94f583d3cf78d5998ac3b261b080d1e + md5: 1a30eefd87f32b65815198dafe7d16c4 + sha256: 3f2141bc34b200258c50c3e3dd291903718d92fcf760854a4bbc189e861438df manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.1-py39hd1e30aa_0.conda - version: 1.7.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.8.0-py39hd1e30aa_0.conda + version: 1.8.0 - category: main dependencies: python: 2.7|>=3.7 @@ -4005,27 +4030,14 @@ package: setuptools: '' wheel: '' hash: - md5: 2400c0b86889f43aa52067161e1fb108 - sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 + md5: 8591c748f98dcc02253003533bc2e4b1 + sha256: 29096d1d53c61aeef518729add2f405df86b3629d1d738a35b15095e6a02eeed manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda - version: 23.3.1 -- category: main - dependencies: - python: '>=3.7' - typing_extensions: '>=4.7.1' - hash: - md5: 6bb4ee32cd435deaeac72776c001e7ac - sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937 - manager: conda - name: platformdirs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda - version: 4.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda + version: 23.3.2 - category: main dependencies: python: '>=3.7' @@ -4188,16 +4200,16 @@ package: version: 2.31.0.6 - category: main dependencies: - typing_extensions: 4.8.0 pyha770c72_0 + typing_extensions: 4.9.0 pyha770c72_0 hash: - md5: 384462e63262a527bda564fa2d9126c0 - sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d + md5: c16524c1b7227dc80b36b4fa6f77cc86 + sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda - version: 4.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda + version: 4.9.0 - category: main dependencies: brotli-python: '>=1.0.9' @@ -4232,6 +4244,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.2059-py39pl5321hb4338c2_1.conda version: 9.0.2059 +- category: main + dependencies: + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 + python: '>=3.8' + hash: + md5: c119653cba436d8183c27bf6d190e587 + sha256: 50827c3721a9dbf973b568709d4381add2a6552fa562f26a385c5edc16a534af + manager: conda + name: virtualenv + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.25.0-pyhd8ed1ab_0.conda + version: 20.25.0 - category: main dependencies: markupsafe: '>=2.1.1' @@ -4314,29 +4341,29 @@ package: libgcc-ng: '>=12' openssl: '>=3.2.0,<4.0a0' hash: - md5: d193ad6b5c2d47c679202afe5b69b371 - sha256: d99862ce623c68dd86225520c08bfe5ff46a0af885530a3faca4d3d54c7480bf + md5: f27f792aa83c7be3ee96d09a637a6474 + sha256: 04142edf1a574e137a9e30a4f4e9b9448e219b6f4216a782ceaed933f27852a6 manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.3-h0448019_0.conda - version: 0.4.3 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.4-h0448019_0.conda + version: 0.4.4 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' + python: '>=3.8' python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 352c39ba5cd9ea01996358f0748e102e - sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14 + md5: d6850c205e9f86502bd6a58e270e8fd5 + sha256: ad25216fd91ac9a624ffde69679c3d476c4091adad30b9169aa3486bd25e1e88 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4468,16 +4495,16 @@ package: version: 6.1.1 - category: main dependencies: - importlib-metadata: '>=6.8.0,<6.8.1.0a0' + importlib-metadata: '>=7.0.1,<7.0.2.0a0' hash: - md5: b279b07ce18058034e5b3606ba103a8b - sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f + md5: 4a2f43a20fa404b998859c6a470ba316 + sha256: bc362df1d4f5a04c38dff29cd9c2d0ac584f9c4b45d3e4683ee090944a38fba4 manager: conda name: importlib_metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda - version: 6.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-7.0.1-hd8ed1ab_0.conda + version: 7.0.1 - category: main dependencies: importlib_resources: '>=1.4.0' @@ -4553,16 +4580,16 @@ package: libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 - typing-extensions: '>=4.6.0' + typing-extensions: '>=4.6.0,!=4.7.0' hash: - md5: edfef0feb17faf35c3d7b6665cf30343 - sha256: 90162f949a7008c8f018e34c2a5e88add11c7c802727b2fd38a53d6e03cce7ab + md5: 26910c0ed0b85e87d5c1dd19723b2996 + sha256: 3770a69799d1366629a9944fb2eef9c15ecfd4c0d00cabee8b264d23bebf3726 manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.5-py39h9fdd4d6_0.conda - version: 2.14.5 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.6-py39h9fdd4d6_1.conda + version: 2.14.6 - category: main dependencies: cffi: '>=1.4.1' @@ -4627,14 +4654,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: 1205762a36a808c0976f959caf389e8e - sha256: 0040b85370375694ae48d21af3e14471f78578fb22cd284c80da3741def0ad4a + md5: aaafd70a6934549210865f558a0eee96 + sha256: 4e695e4d83cfc4ffd557cc2bdbecc0cedb9df8831d1a415b8e8c0e5f96bc6b5f manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.19-pyhd8ed1ab_0.conda - version: 0.19.19 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.20.0-pyhd8ed1ab_0.conda + version: 0.20.0 - category: main dependencies: cffi: '' @@ -4651,21 +4678,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py39h7633fee_4.conda version: 1.0.1 -- category: main - dependencies: - distlib: <1,>=0.3.7 - filelock: <4,>=3.12.2 - platformdirs: <5,>=3.9.1 - python: '>=3.8' - hash: - md5: db990278c2c00b268eed778de44f6057 - sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a - manager: conda - name: virtualenv - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda - version: 20.24.7 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4742,21 +4754,21 @@ package: aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-c-mqtt: '>=0.9.10,<0.9.11.0a0' - aws-c-s3: '>=0.4.3,<0.4.4.0a0' + aws-c-s3: '>=0.4.4,<0.4.5.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 - s2n: '>=1.3.56,<1.3.57.0a0' + s2n: '>=1.4.0,<1.4.1.0a0' hash: - md5: b06d5b1342885fa70ce1371b695cc038 - sha256: b30260ea6484450ad8f5e2ad0cc342302ef199d6ee55f57c1c78fbb8c8b7dad6 + md5: 111dc2570e8dd2eebecbfd8be3bc4616 + sha256: 22fc0c664015c56fd5d96c93a5abd04a51b76b69b21981afd9ed521c72e64b73 manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.18-py39h13f1633_0.conda - version: 0.19.18 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.19-py39hf0530f4_2.conda + version: 0.19.19 - category: main dependencies: python: '>=3.6' @@ -4778,14 +4790,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 3e24267b0fce04a61f7532f3096c45a5 - sha256: 5e0daa0d40c5a6ea3b3798d31e0ae6bdc1d53c487e59153e5e4d9ee8c2ccc47c + md5: 75715c2695eb5d1da023a79140e923cd + sha256: e539bb5b339fc2136b086ce084fbf7b8c8f694d0c6ac30db2565c426bcdf28da manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4881,14 +4893,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c - sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546 + md5: 93c8f8ceb83827d88deeba796f07fba7 + sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda - version: 2.5.32 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda + version: 2.5.33 - category: main dependencies: importlib_metadata: '' @@ -4957,14 +4969,14 @@ package: python: '>=3.6' requests: <3,>=2.0.0 hash: - md5: 4b2d7e21aa309356a9396d54800cd271 - sha256: 8a37a7c3efae510b90669cbae7b4f736477361406028953cd804d09a2d24c53a + md5: 9d9b0ef23f5dbe0d612ca037b9bfb410 + sha256: e0eb5606b4a164964d663d7a215ac9cd18db1ce1eca544aa61348e0a2bda94a9 manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.25.0-pyhd8ed1ab_0.conda - version: 1.25.0 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.26.0-pyhd8ed1ab_0.conda + version: 1.26.0 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -5006,14 +5018,14 @@ package: python_abi: 3.9.* *_cp39 pytz: '>=2020.1' hash: - md5: 961b398d8c421a3752e26f01f2dcbdac - sha256: cb67f58e2a5c3c5f033e5901dbc067fcf8b1caebb8c9afd728471c9e75f2073f + md5: dcfd2f15c6f8f0bbf234412b18a2a5d0 + sha256: 3344059c6df1a07e9e5824990c53f8ac4ee7a19a209e33f0009b5af266844d2b manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py39hddac248_0.conda - version: 2.1.3 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py39hddac248_0.conda + version: 2.1.4 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5041,29 +5053,29 @@ package: pynacl: '>=1.5' python: '>=3.6' hash: - md5: 8d4563992b27cdb8e673d1ca16962c9d - sha256: 9139c13cb7ea5729af862db5fb0523daa5900b9b4fa36637cd7f9c01be665f80 + md5: a5e792523b028b06d7ce6e65a6cd4a33 + sha256: 2e66359261954a79b66858c30e69ea6dd4380bf8bd733940527386b25e31dd13 manager: conda name: paramiko optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.3.1-pyhd8ed1ab_0.conda - version: 3.3.1 + url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda + version: 3.4.0 - category: main dependencies: annotated-types: '>=0.4.0' - pydantic-core: 2.14.5 + pydantic-core: 2.14.6 python: '>=3.7' typing-extensions: '>=4.6.1' hash: - md5: 3f908ebfccbfd09946961862d26bb9af - sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de + md5: 3569001fd8b37e542aaefdf5de124e19 + sha256: 07ec778cbf17737b740f0547fb5cba91a7bff52945fe637287458e4119c58ffe manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda - version: 2.5.2 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.3-pyhd8ed1ab_0.conda + version: 2.5.3 - category: main dependencies: cryptography: '>=38.0.0,<41' @@ -5113,16 +5125,16 @@ package: - category: main dependencies: botocore: '>=1.33.2,<2.0a.0' - python: '>=3.7' + python: '>=3.8' hash: - md5: 75e12933f4bf755c9cdd37072bcb6203 - sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79 + md5: 2d52125a7fe49248ce5e883fed6c935a + sha256: 5f1fccbbc0460971f12dda7ab0465d8f6037486042d156b611881e57d218ce95 manager: conda name: s3transfer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda - version: 0.8.2 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.0-pyhd8ed1ab_0.conda + version: 0.10.0 - category: main dependencies: attrs: '' @@ -5169,7 +5181,7 @@ package: version: 3.3.1 - category: main dependencies: - awscrt: 0.19.18 + awscrt: '>=0.19.18,<=0.19.19' colorama: '>=0.2.5,<0.4.7' cryptography: '>=3.3.2,<=40.0.2' distro: '>=1.5.0,<1.9.0' @@ -5184,29 +5196,29 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: 5ffefcaa01088d683a89ed416cee51be - sha256: 272e0c846b7288e179e1a58ce18a5ec1d8bd4f3a0829df27dbe4ebe799ec3f3f + md5: 602c85ef4db55f9b4b34c5bb6aaa2795 + sha256: 11a001f8ac7000eaaa9f5c3e6d9978abf263f5ad8487a15ef8676bdc1fc1a7e7 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.14.4-py39hf3d152e_0.conda - version: 2.14.4 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.15.6-py39hf3d152e_0.conda + version: 2.15.6 - category: main dependencies: - botocore: '>=1.33.4,<1.34.0' + botocore: '>=1.34.11,<1.35.0' jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - s3transfer: '>=0.8.2,<0.9.0' + python: '>=3.8' + s3transfer: '>=0.10.0,<0.11.0' hash: - md5: 914d59cf685448451de9ac736cb0fb2a - sha256: cb63cadfb3c593cb7295b14450e4310af88d32dc1bbf185ec82a325a12e86f28 + md5: b1256264fc531fca35aabab7d517438a + sha256: b4d3415b4beee1623c02b7ddc593ae7ca5c5843c943424a73b7648e05858e008 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.4-pyhd8ed1ab_0.conda - version: 1.33.4 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5245,14 +5257,14 @@ package: urllib3: '>=1.26.0' websocket-client: '>=0.32.0' hash: - md5: c95d23d8bae7e21491868cc7772d7c73 - sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 + md5: aec5f308cb9055e83c59afecd5fcb58a + sha256: b9bf5990dc968123e5817096daddd2105857cfd4c5b94c0937d929bc74fc7a31 manager: conda name: docker-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda - version: 6.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/docker-py-7.0.0-pyhd8ed1ab_0.conda + version: 7.0.0 - category: main dependencies: atk-1.0: '>=2.36.0' @@ -5383,18 +5395,18 @@ package: cfgv: '>=2.0.0' identify: '>=1.0.0' nodeenv: '>=0.11.1' - python: '>=3.8' + python: '>=3.9' pyyaml: '>=5.1' virtualenv: '>=20.10.0' hash: - md5: 964e3d762e427661c59263435a14c492 - sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + md5: 473a7cfca197da0a10cff3f6dded7d4b + sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 manager: conda name: pre-commit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda - version: 3.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda + version: 3.6.0 - category: main dependencies: __unix: '' @@ -5416,14 +5428,14 @@ package: python: '>=3.7,<4.0' typing-extensions: <5,>=4.4 hash: - md5: d9f3ca99e7d10b05ead04edcdcb7e0cb - sha256: 1bf5fa0d34e4de0843eaa82311e3dd680fdbe02cd74a6945f9b662f504bbcd08 + md5: 9fabf343ed3cdb5803480768e6338826 + sha256: 6cdad8582e270b88147295e9ec4817bdcda14212098efa77165a96870a31bbf4 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.81.0-pyhd8ed1ab_0.conda - version: 1.81.0 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.82.0-pyhd8ed1ab_0.conda + version: 1.82.0 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5446,14 +5458,14 @@ package: python: '' typing_extensions: '' hash: - md5: 23cf1bb1fb33251d3f0caf4198a90782 - sha256: 44363a8ede827c4bac4c1e6535461ab6f12a19c658dff0a4d908c6d1e19c5d70 + md5: 8e4b38b9dfc865ffb06a2bf2f3719d91 + sha256: e8d31daecb364f893495430612721bb7b8f240e0834be5d1226810ace22cde68 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: archspec: '' @@ -5549,28 +5561,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: 01f46d3078f21041719d2c5fb83200de - sha256: ef1e693434f0d3c84389e459486d57abda67df228c2671d11285ba73baa5c11a + md5: 768ff0d711180b901b1490ebe7010ada + sha256: 9482dd403e24f5e5c155624de7d89f5521a97e8130f0a014899b12486a331a85 manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.33.2-pyhd8ed1ab_0.conda - version: 1.33.2 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.34.0-pyhd8ed1ab_0.conda + version: 1.34.0 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 687d78daf8e04f4c5e5cfa92ead666c4 - sha256: 2fecbcc276e13a119ec87602d9547aa537bf690724288d368ebf606351c19f67 + md5: a810296f4cdd969085c1c3d78c846588 + sha256: 3975c31a2c88ff9925922537bb653f84a1c91ed5152043788bc8cc49d541951d manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.33.0-pyhd8ed1ab_0.conda - version: 1.33.0 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.34.4-pyhd8ed1ab_0.conda + version: 1.34.4 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5604,7 +5616,7 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.79.0' + aws-sam-translator: '>=1.82.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' jsonschema: '>=3.0,<5' @@ -5616,14 +5628,14 @@ package: sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: 8fa5ac9497fc51cb02377e38500ce964 - sha256: a77254900a3bc62e4c216f1223c9a14982db30e3c24a1b3fcc9cd9dcf3d1f5a4 + md5: 6bf6c385031287e86a5821f57544fc12 + sha256: deed7d4700694a25d440816d13de89468fe92dfc87ba506f3fee72b5d1131c75 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.3-pyhd8ed1ab_0.conda - version: 0.83.3 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.6-pyhd8ed1ab_0.conda + version: 0.83.6 - category: main dependencies: colorama: '' @@ -5699,14 +5711,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: cd76850f625a821bd553380913baf5d6 - sha256: 307ce3acd4c5c3b25f25e871924e96ee052c09a8a2832fcb7a89a2dc26f309cb + md5: 9447c344fde58f458a55b05729ae74aa + sha256: f0586fd89bcc4e7df9cd12e66627473bed9b4bc33814b01f48e6059628af2f6b manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.10-pyhd8ed1ab_0.conda - version: 4.2.10 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.12-pyhd8ed1ab_0.conda + version: 4.2.12 - category: main dependencies: livereload: '>=2.3.0' diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 760a7911..9187da76 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -9,7 +9,7 @@ # To update a single package to the latest version compatible with the version constraints in the source: # conda-lock lock --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml --update PACKAGE # To re-solve the entire environment, e.g. after changing a version constraint in the source file: -# conda-lock -f /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml -f /scratch/abejgonza/cy-fixes-1/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml +# conda-lock -f /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/chipyard.yaml -f /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/riscv-tools.yaml --lockfile conda-requirements-riscv-tools-linux-64.conda-lock.yml metadata: channels: - url: ucb-bar @@ -21,12 +21,12 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: f1bcd6ae2c33f314a2957b51c4689ea4e99a5ea5a2bf7e6d199abfb9f6ae65c4 + linux-64: d002c72bdb6dab9165fd4a7c10f2c91ead3a528494418421f075feaf35d0646c platforms: - linux-64 sources: - - /scratch/abejgonza/cy-fixes-1/conda-reqs/chipyard.yaml - - /scratch/abejgonza/cy-fixes-1/conda-reqs/riscv-tools.yaml + - /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/chipyard.yaml + - /nscratch/jerryz/chipyard-proj/chipyard-master/conda-reqs/riscv-tools.yaml package: - category: main dependencies: {} @@ -141,25 +141,25 @@ package: - category: main dependencies: {} hash: - md5: 1d7f6d1825bd6bf21ee04336ec87a777 - sha256: 92bec8177aacfcd49a8e5bda49c10e4b77e239e9d58a0ca4ef31344a2be1fc82 + md5: 2390dcf3fd78c2c426f1c5b6664fa4b7 + sha256: 12904b795e5cb877ce6a7bb30feba9bfbe1dd38bd5f520e6af8d89a51bb6b6a6 manager: conda name: libgcc-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-12.3.0-h8bca6fd_103.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-11.4.0-h922705a_103.conda + version: 11.4.0 - category: main dependencies: {} hash: - md5: 3f784d2c059e960156d1ab3858cbf200 - sha256: 8a78b0ab9f845a90d3b66a5d83e4e1131a236d1c5badd3660fb7c12daac796bf + md5: be10a739476d68c464101836773463f1 + sha256: 4957848888d7a8cdc77c605357e759f0c9b08c18510f08a205f567666602ca2b manager: conda name: libstdcxx-devel_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-12.3.0-h8bca6fd_103.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-11.4.0-h922705a_103.conda + version: 11.4.0 - category: main dependencies: {} hash: @@ -174,14 +174,14 @@ package: - category: main dependencies: {} hash: - md5: 5b874a5f133b1bd0c5f227eed4758fdb - sha256: 9aa01c1102811cae6f60efa9d17f8f44365791d53a712dce3fe9a0488b6f6c2f + md5: ca8ce27415e2e304ec35b3de2af12364 + sha256: b6f56d6c0a95dbd27bdcd5c666781c58c037850cebbaf62536a4fdf2bdcf2a2e manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.458_0_g8c68aca-20231104_052339.tar.bz2 - version: 1.0.458_0_g8c68aca + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.460_0_gfdb1863-20231104_052339.tar.bz2 + version: 1.0.460_0_gfdb1863 - category: main dependencies: {} hash: @@ -196,14 +196,14 @@ package: - category: main dependencies: {} hash: - md5: 939e3e74d8be4dac89ce83b20de2492a - sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 + md5: 8dee24b8be2d9ff81e7bd4d7d97ff1b0 + sha256: 04f2ab3e36f2015841551415bf16bf62933bd94b7085d4be5493b388e95a9c3d manager: conda name: tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda - version: 2023c + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023d-h0c530f3_0.conda + version: 2023d - category: main dependencies: font-ttf-dejavu-sans-mono: '' @@ -371,14 +371,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: d459949bc10f64dee1595c176c2e6291 - sha256: 6b0eee827bade11c2964a05867499a50ad2a9d1b14dfe18fb867a3bc9357f56f + md5: f5842b88e9cbfa177abfaeacd457a45d + sha256: b68b0611d1c9d0222b56d5fe3d634e7a26979c3aef30f5f48b1593e7249e8f7a manager: conda name: c-ares optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.23.0-hd590300_0.conda - version: 1.23.0 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.24.0-hd590300_0.conda + version: 1.24.0 - category: main dependencies: libgcc-ng: '>=12' @@ -567,15 +567,15 @@ package: version: '1.18' - category: main dependencies: - libgcc-ng: '>=7.5.0' + libgcc-ng: '>=12' hash: - md5: 6f8720dff19e17ce5d48cfe7f3d2f0a3 - sha256: 8c9635aa0ea28922877dc96358f9547f6a55fc7e2eb75a556b05f1725496baf9 + md5: 172bf1cd1ff8629f2b1179945ed45055 + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 manager: conda name: libev optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda version: '4.33' - category: main dependencies: @@ -627,15 +627,15 @@ package: version: 13.2.0 - category: main dependencies: - libgcc-ng: '>=10.3.0' + libgcc-ng: '>=12' hash: - md5: b62b52da46c39ee2bc3c162ac7f1804d - sha256: 6a81ebac9f1aacdf2b4f945c87ad62b972f0f69c8e0981d68e111739e6720fd7 + md5: d66573916ffcf376178462f1b61c941e + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 manager: conda name: libiconv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda version: '1.17' - category: main dependencies: @@ -663,16 +663,16 @@ package: version: 2.0.1 - category: main dependencies: - libgcc-ng: '>=12.3.0' + libgcc-ng: '>=11.4.0' hash: - md5: eda05ab0db8f8490945fd99244183e3a - sha256: 903c5786e0379da751e297dbe603be19b030994bac3caa74b3a596c1858c0296 + md5: e6f89a7be0ec320c1b1746971045b0e7 + sha256: c4c5c87f5c717e83299740f6a20393f9a131f05e2e9df63faafd6bb71dc58346 manager: conda name: libsanitizer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-12.3.0-h0f45ef3_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-11.4.0-h4dcbe23_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -757,6 +757,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.1-hd590300_0.conda version: 1.3.1 +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 5aa797f8787fe7a17d1b0821485b5adc + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + manager: conda + name: libxcrypt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + version: 4.4.36 - category: main dependencies: libgcc-ng: '>=12' @@ -1128,14 +1140,14 @@ package: aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' hash: - md5: fe9b3bb0a3961dfb12506d865d818c00 - sha256: 8f3b8f8b7b1f021eac80018d03ff24e2b390627b53eb17f07476f38ea67f4c56 + md5: a4a83424ad4eab023c6e5b4adf264006 + sha256: 8696e7023fde7c4588db8aedd08ffc0b4041c8449bd9edd50f237534cbcfac93 manager: conda name: aws-c-sdkutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.12-h7f92143_6.conda - version: 0.1.12 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.13-h7f92143_0.conda + version: 0.1.13 - category: main dependencies: aws-c-common: '>=0.9.10,<0.9.11.0a0' @@ -1219,34 +1231,34 @@ package: - category: main dependencies: binutils_impl_linux-64: '>=2.39' - libgcc-devel_linux-64: 12.3.0 h8bca6fd_103 - libgcc-ng: '>=12.3.0' - libgomp: '>=12.3.0' - libsanitizer: 12.3.0 h0f45ef3_3 - libstdcxx-ng: '>=12.3.0' + libgcc-devel_linux-64: 11.4.0 h922705a_103 + libgcc-ng: '>=11.4.0' + libgomp: '>=11.4.0' + libsanitizer: 11.4.0 h4dcbe23_3 + libstdcxx-ng: '>=11.4.0' sysroot_linux-64: '' hash: - md5: 71c68ea75afe6ac7a9c62c08f5d67a5a - sha256: ab2ea2890f43d45dc49ff59a3c35348e675ba728e088957209fa8f0e40a498e5 + md5: b17749a6ae62cf9a5eafd96a6bcaad0e + sha256: 24d34853611b8758c40fa9d6a0d0b738312f51af9fed8fa6c6422f15ec475763 manager: conda name: gcc_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.3.0-he2b93b0_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-11.4.0-h7aa1c59_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=12' oniguruma: '>=6.9.9,<6.10.0a0' hash: - md5: c29cbd5ee663325f9bed9a2b2488ef3a - sha256: e994d4e162a882ed9706f1ce992b5c33419ef425eafcd321252a6f94d3a05ab8 + md5: 80814f94713e35df60aad6c4b235de87 + sha256: a04a1603e405ea9ae5c4a492a8e361086cb441a91ef7299bd4bf3eca0b485b6d manager: conda name: jq optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7-hd590300_0.conda - version: '1.7' + url: https://conda.anaconda.org/conda-forge/linux-64/jq-1.7.1-hd590300_0.conda + version: 1.7.1 - category: main dependencies: libbrotlicommon: 1.1.0 hd590300_1 @@ -1327,20 +1339,20 @@ package: version: '5.39' - category: main dependencies: - c-ares: '>=1.21.0,<2.0a0' - libev: '>=4.33,<4.34.0a0' + c-ares: '>=1.23.0,<2.0a0' + libev: '>=4.33,<5.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 9b13d5ee90fc9f09d54fd403247342b4 - sha256: 151b18e4f92dcca263a6d23e4beb0c4e2287aa1c7d0587ff71ef50035ed34aca + md5: 700ac6ea6d53d5510591c4344d5c989a + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb manager: conda name: libnghttp2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda version: 1.58.0 - category: main dependencies: @@ -1485,15 +1497,15 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libnsl: '>=2.0.0,<2.1.0a0' + libxcrypt: '>=4.4.36' hash: - md5: 3e785bff761095eb7f8676f4694bd1b1 - sha256: 6e18c1488d191cb1a43a483f44fffa75668779a29927319b4adeb10da12ad06b + md5: f2cfec9406850991f4e3d960cc9e3321 + sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 manager: conda name: perl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-4_hd590300_perl5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda version: 5.32.1 - category: main dependencies: @@ -1524,16 +1536,16 @@ package: - category: main dependencies: libgcc-ng: '>=12' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' hash: - md5: 04b4845b9e9b5a0ee6eba013ecdbbddb - sha256: 4c00411d49fefc6a53167c3120e386b3f35510544a44d2e647615b510a622f29 + md5: 3d1b58d2664d96f9fbc0afe5e1d04632 + sha256: f6cc2bdcb5d809bbaae218e03bdefef4a309d1fc7ccc9444fda59bd4553a83f8 manager: conda name: s2n optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.3.56-h06160fa_0.conda - version: 1.3.56 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.0-h06160fa_0.conda + version: 1.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1646,15 +1658,15 @@ package: aws-c-cal: '>=0.6.9,<0.6.10.0a0' aws-c-common: '>=0.9.10,<0.9.11.0a0' libgcc-ng: '>=12' - s2n: '>=1.3.56,<1.3.57.0a0' + s2n: '>=1.4.0,<1.4.1.0a0' hash: - md5: d15f4dfeef1d65de9a5283c984981776 - sha256: ca5094093d0f2de9b0b2bd4697088565d0ef930364df8a67c8b79172dc9c209d + md5: c930336aa72995f1b5459b51df3ba841 + sha256: 7426f7444cd43cd7a649670c7330c163b40f40aa832e82be873d9de91e49b05e manager: conda name: aws-c-io optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he14a76f_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.13.36-he0cd244_2.conda version: 0.13.36 - category: main dependencies: @@ -1699,16 +1711,16 @@ package: version: 1.1.0 - category: main dependencies: - gcc_impl_linux-64: '>=12.3.0,<12.3.1.0a0' + gcc_impl_linux-64: '>=11.4.0,<11.4.1.0a0' hash: - md5: 93700ef8b49aebbfb0bf40e0b1448834 - sha256: f361a244a51874065b4d9a2d27089647e7966050abb8a76cad57471776b8ba19 + md5: 42003d7074d4daaf287d19987cd927bf + sha256: 2c30ddc6cb51a03fb5f671f55eaabcb9208d6ce701e6de2234518eec43a6f2d1 manager: conda name: conda-gcc-specs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-12.3.0-h83fac38_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/conda-gcc-specs-11.4.0-h240829a_3.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1752,16 +1764,16 @@ package: version: 2.12.1 - category: main dependencies: - gcc_impl_linux-64: 12.3.0.* + gcc_impl_linux-64: 11.4.0.* hash: - md5: e2f2f81f367e14ca1f77a870bda2fe59 - sha256: 1bbf077688822993c39518056fb43d83ff0920eb42fef11e8714d2a298cc0f27 + md5: 0c8d100583c5fd6d20cd5307aaedaf0d + sha256: b515e9222a8af974024b02c7265bed8e4edf912707a5a8fc207cbc8bc2ac0bff manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.3.0-h8d2909c_2.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-11.4.0-h7baecda_2.conda + version: 11.4.0 - category: main dependencies: libgcc-ng: '>=12' @@ -1781,18 +1793,18 @@ package: version: 3.7.9 - category: main dependencies: - gcc_impl_linux-64: 12.3.0 he2b93b0_3 - libstdcxx-devel_linux-64: 12.3.0 h8bca6fd_103 + gcc_impl_linux-64: 11.4.0 h7aa1c59_3 + libstdcxx-devel_linux-64: 11.4.0 h922705a_103 sysroot_linux-64: '' hash: - md5: b6ce9868fc6c65a18c22fd983e2d7e6f - sha256: 63e75858b60fe6d7227cd6026ed7ad0a8df4c5592454f752ff7ffc1e283e66a7 + md5: dbee4be21eb6dbf596afddf60ff120bf + sha256: 424d9989ea82e6777e569de6873cc56229a8982e274409c344473ad89bb7bbb7 manager: conda name: gxx_impl_linux-64 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.3.0-he2b93b0_3.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-11.4.0-h7aa1c59_3.conda + version: 11.4.0 - category: main dependencies: keyutils: '>=1.6.1,<2.0a0' @@ -1839,14 +1851,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.42,<10.43.0a0' hash: - md5: 70052d6c1e84643e30ffefb21ab6950f - sha256: 4e6fa28002f834cfc30a64792e95c1701d835cc3d3a4bb18d6e8d16bb8aba05b + md5: 9bd06b12bbfa6fd1740fd23af4b0f0c7 + sha256: b1b594294a0fe4c9a51596ef027efed9268d60827e8ae61fb7545c521a631e33 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.1-h783c2da_1.conda - version: 2.78.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.78.3-h783c2da_0.conda + version: 2.78.3 - category: main dependencies: libgcc-ng: '>=12' @@ -1936,23 +1948,24 @@ package: libffi: '>=3.4,<4.0a0' libgcc-ng: '>=12' libnsl: '>=2.0.1,<2.1.0a0' - libsqlite: '>=3.43.2,<4.0a0' + libsqlite: '>=3.44.2,<4.0a0' libuuid: '>=2.38.1,<3.0a0' + libxcrypt: '>=4.4.36' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.4,<7.0a0' - openssl: '>=3.1.4,<4.0a0' + openssl: '>=3.2.0,<4.0a0' readline: '>=8.2,<9.0a0' tk: '>=8.6.13,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' hash: - md5: f3a8c32aa764c3e7188b4b810fc9d6ce - sha256: a53410f459f314537b379982717b1c5911efc2f0cc26d63c4d6f831bcb31c964 + md5: ed38140af93f81319ebc472fbcf16cca + sha256: 4234c8e301737aa245d12c8fb44a4128005795e42883977c29cca3f34c71a1eb manager: conda name: python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_0_cpython.conda + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.13-hd12c33a_1_cpython.conda version: 3.10.13 - category: main dependencies: @@ -2061,14 +2074,14 @@ package: dependencies: python: '>=3.8' hash: - md5: c629a13439d80b37c6a946b098c4ac2b - sha256: 62c3486961e43fb9b495b7854f48fea9b486b2176a9629c6faf80c445543b1aa + md5: 0801250abb3d5b86010e20324f0dde94 + sha256: af221f16a23feea4d91db75b35c5720c9c448814af815fe6d45c5627eb75e897 manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.1.6-pyhd8ed1ab_0.conda - version: 3.1.6 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.2.1-pyhd8ed1ab_0.conda + version: 3.2.1 - category: main dependencies: libgcc-ng: '>=12' @@ -2133,14 +2146,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: e6792675103087f822f9705a22e4845d - sha256: 070fdd2e887a0b898764bfd6aa603365cf79dda30b1161ae06c607d510920f7d + md5: 6dd3d49f65ceb05dbd527a5b6301611b + sha256: df399f6daedb506d2f0d2d0cc2619969b9042455c1f4314eee526bbf6f4d7aba manager: conda name: bcrypt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.1-py310hcb5633a_0.conda - version: 4.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/bcrypt-4.1.2-py310hcb5633a_0.conda + version: 4.1.2 - category: main dependencies: python: '>=3.8' @@ -2155,16 +2168,16 @@ package: version: 1.7.0 - category: main dependencies: - python: ==2.7.*|>=3.7 + python: 2.7.*|>=3.7 hash: - md5: 033eb25fffd222aceeca6d58cd953680 - sha256: 4ff828cceb8f55cb26d23b1a4c174d22c7cd92350221724bcaf2d6632e33fdee + md5: 56febe65315cc388a5d20adf2b39a74d + sha256: 0ff5173f6b20a5c95401aa52d10dbdc05c322fc568dc7417c6f76cf68e706d16 manager: conda name: boltons optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boltons-23.0.0-pyhd8ed1ab_0.conda - version: 23.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/boltons-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 - category: main dependencies: brotli-bin: 1.1.0 hd590300_1 @@ -2322,14 +2335,14 @@ package: dependencies: python: 2.7|>=3.6 hash: - md5: 12d8aae6994f342618443a8f05c652a0 - sha256: 13c887cb4a29e1e853a118cfc0e42b72a7e1d1c50c66c0974885d37f0db30619 + md5: db16c66b759a64dc5183d69cc3745a52 + sha256: 3ff11acdd5cc2f80227682966916e878e45ced94f59c402efb94911a5774e84e manager: conda name: distlib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.7-pyhd8ed1ab_0.conda - version: 0.3.7 + url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda + version: 0.3.8 - category: main dependencies: python: '>=3.6' @@ -2401,26 +2414,26 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: c7b2865e86782925a872c8598b760c08 - sha256: cd1e59ceac047d9f692bb7cc2a6a6e2356a7d3db660b076b4afb19d35db2fd02 + md5: f20cd4d9c1f4a8377d0818c819918bbb + sha256: 496d0ae05e81be0bd8e046bc48a3346f867caaad65041aa14ee2f3717af70db6 manager: conda name: frozenlist optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.0-py310h2372a71_1.conda - version: 1.4.0 + url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.4.1-py310h2372a71_0.conda + version: 1.4.1 - category: main dependencies: python: '>=3.8' hash: - md5: 5b86cf1ceaaa9be2ec4627377e538db1 - sha256: 1bbdfadb93cc768252fd207dca406cde928f9a81ff985ea1760b6539c55923e6 + md5: bf40f2a8835b78b1f91083d306b493d2 + sha256: 9269a5464698e0fde1f9c78544552817370c26df86e2a5a7518544b6a55ae8ee manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.10.0-pyhca7485f_0.conda - version: 2023.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.12.2-pyhca7485f_0.conda + version: 2023.12.2 - category: main dependencies: libgcc-ng: '>=12' @@ -2471,17 +2484,17 @@ package: version: 0.7.6 - category: main dependencies: - gcc: 12.3.0.* - gxx_impl_linux-64: 12.3.0.* + gcc: 11.4.0.* + gxx_impl_linux-64: 11.4.0.* hash: - md5: 673bac341be6b90ef9e8abae7e52ca46 - sha256: 5fd65768fb602fd21466831c96e7a2355a4df692507abbd481aa65a777151d85 + md5: 4821dd86fa505a0d5b6aacd28ed8291f + sha256: e07c2da262b374fc9aad422a4927660ef96aec6d1445c7673a6ba58a445523a5 manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.3.0-h8d2909c_2.conda - version: 12.3.0 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-11.4.0-h7baecda_2.conda + version: 11.4.0 - category: main dependencies: __unix: '' @@ -2613,14 +2626,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: ee36f87084373c3e01a7f14d372ccf35 - sha256: 0261c90c6f990d7a06f2ef107d53cb33a720a0c7420cc9f280ad0deb4aedda68 + md5: 24d67b3be879d3f72b199061189ff022 + sha256: 6dd8e02aa0ca786bae44793475141a2218882f5c225c4e31f0b1c70ac012e586 manager: conda name: lazy-object-proxy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.9.0-py310h2372a71_1.conda - version: 1.9.0 + url: https://conda.anaconda.org/conda-forge/linux-64/lazy-object-proxy-1.10.0-py310h2372a71_0.conda + version: 1.10.0 - category: main dependencies: libgcc-ng: '>=12' @@ -2929,6 +2942,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda version: 1.3.10 +- category: main + dependencies: + python: '>=3.8' + hash: + md5: 45a5065664da0d1dfa8f8cd2eaf05ab9 + sha256: 9e4ff17ce802159ed31344eb913eaa877688226765b77947b102b42255a53853 + manager: conda + name: platformdirs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.1.0-pyhd8ed1ab_0.conda + version: 4.1.0 - category: main dependencies: python: '>=3.8' @@ -2960,14 +2985,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: cb25177acf28cc35cfa6c1ac1c679e22 - sha256: db8a99bc41c1b0405c8e9daa92b9d4e7711f9717aff7fd3feeba407ca2a91aa2 + md5: eb1f8f278d0b00c7b6d5c01a5b06609f + sha256: 82d01c09f10cdc0b9333c9478a05bfd55f9cf7b5a1db079938b46920fedd9f7b manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py310h2372a71_1.conda - version: 5.9.5 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.7-py310h2372a71_0.conda + version: 5.9.7 - category: main dependencies: python: '!=3.0,!=3.1,!=3.2,!=3.3,!=3.4,!=3.5' @@ -2996,7 +3021,7 @@ package: version: 0.6.6 - category: main dependencies: - python: ==2.7.*|>=3.4 + python: 2.7.*|>=3.4 hash: md5: 076becd9e05608f8dc72757d5f3a91ff sha256: 74c63fd03f1f1ea2b54e8bc529fd1a600aaafb24027b738d0db87909ee3a33dc @@ -3071,14 +3096,14 @@ package: dependencies: python: '>=3.6' hash: - md5: 2590495f608a63625e165915fb4e2e34 - sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6 + md5: c79cacf8a06a51552fc651652f170208 + sha256: d2381037bf362c78654a8ece0e0f54715e09113448ddd7ed837f688536cbf176 manager: conda name: python-tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.3-pyhd8ed1ab_0.conda - version: '2023.3' + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2023.4-pyhd8ed1ab_0.conda + version: '2023.4' - category: main dependencies: python: '>=3.6' @@ -3125,14 +3150,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 124bc31abd31cd6990a9f6ade3a4da2d - sha256: bf8e736b9b4f73c3142842b280982581037b40904b6dea4706ab137b3179c5c7 + md5: 4a9ba4e7af60356e63b38a6d419acad6 + sha256: b9d2c96a468e4c871df098f6c34c72b160911fb98132e1ffd6ba92670cbeb523 manager: conda name: regex optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.10.3-py310h2372a71_0.conda - version: 2023.10.3 + url: https://conda.anaconda.org/conda-forge/linux-64/regex-2023.12.25-py310h2372a71_0.conda + version: 2023.12.25 - category: main dependencies: __glibc: '>=2.17,<3.0.a0' @@ -3158,14 +3183,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 99b553d12fe320478b5b094cc1558f5a - sha256: af3b44e6e9ef8b18292c4854cf07edce6051efce06b75367bf0fc0599ba2cdf7 + md5: 849507c9b0652ec09c110bcc5213f482 + sha256: ebd8fb3040ec0ba40fe72da8136b847edd6f878a8f6862e534165d721a8af0d8 manager: conda name: rpds-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.13.2-py310hcb5633a_0.conda - version: 0.13.2 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.16.2-py310hcb5633a_0.conda + version: 0.16.2 - category: main dependencies: libgcc-ng: '>=12' @@ -3354,14 +3379,14 @@ package: dependencies: python: '>=3.8' hash: - md5: 5b1be40a26d10a06f6d4f1f9e19fa0c7 - sha256: 38d16b5c53ec1af845d37d22e7bb0e6c934c7f19499123507c5a470f6f8b7dde + md5: a92a6440c3fe7052d63244f3aba2a4a7 + sha256: f3c5be8673bfd905c4665efcb27fa50192f24f84fa8eff2f19cba5d09753d905 manager: conda name: typing_extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.8.0-pyha770c72_0.conda - version: 4.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.9.0-pyha770c72_0.conda + version: 4.9.0 - category: main dependencies: libgcc-ng: '>=12' @@ -3387,14 +3412,14 @@ package: perl: '' python: '' hash: - md5: efb0e7909f1a41159856e688e216bd26 - sha256: c24f5fc704ee3c0737456e7a4b8f75114b25a51812c6f801a22ed43652e0b211 + md5: 6ecc6f19e3a0661c096d0e84015c8122 + sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.008-h514fc35_1.conda - version: '5.008' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda + version: '5.018' - category: main dependencies: python: '>=3.8' @@ -3423,14 +3448,14 @@ package: dependencies: python: '>=3.8' hash: - md5: bdb77b28cf16deac0eef431a068320e8 - sha256: df45b89862edcd7cd5180ec7b8c0c0ca9fb4d3f7d49ddafccdc76afcf50d8da6 + md5: 50ad31e07d706aae88b14a4ac9c73f23 + sha256: d9b537d5b7c5aa7a02a4ce4c6b755e458bd8083b67752a73c92d113ccec6c10f manager: conda name: websocket-client optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.6.4-pyhd8ed1ab_0.conda - version: 1.6.4 + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.7.0-pyhd8ed1ab_0.conda + version: 1.7.0 - category: main dependencies: python: '>=3.7' @@ -3559,16 +3584,16 @@ package: aws-c-common: '>=0.9.10,<0.9.11.0a0' aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.36,<0.13.37.0a0' - aws-c-sdkutils: '>=0.1.12,<0.1.13.0a0' + aws-c-sdkutils: '>=0.1.13,<0.1.14.0a0' libgcc-ng: '>=12' hash: - md5: 65d47e98af07d5e361707dda2ce44f3a - sha256: 48c768d96b09396190b717e126d33ca68f3d2786a068af188fd16fa469cbad76 + md5: d42aebb91e28e2fee2a0218cfbff2c90 + sha256: b06ef95458fc70af4230c9c6690011235cd25288752ff7aa25492fc6d1c0e028 manager: conda name: aws-c-auth optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h5c941e0_1.conda + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.8-h538f98c_2.conda version: 0.7.8 - category: main dependencies: @@ -3591,14 +3616,14 @@ package: pytz: '' setuptools: '' hash: - md5: 3ccff479c246692468f604df9c85ef26 - sha256: 1f955c700db16f65b16c9e9c1613436480d5497970b8030b7a9ebe1620cc2147 + md5: 9669586875baeced8fc30c0826c3270e + sha256: 8584e3da58e92b72641c89ff9b98c51f0d5dbe76e527867804cbdf03ac91d8e6 manager: conda name: babel optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/babel-2.13.1-pyhd8ed1ab_0.conda - version: 2.13.1 + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda + version: 2.14.0 - category: main dependencies: fontconfig: '>=2.14.2,<3.0a0' @@ -3770,14 +3795,14 @@ package: python_abi: 3.10.* *_cp310 unicodedata2: '>=14.0.0' hash: - md5: c2dcff257e040bcda00e2a30a9d85333 - sha256: 65239757b26d95fe4d4368a9892d68baad555f3f62b405c3a58309db7747f929 + md5: 27df6604157a2a9e782cbe720f752cf5 + sha256: 468904105e134301032749de8bf613a5cbc61d4de51bce25524716b6386885a4 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.45.1-py310h2372a71_0.conda - version: 4.45.1 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.47.0-py310h2372a71_0.conda + version: 4.47.0 - category: main dependencies: python: '>=3.7' @@ -3823,14 +3848,14 @@ package: python: '>=3.8' zipp: '>=0.5' hash: - md5: 4e9f59a060c3be52bc4ddc46ee9b6946 - sha256: 2797ed927d65324309b6c630190d917b9f2111e0c217b721f80429aeb57f9fcf + md5: 746623a787e06191d80a2133e5daff17 + sha256: e72d05f171f4567004c9360a838e9d5df21e23dcfeb945066b53a6e5f754b861 manager: conda name: importlib-metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.8.0-pyha770c72_0.conda - version: 6.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.0.1-pyha770c72_0.conda + version: 7.0.1 - category: main dependencies: python: '>=3.8' @@ -3969,14 +3994,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=4.1.0' hash: - md5: 0d60b1efdb10a07411570305e9e9421d - sha256: d15de464eb41a105bd381779e6bf8311f72346afc9e7d6a79165d505403d4d54 + md5: 3320dc32fc6bd29ab4a16cf22bc35fc2 + sha256: 6c01268327db83c70c38cfc87fc13a71d09cda123ae06cd6edbbe620c2b20f33 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.7.1-py310h2372a71_0.conda - version: 1.7.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.8.0-py310h2372a71_0.conda + version: 1.8.0 - category: main dependencies: python: 2.7|>=3.7 @@ -4019,27 +4044,14 @@ package: setuptools: '' wheel: '' hash: - md5: 2400c0b86889f43aa52067161e1fb108 - sha256: 435829a03e1c6009f013f29bb83de8b876c388820bf8cf69a7baeec25f6a3563 + md5: 8591c748f98dcc02253003533bc2e4b1 + sha256: 29096d1d53c61aeef518729add2f405df86b3629d1d738a35b15095e6a02eeed manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.1-pyhd8ed1ab_0.conda - version: 23.3.1 -- category: main - dependencies: - python: '>=3.7' - typing_extensions: '>=4.7.1' - hash: - md5: 6bb4ee32cd435deaeac72776c001e7ac - sha256: 67381d3f7cadca7df7699238e0dcce680ad20d7fd28804bab48611fecb084937 - manager: conda - name: platformdirs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.0.0-pyhd8ed1ab_0.conda - version: 4.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.3.2-pyhd8ed1ab_0.conda + version: 23.3.2 - category: main dependencies: python: '>=3.7' @@ -4202,16 +4214,16 @@ package: version: 2.31.0.6 - category: main dependencies: - typing_extensions: 4.8.0 pyha770c72_0 + typing_extensions: 4.9.0 pyha770c72_0 hash: - md5: 384462e63262a527bda564fa2d9126c0 - sha256: d6e1dddd0c372218ef15912383d351ac8c73465cbf16238017f0269813cafe2d + md5: c16524c1b7227dc80b36b4fa6f77cc86 + sha256: d795c1eb1db4ea147f01ece74e5a504d7c2e8d5ee8c11ec987884967dd938f9c manager: conda name: typing-extensions optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.8.0-hd8ed1ab_0.conda - version: 4.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.9.0-hd8ed1ab_0.conda + version: 4.9.0 - category: main dependencies: brotli-python: '>=1.0.9' @@ -4246,6 +4258,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.2059-py310pl5321he660f0e_1.conda version: 9.0.2059 +- category: main + dependencies: + distlib: <1,>=0.3.7 + filelock: <4,>=3.12.2 + platformdirs: <5,>=3.9.1 + python: '>=3.8' + hash: + md5: c119653cba436d8183c27bf6d190e587 + sha256: 50827c3721a9dbf973b568709d4381add2a6552fa562f26a385c5edc16a534af + manager: conda + name: virtualenv + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.25.0-pyhd8ed1ab_0.conda + version: 20.25.0 - category: main dependencies: markupsafe: '>=2.1.1' @@ -4328,29 +4355,29 @@ package: libgcc-ng: '>=12' openssl: '>=3.2.0,<4.0a0' hash: - md5: d193ad6b5c2d47c679202afe5b69b371 - sha256: d99862ce623c68dd86225520c08bfe5ff46a0af885530a3faca4d3d54c7480bf + md5: f27f792aa83c7be3ee96d09a637a6474 + sha256: 04142edf1a574e137a9e30a4f4e9b9448e219b6f4216a782ceaed933f27852a6 manager: conda name: aws-c-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.3-h0448019_0.conda - version: 0.4.3 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.4.4-h0448019_0.conda + version: 0.4.4 - category: main dependencies: jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' + python: '>=3.8' python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 352c39ba5cd9ea01996358f0748e102e - sha256: 56566ea8f3a48c24190c1dcf50681c0a84b26821c335c21b5c3c5d238e4bdb14 + md5: d6850c205e9f86502bd6a58e270e8fd5 + sha256: ad25216fd91ac9a624ffde69679c3d476c4091adad30b9169aa3486bd25e1e88 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: clang-format-16: 16.0.3 default_h1cdf331_2 @@ -4469,16 +4496,16 @@ package: version: 7.3.0 - category: main dependencies: - importlib-metadata: '>=6.8.0,<6.8.1.0a0' + importlib-metadata: '>=7.0.1,<7.0.2.0a0' hash: - md5: b279b07ce18058034e5b3606ba103a8b - sha256: b96e01dc42d547d6d9ceb1c5b52a5232cc04e40153534350f702c3e0418a6b3f + md5: 4a2f43a20fa404b998859c6a470ba316 + sha256: bc362df1d4f5a04c38dff29cd9c2d0ac584f9c4b45d3e4683ee090944a38fba4 manager: conda name: importlib_metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.8.0-hd8ed1ab_0.conda - version: 6.8.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-7.0.1-hd8ed1ab_0.conda + version: 7.0.1 - category: main dependencies: importlib_resources: '>=1.4.0' @@ -4554,16 +4581,16 @@ package: libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - typing-extensions: '>=4.6.0' + typing-extensions: '>=4.6.0,!=4.7.0' hash: - md5: a47e1b53da51f577ee44e79f7589c388 - sha256: 58ce2738657c5b3c5539465fa54eb499361df836034501c4bf03b1fc0ba9a1b7 + md5: f0f6b7e4b3d134f070288963ed4fbeee + sha256: 3bdc1ef89f9e431392aec8ed5695d8aefc7b65a014cc46934f75e87779f89745 manager: conda name: pydantic-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.5-py310hcb5633a_0.conda - version: 2.14.5 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.14.6-py310hcb5633a_1.conda + version: 2.14.6 - category: main dependencies: cffi: '>=1.4.1' @@ -4628,14 +4655,14 @@ package: pip: '' python: '>=3.7,<4.0' hash: - md5: 1205762a36a808c0976f959caf389e8e - sha256: 0040b85370375694ae48d21af3e14471f78578fb22cd284c80da3741def0ad4a + md5: aaafd70a6934549210865f558a0eee96 + sha256: 4e695e4d83cfc4ffd557cc2bdbecc0cedb9df8831d1a415b8e8c0e5f96bc6b5f manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.19.19-pyhd8ed1ab_0.conda - version: 0.19.19 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.20.0-pyhd8ed1ab_0.conda + version: 0.20.0 - category: main dependencies: cffi: '' @@ -4652,21 +4679,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py310hd41b1e2_4.conda version: 1.0.1 -- category: main - dependencies: - distlib: <1,>=0.3.7 - filelock: <4,>=3.12.2 - platformdirs: <5,>=3.9.1 - python: '>=3.8' - hash: - md5: db990278c2c00b268eed778de44f6057 - sha256: ad661ae59c64bd73c25dfadb00c601659f4d9cafbf428e36a690075e52bac96a - manager: conda - name: virtualenv - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.24.7-pyhd8ed1ab_0.conda - version: 20.24.7 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4743,21 +4755,21 @@ package: aws-c-http: '>=0.7.14,<0.7.15.0a0' aws-c-io: '>=0.13.36,<0.13.37.0a0' aws-c-mqtt: '>=0.9.10,<0.9.11.0a0' - aws-c-s3: '>=0.4.3,<0.4.4.0a0' + aws-c-s3: '>=0.4.4,<0.4.5.0a0' aws-checksums: '>=0.1.17,<0.1.18.0a0' libgcc-ng: '>=12' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 - s2n: '>=1.3.56,<1.3.57.0a0' + s2n: '>=1.4.0,<1.4.1.0a0' hash: - md5: 7fe0965c0d18613708e4b9793c0ac0c4 - sha256: 532660a9498d4c5728b803fb5476f2a327cb81ab832b9bf36fadeb4ed4d1b09f + md5: fd4b703083170315b3735e43967e3983 + sha256: bdab178420ff1e1dcf13407c662d355290bbad434844ed903029f98cd8afc29c manager: conda name: awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.18-py310h9381138_0.conda - version: 0.19.18 + url: https://conda.anaconda.org/conda-forge/linux-64/awscrt-0.19.19-py310h43b4219_2.conda + version: 0.19.19 - category: main dependencies: python: '>=3.6' @@ -4779,14 +4791,14 @@ package: types-awscrt: '' typing_extensions: '>=4.1.0' hash: - md5: 3e24267b0fce04a61f7532f3096c45a5 - sha256: 5e0daa0d40c5a6ea3b3798d31e0ae6bdc1d53c487e59153e5e4d9ee8c2ccc47c + md5: 75715c2695eb5d1da023a79140e923cd + sha256: e539bb5b339fc2136b086ce084fbf7b8c8f694d0c6ac30db2565c426bcdf28da manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -4882,14 +4894,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: 3ef8e9bab1bfaf900bb0a5db8c0c742c - sha256: 0783aa58f43d1c113a2ec300a29ba3313184056f9893671c75037fbadaf9e546 + md5: 93c8f8ceb83827d88deeba796f07fba7 + sha256: ce2a64c18221af96226be23278d81f22ff9f64b3c047d8865590f6718915303f manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.32-pyhd8ed1ab_0.conda - version: 2.5.32 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.33-pyhd8ed1ab_0.conda + version: 2.5.33 - category: main dependencies: importlib_metadata: '' @@ -4958,14 +4970,14 @@ package: python: '>=3.6' requests: <3,>=2.0.0 hash: - md5: 4b2d7e21aa309356a9396d54800cd271 - sha256: 8a37a7c3efae510b90669cbae7b4f736477361406028953cd804d09a2d24c53a + md5: 9d9b0ef23f5dbe0d612ca037b9bfb410 + sha256: e0eb5606b4a164964d663d7a215ac9cd18db1ce1eca544aa61348e0a2bda94a9 manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.25.0-pyhd8ed1ab_0.conda - version: 1.25.0 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.26.0-pyhd8ed1ab_0.conda + version: 1.26.0 - category: main dependencies: alsa-lib: '>=1.2.9,<1.2.10.0a0' @@ -5007,14 +5019,14 @@ package: python_abi: 3.10.* *_cp310 pytz: '>=2020.1' hash: - md5: 30a39c1064e5efc578d83c2a5f7cd749 - sha256: bb2b3e4a3f3d40b87ac214b88393a7f1ee5b2cac41d249c580d184f7edb30653 + md5: 410f7e83992a591e492c25049a859254 + sha256: d0743541397140a25a89ab0686933005a4c104d95c23ff1c322f903a50b18099 manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.3-py310hcc13569_0.conda - version: 2.1.3 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py310hcc13569_0.conda + version: 2.1.4 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' @@ -5042,29 +5054,29 @@ package: pynacl: '>=1.5' python: '>=3.6' hash: - md5: 8d4563992b27cdb8e673d1ca16962c9d - sha256: 9139c13cb7ea5729af862db5fb0523daa5900b9b4fa36637cd7f9c01be665f80 + md5: a5e792523b028b06d7ce6e65a6cd4a33 + sha256: 2e66359261954a79b66858c30e69ea6dd4380bf8bd733940527386b25e31dd13 manager: conda name: paramiko optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.3.1-pyhd8ed1ab_0.conda - version: 3.3.1 + url: https://conda.anaconda.org/conda-forge/noarch/paramiko-3.4.0-pyhd8ed1ab_0.conda + version: 3.4.0 - category: main dependencies: annotated-types: '>=0.4.0' - pydantic-core: 2.14.5 + pydantic-core: 2.14.6 python: '>=3.7' typing-extensions: '>=4.6.1' hash: - md5: 3f908ebfccbfd09946961862d26bb9af - sha256: e3baa6424af931d8d7c5a0554b24d85faf3471df8036181d598065beed3096de + md5: 3569001fd8b37e542aaefdf5de124e19 + sha256: 07ec778cbf17737b740f0547fb5cba91a7bff52945fe637287458e4119c58ffe manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.2-pyhd8ed1ab_0.conda - version: 2.5.2 + url: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.5.3-pyhd8ed1ab_0.conda + version: 2.5.3 - category: main dependencies: cryptography: '>=38.0.0,<41' @@ -5114,16 +5126,16 @@ package: - category: main dependencies: botocore: '>=1.33.2,<2.0a.0' - python: '>=3.7' + python: '>=3.8' hash: - md5: 75e12933f4bf755c9cdd37072bcb6203 - sha256: 2e5679abcec8eb646df37518ecdbdaa224d7ff5295a1e56707317d52b47d9c79 + md5: 2d52125a7fe49248ce5e883fed6c935a + sha256: 5f1fccbbc0460971f12dda7ab0465d8f6037486042d156b611881e57d218ce95 manager: conda name: s3transfer optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.8.2-pyhd8ed1ab_0.conda - version: 0.8.2 + url: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.10.0-pyhd8ed1ab_0.conda + version: 0.10.0 - category: main dependencies: attrs: '' @@ -5170,7 +5182,7 @@ package: version: 3.3.1 - category: main dependencies: - awscrt: 0.19.18 + awscrt: '>=0.19.18,<=0.19.19' colorama: '>=0.2.5,<0.4.7' cryptography: '>=3.3.2,<=40.0.2' distro: '>=1.5.0,<1.9.0' @@ -5185,29 +5197,29 @@ package: ruamel.yaml.clib: '>=0.2.0,<=0.2.7' urllib3: '>=1.25.4,<1.27' hash: - md5: 83b614ffebf970bc4c848a34be1afe2d - sha256: 85b91372b3343c70a52ac76eab1878b0ac41a2446778b2379c725c614a2c41be + md5: 80d2f2f27aafd39e4b8134e9ee9ab312 + sha256: 943e8710df413e02b1d017c462b1b5e976f44751f51e07851b30917d6b63b44f manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.14.4-py310hff52083_0.conda - version: 2.14.4 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-2.15.6-py310hff52083_0.conda + version: 2.15.6 - category: main dependencies: - botocore: '>=1.33.4,<1.34.0' + botocore: '>=1.34.11,<1.35.0' jmespath: '>=0.7.1,<2.0.0' - python: '>=3.7' - s3transfer: '>=0.8.2,<0.9.0' + python: '>=3.8' + s3transfer: '>=0.10.0,<0.11.0' hash: - md5: 914d59cf685448451de9ac736cb0fb2a - sha256: cb63cadfb3c593cb7295b14450e4310af88d32dc1bbf185ec82a325a12e86f28 + md5: b1256264fc531fca35aabab7d517438a + sha256: b4d3415b4beee1623c02b7ddc593ae7ca5c5843c943424a73b7648e05858e008 manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.33.4-pyhd8ed1ab_0.conda - version: 1.33.4 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: cachecontrol: 0.13.1 pyhd8ed1ab_0 @@ -5246,14 +5258,14 @@ package: urllib3: '>=1.26.0' websocket-client: '>=0.32.0' hash: - md5: c95d23d8bae7e21491868cc7772d7c73 - sha256: 7c3031602e92fd7682302ef98a45bdf7374d48a849cdd3900b7c68a32d162177 + md5: aec5f308cb9055e83c59afecd5fcb58a + sha256: b9bf5990dc968123e5817096daddd2105857cfd4c5b94c0937d929bc74fc7a31 manager: conda name: docker-py optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/docker-py-6.1.3-pyhd8ed1ab_0.conda - version: 6.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/docker-py-7.0.0-pyhd8ed1ab_0.conda + version: 7.0.0 - category: main dependencies: atk-1.0: '>=2.36.0' @@ -5383,18 +5395,18 @@ package: cfgv: '>=2.0.0' identify: '>=1.0.0' nodeenv: '>=0.11.1' - python: '>=3.8' + python: '>=3.9' pyyaml: '>=5.1' virtualenv: '>=20.10.0' hash: - md5: 964e3d762e427661c59263435a14c492 - sha256: 51a4a17334a15ec92805cd075776563ff93b3b6c20732c4cb607c98a761ae02f + md5: 473a7cfca197da0a10cff3f6dded7d4b + sha256: 7d1f4b4a2eb4946b5808769642c5f643788c3a9e090f1c02a6c63f8794fb3d54 manager: conda name: pre-commit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.5.0-pyha770c72_0.conda - version: 3.5.0 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda + version: 3.6.0 - category: main dependencies: __unix: '' @@ -5416,14 +5428,14 @@ package: python: '>=3.7,<4.0' typing-extensions: <5,>=4.4 hash: - md5: d9f3ca99e7d10b05ead04edcdcb7e0cb - sha256: 1bf5fa0d34e4de0843eaa82311e3dd680fdbe02cd74a6945f9b662f504bbcd08 + md5: 9fabf343ed3cdb5803480768e6338826 + sha256: 6cdad8582e270b88147295e9ec4817bdcda14212098efa77165a96870a31bbf4 manager: conda name: aws-sam-translator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.81.0-pyhd8ed1ab_0.conda - version: 1.81.0 + url: https://conda.anaconda.org/conda-forge/noarch/aws-sam-translator-1.82.0-pyhd8ed1ab_0.conda + version: 1.82.0 - category: main dependencies: azure-core: <2.0.0,>=1.23.0 @@ -5446,14 +5458,14 @@ package: python: '' typing_extensions: '' hash: - md5: 23cf1bb1fb33251d3f0caf4198a90782 - sha256: 44363a8ede827c4bac4c1e6535461ab6f12a19c658dff0a4d908c6d1e19c5d70 + md5: 8e4b38b9dfc865ffb06a2bf2f3719d91 + sha256: e8d31daecb364f893495430612721bb7b8f240e0834be5d1226810ace22cde68 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.33.5-pyhd8ed1ab_0.conda - version: 1.33.5 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.34.11-pyhd8ed1ab_0.conda + version: 1.34.11 - category: main dependencies: archspec: '' @@ -5550,28 +5562,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: 01f46d3078f21041719d2c5fb83200de - sha256: ef1e693434f0d3c84389e459486d57abda67df228c2671d11285ba73baa5c11a + md5: 768ff0d711180b901b1490ebe7010ada + sha256: 9482dd403e24f5e5c155624de7d89f5521a97e8130f0a014899b12486a331a85 manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.33.2-pyhd8ed1ab_0.conda - version: 1.33.2 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.34.0-pyhd8ed1ab_0.conda + version: 1.34.0 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: 687d78daf8e04f4c5e5cfa92ead666c4 - sha256: 2fecbcc276e13a119ec87602d9547aa537bf690724288d368ebf606351c19f67 + md5: a810296f4cdd969085c1c3d78c846588 + sha256: 3975c31a2c88ff9925922537bb653f84a1c91ed5152043788bc8cc49d541951d manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.33.0-pyhd8ed1ab_0.conda - version: 1.33.0 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.34.4-pyhd8ed1ab_0.conda + version: 1.34.4 - category: main dependencies: importlib_resources: '>=5.8,<7.0' @@ -5605,7 +5617,7 @@ package: version: 0.4.2 - category: main dependencies: - aws-sam-translator: '>=1.79.0' + aws-sam-translator: '>=1.82.0' jschema-to-python: '>=1.2.3,<1.3.dev0' jsonpatch: '' jsonschema: '>=3.0,<5' @@ -5617,14 +5629,14 @@ package: sarif-om: '>=1.0.4,<1.1.dev0' sympy: '>=1.0.0' hash: - md5: 8fa5ac9497fc51cb02377e38500ce964 - sha256: a77254900a3bc62e4c216f1223c9a14982db30e3c24a1b3fcc9cd9dcf3d1f5a4 + md5: 6bf6c385031287e86a5821f57544fc12 + sha256: deed7d4700694a25d440816d13de89468fe92dfc87ba506f3fee72b5d1131c75 manager: conda name: cfn-lint optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.3-pyhd8ed1ab_0.conda - version: 0.83.3 + url: https://conda.anaconda.org/conda-forge/noarch/cfn-lint-0.83.6-pyhd8ed1ab_0.conda + version: 0.83.6 - category: main dependencies: colorama: '' @@ -5700,14 +5712,14 @@ package: werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: cd76850f625a821bd553380913baf5d6 - sha256: 307ce3acd4c5c3b25f25e871924e96ee052c09a8a2832fcb7a89a2dc26f309cb + md5: 9447c344fde58f458a55b05729ae74aa + sha256: f0586fd89bcc4e7df9cd12e66627473bed9b4bc33814b01f48e6059628af2f6b manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.10-pyhd8ed1ab_0.conda - version: 4.2.10 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.2.12-pyhd8ed1ab_0.conda + version: 4.2.12 - category: main dependencies: livereload: '>=2.3.0' diff --git a/sims/verilator/Makefile b/sims/verilator/Makefile index 0341ff7d..86463fa1 100644 --- a/sims/verilator/Makefile +++ b/sims/verilator/Makefile @@ -162,8 +162,7 @@ VERILATOR_NONCC_OPTS = \ VERILATOR_CXXFLAGS = \ $(SIM_CXXFLAGS) \ $(RUNTIME_PROFILING_CFLAGS) \ - -DVERILATOR \ - -include $(build_dir)/$(long_name).plusArgs + -DVERILATOR VERILATOR_LDFLAGS = $(SIM_LDFLAGS) @@ -194,13 +193,13 @@ model_mk_debug = $(model_dir_debug)/V$(TB).mk $(model_mk): $(sim_common_files) $(EXTRA_SIM_REQS) rm -rf $(model_dir) mkdir -p $(model_dir) - $(VERILATOR) $(VERILATOR_OPTS) $(EXTRA_SIM_SOURCES) -o $(sim) -Mdir $(model_dir) -CFLAGS "-include $(model_header)" + $(VERILATOR) $(VERILATOR_OPTS) $(EXTRA_SIM_SOURCES) -o $(sim) -Mdir $(model_dir) touch $@ $(model_mk_debug): $(sim_common_files) $(EXTRA_SIM_REQS) rm -rf $(model_dir_debug) mkdir -p $(model_dir_debug) - $(VERILATOR) $(VERILATOR_OPTS) +define+DEBUG $(EXTRA_SIM_SOURCES) -o $(sim_debug) $(TRACING_OPTS) -Mdir $(model_dir_debug) -CFLAGS "-include $(model_header_debug)" + $(VERILATOR) $(VERILATOR_OPTS) +define+DEBUG $(EXTRA_SIM_SOURCES) -o $(sim_debug) $(TRACING_OPTS) -Mdir $(model_dir_debug) touch $@ ######################################################################################### From 07a7f30b3bcce63b2c634006e649188b98aa3a11 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Fri, 29 Dec 2023 19:21:10 -0800 Subject: [PATCH 160/184] ADD: set scratchpad as default config --- fpga/src/main/scala/arty100t/Configs.scala | 1 - generators/chipyard/src/main/scala/config/AbstractConfig.scala | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 140df42b..d5c83af3 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -46,7 +46,6 @@ class WithArty100TTweaks(freqMHz: Double = 50) extends Config( class RocketArty100TConfig extends Config( new WithArty100TTweaks ++ - new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 128 * 1024) ++ // add on-chip scratchpad for small programs new chipyard.config.WithBroadcastManager ++ // no l2 new chipyard.RocketConfig) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index cef46e04..ace2a110 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -72,6 +72,7 @@ class AbstractConfig extends Config( new chipyard.config.WithDebugModuleAbstractDataWords(8) ++ // increase debug module data capacity new chipyard.config.WithBootROM ++ // use default bootrom new chipyard.config.WithUART ++ // add a UART + new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 64 * 1024) ++ // add 64 KiB on-chip scratchpad new chipyard.config.WithL2TLBs(1024) ++ // use L2 TLBs new chipyard.config.WithNoSubsystemDrivenClocks ++ // drive the subsystem diplomatic clocks from ChipTop instead of using implicit clocks new chipyard.config.WithInheritBusFrequencyAssignments ++ // Unspecified clocks within a bus will receive the bus frequency if set From c2175f45004d5aab5d7384419c751b513f1af397 Mon Sep 17 00:00:00 2001 From: Tynan McAuley Date: Fri, 29 Dec 2023 21:22:34 -0800 Subject: [PATCH 161/184] Reduce CDE lookups for IOBinders --- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 45f72641..7695be70 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -116,7 +116,10 @@ object GetSystemParameters { } class IOBinder[T](composer: Seq[IOBinderFunction] => Seq[IOBinderFunction])(implicit tag: ClassTag[T]) extends Config((site, here, up) => { - case IOBinders => up(IOBinders, site) + (tag.runtimeClass.toString -> composer(up(IOBinders, site)(tag.runtimeClass.toString))) + case IOBinders => { + val upMap = up(IOBinders) + upMap + (tag.runtimeClass.toString -> composer(upMap(tag.runtimeClass.toString))) + } }) class ConcreteIOBinder[T](composes: Boolean, fn: T => IOBinderTuple)(implicit tag: ClassTag[T]) extends IOBinder[T]( From 0fa09da5c1a1687fb620018f5e8650fadb88a9da Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 30 Dec 2023 06:29:05 -0800 Subject: [PATCH 162/184] Remove MBus spad from configs that do not support it --- fpga/src/main/scala/arty/Configs.scala | 3 ++- .../chipyard/src/main/scala/config/AbstractConfig.scala | 3 ++- generators/chipyard/src/main/scala/config/NoCConfigs.scala | 4 ++-- .../chipyard/src/main/scala/config/NoCoreConfigs.scala | 1 + .../chipyard/src/main/scala/config/RocketConfigs.scala | 4 +++- .../chipyard/src/main/scala/config/SodorConfigs.scala | 6 ++++++ generators/testchipip | 2 +- 7 files changed, 17 insertions(+), 6 deletions(-) diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index eeb26b60..e86140eb 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -30,7 +30,8 @@ class WithArtyTweaks extends Config( new chipyard.config.WithFrontBusFrequency(32) ++ new chipyard.config.WithControlBusFrequency(32) ++ new chipyard.config.WithPeripheryBusFrequency(32) ++ - new testchipip.serdes.WithNoSerialTL + new testchipip.serdes.WithNoSerialTL ++ + new testchipip.soc.WithNoScratchpads ) class TinyRocketArtyConfig extends Config( diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index ace2a110..775ecb58 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -69,10 +69,11 @@ class AbstractConfig extends Config( width = 32 // serial-tilelink interface with 32 lanes ) )) ++ + new testchipip.soc.WithMbusScratchpad(base = 0x08000000, // add 64 KiB on-chip scratchpad + size = 64 * 1024) ++ new chipyard.config.WithDebugModuleAbstractDataWords(8) ++ // increase debug module data capacity new chipyard.config.WithBootROM ++ // use default bootrom new chipyard.config.WithUART ++ // add a UART - new testchipip.soc.WithMbusScratchpad(base = 0x08000000, size = 64 * 1024) ++ // add 64 KiB on-chip scratchpad new chipyard.config.WithL2TLBs(1024) ++ // use L2 TLBs new chipyard.config.WithNoSubsystemDrivenClocks ++ // drive the subsystem diplomatic clocks from ChipTop instead of using implicit clocks new chipyard.config.WithInheritBusFrequencyAssignments ++ // Unspecified clocks within a bus will receive the bus frequency if set diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index 66cb1aa2..4288fa84 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -146,7 +146,7 @@ class MultiNoCConfig extends Config( * L2 3 | MI | Cache[3] | 6 * DRAM 0 | MO | system[0] | 3 * DRAM 1 | MO | system[1] | 5 - * extram | MO | serial_tl_0 | 9 + * spad | MO | ram[0] | 9 */ // DOC include start: SharedNoCConfig class SharedNoCConfig extends Config( @@ -169,7 +169,7 @@ class SharedNoCConfig extends Config( "Cache[0]" -> 0, "Cache[1]" -> 2, "Cache[2]" -> 8, "Cache[3]" -> 6), outNodeMapping = ListMap( "system[0]" -> 3, "system[1]" -> 5, - "serial_tl_0" -> 9)) + "ram[0]" -> 9)) )) ++ new constellation.soc.WithSbusNoC(constellation.protocol.GlobalTLNoCParams( constellation.protocol.DiplomaticNetworkNodeMapping( diff --git a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala index 4f70f9ee..6647e516 100644 --- a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala @@ -4,6 +4,7 @@ import org.chipsalliance.cde.config.{Config} // A empty config with no cores. Useful for testing class NoCoresConfig extends Config( + new testchipip.soc.WithNoScratchpads ++ new testchipip.boot.WithNoBootAddrReg ++ new testchipip.boot.WithNoCustomBootPin ++ new chipyard.config.WithNoCLINT ++ diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index 929e8c59..216cb53e 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -12,7 +12,8 @@ class RocketConfig extends Config( new chipyard.config.AbstractConfig) class TinyRocketConfig extends Config( - new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // TODO FIX: Don't dontTouch the ports + new chipyard.harness.WithDontTouchChipTopPorts(false) ++ // TODO FIX: Don't dontTouch the ports + new testchipip.soc.WithNoScratchpads ++ // All memory is the Rocket TCMs new freechips.rocketchip.subsystem.WithIncoherentBusTopology ++ // use incoherent bus topology new freechips.rocketchip.subsystem.WithNBanks(0) ++ // remove L2$ new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove backing memory @@ -36,6 +37,7 @@ class RV32RocketConfig extends Config( // DOC include start: l1scratchpadrocket class ScratchpadOnlyRocketConfig extends Config( new chipyard.config.WithL2TLBs(0) ++ + new testchipip.soc.WithNoScratchpads ++ // remove subsystem scratchpads, confusingly named, does not remove the L1D$ scratchpads new freechips.rocketchip.subsystem.WithNBanks(0) ++ new freechips.rocketchip.subsystem.WithNoMemPort ++ // remove offchip mem port new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use rocket l1 DCache scratchpad as base phys mem diff --git a/generators/chipyard/src/main/scala/config/SodorConfigs.scala b/generators/chipyard/src/main/scala/config/SodorConfigs.scala index 7d7c7ac3..2edda3ce 100644 --- a/generators/chipyard/src/main/scala/config/SodorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/SodorConfigs.scala @@ -7,6 +7,7 @@ import org.chipsalliance.cde.config.{Config} class Sodor1StageConfig extends Config( // Create a Sodor 1-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage1Factory) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory @@ -16,6 +17,7 @@ class Sodor1StageConfig extends Config( class Sodor2StageConfig extends Config( // Create a Sodor 2-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage2Factory) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory @@ -25,6 +27,7 @@ class Sodor2StageConfig extends Config( class Sodor3StageConfig extends Config( // Create a Sodor 1-stage core with two ports new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage3Factory(ports = 2)) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory @@ -34,6 +37,7 @@ class Sodor3StageConfig extends Config( class Sodor3StageSinglePortConfig extends Config( // Create a Sodor 3-stage core with one ports (instruction and data memory access controlled by arbiter) new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage3Factory(ports = 1)) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory @@ -43,6 +47,7 @@ class Sodor3StageSinglePortConfig extends Config( class Sodor5StageConfig extends Config( // Create a Sodor 5-stage core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.Stage5Factory) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory @@ -52,6 +57,7 @@ class Sodor5StageConfig extends Config( class SodorUCodeConfig extends Config( // Construct a Sodor microcode-based single-bus core new sodor.common.WithNSodorCores(1, internalTile = sodor.common.UCodeFactory) ++ + new testchipip.soc.WithNoScratchpads ++ // No scratchpads new testchipip.serdes.WithSerialTLWidth(32) ++ new freechips.rocketchip.subsystem.WithScratchpadsOnly ++ // use sodor tile-internal scratchpad new freechips.rocketchip.subsystem.WithNoMemPort ++ // use no external memory diff --git a/generators/testchipip b/generators/testchipip index 70e19831..c13b8f65 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit 70e198313a7e467f9219e4caba0158a96f851503 +Subproject commit c13b8f658b955f9f61a52caefcd6388e034b0575 From 5f2b2181c2e57cf90d0ea8de43542b2a92028aff Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 1 Jan 2024 11:42:37 -0800 Subject: [PATCH 163/184] Bump to verilator v5.020 --- conda-reqs/chipyard.yaml | 2 +- ...irements-esp-tools-linux-64.conda-lock.yml | 26 +++++++++---------- ...ements-riscv-tools-linux-64.conda-lock.yml | 26 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 564f05e3..ec49a0a4 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -88,7 +88,7 @@ dependencies: - graphviz - expect - dtc - - verilator==5.018 + - verilator==5.020 - screen - elfutils - libdwarf-dev==0.0.0.20190110_28_ga81397fc4 # from ucb-bar channel - using mainline libdwarf-feedstock diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml index f61642e8..f63afc45 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-esp-tools-linux-64.conda-lock.yml @@ -21,7 +21,7 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: ff6d08e475547b935387001d63d60acbd5f49e2b4fe52cca99a819e4d97a1861 + linux-64: de1e2d263317a6a0c7c45acb734d166b9975ff1a94cd138e3427bb7b7bdd8db4 platforms: - linux-64 sources: @@ -2100,14 +2100,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3edfead7cedd1ab4400a6c588f3e75f8 - sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821 + md5: 5e4c0743c70186509d1412e03c2d8dfa + sha256: 77c7d03bdb243a048fff398cedc74327b7dc79169ebe3b4c8448b0331ea55fea manager: conda name: attrs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda - version: 23.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda + version: 23.2.0 - category: main dependencies: aws-c-common: '>=0.9.10,<0.9.11.0a0' @@ -3398,14 +3398,14 @@ package: perl: '' python: '' hash: - md5: 6ecc6f19e3a0661c096d0e84015c8122 - sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 + md5: 0b2929f84fe7d3a6117439507d5d50d9 + sha256: 1d6af07d2d19be7adc296e8b6c43bd3eb12b48d8ab8e0cec566e8f9872661813 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda - version: '5.018' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.020-h7cd9344_0.conda + version: '5.020' - category: main dependencies: python: '>=3.8' @@ -4061,14 +4061,14 @@ package: python: '>=3.7' tomli: '>=1.0.0' hash: - md5: 5bdca0aca30b0ee62bb84854e027eae0 - sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0 + md5: a9d145de8c5f064b5fa68fb34725d9f4 + sha256: 8979721b7f86b183d21103f3ec2734783847d317c1b754f462f407efc7c60886 manager: conda name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda - version: 7.4.3 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.4-pyhd8ed1ab_0.conda + version: 7.4.4 - category: main dependencies: python: '>=3.6' diff --git a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml index 9187da76..61cc9654 100644 --- a/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml +++ b/conda-reqs/conda-lock-reqs/conda-requirements-riscv-tools-linux-64.conda-lock.yml @@ -21,7 +21,7 @@ metadata: - url: nodefaults used_env_vars: [] content_hash: - linux-64: d002c72bdb6dab9165fd4a7c10f2c91ead3a528494418421f075feaf35d0646c + linux-64: ca6a27eca59955764c48c1f6e92b9c0d88ab3b0ce2cf79bc2b35e847e0aecff4 platforms: - linux-64 sources: @@ -2100,14 +2100,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 3edfead7cedd1ab4400a6c588f3e75f8 - sha256: 063639cd568f5c7a557b0fb1cc27f098598c0d8ff869088bfeb82934674f8821 + md5: 5e4c0743c70186509d1412e03c2d8dfa + sha256: 77c7d03bdb243a048fff398cedc74327b7dc79169ebe3b4c8448b0331ea55fea manager: conda name: attrs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.1.0-pyh71513ae_1.conda - version: 23.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda + version: 23.2.0 - category: main dependencies: aws-c-common: '>=0.9.10,<0.9.11.0a0' @@ -3412,14 +3412,14 @@ package: perl: '' python: '' hash: - md5: 6ecc6f19e3a0661c096d0e84015c8122 - sha256: 582ae4513d3ef87d4b0c5d53a3a691575de2aabe8cc5a5554bb1db5bcd6a40b4 + md5: 0b2929f84fe7d3a6117439507d5d50d9 + sha256: 1d6af07d2d19be7adc296e8b6c43bd3eb12b48d8ab8e0cec566e8f9872661813 manager: conda name: verilator optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.018-h4f9daa6_0.conda - version: '5.018' + url: https://conda.anaconda.org/conda-forge/linux-64/verilator-5.020-h7cd9344_0.conda + version: '5.020' - category: main dependencies: python: '>=3.8' @@ -4075,14 +4075,14 @@ package: python: '>=3.7' tomli: '>=1.0.0' hash: - md5: 5bdca0aca30b0ee62bb84854e027eae0 - sha256: 14e948e620ec87d9e62a8d9c21d40084b4805a939cfee322be7d457379dc96a0 + md5: a9d145de8c5f064b5fa68fb34725d9f4 + sha256: 8979721b7f86b183d21103f3ec2734783847d317c1b754f462f407efc7c60886 manager: conda name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.3-pyhd8ed1ab_0.conda - version: 7.4.3 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.4.4-pyhd8ed1ab_0.conda + version: 7.4.4 - category: main dependencies: python: '>=3.6' From 41651edbdc206d63e248b48056b2bdfd0eb1d28c Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Mon, 1 Jan 2024 15:44:23 -0800 Subject: [PATCH 164/184] Bump firesim | fix testchipip segfaults --- fpga/src/main/scala/arty100t/HarnessBinders.scala | 4 ++-- .../chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- generators/testchipip | 2 +- sims/firesim | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index e8029884..7b1640ba 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -107,7 +107,7 @@ class WithArty100TSerialTLToGPIO extends HarnessBinder({ // Maps the UART device to the on-board USB-UART class WithArty100TUART(rxdPin: String = "A9", txdPin: String = "D10") extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: UARTPort) => { + case (th: HasHarnessInstantiators, port: UARTPort, chipId: Int) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val harnessIO = IO(chiselTypeOf(port.io)).suggestName("uart") harnessIO <> port.io @@ -126,7 +126,7 @@ class WithArty100TUART(rxdPin: String = "A9", txdPin: String = "D10") extends Ha class WithArty100TPMODUART extends WithArty100TUART("G2", "F3") class WithArty100TJTAG extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: JTAGPort) => { + case (th: HasHarnessInstantiators, port: JTAGPort, chipId: Int) => { val ath = th.asInstanceOf[LazyRawModuleImp].wrapper.asInstanceOf[Arty100THarness] val harnessIO = IO(chiselTypeOf(port.io)).suggestName("jtag") harnessIO <> port.io diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 999c8877..d70519b3 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -100,7 +100,7 @@ class WithSimAXIMem extends HarnessBinder({ case (th: HasHarnessInstantiators, port: AXI4MemPort, chipId: Int) => { val mem = LazyModule(new SimAXIMem(port.edge, size=port.params.master.size)(Parameters.empty)) withClock(port.io.clock) { Module(mem.module) } - mem.io_axi4.head <> port.io + mem.io_axi4.head <> port.io.bits } }) diff --git a/generators/testchipip b/generators/testchipip index b3b74435..263980a9 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit b3b744353875056cbe865d5b767e488713f4c7f1 +Subproject commit 263980a9f503e0e57705b6d31002077fa6269aa6 diff --git a/sims/firesim b/sims/firesim index e9758935..c113e2d6 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit e975893595129c2682a72fb7e5898273fcc2d071 +Subproject commit c113e2d6001080749b20c5a60b67eb338267a823 From 561e3fca68c4bd2717509d9160d6cabf206656b1 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 2 Jan 2024 12:51:27 -0800 Subject: [PATCH 165/184] [ci skip] Add makefile help text for check-submodule-status --- common.mk | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common.mk b/common.mk index d52af1a0..c4ae8548 100644 --- a/common.mk +++ b/common.mk @@ -57,7 +57,8 @@ HELP_COMMANDS += \ " firrtl = generate intermediate firrtl files from chisel elaboration" \ " run-tests = run all assembly and benchmark tests" \ " launch-sbt = start sbt terminal" \ -" find-config-fragments = list all config. fragments" +" find-config-fragments = list all config. fragments" \ +" check-submodule-status = check that all submodules in generators/ have been initialized" ######################################################################################### # include additional subproject make fragments From 0a42dd1ca1bc83d12de40ab7d5b6ebe28630bb81 Mon Sep 17 00:00:00 2001 From: Tynan McAuley Date: Wed, 3 Jan 2024 16:22:51 -0800 Subject: [PATCH 166/184] Update deprecated APIs to prepare for Chisel 5 - `IO` was moved from `chisel3.experimental` to `chisel3` - `DataMirror` was moved from `chisel3.experimental` to `chisel3.reflect` --- generators/chipyard/src/main/scala/SpikeTile.scala | 2 +- .../chipyard/src/main/scala/clocking/ClockGroupCombiner.scala | 2 +- .../chipyard/src/main/scala/clocking/TileClockGater.scala | 2 +- .../chipyard/src/main/scala/clocking/TileResetSetter.scala | 2 +- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 3 ++- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/generators/chipyard/src/main/scala/SpikeTile.scala b/generators/chipyard/src/main/scala/SpikeTile.scala index fc822c22..777b3731 100644 --- a/generators/chipyard/src/main/scala/SpikeTile.scala +++ b/generators/chipyard/src/main/scala/SpikeTile.scala @@ -2,7 +2,7 @@ package chipyard import chisel3._ import chisel3.util._ -import chisel3.experimental.{IntParam, StringParam, IO} +import chisel3.experimental.{IntParam, StringParam} import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala b/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala index e5236804..9b53cbef 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ import chisel3.util._ -import chisel3.experimental.{Analog, IO} +import chisel3.experimental.Analog import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/clocking/TileClockGater.scala b/generators/chipyard/src/main/scala/clocking/TileClockGater.scala index e299d0a9..c92e05bc 100644 --- a/generators/chipyard/src/main/scala/clocking/TileClockGater.scala +++ b/generators/chipyard/src/main/scala/clocking/TileClockGater.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ import chisel3.util._ -import chisel3.experimental.{Analog, IO} +import chisel3.experimental.Analog import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala b/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala index 53dd36d0..88916d17 100644 --- a/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala +++ b/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ import chisel3.util._ -import chisel3.experimental.{Analog, IO} +import chisel3.experimental.Analog import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 7695be70..f67ea81f 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -1,7 +1,8 @@ package chipyard.iobinders import chisel3._ -import chisel3.experimental.{Analog, IO, DataMirror} +import chisel3.reflect.DataMirror +import chisel3.experimental.Analog import org.chipsalliance.cde.config._ import freechips.rocketchip.diplomacy._ From 9ab9132c8b30753450518f9ca3f4ab03719b3b92 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 4 Jan 2024 13:34:53 -0800 Subject: [PATCH 167/184] Fix missing childClock/childReset in Arty100THarness --- fpga/src/main/scala/arty100t/Harness.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fpga/src/main/scala/arty100t/Harness.scala b/fpga/src/main/scala/arty100t/Harness.scala index 577bd1b2..30a382e1 100644 --- a/fpga/src/main/scala/arty100t/Harness.scala +++ b/fpga/src/main/scala/arty100t/Harness.scala @@ -76,6 +76,9 @@ class Arty100THarness(override implicit val p: Parameters) extends Arty100TShell def referenceReset = dutClock.in.head._1.reset def success = { require(false, "Unused"); false.B } + childClock := harnessBinderClock + childReset := harnessBinderReset + ddrOverlay.mig.module.clock := harnessBinderClock ddrOverlay.mig.module.reset := harnessBinderReset ddrBlockDuringReset.module.clock := harnessBinderClock From bb23af97be037af80ef1710034eaa1d3b4785fcd Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 4 Jan 2024 12:10:36 -0800 Subject: [PATCH 168/184] Add clearer --skip flags to build-setup --- scripts/build-setup.sh | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index d3a66ca6..a55b10fd 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -38,12 +38,20 @@ usage() { echo " --help -h : Display this message" echo " --force -f : Skip all prompts and checks" - echo " --skip-validate : DEPRECATED: Same functionality as --force" echo " --verbose -v : Verbose printout" echo " --use-unpinned-deps -ud : Use unpinned conda environment" echo " --skip -s N : Skip step N in the list above. Use multiple times to skip multiple steps ('-s N -s M ...')." + echo " --skip-conda : Skip Conda initialization (step 1)" + echo " --skip-submodules : Skip submodule initialization (step 2)" + echo " --skip-toolchain : Skip toolchain collateral (step 3)" + echo " --skip-ctags : Skip ctags (step 4)" + echo " --skip-precompile : Skip precompiling sources (steps 5/7)" + echo " --skip-firesim : Skip Firesim initialization (steps 6/7)" + echo " --skip-marshal : Skip firemarshal initialization (steps 8/9)" + echo " --skip-circt : Skip CIRCT install (step 10)" + echo " --skip-clean : Skip repository clean-up (step 11)" exit "$1" } @@ -73,6 +81,24 @@ do --skip | -s) shift SKIP_LIST+=(${1}) ;; + --skip-conda) + SKIP_LIST+=(1) ;; + --skip-submodules) + SKIP_LIST+=(2) ;; + --skip-toolchain) + SKIP_LIST+=(3) ;; + --skip-ctags) + SKIP_LIST+=(4) ;; + --skip-precompile) + SKIP_LIST+=(5 6) ;; + --skip-firesim) + SKIP_LIST+=(6 7) ;; + --skip-marshal) + SKIP_LIST+=(8 9) ;; + --skip-circt) + SKIP_LIST+=(10) ;; + --skip-clean) + SKIP_LIST+=(11) ;; * ) error "invalid option $1" usage 1 ;; From 7c1357476920dbccc2065827e3f3457e096d4fec Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 4 Jan 2024 14:09:54 -0800 Subject: [PATCH 169/184] Rename cache/blocks submodules to match new chipsalliance ownership --- .github/scripts/check-commit.sh | 2 +- .gitmodules | 12 ++++++------ build.sbt | 12 ++++++------ docs/Chipyard-Basics/Chipyard-Components.rst | 6 +++--- docs/Customization/Custom-Chisel.rst | 2 +- docs/Customization/Memory-Hierarchy.rst | 8 ++++---- ...nerators.rst => Rocket-Chip-Generators.rst} | 18 +++++++++--------- docs/Generators/Rocket-Chip.rst | 4 ++-- docs/Generators/Rocket.rst | 2 +- docs/Generators/index.rst | 2 +- fpga/Makefile | 2 +- .../{sifive-blocks => rocket-chip-blocks} | 0 ...ifive-cache => rocket-chip-inclusive-cache} | 0 scripts/tutorial-patches/build.sbt.patch | 2 +- sims/firesim | 2 +- 15 files changed, 37 insertions(+), 37 deletions(-) rename docs/Generators/{SiFive-Generators.rst => Rocket-Chip-Generators.rst} (73%) rename generators/{sifive-blocks => rocket-chip-blocks} (100%) rename generators/{sifive-cache => rocket-chip-inclusive-cache} (100%) diff --git a/.github/scripts/check-commit.sh b/.github/scripts/check-commit.sh index d3b856c8..a4a95611 100755 --- a/.github/scripts/check-commit.sh +++ b/.github/scripts/check-commit.sh @@ -45,7 +45,7 @@ search () { done } -submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "sifive-blocks" "sifive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils") +submodules=("cva6" "boom" "ibex" "gemmini" "hwacha" "icenet" "nvdla" "rocket-chip" "sha3" "rocket-chip-blocks" "rocket-chip-inclusive-cache" "testchipip" "riscv-sodor" "mempress" "bar-fetchers" "shuttle" "constellation" "fft-generator" "hardfloat" "caliptra-aes-acc" "rocc-acc-utils") dir="generators" branches=("master" "main" "dev") search diff --git a/.gitmodules b/.gitmodules index e1768873..b047c838 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,9 +13,6 @@ [submodule "generators/boom"] path = generators/boom url = https://github.com/riscv-boom/riscv-boom.git -[submodule "generators/sifive-blocks"] - path = generators/sifive-blocks - url = https://github.com/chipsalliance/rocket-chip-blocks.git [submodule "generators/hwacha"] path = generators/hwacha url = https://github.com/ucb-bar/hwacha.git @@ -25,9 +22,6 @@ [submodule "generators/icenet"] path = generators/icenet url = https://github.com/firesim/icenet.git -[submodule "generators/block-inclusivecache-sifive"] - path = generators/sifive-cache - url = https://github.com/chipsalliance/rocket-chip-inclusive-cache.git [submodule "tools/dsptools"] path = tools/dsptools url = https://github.com/ucb-bar/dsptools.git @@ -145,3 +139,9 @@ [submodule "toolchains/riscv-tools/riscv-spike-devices"] path = toolchains/riscv-tools/riscv-spike-devices url = https://github.com/ucb-bar/spike-devices.git +[submodule "generators/rocket-chip-blocks"] + path = generators/rocket-chip-blocks + url = https://github.com/chipsalliance/rocket-chip-blocks.git +[submodule "generators/rocket-chip-inclusive-cache"] + path = generators/rocket-chip-inclusive-cache + url = https://github.com/chipsalliance/rocket-chip-inclusive-cache.git diff --git a/build.sbt b/build.sbt index c3be6161..51fd6b09 100644 --- a/build.sbt +++ b/build.sbt @@ -141,12 +141,12 @@ lazy val rocketLibDeps = (rocketchip / Keys.libraryDependencies) lazy val midasTargetUtils = ProjectRef(firesimDir, "targetutils") lazy val testchipip = (project in file("generators/testchipip")) - .dependsOn(rocketchip, sifive_blocks) + .dependsOn(rocketchip, rocketchip_blocks) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) lazy val chipyard = (project in file("generators/chipyard")) - .dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell, + .dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache, iocell, sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, @@ -180,7 +180,7 @@ lazy val fft_generator = (project in file("generators/fft-generator")) .settings(commonSettings) lazy val tracegen = (project in file("generators/tracegen")) - .dependsOn(testchipip, rocketchip, sifive_cache, boom) + .dependsOn(testchipip, rocketchip, rocketchip_inclusive_cache, boom) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) @@ -279,12 +279,12 @@ lazy val rocket_dsp_utils = freshProject("rocket-dsp-utils", file("./tools/rocke .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) -lazy val sifive_blocks = (project in file("generators/sifive-blocks")) +lazy val rocketchip_blocks = (project in file("generators/rocket-chip-blocks")) .dependsOn(rocketchip) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) -lazy val sifive_cache = (project in file("generators/sifive-cache")) +lazy val rocketchip_inclusive_cache = (project in file("generators/rocket-chip-inclusive-cache")) .settings( commonSettings, Compile / scalaSource := baseDirectory.value / "design/craft") @@ -304,7 +304,7 @@ lazy val firechip = (project in file("generators/firechip")) Test / testOptions += Tests.Argument("-oF") ) lazy val fpga_shells = (project in file("./fpga/fpga-shells")) - .dependsOn(rocketchip, sifive_blocks) + .dependsOn(rocketchip, rocketchip_blocks) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) diff --git a/docs/Chipyard-Basics/Chipyard-Components.rst b/docs/Chipyard-Basics/Chipyard-Components.rst index 8f8e9045..222d37df 100644 --- a/docs/Chipyard-Basics/Chipyard-Components.rst +++ b/docs/Chipyard-Basics/Chipyard-Components.rst @@ -53,9 +53,9 @@ System Components: **icenet** A Network Interface Controller (NIC) designed to achieve up to 200 Gbps. -**sifive-blocks** - System components implemented by SiFive and used by SiFive projects, designed to be integrated with the Rocket Chip generator. - These system and peripheral components include UART, SPI, JTAG, I2C, PWM, and other peripheral and interface devices. +**rocket-chip-blocks** + System components originally implemented by SiFive and used by SiFive projects, designed to be integrated with the Rocket Chip generator. + Now maintained by Chips Alliance. These system and peripheral components include UART, SPI, JTAG, I2C, PWM, and other peripheral and interface devices. **AWL (Analog Widget Library)** Digital components required for integration with high speed serial links. diff --git a/docs/Customization/Custom-Chisel.rst b/docs/Customization/Custom-Chisel.rst index 121ca712..a3b4ef72 100644 --- a/docs/Customization/Custom-Chisel.rst +++ b/docs/Customization/Custom-Chisel.rst @@ -59,7 +59,7 @@ should look something like this: .. code-block:: scala lazy val chipyard = (project in file("generators/chipyard")) - .dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell, + .dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache, iocell, sha3, dsptools, `rocket-dsp-utils`, gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, yourproject, // <- added to the middle of the list for simplicity diff --git a/docs/Customization/Memory-Hierarchy.rst b/docs/Customization/Memory-Hierarchy.rst index ecb666d1..11bc132b 100644 --- a/docs/Customization/Memory-Hierarchy.rst +++ b/docs/Customization/Memory-Hierarchy.rst @@ -46,17 +46,17 @@ agents and MMIO peripherals. Ordinarily, it is a fully-connected crossbar, but a network-on-chip-based implementation can be generated using Constellation. See :ref:`Customization/NoC-SoCs:SoCs with NoC-based Interconnects` for more. -The SiFive L2 Cache -------------------- +The Inclusive Last-Level Cache +--------------------------------- -The default ``RocketConfig`` provided in the Chipyard example project uses SiFive's +The default ``RocketConfig`` provided in the Chipyard example project uses the Rocket-Chip InclusiveCache generator to produce a shared L2 cache. In the default configuration, the L2 uses a single cache bank with 512 KiB capacity and 8-way set-associativity. However, you can change these parameters to obtain your desired cache configuration. The main restriction is that the number of ways and the number of banks must be powers of 2. -Refer to the ``CacheParameters`` object defined in sifive-cache for +Refer to the ``CacheParameters`` object defined in ``rocket-chip-inclusive-cache`` for customization options. The Broadcast Hub diff --git a/docs/Generators/SiFive-Generators.rst b/docs/Generators/Rocket-Chip-Generators.rst similarity index 73% rename from docs/Generators/SiFive-Generators.rst rename to docs/Generators/Rocket-Chip-Generators.rst index d6b174ef..66dd66a0 100644 --- a/docs/Generators/SiFive-Generators.rst +++ b/docs/Generators/Rocket-Chip-Generators.rst @@ -1,19 +1,19 @@ -SiFive Generators +Rocket-Chip Generators ================== -Chipyard includes several open-source generators developed and maintained by `SiFive `__. -These are currently organized within two submodules named ``sifive-blocks`` and ``sifive-cache``. +Chipyard includes several open-source generators developed by `SiFive `__, and now openly maintained as part of Chips Alliance. +These are currently organized within two submodules named ``rocket-chip-blocks`` and ``rocket-chip-inclusive-cache``. Last-Level Cache Generator ----------------------------- -``sifive-cache`` includes last-level cache geneator. The Chipyard framework uses this last-level cache as an L2 cache. To use this L2 cache, you should add the ``freechips.rocketchip.subsystem.WithInclusiveCache`` config fragment to your SoC configuration. +``rocket-chip-inclusive-cache`` includes last-level cache geneator. The Chipyard framework uses this last-level cache as an L2 cache. To use this L2 cache, you should add the ``freechips.rocketchip.subsystem.WithInclusiveCache`` config fragment to your SoC configuration. To learn more about configuring this L2 cache, please refer to the :ref:`memory-hierarchy` section. Peripheral Devices Overview ---------------------------- -``sifive-blocks`` includes multiple peripheral device generators, such as UART, SPI, PWM, JTAG, GPIO and more. +``rocket-chip-blocks`` includes multiple peripheral device generators, such as UART, SPI, PWM, JTAG, GPIO and more. These peripheral devices usually affect the memory map of the SoC, and its top-level IO as well. All the peripheral blocks comes with a default memory address that would not collide with each other, but if integrating multiple duplicated blocks in the SoC is needed, you will need to explicitly specify an approriate memory address for that device. @@ -34,7 +34,7 @@ Finally, you add the relevant config fragment to the SoC config. For example: General Purpose I/Os (GPIO) Device ---------------------------------- -GPIO device is a periphery device provided by ``sifive-blocks``. Each general-purpose I/O port has five 32-bit configuration registers, two 32-bit data registers controlling pin input and output values, and eight 32-bit interrupt control/status register for signal level and edge triggering. In addition, all GPIOs can have two 32-bit alternate function selection registers. +GPIO device is a periphery device provided by ``rocket-chip-blocks``. Each general-purpose I/O port has five 32-bit configuration registers, two 32-bit data registers controlling pin input and output values, and eight 32-bit interrupt control/status register for signal level and edge triggering. In addition, all GPIOs can have two 32-bit alternate function selection registers. GPIO main features @@ -78,7 +78,7 @@ Including GPIO in the SoC Universal Asynchronous Receiver/Transmitter (UART) Device ---------------------------------------------------------- -UART device is a periphery device provided by ``sifive-blocks``. The UART offers a flexible means to perform Full-duplex data exchange with external devices. A very wide range of baud rates can be achieved through a fractional baud rate generator. The UART peripheral does not support other modem control signals, or synchronous serial data transfers. +UART device is a periphery device provided by ``rocket-chip-blocks``. The UART offers a flexible means to perform Full-duplex data exchange with external devices. A very wide range of baud rates can be achieved through a fractional baud rate generator. The UART peripheral does not support other modem control signals, or synchronous serial data transfers. UART main features @@ -125,7 +125,7 @@ Including UART in the SoC Inter-Integrated Circuit (I2C) Interface Device ------------------------------------------------- -I2C device is a periphery device provided by ``sifive-blocks``. The I2C (inter-integrated circuit) bus interface handles communications to the serial I2C bus. It provides multi-master capability, and controls all I2C bus-specific sequencing, protocol, arbitration and timing. It supports Standard-mode (Sm), Fast-mode (Fm) and Fast-mode Plus (Fm+). +I2C device is a periphery device provided by ``rocket-chip-blocks``. The I2C (inter-integrated circuit) bus interface handles communications to the serial I2C bus. It provides multi-master capability, and controls all I2C bus-specific sequencing, protocol, arbitration and timing. It supports Standard-mode (Sm), Fast-mode (Fm) and Fast-mode Plus (Fm+). I2C main features @@ -169,7 +169,7 @@ Including I2C in the SoC Serial Peripheral Interface (SPI) Device ------------------------------------------------- -SPI device is a periphery device provided by ``sifive-blocks``. The SPI interface can be used to communicate with external devices using the SPI protocol. +SPI device is a periphery device provided by ``rocket-chip-blocks``. The SPI interface can be used to communicate with external devices using the SPI protocol. The serial peripheral interface (SPI) protocol supports half-duplex, full-duplex and simplex synchronous, serial communication with external devices. The interface can be configured as master and in this case it provides the communication clock (SCLK) to the external slave device. diff --git a/docs/Generators/Rocket-Chip.rst b/docs/Generators/Rocket-Chip.rst index 856d01e1..3e404939 100644 --- a/docs/Generators/Rocket-Chip.rst +++ b/docs/Generators/Rocket-Chip.rst @@ -1,8 +1,8 @@ Rocket Chip =========== -Rocket Chip generator is an SoC generator developed at Berkeley and now supported by -`SiFive `__. Chipyard uses the Rocket Chip generator as the basis for producing a RISC-V SoC. +Rocket Chip generator is an SoC generator developed at Berkeley and SiFive, and now maintained openly in Chips Alliance. +Chipyard uses the Rocket Chip generator as the basis for producing a RISC-V SoC. `Rocket Chip` is distinct from `Rocket core`, the in-order RISC-V CPU generator. Rocket Chip includes many parts of the SoC besides the CPU. Though Rocket Chip diff --git a/docs/Generators/Rocket.rst b/docs/Generators/Rocket.rst index 6c55b761..536d6991 100644 --- a/docs/Generators/Rocket.rst +++ b/docs/Generators/Rocket.rst @@ -1,7 +1,7 @@ Rocket Core ==================================== -`Rocket `__ is a 5-stage in-order scalar processor core generator, originally developed at UC Berkeley and currently supported by `SiFive `__. The `Rocket core` is used as a component within the `Rocket Chip SoC generator`. A Rocket core combined with L1 caches (data and instruction caches) form a `Rocket tile`. The `Rocket tile` is the replicable component of the `Rocket Chip SoC generator`. +`Rocket `__ is a 5-stage in-order scalar processor core generator, originally developed at UC Berkeley and `SiFive `__, and now maintained by Chips Alliance. The `Rocket core` is used as a component within the `Rocket Chip SoC generator`. A Rocket core combined with L1 caches (data and instruction caches) form a `Rocket tile`. The `Rocket tile` is the replicable component of the `Rocket Chip SoC generator`. The Rocket core supports the open-source RV64GC RISC-V instruction set and is written in the Chisel hardware construction language. It has an MMU that supports page-based virtual memory, a non-blocking data cache, and a front-end with branch prediction. diff --git a/docs/Generators/index.rst b/docs/Generators/index.rst index c2bf3719..651a6bae 100644 --- a/docs/Generators/index.rst +++ b/docs/Generators/index.rst @@ -26,7 +26,7 @@ so changes to the generators themselves will automatically be used when building Gemmini IceNet TestChipIP - SiFive-Generators + Rocket-Chip-Generators SHA3 CVA6 Ibex diff --git a/fpga/Makefile b/fpga/Makefile index cfe760f4..a4d3bf99 100644 --- a/fpga/Makefile +++ b/fpga/Makefile @@ -137,7 +137,7 @@ include $(base_dir)/common.mk # copy from other directory ######################################################################################### all_vsrcs := \ - $(base_dir)/generators/sifive-blocks/vsrc/SRLatch.v + $(base_dir)/generators/rocket-chip-blocks/vsrc/SRLatch.v ######################################################################################### # vivado rules diff --git a/generators/sifive-blocks b/generators/rocket-chip-blocks similarity index 100% rename from generators/sifive-blocks rename to generators/rocket-chip-blocks diff --git a/generators/sifive-cache b/generators/rocket-chip-inclusive-cache similarity index 100% rename from generators/sifive-cache rename to generators/rocket-chip-inclusive-cache diff --git a/scripts/tutorial-patches/build.sbt.patch b/scripts/tutorial-patches/build.sbt.patch index e47fbbf6..b64d7a43 100644 --- a/scripts/tutorial-patches/build.sbt.patch +++ b/scripts/tutorial-patches/build.sbt.patch @@ -5,7 +5,7 @@ index c3be6161..2a6d7160 100644 @@ -147,7 +147,7 @@ lazy val testchipip = (project in file("generators/testchipip")) lazy val chipyard = (project in file("generators/chipyard")) - .dependsOn(testchipip, rocketchip, boom, hwacha, sifive_blocks, sifive_cache, iocell, + .dependsOn(testchipip, rocketchip, boom, hwacha, rocketchip_blocks, rocketchip_inclusive_cache, iocell, - sha3, // On separate line to allow for cleaner tutorial-setup patches + //sha3, // On separate line to allow for cleaner tutorial-setup patches dsptools, rocket_dsp_utils, diff --git a/sims/firesim b/sims/firesim index e9758935..0443e53f 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit e975893595129c2682a72fb7e5898273fcc2d071 +Subproject commit 0443e53fcbf5dad4a51bcbdcf6c7556e86e81deb From 46585a5114f521dc45e4b0c31f374105afaaeee4 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 5 Jan 2024 11:14:38 -0800 Subject: [PATCH 170/184] Fix check-submodule-status forcing rebuilds --- common.mk | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common.mk b/common.mk index c4ae8548..3763584f 100644 --- a/common.mk +++ b/common.mk @@ -84,6 +84,8 @@ endif # Returns a list of files in directories $1 with *any* of the file extensions in $2 lookup_srcs_by_multiple_type = $(foreach type,$(2),$(call lookup_srcs,$(1),$(type))) +CHECK_SUBMODULES_COMMAND = echo "Checking all submodules in generators/ are initialized. Uninitialized submodules will be displayed" ; ! git submodule status $(base_dir)/generators | grep ^- + SCALA_EXT = scala VLOG_EXT = sv v CHIPYARD_SOURCE_DIRS = $(addprefix $(base_dir)/,generators sims/firesim/sim fpga/fpga-shells fpga/src) @@ -119,7 +121,8 @@ $(BOOTROM_TARGETS): $(build_dir)/bootrom.%.img: $(TESTCHIP_RSRCS_DIR)/testchipip ######################################################################################### # compile scala jars ######################################################################################### -$(CHIPYARD_CLASSPATH_TARGETS) &: check-submodule-status $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(CHIPYARD_VLOG_SOURCES) +$(CHIPYARD_CLASSPATH_TARGETS) &: $(CHIPYARD_SCALA_SOURCES) $(SCALA_BUILDTOOL_DEPS) $(CHIPYARD_VLOG_SOURCES) + $(CHECK_SUBMODULES_COMMAND) mkdir -p $(dir $@) $(call run_sbt_assembly,$(SBT_PROJECT),$(CHIPYARD_CLASSPATH)) @@ -458,8 +461,7 @@ help: .PHONY: check-submodule-status check-submodule-status: - echo "Checking all submodules in generators/ are initialized. Uninitialized submodules will be displayed" - ! git submodule status $(base_dir)/generators | grep ^- + $(CHECK_SUBMODULES_COMMAND) ######################################################################################### # Implicit rule handling From 9f45c49f04979f352035770d60e948edd720d9b7 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Fri, 5 Jan 2024 11:51:17 -0800 Subject: [PATCH 171/184] Fix docs --- docs/Generators/Rocket-Chip-Generators.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Generators/Rocket-Chip-Generators.rst b/docs/Generators/Rocket-Chip-Generators.rst index 66dd66a0..435fa1dd 100644 --- a/docs/Generators/Rocket-Chip-Generators.rst +++ b/docs/Generators/Rocket-Chip-Generators.rst @@ -1,5 +1,5 @@ Rocket-Chip Generators -================== +====================== Chipyard includes several open-source generators developed by `SiFive `__, and now openly maintained as part of Chips Alliance. These are currently organized within two submodules named ``rocket-chip-blocks`` and ``rocket-chip-inclusive-cache``. From 2f1ee6bb326451e9eb95675019e97cb76fd7d850 Mon Sep 17 00:00:00 2001 From: Tynan McAuley Date: Fri, 5 Jan 2024 12:15:48 -0800 Subject: [PATCH 172/184] Allow sed override in uniquify-module-names.py On macOS, this can be set to `gsed` to allow use of the `-i` flag. --- scripts/uniquify-module-names.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/uniquify-module-names.py b/scripts/uniquify-module-names.py index 237054f2..0ddea49f 100755 --- a/scripts/uniquify-module-names.py +++ b/scripts/uniquify-module-names.py @@ -21,6 +21,7 @@ parser.add_argument("--gcpath", type=str, required=True, help="Path to gen-colla args = parser.parse_args() MODEL_SFX=args.model + "_UNIQUIFIED" +SED=os.environ.get("SED", "sed") def bash(cmd): @@ -109,7 +110,7 @@ def generate_copy(c, sfx): new_file = os.path.join(args.gcpath, new_file) shutil.copy(cur_file, new_file) - bash(f"sed -i 's/module\( \+\){cur_name}/module\\1{new_name}/' {new_file}") + bash(f"{SED} -i 's/module\( \+\){cur_name}/module\\1{new_name}/' {new_file}") return new_file def bfs_uniquify_modules(tree, common_fnames, verilog_module_filename): @@ -136,7 +137,7 @@ def bfs_uniquify_modules(tree, common_fnames, verilog_module_filename): new_file = generate_copy(cur_file, MODEL_SFX) if parent is not None and ((parent, mod) not in updated_submodule): parent_file = os.path.join(args.gcpath, verilog_module_filename[parent]) - bash(f"sed -i 's/\( \*\){mod}\( \+\)/\\1{mod}_{MODEL_SFX}\\2/' {parent_file}") + bash(f"{SED} -i 's/\( \*\){mod}\( \+\)/\\1{mod}_{MODEL_SFX}\\2/' {parent_file}") updated_submodule.add((parent, mod)) # add the uniquified module to the verilog_modul_filename dict From ba560002dc87ce988881ead81154781de108b745 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Sat, 6 Jan 2024 18:23:02 -0800 Subject: [PATCH 173/184] Add Baremetal IDE support (#1534) --- .gitmodules | 3 +++ software/baremetal-ide | 1 + 2 files changed, 4 insertions(+) create mode 160000 software/baremetal-ide diff --git a/.gitmodules b/.gitmodules index e1768873..ac7a790e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,6 +64,9 @@ [submodule "software/nvdla-workload"] path = software/nvdla-workload url = https://github.com/ucb-bar/nvdla-workload.git +[submodule "software/baremetal-ide"] + path = software/baremetal-ide + url = https://github.com/ucb-bar/Baremetal-IDE.git [submodule "generators/riscv-sodor"] path = generators/riscv-sodor url = https://github.com/ucb-bar/riscv-sodor.git diff --git a/software/baremetal-ide b/software/baremetal-ide new file mode 160000 index 00000000..f488090a --- /dev/null +++ b/software/baremetal-ide @@ -0,0 +1 @@ +Subproject commit f488090a7f37da43610bd5017ee401526bf40fb2 From 3a00005d8977096e683918f985e0813622ebf295 Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Sat, 6 Jan 2024 21:58:22 -0800 Subject: [PATCH 174/184] ADD: add information on Baremetal-IDE --- docs/Chipyard-Basics/Chipyard-Components.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/Chipyard-Basics/Chipyard-Components.rst b/docs/Chipyard-Basics/Chipyard-Components.rst index 8f8e9045..72735e16 100644 --- a/docs/Chipyard-Basics/Chipyard-Components.rst +++ b/docs/Chipyard-Basics/Chipyard-Components.rst @@ -106,6 +106,9 @@ Software FireMarshal is the default workload generation tool that Chipyard uses to create software to run on its platforms. See :ref:`fire-marshal` for more information. +**Baremetal-IDE** + Baremetal-IDE is an all-in-one tool for baremetal-level C/C++ program developments. See `Tutorial `_ for more information. + Sims ------------------------------------------- From 33c96703868430589fc463172ef6fd5c3314567c Mon Sep 17 00:00:00 2001 From: "-T.K.-" Date: Sat, 6 Jan 2024 22:16:39 -0800 Subject: [PATCH 175/184] Update docs/Chipyard-Basics/Chipyard-Components.rst Co-authored-by: Jerry Zhao --- docs/Chipyard-Basics/Chipyard-Components.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Chipyard-Basics/Chipyard-Components.rst b/docs/Chipyard-Basics/Chipyard-Components.rst index 72735e16..34e983b3 100644 --- a/docs/Chipyard-Basics/Chipyard-Components.rst +++ b/docs/Chipyard-Basics/Chipyard-Components.rst @@ -107,7 +107,7 @@ Software See :ref:`fire-marshal` for more information. **Baremetal-IDE** - Baremetal-IDE is an all-in-one tool for baremetal-level C/C++ program developments. See `Tutorial `_ for more information. + Baremetal-IDE is an all-in-one tool for baremetal-level C/C++ program development. See `Tutorial `_ for more information. Sims ------------------------------------------- From 5bc9aea8daa4418f41edf7722629033a87b044c7 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 9 Jan 2024 13:51:55 -0800 Subject: [PATCH 176/184] Bump rc-inclusive-cache --- generators/rocket-chip-inclusive-cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/rocket-chip-inclusive-cache b/generators/rocket-chip-inclusive-cache index bcd248a2..1332d226 160000 --- a/generators/rocket-chip-inclusive-cache +++ b/generators/rocket-chip-inclusive-cache @@ -1 +1 @@ -Subproject commit bcd248a2a2e86084a136c05d1844d88d9fba18e5 +Subproject commit 1332d2268ae01b2b311966d53a3ee0d930e83f07 From f84b2428d56bba8b47aac0c55716fbf08123837e Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 11 Jan 2024 16:40:57 -0800 Subject: [PATCH 177/184] Fix CanHaveClockTap --- .../chipyard/src/main/scala/clocking/CanHaveClockTap.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala index 5d0ce538..9af30ddf 100644 --- a/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala +++ b/generators/chipyard/src/main/scala/clocking/CanHaveClockTap.scala @@ -13,10 +13,10 @@ import freechips.rocketchip.prci._ case object ClockTapKey extends Field[Boolean](true) trait CanHaveClockTap { this: BaseSubsystem => - require(p(SubsystemDriveAsyncClockGroupsKey).isEmpty, "Subsystem asyncClockGroups must be undriven") + require(!p(SubsystemDriveClockGroupsFromIO), "Subsystem must not drive clocks from IO") val clockTapNode = Option.when(p(ClockTapKey)) { val clockTap = ClockSinkNode(Seq(ClockSinkParameters(name=Some("clock_tap")))) - clockTap := ClockGroup() := asyncClockGroupsNode + clockTap := ClockGroup() := allClockGroupsNode clockTap } val clockTapIO = clockTapNode.map { node => InModuleBody { From 7c55ff39ccf93df91ebc3de33cd407d4e186d22e Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Sun, 31 Dec 2023 14:40:10 -0800 Subject: [PATCH 178/184] Add chipid port --- generators/chipyard/src/main/scala/DigitalTop.scala | 1 + .../chipyard/src/main/scala/config/AbstractConfig.scala | 3 +++ .../chipyard/src/main/scala/harness/HarnessBinders.scala | 7 +++++++ .../chipyard/src/main/scala/iobinders/IOBinders.scala | 9 +++++++++ generators/chipyard/src/main/scala/iobinders/Ports.scala | 3 +++ 5 files changed, 23 insertions(+) diff --git a/generators/chipyard/src/main/scala/DigitalTop.scala b/generators/chipyard/src/main/scala/DigitalTop.scala index 879ede57..3a0e2fa9 100644 --- a/generators/chipyard/src/main/scala/DigitalTop.scala +++ b/generators/chipyard/src/main/scala/DigitalTop.scala @@ -20,6 +20,7 @@ class DigitalTop(implicit p: Parameters) extends ChipyardSystem with testchipip.soc.CanHaveBankedScratchpad // Enables optionally adding a banked scratchpad with testchipip.iceblk.CanHavePeripheryBlockDevice // Enables optionally adding the block device with testchipip.serdes.CanHavePeripheryTLSerial // Enables optionally adding the backing memory and serial adapter + with testchipip.soc.CanHavePeripheryChipIdPin // Enables optional pin to set chip id for multi-chip configs with sifive.blocks.devices.i2c.HasPeripheryI2C // Enables optionally adding the sifive I2C with sifive.blocks.devices.pwm.HasPeripheryPWM // Enables optionally adding the sifive PWM with sifive.blocks.devices.uart.HasPeripheryUART // Enables optionally adding the sifive UART diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index 70770491..ec3c685e 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -23,6 +23,7 @@ class AbstractConfig extends Config( new chipyard.harness.WithTieOffInterrupts ++ // tie-off interrupt ports, if present new chipyard.harness.WithTieOffL2FBusAXI ++ // tie-off external AXI4 master, if present new chipyard.harness.WithCustomBootPinPlusArg ++ // drive custom-boot pin with a plusarg, if custom-boot-pin is present + new chipyard.harness.WithChipIdPinFromHarness ++ // drive chip id pin with a plusarg, if chip id pin is present new chipyard.harness.WithSimUARTToUARTTSI ++ // connect a SimUART to the UART-TSI port new chipyard.harness.WithClockFromHarness ++ // all Clock I/O in ChipTop should be driven by harnessClockInstantiator new chipyard.harness.WithResetFromHarness ++ // reset controlled by harness @@ -36,6 +37,7 @@ class AbstractConfig extends Config( new chipyard.iobinders.WithGPIOCells ++ new chipyard.iobinders.WithSPIFlashIOCells ++ new chipyard.iobinders.WithExtInterruptIOCells ++ + new chipyard.iobinders.WithChipIdPin ++ new chipyard.iobinders.WithCustomBootPin ++ // The "punchthrough" IOBInders below don't generate IOCells, as these interfaces shouldn't really be mapped to ASIC IO // Instead, they directly pass through the DigitalTop ports to ports in the ChipTop @@ -63,6 +65,7 @@ class AbstractConfig extends Config( new chipyard.config.WithFrontBusFrequency(500.0) ++ // Default 500 MHz fbus new chipyard.config.WithOffchipBusFrequency(500.0) ++ // Default 500 MHz obus + new testchipip.soc.WithChipIdPin ++ // add a chip id pin for setting chip id in multi-chip configs new testchipip.boot.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address new testchipip.boot.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address new testchipip.serdes.WithSerialTL(Seq( // add a serial-tilelink interface diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index d70519b3..5549d9c4 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -252,6 +252,13 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ } }) +//TODO: Allow setting from harness with chipId argument, hardcoding is temporary hack +class WithChipIdPinFromHarness extends HarnessBinder({ + case (th: HasHarnessInstantiators, port: ChipIdPort) => { + port.io := 0.U + } +}) + class WithSimUARTToUARTTSI extends HarnessBinder({ case (th: HasHarnessInstantiators, port: UARTPort, chipId: Int) => { UARTAdapter.connect(Seq(port.io), diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index 309ec004..de7f2867 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -27,6 +27,7 @@ import barstools.iocell.chisel._ import testchipip.serdes.{CanHavePeripheryTLSerial, SerialTLKey} import testchipip.spi.{SPIChipIO} import testchipip.boot.{CanHavePeripheryCustomBootPin} +import testchipip.soc.{CanHavePeripheryChipIdPin} import testchipip.util.{ClockedIO} import testchipip.iceblk.{CanHavePeripheryBlockDevice, BlockDeviceKey, BlockDeviceIO} import testchipip.cosim.{CanHaveTraceIO, TraceOutputTop, SpikeCosimConfig} @@ -355,6 +356,14 @@ class WithSerialTLIOCells extends OverrideIOBinder({ } }) +class WithChipIdPin extends OverrideIOBinder({ + (system: CanHavePeripheryChipIdPin) => system.chip_id_pin.map({ p => + val sys = system.asInstanceOf[BaseSubsystem] + val (port, cells) = IOCell.generateIOFromSignal(p.getWrappedValue, s"chip_id", sys.p(IOCellKey), abstractResetAsAsync = true) + (Seq(ChipIdPort(() => port)), cells) + }).getOrElse(Nil, Nil) +}) + class WithSerialTLPunchthrough extends OverrideIOBinder({ (system: CanHavePeripheryTLSerial) => { val (ports, cells) = system.serial_tls.zipWithIndex.map({ case (s, id) => diff --git a/generators/chipyard/src/main/scala/iobinders/Ports.scala b/generators/chipyard/src/main/scala/iobinders/Ports.scala index 627693aa..6b327a18 100644 --- a/generators/chipyard/src/main/scala/iobinders/Ports.scala +++ b/generators/chipyard/src/main/scala/iobinders/Ports.scala @@ -76,6 +76,9 @@ case class JTAGPort (val getIO: () => JTAGChipIO) case class SerialTLPort (val getIO: () => Data, val params: SerialTLParams, val serdesser: TLSerdesser, val portId: Int) extends Port[Data] +case class ChipIdPort (val getIO: () => UInt) + extends Port[UInt] + case class UARTTSIPort (val getIO: () => UARTTSIIO) extends Port[UARTTSIIO] From fcf9139009dedf437c07977e5bfcd4c01c9bca2e Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Sun, 31 Dec 2023 14:43:50 -0800 Subject: [PATCH 179/184] bump tcip --- generators/testchipip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/testchipip b/generators/testchipip index e844c51a..28a4d01b 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit e844c51a084aebd89968166bab421dda87a1e693 +Subproject commit 28a4d01b1130b76ea725850fe8b600f9847b6cb8 From e7ed33244ab8f187ab04c5563ab3f5c3fea0a5c1 Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Mon, 1 Jan 2024 13:16:53 -0800 Subject: [PATCH 180/184] fix naming --- .../chipyard/src/main/scala/config/AbstractConfig.scala | 5 ++--- .../chipyard/src/main/scala/harness/HarnessBinders.scala | 4 ++-- generators/chipyard/src/main/scala/iobinders/IOBinders.scala | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index ec3c685e..8a328daf 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -23,7 +23,7 @@ class AbstractConfig extends Config( new chipyard.harness.WithTieOffInterrupts ++ // tie-off interrupt ports, if present new chipyard.harness.WithTieOffL2FBusAXI ++ // tie-off external AXI4 master, if present new chipyard.harness.WithCustomBootPinPlusArg ++ // drive custom-boot pin with a plusarg, if custom-boot-pin is present - new chipyard.harness.WithChipIdPinFromHarness ++ // drive chip id pin with a plusarg, if chip id pin is present + new chipyard.harness.WithDriveChipIdPin ++ // drive chip id pin from harness binder, if chip id pin is present new chipyard.harness.WithSimUARTToUARTTSI ++ // connect a SimUART to the UART-TSI port new chipyard.harness.WithClockFromHarness ++ // all Clock I/O in ChipTop should be driven by harnessClockInstantiator new chipyard.harness.WithResetFromHarness ++ // reset controlled by harness @@ -37,7 +37,7 @@ class AbstractConfig extends Config( new chipyard.iobinders.WithGPIOCells ++ new chipyard.iobinders.WithSPIFlashIOCells ++ new chipyard.iobinders.WithExtInterruptIOCells ++ - new chipyard.iobinders.WithChipIdPin ++ + new chipyard.iobinders.WithChipIdIOCells ++ new chipyard.iobinders.WithCustomBootPin ++ // The "punchthrough" IOBInders below don't generate IOCells, as these interfaces shouldn't really be mapped to ASIC IO // Instead, they directly pass through the DigitalTop ports to ports in the ChipTop @@ -65,7 +65,6 @@ class AbstractConfig extends Config( new chipyard.config.WithFrontBusFrequency(500.0) ++ // Default 500 MHz fbus new chipyard.config.WithOffchipBusFrequency(500.0) ++ // Default 500 MHz obus - new testchipip.soc.WithChipIdPin ++ // add a chip id pin for setting chip id in multi-chip configs new testchipip.boot.WithCustomBootPin ++ // add a custom-boot-pin to support pin-driven boot address new testchipip.boot.WithBootAddrReg ++ // add a boot-addr-reg for configurable boot address new testchipip.serdes.WithSerialTL(Seq( // add a serial-tilelink interface diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 5549d9c4..aeaec1c7 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -252,8 +252,8 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ } }) -//TODO: Allow setting from harness with chipId argument, hardcoding is temporary hack -class WithChipIdPinFromHarness extends HarnessBinder({ +//TODO: Set with chipId argument to harness binder, hardcoding is temporary hack +class WithDriveChipIdPin extends HarnessBinder({ case (th: HasHarnessInstantiators, port: ChipIdPort) => { port.io := 0.U } diff --git a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala index de7f2867..64b1296e 100644 --- a/generators/chipyard/src/main/scala/iobinders/IOBinders.scala +++ b/generators/chipyard/src/main/scala/iobinders/IOBinders.scala @@ -356,7 +356,7 @@ class WithSerialTLIOCells extends OverrideIOBinder({ } }) -class WithChipIdPin extends OverrideIOBinder({ +class WithChipIdIOCells extends OverrideIOBinder({ (system: CanHavePeripheryChipIdPin) => system.chip_id_pin.map({ p => val sys = system.asInstanceOf[BaseSubsystem] val (port, cells) = IOCell.generateIOFromSignal(p.getWrappedValue, s"chip_id", sys.p(IOCellKey), abstractResetAsAsync = true) From 8a4fc7c82f4f5fbfedea44b2d1ee813f27d65c7e Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Tue, 2 Jan 2024 14:23:07 -0800 Subject: [PATCH 181/184] [ci skip] update docs with chip id pin --- docs/Generators/TestChipIP.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/Generators/TestChipIP.rst b/docs/Generators/TestChipIP.rst index 2c382d4f..32e76f5b 100644 --- a/docs/Generators/TestChipIP.rst +++ b/docs/Generators/TestChipIP.rst @@ -92,3 +92,15 @@ The SPI flash model is a device that models a simple SPI flash device. It curren only supports single read, quad read, single write, and quad write instructions. The memory is backed by a file which is provided using ``+spiflash#=``, where ``#`` is the SPI flash ID (usually ``0``). + +Chip ID Pin +--------------- + +The chip ID pin sets the chip ID for the chip it is added to. This is most useful in +multi-chip configs. The pin value is driven by the chip ID value set in the harness +binder and the chip ID value can be read through MMIO at the address ``0x2000`` by default. + +The pin can be added to a system with the ``testchipip.soc.WithChipIdPin`` config. The pin +width and MMIO address are parameterizable and can be set by passing ``ChipIdPinParams`` as an +argument to the config. The width can additionally be set using the ``testchipip.soc.WithChipIdPinWidth`` +config. From 67faf0c3e350fc9e90dd23d112ab72c026f40a00 Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Fri, 12 Jan 2024 11:39:54 -0800 Subject: [PATCH 182/184] Use harness binder chipId to support multi-chip id pins --- .../chipyard/src/main/scala/config/ChipletConfigs.scala | 1 + .../chipyard/src/main/scala/harness/HarnessBinders.scala | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/scala/config/ChipletConfigs.scala b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala index e07aa73d..a7d2113f 100644 --- a/generators/chipyard/src/main/scala/config/ChipletConfigs.scala +++ b/generators/chipyard/src/main/scala/config/ChipletConfigs.scala @@ -11,6 +11,7 @@ import testchipip.soc.{OBUS} // Simple design which exposes a second serial-tl port that can connect to another instance of itself class SymmetricChipletRocketConfig extends Config( + new testchipip.soc.WithChipIdPin ++ // Add pin to identify chips new chipyard.harness.WithSerialTLTiedOff(tieoffs=Some(Seq(1))) ++ // Tie-off the chip-to-chip link in single-chip sims new testchipip.serdes.WithSerialTL(Seq( testchipip.serdes.SerialTLParams( // 0th serial-tl is chip-to-bringup-fpga diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index aeaec1c7..11fa670d 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -254,8 +254,8 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ //TODO: Set with chipId argument to harness binder, hardcoding is temporary hack class WithDriveChipIdPin extends HarnessBinder({ - case (th: HasHarnessInstantiators, port: ChipIdPort) => { - port.io := 0.U + case (th: HasHarnessInstantiators, port: ChipIdPort, chipId: Int) => { + port.io := chipId.U } }) From 47322af3c0768d4abd68efd95bb915247980b622 Mon Sep 17 00:00:00 2001 From: Ella Schwarz Date: Sun, 14 Jan 2024 14:47:12 -0800 Subject: [PATCH 183/184] Add assert to check that chip id pin is wide enough --- generators/chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 11fa670d..7ea74cee 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -252,9 +252,9 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ } }) -//TODO: Set with chipId argument to harness binder, hardcoding is temporary hack class WithDriveChipIdPin extends HarnessBinder({ case (th: HasHarnessInstantiators, port: ChipIdPort, chipId: Int) => { + assert(chipId < math.pow(2, port.io.getWidth), "ID Pin is not wide enough") port.io := chipId.U } }) From 565c187549bb6d457623a7eed8a4d1dbbb77e140 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Tue, 16 Jan 2024 10:15:53 -0800 Subject: [PATCH 184/184] Switch static assert to require --- generators/chipyard/src/main/scala/harness/HarnessBinders.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala index 7ea74cee..59d4110d 100644 --- a/generators/chipyard/src/main/scala/harness/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/harness/HarnessBinders.scala @@ -254,7 +254,7 @@ class WithSimTSIOverSerialTL extends HarnessBinder({ class WithDriveChipIdPin extends HarnessBinder({ case (th: HasHarnessInstantiators, port: ChipIdPort, chipId: Int) => { - assert(chipId < math.pow(2, port.io.getWidth), "ID Pin is not wide enough") + require(chipId < math.pow(2, port.io.getWidth), "ID Pin is not wide enough") port.io := chipId.U } })