diff --git a/.github/scripts/defaults.sh b/.github/scripts/defaults.sh index 6013d7d4..83117317 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" -grouping["group-peripherals"]="chipyard-dmirocket chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals" +grouping["group-peripherals"]="chipyard-dmirocket chipyard-spiflashwrite chipyard-mmios chipyard-nocores chipyard-manyperipherals chipyard-chiplike" grouping["group-accels"]="chipyard-mempress chipyard-sha3 chipyard-hwacha chipyard-gemmini chipyard-manymmioaccels" grouping["group-constellation"]="chipyard-constellation" grouping["group-tracegen"]="tracegen tracegen-boom" @@ -53,6 +53,7 @@ mapping["chipyard-cva6"]=" CONFIG=CVA6Config" mapping["chipyard-ibex"]=" CONFIG=IbexConfig" mapping["chipyard-spiflashwrite"]=" CONFIG=SmallSPIFlashRocketConfig EXTRA_SIM_FLAGS='+spiflash0=${LOCAL_CHIPYARD_DIR}/tests/spiflash.img'" mapping["chipyard-manyperipherals"]=" CONFIG=ManyPeripheralsRocketConfig EXTRA_SIM_FLAGS='+spiflash0=${LOCAL_CHIPYARD_DIR}/tests/spiflash.img'" +mapping["chipyard-chiplike"]=" CONFIG=ChipLikeQuadRocketConfig MODEL=FlatTestHarness MODEL_PACKAGE=chipyard.example verilog" mapping["chipyard-cloneboom"]=" CONFIG=Cloned64MegaBoomConfig verilog" mapping["chipyard-nocores"]=" CONFIG=NoCoresConfig verilog" mapping["tracegen"]=" CONFIG=NonBlockingTraceGenL2Config" diff --git a/.gitmodules b/.gitmodules index cfcd6067..03dddcd3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -73,9 +73,6 @@ [submodule "fpga/fpga-shells"] path = fpga/fpga-shells url = https://github.com/chipsalliance/rocket-chip-fpga-shells.git -[submodule "tools/api-config-chipsalliance"] - path = tools/api-config-chipsalliance - url = https://github.com/chipsalliance/api-config-chipsalliance.git [submodule "tools/rocket-dsp-utils"] path = tools/rocket-dsp-utils url = https://github.com/ucb-bar/rocket-dsp-utils @@ -121,3 +118,6 @@ [submodule "generators/mempress"] path = generators/mempress url = https://github.com/ucb-bar/mempress.git +[submodule "tools/cde"] + path = tools/cde + url = https://github.com/chipsalliance/cde.git diff --git a/build.sbt b/build.sbt index 0f065836..8160a4f9 100644 --- a/build.sbt +++ b/build.sbt @@ -62,7 +62,7 @@ def isolateAllTests(tests: Seq[TestDefinition]) = tests map { test => new Group(test.name, Seq(test), SubProcess(options)) } toSeq -val chiselVersion = "3.5.5" +val chiselVersion = "3.5.6" lazy val chiselSettings = Seq( libraryDependencies ++= Seq("edu.berkeley.cs" %% "chisel3" % chiselVersion, @@ -102,18 +102,8 @@ lazy val rocketMacros = (project in rocketChipDir / "macros") ) ) -lazy val rocketConfig = (project in rocketChipDir / "api-config-chipsalliance/build-rules/sbt") - .settings(commonSettings) - .settings( - libraryDependencies ++= Seq( - "org.scala-lang" % "scala-reflect" % scalaVersion.value, - "org.json4s" %% "json4s-jackson" % "3.6.6", - "org.scalatest" %% "scalatest" % "3.2.0" % "test" - ) - ) - lazy val rocketchip = freshProject("rocketchip", rocketChipDir) - .dependsOn(hardfloat, rocketMacros, rocketConfig) + .dependsOn(hardfloat, rocketMacros, cde) .settings(commonSettings) .settings(chiselSettings) .settings( @@ -149,7 +139,12 @@ lazy val chipyard = (project in file("generators/chipyard")) gemmini, icenet, tracegen, cva6, nvdla, sodor, ibex, fft_generator, constellation, mempress) .settings(libraryDependencies ++= rocketLibDeps.value) - .settings(commonSettings) + .settings( + libraryDependencies ++= Seq( + "org.reflections" % "reflections" % "0.10.2" + ) + ) + .settings(commonSettings) lazy val mempress = (project in file("generators/mempress")) .dependsOn(rocketchip, midasTargetUtils) @@ -246,16 +241,12 @@ lazy val dsptools = freshProject("dsptools", file("./tools/dsptools")) "org.scalacheck" %% "scalacheck" % "1.14.3" % "test", )) -lazy val `api-config-chipsalliance` = freshProject("api-config-chipsalliance", file("./tools/api-config-chipsalliance")) - .settings( - commonSettings, - libraryDependencies ++= Seq( - "org.scalatest" %% "scalatest" % "3.0.+" % "test", - "org.scalacheck" %% "scalacheck" % "1.14.3" % "test", - )) +lazy val cde = (project in file("tools/cde")) + .settings(commonSettings) + .settings(Compile / scalaSource := baseDirectory.value / "cde/src/chipsalliance/rocketchip") lazy val `rocket-dsp-utils` = freshProject("rocket-dsp-utils", file("./tools/rocket-dsp-utils")) - .dependsOn(rocketchip, `api-config-chipsalliance`, dsptools) + .dependsOn(rocketchip, cde, dsptools) .settings(libraryDependencies ++= rocketLibDeps.value) .settings(commonSettings) diff --git a/common.mk b/common.mk index 6cebf335..5c1f2461 100644 --- a/common.mk +++ b/common.mk @@ -50,7 +50,7 @@ HELP_COMMANDS += \ " run-tests = run all assembly and benchmark tests" \ " launch-sbt = start sbt terminal" \ " {shutdown,start}-sbt-server = shutdown or start sbt server if using ENABLE_SBT_THIN_CLIENT" \ -" find-config-fragments = list all config. fragments and their locations (recursive up to CONFIG_FRAG_LEVELS=$(CONFIG_FRAG_LEVELS))" +" find-config-fragments = list all config. fragments" ######################################################################################### # include additional subproject make fragments @@ -231,7 +231,7 @@ $(SFC_MFC_TARGETS) &: $(FIRRTL_FILE) $(FINAL_ANNO_FILE) $(SFC_LEVEL) $(EXTRA_FIR $(SED) -i 's/.*/& /' $(MFC_SMEMS_CONF) # need trailing space for SFC macrocompiler # DOC include end: FirrtlCompiler -$(TOP_MODS_FILELIST) $(MODEL_MODS_FILELIST) $(ALL_MODS_FILELIST) $(BB_MODS_FILELIST) &: $(MFC_MODEL_HRCHY_JSON) $(MFC_FILELIST) $(MFC_BB_MODS_FILELIST) +$(TOP_MODS_FILELIST) $(MODEL_MODS_FILELIST) $(ALL_MODS_FILELIST) $(BB_MODS_FILELIST) $(MFC_MODEL_HRCHY_JSON_UNIQUIFIED) &: $(MFC_MODEL_HRCHY_JSON) $(MFC_FILELIST) $(MFC_BB_MODS_FILELIST) $(base_dir)/scripts/split-module-files.py \ --model-hier-json $(MFC_MODEL_HRCHY_JSON) \ --dut $(TOP) \ @@ -243,6 +243,14 @@ $(TOP_MODS_FILELIST) $(MODEL_MODS_FILELIST) $(ALL_MODS_FILELIST) $(BB_MODS_FILEL $(SED) -i 's/\.\///' $(TOP_MODS_FILELIST) $(SED) -i 's/\.\///' $(MODEL_MODS_FILELIST) $(SED) -i 's/\.\///' $(BB_MODS_FILELIST) + $(base_dir)/scripts/uniqify-module-names.py \ + --top-filelist $(TOP_MODS_FILELIST) \ + --mod-filelist $(MODEL_MODS_FILELIST) \ + --gen-collateral-path $(GEN_COLLATERAL_DIR) \ + --model-hier-json $(MFC_MODEL_HRCHY_JSON) \ + --out-model-hier-json $(MFC_MODEL_HRCHY_JSON_UNIQUIFIED) \ + --dut $(TOP) \ + --model $(MODEL) sort -u $(TOP_MODS_FILELIST) $(MODEL_MODS_FILELIST) $(BB_MODS_FILELIST) > $(ALL_MODS_FILELIST) $(TOP_BB_MODS_FILELIST) $(MODEL_BB_MODS_FILELIST) &: $(BB_MODS_FILELIST) $(MFC_TOP_HRCHY_JSON) $(FINAL_ANNO_FILE) @@ -253,10 +261,10 @@ $(TOP_BB_MODS_FILELIST) $(MODEL_BB_MODS_FILELIST) &: $(BB_MODS_FILELIST) $(MFC_T --out-top-bb-f $(TOP_BB_MODS_FILELIST) \ --out-model-bb-f $(MODEL_BB_MODS_FILELIST) -$(TOP_SMEMS_CONF) $(MODEL_SMEMS_CONF) &: $(MFC_SMEMS_CONF) $(MFC_MODEL_HRCHY_JSON) +$(TOP_SMEMS_CONF) $(MODEL_SMEMS_CONF) &: $(MFC_SMEMS_CONF) $(MFC_MODEL_HRCHY_JSON_UNIQUIFIED) $(base_dir)/scripts/split-mems-conf.py \ --in-smems-conf $(MFC_SMEMS_CONF) \ - --in-model-hrchy-json $(MFC_MODEL_HRCHY_JSON) \ + --in-model-hrchy-json $(MFC_MODEL_HRCHY_JSON_UNIQUIFIED) \ --dut-module-name $(TOP) \ --model-module-name $(MODEL) \ --out-dut-smems-conf $(TOP_SMEMS_CONF) \ @@ -406,13 +414,9 @@ define \n endef -CONFIG_FRAG_LEVELS ?= 3 .PHONY: find-config-fragments -find-config-fragments: private IN_F := $(shell mktemp -d -t cy-XXXXXXXX)/scala_files.f -find-config-fragments: $(SCALA_SOURCES) - @$(foreach file,$(SCALA_SOURCES),echo $(file) >> $(IN_F)${\n}) - $(base_dir)/scripts/config-finder.py -l $(CONFIG_FRAG_LEVELS) $(IN_F) - @rm -rf $(dir $(IN_F)) +find-config-fragments: + $(call run_scala_main,chipyard,chipyard.ConfigFinder,) .PHONY: help help: diff --git a/conda-reqs/chipyard.yaml b/conda-reqs/chipyard.yaml index 59c5de51..25e5f1a5 100644 --- a/conda-reqs/chipyard.yaml +++ b/conda-reqs/chipyard.yaml @@ -103,7 +103,7 @@ dependencies: - sty - open_pdks.sky130a - pip: - - hammer-vlsi[asap7]==1.1.0 + - hammer-vlsi[asap7]==1.1.1 # 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 6c22731e..7a0c7cd8 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: cee2f923f616452b736c4314db2e791c5402803fdf7a7e344bb8233950f19b67 + linux-64: 3794abe8e222921d310bbd60f30fea775b80f7533f7a57d57c11bb3640a3643a platforms: - linux-64 sources: @@ -185,14 +185,14 @@ package: - category: main dependencies: {} hash: - md5: 7697d37e29669a14b053e82fad22a16b - sha256: ac993fa2774b90befcd6aba55b1c08853b2fa3b818753094c09bebd35fc55532 + md5: 0299e410bfb4300540bdc0012a7985ef + sha256: 8572efb7092c72fe7b73d2a0f1e5e27159a8edea0371e1bef533bcb7d85b19c6 manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.402_1_g12df12e-20230225_164303.tar.bz2 - version: 1.0.402_1_g12df12e + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.406_0_g0c37b7c-20230412_103222.tar.bz2 + version: 1.0.406_0_g0c37b7c - category: main dependencies: {} hash: @@ -207,14 +207,14 @@ package: - category: main dependencies: {} hash: - md5: 51fc4fcfb19f5d95ffc8c339db5068e8 - sha256: 0bfae0b9962bc0dbf79048f9175b913ed4f53c4310d06708dc7acbb290ad82f6 + md5: 939e3e74d8be4dac89ce83b20de2492a + sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 manager: conda name: tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2022g-h191b570_0.conda - version: 2022g + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda + version: 2023c - category: main dependencies: font-ttf-dejavu-sans-mono: '' @@ -394,14 +394,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 80968e6760b2448f739cd32b1324d07d - sha256: c8b52559c1867ad59510c9479a15581cbfda0a7857a33ff2fce03a76a0775cfb + md5: 2975fe44881f8dce5c3759b53abf11d1 + sha256: 1c65245dc63a3f5a57040074c61baa2ae9dcb401753503712401867b02c6dcab manager: conda name: coreutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.2-h0b41bf4_0.conda - version: '9.2' + url: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.3-h0b41bf4_0.conda + version: '9.3' - category: main dependencies: libgcc-ng: '>=7.3.0' @@ -426,19 +426,6 @@ package: 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: '>=12' - libstdcxx-ng: '>=12' - hash: - md5: c4fbad8d4bddeb3c085f18cbf97fbfad - sha256: b44db0b92ae926b3fbbcd57c179fceb64fa11a9f9d09082e03be58b74dcad832 - manager: conda - name: expat - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-h27087fc_0.tar.bz2 - version: 2.5.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -528,17 +515,17 @@ package: version: '1.12' - category: main dependencies: - libgcc-ng: '>=10.3.0' - libstdcxx-ng: '>=10.3.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: 87473a15119779e021c314249d4b4aed - sha256: 1d7950f3be4637ab915d886304e57731d39a41ab705ffc95c4681655c459374a + md5: 7c8d20d847bb45f56bd941578fcfa146 + sha256: e44cc00eec068e7f7a6dd117ba17bf5d57658729b7b841945546f82505138292 manager: conda name: icu optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2 - version: '70.1' + url: https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda + version: '72.1' - category: main dependencies: libgcc-ng: '>=12' @@ -592,14 +579,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 5cc781fd91968b11a8a7fdbee0982676 - sha256: f9983a8ea03531f2c14bce76c870ca325c0fddf0c4e872bff1f78bc52624179c + md5: 6aa9c9de5542ecb07fdda9ca626252d8 + sha256: 949d84ceea543802c1e085b2aa58f1d6cb5dd8cec5a9abaaf4e8ac65d6094b3a manager: conda name: libdeflate optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.17-h0b41bf4_0.conda - version: '1.17' + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda + version: '1.18' - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -612,6 +599,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 version: '4.33' +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 6305a3dd2752c76335295da4e581f2fd + sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3 + manager: conda + name: libexpat + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + version: 2.5.0 - category: main dependencies: libgcc-ng: '>=12' @@ -648,6 +647,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 version: '1.17' +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 1edd9e67bdb90d78cea97733ff6b54e6 + sha256: b19de7bda34eac4fa931be11fa8d7640cdf1441dfd51c91786586a4a4c64c92f + 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 + version: 2.1.5.1 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -736,16 +747,16 @@ package: version: 0.9.10 - category: main dependencies: - libgcc-ng: '>=9.3.0' + libgcc-ng: '>=12' hash: - md5: 772d69f030955d9646d3d0eaf21d859d - sha256: 54f118845498353c936826f8da79b5377d23032bcac8c4a02de2019e26c3f6b3 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 manager: conda name: libuuid optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 - version: 2.32.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + version: 2.38.1 - category: main dependencies: libgcc-ng: '>=12' @@ -762,14 +773,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: ac2ccf7323d21f2994e4d1f5da664f37 - sha256: 221f2e138dd264b7394b88f08884d93825d38800a51415059e813c02467abfd1 + md5: 0d4a7508d8c6c65314f2b9c1f56ad408 + sha256: ac3e073ea77803da71eb77e7fcef07defb345bda95eee3327c73ddf85b5714da manager: conda name: libwebp-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.4-h166bdaf_0.tar.bz2 - version: 1.2.4 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.0-h0b41bf4_0.conda + version: 1.3.0 - category: main dependencies: libgcc-ng: '>=12' @@ -954,15 +965,15 @@ package: version: '6.0' - category: main dependencies: - libgcc-ng: '>=7.3.0' + libgcc-ng: '>=12' hash: - md5: 2e5f1a8199794b21c9472c1a7f27e21a - sha256: a3ee6c02932fbee32babe39fa6bda9f781d6dc17122d2a90e62ff2b6866a5de8 + md5: 76d6bc123c1c75bf034c412856fcc935 + sha256: e94d0d5f75a5f58165ad8ac64a25df851c77ec6e9bf626c16807dcbd740226c8 manager: conda name: which optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/which-2.21-h516909a_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/which-2.21-h0b41bf4_1.conda version: '2.21' - category: main dependencies: @@ -1135,6 +1146,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/dtc-1.6.1-h166bdaf_2.tar.bz2 version: 1.6.1 +- category: main + dependencies: + libexpat: 2.5.0 hcb278e6_1 + libgcc-ng: '>=12' + hash: + md5: 8b9b5aca60558d02ddaa09d599e55920 + sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f + manager: conda + name: expat + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda + version: 2.5.0 - category: main dependencies: gettext: '' @@ -1373,20 +1397,20 @@ package: version: '1.13' - category: main dependencies: - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' hash: - md5: bb808b654bdc3c783deaf107a2ffb503 - sha256: d4170f1fe356768758b13a51db123f990bff81b0eae0d5a0ba11c7ca6b9536f4 + md5: 241845899caff54ac1d2b3102ad988cf + sha256: 624b6e29e23a51353cff2aff7364c42b831139afd131d239e79f60aea4dae887 manager: conda name: libxml2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.10.3-hca2bb57_4.conda - version: 2.10.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.10.4-hfdac1af_0.conda + version: 2.10.4 - category: main dependencies: libgcc-ng: '>=7.3.0' @@ -1472,14 +1496,14 @@ package: libgcc-ng: '>=12' ncurses: '>=6.3,<7.0a0' hash: - md5: db2ebbe2943aae81ed051a6a9af8e0fa - sha256: f5f383193bdbe01c41cb0d6f99fec68e820875e842e6e8b392dbe1a9b6c43ed8 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 manager: conda name: readline optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2 - version: 8.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + version: '8.2' - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1589,17 +1613,17 @@ package: version: '2.71' - category: main dependencies: - libgcc-ng: '>=10.3.0' - readline: '>=8.1,<9.0a0' + libgcc-ng: '>=12' + readline: '>=8.2,<9.0a0' hash: - md5: 54d1a374b75f14ecc58aea8c4236c0c3 - sha256: 6415903ad8774fc0f1bf5b156ae0b6f9988427a0f14bb35467c5938f05fe8707 + md5: 23b559a791d63ba4f51906763eb6bc53 + sha256: a7b2ea50068d86ac6e3749f76b118b15947d3f5ce48535eb5ab2ff7e22659c49 manager: conda name: bash optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.1.16-hd863ed2_0.tar.bz2 - version: 5.1.16 + url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.2.15-hfbf034d_0.conda + version: 5.2.15 - category: main dependencies: flex: '' @@ -1685,13 +1709,13 @@ package: dependencies: gcc_impl_linux-64: 12.2.0.* hash: - md5: b4d86475bd1a21d139ea78770f606471 - sha256: 3cfb989723f8e115d35553c2b1d899b0f4185fc0551a996b9ff4037083a36432 + md5: c241b4f6676222c2feefc9dc4b9d1728 + sha256: f4b4184cc3e0864abadfc5b06ae869b479e736ff1dc46723967256d11b5bc7c4 manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.2.0-h26027b1_11.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.2.0-h26027b1_12.conda version: 12.2.0 - category: main dependencies: @@ -1782,14 +1806,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: ed5349aa96776e00b34eccecf4a948fe - sha256: 3cbad3d63cff2dd9ac1dc9cce54fd3d657f3aff53df41bfe5bae9d760562a5af + md5: 984fc0159591041a411d96718e7073d0 + sha256: afac276054c6fc2959347e7e1da211554f5cc4efbdda6d1f29b6d98919eae833 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.74.1-h606061b_1.tar.bz2 - version: 2.74.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.76.1-ha491796_0.conda + version: 2.76.1 - category: main dependencies: libblas: 3.9.0 16_linux64_openblas @@ -1820,23 +1844,39 @@ package: version: 15.0.7 - category: main dependencies: - jpeg: '>=9e,<10a' - lerc: '>=4.0.0,<5.0a0' - libdeflate: '>=1.17,<1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' - libwebp-base: '>=1.2.4,<2.0a0' + libxml2: '>=2.10.3,<2.11.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + zstd: '>=1.5.2,<1.6.0a0' + hash: + md5: 716f4c806c384ee7bf1647814516c241 + sha256: 95a7e646c035b2515c69af0c47acf1840557160123f8ee6441d8b0f254098342 + manager: conda + name: libllvm16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.1-hadd5161_0.conda + version: 16.0.1 +- category: main + dependencies: + lerc: '>=4.0.0,<5.0a0' + libdeflate: '>=1.18,<1.19.0a0' + libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' + libstdcxx-ng: '>=12' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: - md5: 2e648a34072eb39d7c4fc2a9981c5f0c - sha256: e3e18d91fb282b61288d4fd2574dfa31f7ae90ef2737f96722fb6ad3257862ee + md5: 4e5ee4b062c21519efbee7e2ae608748 + sha256: caacb23e1b95fbdd8115be69228f9c82068ed87bf57f055027e31d093ae6a1a2 manager: conda name: libtiff optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-h6adf6a1_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-ha587672_6.conda version: 4.5.0 - category: main dependencies: @@ -1990,14 +2030,14 @@ package: dependencies: python: '>=3.6' hash: - md5: b3c15cb1d45fd10bc6f652bbc51e023a - sha256: 8dbc6de55113ea67a64f0be5d16ba939d1b58a25dbd9a5cc62b571cef24ef85c + md5: 99b19895abe40280358488acb9589532 + sha256: 2b273efc522834e4c8563da7998b9b683eed467660fe8a5a3c24d58aaa85a9cb manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.0.2-pyhd8ed1ab_0.conda - version: 3.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.0.5-pyhd8ed1ab_0.conda + version: 3.0.5 - category: main dependencies: libgcc-ng: '>=12' @@ -2220,14 +2260,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 6f90f1dc834447823b11d155726fcb37 - sha256: 6a6901f20c5b4d81aebd25a0645b3578ebb6a323f9fd7e87ee05ecbcfe19069e + md5: 650f18a56f366dbf419c15b543592c2d + sha256: 68db3a6280d6786be76f2c7c6cf41dd878c5d1a24f5de10f7f0af82c6fcfade6 manager: conda name: filelock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.10.0-pyhd8ed1ab_0.conda - version: 3.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.0-pyhd8ed1ab_0.conda + version: 3.12.0 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -2262,29 +2302,30 @@ package: dependencies: python: '>=3.8' hash: - md5: 0db48a2f5a68e28e5af8d3df276f2255 - sha256: dfcee90620d13f4f667664620191d780c79ec7e9ba9908cd771d24a1361e0cc9 + md5: a993e42df87a292d8fd7396a2e2a8d75 + sha256: c2a5db01537aae91a54dbd163b85421de2b623c75803af4e38ea01ba000317d1 manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.3.0-pyhd8ed1ab_1.conda - version: 2023.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.4.0-pyh1a96a4e_0.conda + version: 2023.4.0 - category: main dependencies: - jpeg: '>=9e,<10a' libgcc-ng: '>=12' libglib: '>=2.74.1,<3.0a0' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 1a109126a43003d65b39c1cad656bc9b - sha256: a27f49d85e0a730374cc77606e9484b23b0f3edf32df1994b6d7ff5dd44aef92 + md5: ee8220db21db8094998005990418fe5b + sha256: 7acc699871310e9a89aaa7e90de9ac949e2fa649232c8a8dfcafa67e8f36a266 manager: conda name: gdk-pixbuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h05c8ddd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda version: 2.42.10 - category: main dependencies: @@ -2322,13 +2363,13 @@ package: gcc: 12.2.0.* gxx_impl_linux-64: 12.2.0.* hash: - md5: 2b54322e0dbb1345d64913e8b20b7d7c - sha256: f6c390055f2846d6013160c41dece0973daf577c5f1aaa73ff5dcf597b35d0ec + md5: 56e0d282569b6cd349035a1bb5efae47 + sha256: b428f0af395194cb327fb212167efc3a837866d11b9f1a8bbad7e953c595c6cb manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.2.0-h26027b1_11.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.2.0-h26027b1_12.conda version: 12.2.0 - category: main dependencies: @@ -2456,17 +2497,17 @@ package: version: 1.4.4 - category: main dependencies: - jpeg: '>=9e,<10a' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libtiff: '>=4.5.0,<4.6.0a0' hash: - md5: aa8840cdf17ef0c6084d1e24abc7a28b - sha256: 443e926b585528112ec6aa4d85bf087722914ed8d85a2f75ae47c023c55c4238 + md5: 980d8aca0bc23ca73fa8caa3e7c84c28 + sha256: 0d88e0e7f8dbf8f01788e21dd63dd49b89433ce7dfd10f53839441396f6481cd manager: conda name: lcms2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hfd0df8a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda version: '2.15' - category: main dependencies: @@ -2486,18 +2527,31 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: a3a0f7a6f0885f5e1e0ec691566afb77 - sha256: e48481c37d02aefeddcfac20d48cf13b838c5f7b9018300fa7eac404d30f3d7f + md5: 2c00ecf8081a8f23043b055a68d7ba90 + sha256: 5f3eb78832674b8038dd65c80d09837a01f3300bf516370fc16650f33b8b87ed + manager: conda + name: libclang-cpp16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp16-16.0.1-default_h62803fd_0.conda + version: 16.0.1 +- category: main + dependencies: + libgcc-ng: '>=12' + libllvm16: '>=16.0.1,<16.1.0a0' + libstdcxx-ng: '>=12' + hash: + md5: 48c2eb0c9988c76ad34c47910fee3077 + sha256: aa4a685e98221cee06b6de93c9ac8efc329c648fdbbffbdd02f41cb1d228b3d8 manager: conda name: libclang13 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_h3e3d535_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-16.0.1-default_h9b593c0_0.conda + version: 16.0.1 - category: main dependencies: krb5: '>=1.20.1,<1.21.0a0' @@ -2559,20 +2613,20 @@ package: - category: main dependencies: giflib: '>=5.2.1,<5.3.0a0' - jpeg: '>=9e,<10a' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' hash: - md5: 77003f63d1763c1e6569a02c1742c9f4 - sha256: 43d563a16fe9db32b7d0be8d89968005f21139e9285dfe1fbfe9ae6647f1cc9f + md5: 9cfd7ad6e1539ca1ad172083586b3301 + sha256: 461fe2c0279309c21f206f114f3bd6592e906ef6f8cc181b2e28482941b8b925 manager: conda name: libwebp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.4-h1daa5a0_1.conda - version: 1.2.4 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.0-hb47c5f0_0.conda + version: 1.3.0 - category: main dependencies: python: '' @@ -2714,14 +2768,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 1ff2e3ca41f0ce16afec7190db28288b - sha256: 00288f5e5e841711e8b8fef1f1242c858d8ef99ccbe5d7e0df4789d5d8d40645 + md5: 91cda59e66e1e4afe9476f8ef98f5c30 + sha256: ded536a96a00d45a693dbc2971bb688248324dadd129eddda2100e177583d768 manager: conda name: packaging optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.0-pyhd8ed1ab_0.conda - version: '23.0' + url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda + version: '23.1' - category: main dependencies: python: '>=2.7' @@ -2777,14 +2831,14 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 12184951da572828fb986b06ffb63eed - sha256: 515cf2cfc0504eb5758fa9ddfabc1dcbd7182da7650828aac97c9eee35597c84 + md5: 1d54d3a75c3192ab7655d9c3d16809f1 + sha256: 846894b31bf26061a9e83b03b10fe46f49fcf1ffc5fb1c7ed79a61706a57004b manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.4-py39hb9d737c_0.tar.bz2 - version: 5.9.4 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py39h72bdee0_0.conda + version: 5.9.5 - category: main dependencies: python: '' @@ -2823,6 +2877,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 version: '2.21' +- category: main + dependencies: + python: '>=3.7' + hash: + md5: d316679235612869eba305aa7d41d9bf + sha256: 1bddeb54863c77ed5613b535a3e06a3a16b55786301a5e28c9bf011656bda686 + manager: conda + name: pygments + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda + version: 2.15.1 - category: main dependencies: python: '>=3.6' @@ -2890,14 +2956,26 @@ package: dependencies: python: '>=3.6' hash: - md5: f59d49a7b464901cf714b9e7984d01a2 - sha256: 93cfc7a92099e26b0575a343da4a667b52371cc38e4dee4ee264dc041ef77bac + md5: 2590495f608a63625e165915fb4e2e34 + sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6 + 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' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: d3076b483092a435832603243567bc31 + sha256: e4999484f21763ca4b8f92c95b22cb6d1edc1b61d0a2bb073ee2bd11f39401b9 manager: conda name: pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2022.7.1-pyhd8ed1ab_0.conda - version: 2022.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda + version: '2023.3' - category: main dependencies: __unix: '' @@ -2959,14 +3037,14 @@ package: dependencies: python: '>=3.7' hash: - md5: e18ed61c37145bb9b48d1d98801960f7 - sha256: a5c48b1fc7c89c5c937475e9434a63af7ce2e591f8e51afd56e3b2e232a9989d + md5: 6c443cccff3daa3d83b2b807b0a298ce + sha256: 6595024174d318848468c0e61899ff3c2f08a3545c85727b9a2871d6f8d0062a manager: conda name: setuptools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.0-pyhd8ed1ab_0.conda - version: 67.6.0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.1-pyhd8ed1ab_0.conda + version: 67.6.1 - category: main dependencies: python: '' @@ -3117,50 +3195,50 @@ package: python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: 8a7d309b08cff6386fe384aa10dd3748 - sha256: 67c3eef0531caf75a81945844288f363cd3b7b029829bd91ed0994bf6b231f34 + md5: c69c42faf110456735b6147190d5f12f + sha256: ef9b63cb061b8dcc2eb4b2f11440f91ca9330d09aa6914325b5160d22d968e1c manager: conda name: tornado optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py39hb9d737c_1.tar.bz2 - version: '6.2' + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3-py39h72bdee0_0.conda + version: '6.3' - category: main dependencies: python: '>=3.6' hash: - md5: a4d6202101f04b76d545530728e696bf - sha256: 8e490e1d390be0ab59b538199b4cedec027c68ebaa3add554a6316a79d5a1dbe + md5: 2010a97e7298197221abc6295790ff62 + sha256: 5fb56cd0652e7cffc1141c66b09644f1dde588ef6dddcb47849a62d7b0186846 manager: conda name: types-pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2022.7.1.2-pyhd8ed1ab_0.conda - version: 2022.7.1.2 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.0-pyhd8ed1ab_0.conda + version: 2023.3.0.0 - category: main dependencies: python: '>=3.6' hash: - md5: d398b385822d9425fb21c6c8f89dbc9e - sha256: 32233b8d558c118b9d856c6b7e52499c36b9f867bbf76b5c8b7edfb7655230cf + md5: 0c0c5edec27d8284bf75023737f74823 + sha256: 10290d04934693214ea9a3caaefac35c3fdfc72094ffa8b0f063141bef469bbe manager: conda name: types-pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.8-pyhd8ed1ab_0.conda - version: 6.0.12.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.9-pyhd8ed1ab_0.conda + version: 6.0.12.9 - category: main dependencies: python: '>=3.6' hash: - md5: 617bb6391b4b676f9b062aff31ef978d - sha256: 17f157579b6f0e9c2ef56e3d9c74eef625717865f8503101317cedc69f059b46 + md5: 1c44c106ac42fde5774d31e37220f4df + sha256: b9df570c65f14a002a3972bf9e9ed0c0ef8ff6a29087ba8d6be6493bfd1ea8ef manager: conda name: types-urllib3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-urllib3-1.26.25.8-pyhd8ed1ab_0.conda - version: 1.26.25.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-urllib3-1.26.25.10-pyhd8ed1ab_0.conda + version: 1.26.25.10 - category: main dependencies: python: '>=3' @@ -3217,24 +3295,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/verilator-4.226-he0ac6c6_1.tar.bz2 version: '4.226' -- category: main - dependencies: - gettext: '>=0.21.1,<1.0a0' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - ncurses: '>=6.3,<7.0a0' - perl: '>=5.32.1,<5.33.0a0 *_perl5' - python: '>=3.9,<3.10.0a0' - python_abi: 3.9.* *_cp39 - hash: - md5: 8f23fe6252f0db61a467fc68235a6c6c - sha256: 1ff7b1aa32d188658e797ba09579afc9712ef00a5b10700ebc10d57155dcd299 - manager: conda - name: vim - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.0814-py39pl5321h20e6244_0.tar.bz2 - version: 9.0.0814 - category: main dependencies: python: '' @@ -3259,18 +3319,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.5.1-pyhd8ed1ab_0.conda version: 1.5.1 -- category: main - dependencies: - python: '>=3.7' - hash: - md5: 6dfc61103f2c33a6c875b93d82875c10 - sha256: 3e08e7a72a01fa53e4d2e2dedde32b3300dc9d12c91d7b5248d458ecfa0bd439 - manager: conda - name: werkzeug - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.1.2-pyhd8ed1ab_1.tar.bz2 - version: 2.1.2 - category: main dependencies: python: '>=3.7' @@ -3351,6 +3399,23 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2 version: 0.9.10 +- category: main + dependencies: + libgcc-ng: '>=9.3.0' + xorg-kbproto: '' + xorg-libice: 1.0.* + xorg-libsm: 1.2.* + xorg-libx11: '>=1.7.0,<2.0a0' + xorg-xproto: '' + hash: + md5: 60d6eec5273f1c9af096c10c268912e3 + sha256: 25bfc4d86df3498b88aac2f02ecf65e739bf99a687805c31a635df6f2e60a163 + manager: conda + name: xorg-libxt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 + version: 1.2.1 - category: main dependencies: python: '>=3.7' @@ -3404,30 +3469,30 @@ package: version: 2.12.1 - category: main dependencies: - fontconfig: '>=2.13.96,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' - libglib: '>=2.72.1,<3.0a0' - libpng: '>=1.6.38,<1.7.0a0' + libglib: '>=2.74.1,<3.0a0' + libpng: '>=1.6.39,<1.7.0a0' libxcb: '>=1.13,<1.14.0a0' - libzlib: '>=1.2.12,<1.3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' pixman: '>=0.40.0,<1.0a0' xorg-libice: '' xorg-libsm: '' - xorg-libx11: '' - xorg-libxext: '' + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' xorg-libxrender: '' - zlib: '>=1.2.12,<1.3.0a0' + zlib: '' hash: - md5: d1a88f3ed5b52e1024b80d4bcd26a7a0 - sha256: f062cf56e6e50d3ad4b425ebb3765ca9138c6ebc52e6a42d1377de8bc8d954f6 + md5: 0c944213e40c9e4aa32292776b9c6903 + sha256: 0be3064cb30e3e69a47370abae85b2780cd81fbca00cbd17076d40c0f6302fdb manager: conda name: cairo optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-ha61ee94_1014.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h35add3b_1015.conda version: 1.16.0 - category: main dependencies: @@ -3461,6 +3526,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15-15.0.7-default_had23c3d_1.conda version: 15.0.7 +- category: main + dependencies: + libclang-cpp16: '>=16.0.1,<16.1.0a0' + libgcc-ng: '>=12' + libllvm16: '>=16.0.1,<16.1.0a0' + libstdcxx-ng: '>=12' + hash: + md5: cc2343dad8afb0b3d9cc368da2d58e22 + sha256: a3ae4c803ff00cdf74984c02ac8279e39861bb4aad16854c18a81792936714ac + manager: conda + name: clang-format-16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-16-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: click: '' @@ -3491,8 +3571,9 @@ package: - category: main dependencies: bzip2: '>=1.0.8,<2.0a0' - expat: '>=2.5.0,<3.0a0' - libcurl: '>=7.88.1,<8.0a0' + expat: '' + libcurl: '>=7.88.1,<9.0a0' + libexpat: '>=2.5.0,<3.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libuv: '' @@ -3503,14 +3584,14 @@ package: zlib: '' zstd: '>=1.5.2,<1.6.0a0' hash: - md5: 02142080aee43c8ef90db543ffbc13dd - sha256: cbd17c0375a021b7de854e0841f3f1b28b1359bc52bdc0ba5aabaee0f65a0b7d + md5: 6edec767268ad8451d27bb65f38c7ea4 + sha256: 3bb9d7c35d5297d85516769eb0517c83f7fc2ed7ab944a8c028871bb375bed51 manager: conda name: cmake optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.26.0-h077f3f9_0.conda - version: 3.26.0 + 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' @@ -3563,7 +3644,7 @@ package: dependencies: bzip2: '>=1.0.8,<2.0a0' libarchive: '>=3.5.2,<3.6.0a0' - libcurl: '>=7.82.0,<8.0a0' + libcurl: '>=7.82.0,<9.0a0' libgcc-ng: '>=10.3.0' libmicrohttpd: '>=0.9.75,<0.10.0a0' libstdcxx-ng: '>=10.3.0' @@ -3589,14 +3670,14 @@ package: python_abi: 3.9.* *_cp39 unicodedata2: '>=14.0.0' hash: - md5: f87853cd6f76c4b8014b41fa522e5bda - sha256: 2c9ca5aba1d6d038b60f77b73e533e81feee882cd4f22e99bdaa77fd7bfcc7cc + md5: 9232b3b2cc83a304c8210a092e8ba4a5 + sha256: 08b6feeebcdd6ccb61cdb794eec806be7765dc4d601d4ec051aea721fa439aa4 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.39.2-py39h72bdee0_0.conda - version: 4.39.2 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.39.3-py39h72bdee0_0.conda + version: 4.39.3 - category: main dependencies: python: '>=3.4' @@ -3642,14 +3723,14 @@ package: python: '>=3.8' zipp: '>=0.5' hash: - md5: 30b3127c385ca2ed5ef87f3d53d466bc - sha256: 4fe127138487a2aa171862407605f0cd601d005f85e0eee7f38c770b407e4145 + md5: ab2f9216e346f43599af3f7839931da1 + sha256: 1854da61b10c601bae3497e0d457b1bb029715d4bcabb5594199519de7c72f5a manager: conda name: importlib-metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.1.0-pyha770c72_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.5.0-pyha770c72_0.conda + version: 6.5.0 - category: main dependencies: python: '>=3.7' @@ -3734,26 +3815,26 @@ package: - category: main dependencies: expat: '>=2.5.0,<3.0a0' - fontconfig: '>=2.14.1,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' - icu: '>=70.1,<71.0a0' - jpeg: '>=9e,<10a' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' libwebp: '' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' zlib: '' hash: - md5: 82ef57611ace65b59db35a9687264572 - sha256: 6674781023188deeda7752e5dc429a54fd1639c9d61cbb25296cbbb55367884a + md5: ef06bee47510a7f5db3c2297a51d6ce2 + sha256: 6335db21afc72f86cf4ee0298acde3af950087db2b24df3d28a81c7d24574244 manager: conda name: libgd optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5aea950_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hfa28ad5_6.conda version: 2.3.3 - category: main dependencies: @@ -3780,14 +3861,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=3.10' hash: - md5: e25a18721970f7bb80a0d602ef3c72ad - sha256: 1ff6a68e7c511e2bb70b51466134706e33a322a3ef2544c7adc3524bd51624f1 + md5: 340cfe1633c018c5abf0099d7c307ab4 + sha256: 682fd2b43cf9bb66813d44b70535684670c33ca4a44e6c0e76540c496cb632c5 manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.1.1-py39h72bdee0_0.conda - version: 1.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.2.0-py39h72bdee0_0.conda + version: 1.2.0 - category: main dependencies: python: 2.7|>=3.7 @@ -3804,11 +3885,11 @@ package: - category: main dependencies: freetype: '>=2.12.1,<3.0a0' - jpeg: '>=9e,<10a' - lcms2: '>=2.14,<3.0a0' + lcms2: '>=2.15,<3.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libtiff: '>=4.5.0,<4.6.0a0' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libxcb: '>=1.13,<1.14.0a0' libzlib: '>=1.2.13,<1.3.0a0' openjpeg: '>=2.5.0,<3.0a0' @@ -3816,60 +3897,28 @@ package: python_abi: 3.9.* *_cp39 tk: '>=8.6.12,<8.7.0a0' hash: - md5: d2f79132b9c8e416058a4cd84ef27b3d - sha256: 77348588ae7cc8034b63e8a71b6695ba22761e1c531678e724cf06a12be3d1e2 + md5: 7882f5dfc152b021e5cb98e2d01507f8 + sha256: 82a2926a9a39e72291e134778fb3da7371efcb67437897fd474aaad03d6db609 manager: conda name: pillow optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-9.4.0-py39h2320bf1_1.conda - version: 9.4.0 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py39h7207d5c_0.conda + version: 9.5.0 - category: main dependencies: python: '>=3.7' setuptools: '' wheel: '' hash: - md5: 8025ca83b8ba5430b640b83917c2a6f7 - sha256: e1698cbf4964cd60a2885c0edbc654133cd0db5ac4cb568412250e577dbc42ad + md5: 9ccbacfd1cbfa0be00cc345fe5ad8816 + sha256: 781992f04a8c765b1ad29b54fc9f76c12b0864f9defd2869eeb5edff15b51546 manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.0.1-pyhd8ed1ab_0.conda - version: 23.0.1 -- category: main - dependencies: - python: '>=3.6' - setuptools: '' - hash: - md5: c78cd16b11cd6a295484bd6c8f24bea1 - sha256: e8710e24f60b6a97289468f47914e53610101755088bc237621cc1980edbfcd9 - manager: conda - name: pygments - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.14.0-pyhd8ed1ab_0.conda - version: 2.14.0 -- category: main - dependencies: - attrs: '>=19.2.0' - colorama: '' - exceptiongroup: '' - iniconfig: '' - packaging: '' - pluggy: '>=0.12,<2.0' - python: '>=3.8' - tomli: '>=1.0.0' - hash: - md5: 60958b19354e0ec295b43f6ab5cfab86 - sha256: d074ef1e2ffc3334927c281e4b79aebfa8eefd2d1588c3830a45ba4bce3e6ea9 - manager: conda - name: pytest - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.2.2-pyhd8ed1ab_0.conda - version: 7.2.2 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.1-pyhd8ed1ab_0.conda + version: '23.1' - category: main dependencies: python: '>=3.6' @@ -3933,17 +3982,17 @@ package: version: 0.17.21 - category: main dependencies: - python: '>=3.6' - typing: '>=3.6,<4.0' + python: '>=3.7' + typing: '>=3.7,<4.0' hash: - md5: 471bf9e605820b59988e830382b8d654 - sha256: e8b3bc2203266636740ce10536ef951c52b53b43bfed3b938117547efc47e374 + md5: 547d15e217a398578900787bf39ef01d + sha256: fd3747a968670b3db2e017102860d2087d193fdd99ebd17c6496ff4ec9287a5b manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.6-pyha770c72_0.tar.bz2 - version: 0.11.6 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.7-pyha770c72_0.conda + version: 0.11.7 - category: main dependencies: colorama: '' @@ -3962,14 +4011,14 @@ package: python: '>=3.6' types-urllib3: <1.27 hash: - md5: 35221b6d2f75276b786fb53fac5c4c35 - sha256: 54b0949b6fcdbdc36474dd3403a926b55331de6c1ea543c1d87f444f7fa8702a + md5: 856c0ae2398368dba2555354564d5228 + sha256: caacc1f5c91c39754611cd74cdc3b34a87efa5963d38c937fc927960586c18dd manager: conda name: types-requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.28.11.15-pyhd8ed1ab_0.conda - version: 2.28.11.15 + url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.28.11.17-pyhd8ed1ab_0.conda + version: 2.28.11.17 - category: main dependencies: typing_extensions: 4.5.0 pyha770c72_0 @@ -3982,6 +4031,39 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda version: 4.5.0 +- category: main + dependencies: + gettext: '>=0.21.1,<1.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + perl: '>=5.32.1,<5.33.0a0 *_perl5' + python: '>=3.9,<3.10.0a0' + python_abi: 3.9.* *_cp39 + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxt: '' + hash: + md5: ca45b0fdb2b4e9bad3b0378836f35e18 + sha256: 26df25d45800d8f40f292c0d44f9bbb614deddab9fd4ff7d509a24c48061118e + manager: conda + name: vim + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.1425-py39pl5321h1c21089_0.conda + version: 9.0.1425 +- category: main + dependencies: + markupsafe: '>=2.1.1' + python: '>=3.7' + hash: + md5: 94dea682ba9d8e091e1f46872886fb1f + sha256: 38f68541580b74ed91396a67766fb96088f7b161bfd203675ed7a257d642e2e3 + manager: conda + name: werkzeug + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.2.3-pyhd8ed1ab_0.conda + version: 2.2.3 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4061,37 +4143,36 @@ package: version: 0.7.0 - category: main dependencies: - clang-format-15: 15.0.7 default_had23c3d_1 - libclang-cpp15: '>=15.0.7,<15.1.0a0' + clang-format-16: 16.0.1 default_h62803fd_0 + libclang-cpp16: '>=16.0.1,<16.1.0a0' libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 841d93c086f15b68916b3455711c2638 - sha256: 517c759576600decafd005b14f3df9660b525fdb85645a0c588ea979b62bdc5e + md5: 00d5150c0a2e28a2d32eceb23425b989 + sha256: 6205ff6e3545d6084103a9885bb173af652326c6927ac5008154ea664e3981c1 manager: conda name: clang-format optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15.0.7-default_had23c3d_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: cffi: '>=1.12' libgcc-ng: '>=12' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.0,<4.0a0' python: '>=3.9,<3.10.0a0' python_abi: 3.9.* *_cp39 hash: - md5: c492b565817a019f025c7d17b57ef479 - sha256: 66ae341f51f6832de23f0047ea9e23fdf2f7e5fcd72faa814b17a7497a096e07 + md5: ad5cb1777ae6847c4d60199fa90a674c + sha256: 379f168a099aa47dbe38261fbebca0dd39e422ac0666468dc81b5e32c326503e manager: conda name: cryptography optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-39.0.2-py39h079d5ae_0.conda - version: 39.0.2 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-40.0.2-py39h079d5ae_0.conda + version: 40.0.2 - category: main dependencies: cloudpickle: '' @@ -4113,16 +4194,16 @@ package: itsdangerous: '>=2.0' jinja2: '>=3.0' python: '>=3.7' - werkzeug: '>=2.0' + werkzeug: '>=2.2.2' hash: - md5: 4b95b1c750d6d737905cdb447f097b9c - sha256: de8f2eb0b86e28b672839ae4ad0032eda30e09fee28a19b79159b35673f25a42 + md5: 917e433886a05676857035483214c70c + sha256: f38a7b55f17c5ad47464d4f02455e2ba722e9e08e2c3dc8a7f9fdd82188b72d8 manager: conda name: flask optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/flask-2.1.3-pyhd8ed1ab_0.tar.bz2 - version: 2.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/flask-2.2.3-pyhd8ed1ab_0.conda + version: 2.2.3 - category: main dependencies: curl: '' @@ -4131,17 +4212,17 @@ package: libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.0,<4.0a0' pcre2: '>=10.40,<10.41.0a0' perl: 5.* hash: - md5: 70fd89375d9b5ca90c15dcf3662b1b42 - sha256: fba1e93848c20e29d205726142fb37ad7e2be785699f98aac348524080354f6d + md5: 06b9b63f77ee1dea0d3a0c97f839385a + sha256: 3734da309ef157024b69fb01947fa71a04dfd8ca798eba962e8575da9ebfac9a manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h693f4a3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h3ca6407_1.conda version: 2.40.0 - category: main dependencies: @@ -4162,18 +4243,18 @@ package: cairo: '>=1.16.0,<2.0a0' freetype: '>=2.12.1,<3.0a0' graphite2: '' - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' libglib: '>=2.74.1,<3.0a0' libstdcxx-ng: '>=12' hash: - md5: 448fe40d2fed88ccf4d9ded37cbb2b38 - sha256: f300fcb390253d6d63346ee71e56f82bc830783d1682ac933fe9ac86f39da942 + md5: 73d2c2d25fdcec40c24929bab9f44831 + sha256: d4bf8a3e23478efefe39ac2d965f44b55cee4058277f2ad7478384e7973fc97f manager: conda name: harfbuzz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-6.0.0-h8e241bc_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-6.0.0-h3ff4399_1.conda version: 6.0.0 - category: main dependencies: @@ -4190,16 +4271,16 @@ package: version: 5.12.0 - category: main dependencies: - importlib-metadata: '>=6.1.0,<6.1.1.0a0' + importlib-metadata: '>=6.5.0,<6.5.1.0a0' hash: - md5: 90bab1d97fdb6bb40c8e00207bf222dc - sha256: 80a10ad1bacf5bb85d497fd3e5629f5805b6e90ad8c8b923daa3e36729e7429a + md5: 24bfc0314deeea53d54c71de2b436ed6 + sha256: 11c866dd631856dfa043ced5d85b892798a93bd5cd617bce2368a83b90b5c93d manager: conda name: importlib_metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.1.0-hd8ed1ab_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.5.0-hd8ed1ab_0.conda + version: 6.5.0 - category: main dependencies: attrs: '>=17.4.0' @@ -4237,17 +4318,18 @@ package: numpy: '>=1.20.3,<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: 3ea96adbbc2a66fa45178102a9cfbecc - sha256: a71fb9584f2b58e260fa565d5f27af763f21ed2afeede79e7d848620691bd765 + md5: 82b63668519f28450d4a4b0f3b520461 + sha256: d08fedfc0e20ca3233da89712117a7f75381bf48426d860f37629798c1b41ef4 manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-1.5.3-py39h2ad29b5_0.conda - version: 1.5.3 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.0.0-py39h2ad29b5_0.conda + version: 2.0.0 - category: main dependencies: pip: '' @@ -4264,16 +4346,16 @@ package: - category: main dependencies: python: '>=3.7' - typing-extensions: '>=4.4' + typing-extensions: '>=4.5' hash: - md5: 1d1a27f637808c76dd83e3f469aa6f7e - sha256: 5875ef7f4b079fe080c10287b13843860bc69a42e457729a8c5dc32cb3563e92 + md5: f10c2cf447ca96f12a326b83c75b8e33 + sha256: 51816d5471cc42059cc7a8616c8899b6fda7347999359c3979fefd0035ab274c manager: conda name: platformdirs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.1-pyhd8ed1ab_0.conda - version: 3.1.1 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.2.0-pyhd8ed1ab_0.conda + version: 3.2.0 - category: main dependencies: libgcc-ng: '>=12' @@ -4281,14 +4363,14 @@ package: python_abi: 3.9.* *_cp39 typing-extensions: '>=4.2.0' hash: - md5: f9528d54782423f164ae187be76ead28 - sha256: b18342ce213c8f4482eeca7c34944dd904e62e063a5783089203d3fa907b9ab0 + md5: d189943289498d75a39922d5b25bd77e + sha256: 401a02c0fcecd4ad2eaafa8f69eabef4873bec09963c277c0473596f8c3cae46 manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.6-py39h72bdee0_0.conda - version: 1.10.6 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.7-py39h72bdee0_0.conda + version: 1.10.7 - category: main dependencies: cffi: '>=1.4.1' @@ -4308,43 +4390,36 @@ package: version: 1.5.0 - category: main dependencies: - pytest: '>=3.6.0' - python: '' + colorama: '' + exceptiongroup: '' + importlib-metadata: '>=0.12' + iniconfig: '' + packaging: '' + pluggy: '>=0.12,<2.0' + python: '>=3.8' + tomli: '>=1.0.0' hash: - md5: b6764e23dece9f9cda0469af044fafeb - sha256: bdb25a7daf3efb7255b1a19d7b5d41d7d4d96bc647b8e5f7407ec4dd9e384257 + md5: 547c7de697ec99b494a28ddde185b5a4 + sha256: 42f89db577266b9dc195d09189b92f3af3354fb50c98b1f996c580322dffa8b5 manager: conda - name: pytest-dependency + name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-dependency-0.5.1-pyh9f0ad1d_0.tar.bz2 - version: 0.5.1 -- category: main - dependencies: - pytest: '>=5.0' - python: '>=3.7' - hash: - md5: db93caa9fe182f0cd20291aeb22f57ac - sha256: 87bb8edc9976403237a0e6c3bd7b2224c346c95e4c7345971f411aef21593450 - manager: conda - name: pytest-mock - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.10.0-pyhd8ed1ab_0.tar.bz2 - version: 3.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.3.1-pyhd8ed1ab_0.conda + version: 7.3.1 - category: main dependencies: pip: '' python: '>=3.7,<4.0' hash: - md5: 25923bf9620c56f8bc0d4923d870edd8 - sha256: 3f8be46ba1cbd8533d25eba1a5b32062bb9231b16e308bbbc92b5e32177cbdad + md5: fb6a4bb2c52647f4422e8a47d706ef1c + sha256: 092ddd70025bbe90042fb77bc21aa467b6181f486e7137d2c47b72f824688ea9 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.13-pyhd8ed1ab_0.conda - version: 0.16.13 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.15-pyhd8ed1ab_0.conda + version: 0.16.15 - category: main dependencies: cffi: '' @@ -4421,32 +4496,31 @@ package: types-awscrt: '' typing_extensions: '' hash: - md5: 96971bc5cc944a1743fdde0634e55480 - sha256: fee2b0596dd34a70081d745e06f9302dd06fb56dd366e51a302f93c9764126d9 + md5: a2b0b88e5b4bcfdab4c03acd24667046 + sha256: 161c95587e95cedcf2587b1e666827d29c02383e4bbfdc338dfe0f8183af3747 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.94-pyhd8ed1ab_0.conda - version: 1.29.94 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.115-pyhd8ed1ab_0.conda + version: 1.29.115 - category: main dependencies: - clang-format: 15.0.7 default_had23c3d_1 - libclang: '>=15.0.7,<15.1.0a0' - libclang-cpp15: '>=15.0.7,<15.1.0a0' + clang-format: 16.0.1 default_h62803fd_0 + libclang-cpp16: '>=16.0.1,<16.1.0a0' + libclang13: '>=16.0.1' libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: c23e2b0154fb2eb92442fa8ecbcf571c - sha256: d9931c1ce5907073de0269666881309cc896267723f38ef269101bd211e49062 + md5: 6fa41767486e911517c03bb069b9f5fa + sha256: a0acf37ed406a66e72577d40b52185488644a9a1ce56a99823c3318f9900260b manager: conda name: clang-tools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-15.0.7-default_had23c3d_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: python: '>=3.7' @@ -4479,14 +4553,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: b5ada314668cded097e08fea86262317 - sha256: 88bcba64d462867b5759e29784cf24685e1e49fffea75452b94d438d6bd9587c + md5: b8d16e273396a0115199a83769a39246 + sha256: 45cbad9e8329b33d348c536ef0c49fb1811261201072e3d536199c106562d607 manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.21-pyhd8ed1ab_0.conda - version: 2.5.21 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.22-pyhd8ed1ab_0.conda + version: 2.5.22 - category: main dependencies: importlib_metadata: '' @@ -4558,31 +4632,31 @@ package: - category: main dependencies: alsa-lib: '>=1.2.8,<1.2.9.0a0' - fontconfig: '>=2.14.1,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' giflib: '>=5.2.1,<5.3.0a0' harfbuzz: '>=6.0.0,<7.0a0' - jpeg: '>=9e,<10a' - lcms2: '>=2.14,<3.0a0' + lcms2: '>=2.15,<3.0a0' libcups: '>=2.3.3,<2.4.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - xorg-libx11: '' - xorg-libxext: '' + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' xorg-libxi: '' xorg-libxrender: '' xorg-libxtst: '' hash: - md5: 71a5dfe4a375fc43497cdc6f4aedff9d - sha256: baa527e6b59572e00e68c2362e1771f7741f3f062dac7a8c6365a97f48c04413 + md5: 33527b036cd6d369be12fd772cdd49e4 + sha256: 221de13214f051654177dd331c019a889ab1bbe3b2cf30d5cf17596378740359 manager: conda name: openjdk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.3-h58dac75_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.3-h4335b31_6.conda version: 17.0.3 - category: main dependencies: @@ -4621,17 +4695,43 @@ package: version: 3.1.0 - category: main dependencies: - cryptography: '>=38.0.0,<40' + cryptography: '>=38.0.0,<41' python: '>=3.6' hash: - md5: d41957700e83bbb925928764cb7f8878 - sha256: adbf8951f22bfa950b9e24394df1ef1d2b2d7dfb194d91c7f42bc11900695785 + md5: 0b34aa3ab7e7ccb1765a03dd9ed29938 + sha256: 458428cb867f70f2af2a4ed59d382291ea3eb3f10490196070a15d1d71d5432a manager: conda name: pyopenssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.0.0-pyhd8ed1ab_0.conda - version: 23.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 +- category: main + dependencies: + pytest: '>=3.6.0' + python: '' + hash: + md5: b6764e23dece9f9cda0469af044fafeb + sha256: bdb25a7daf3efb7255b1a19d7b5d41d7d4d96bc647b8e5f7407ec4dd9e384257 + manager: conda + name: pytest-dependency + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-dependency-0.5.1-pyh9f0ad1d_0.tar.bz2 + version: 0.5.1 +- category: main + dependencies: + pytest: '>=5.0' + python: '>=3.7' + hash: + md5: db93caa9fe182f0cd20291aeb22f57ac + sha256: 87bb8edc9976403237a0e6c3bd7b2224c346c95e4c7345971f411aef21593450 + manager: conda + name: pytest-mock + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.10.0-pyhd8ed1ab_0.tar.bz2 + version: 3.10.0 - category: main dependencies: cryptography: '' @@ -4695,19 +4795,18 @@ package: - category: main dependencies: distlib: <1,>=0.3.6 - filelock: <4,>=3.4.1 - importlib-metadata: '>=4.8.3' - platformdirs: <4,>=2.4 - python: '>=3.7' + filelock: <4,>=3.11 + platformdirs: <4,>=3.2 + python: '>=3.8' hash: - md5: cb9a711f7c9f3074fe522e5a34481e60 - sha256: 28540cdda9279d7daeb8f2deec6f1128869ba90742a966e488b692e8083c5349 + md5: 054007ab693cb77a029ea4f1f12f34a7 + sha256: acb9f18ef811cda29690d41e0e7c54f7088d35e6b5aa5db6403d13c9eb18336a manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.21.0-pyhd8ed1ab_0.conda - version: 20.21.0 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.22.0-pyhd8ed1ab_0.conda + version: 20.22.0 - category: main dependencies: conda-package-streaming: '>=0.7.0' @@ -4773,22 +4872,22 @@ package: version: 23.13.1 - category: main dependencies: - cairo: '>=1.16.0,<2.0.0a0' - gdk-pixbuf: '>=2.42.8,<3.0a0' - gettext: '>=0.19.8.1,<1.0a0' + cairo: '>=1.16.0,<2.0a0' + gdk-pixbuf: '>=2.42.10,<3.0a0' + gettext: '>=0.21.1,<1.0a0' libgcc-ng: '>=12' - libglib: '>=2.70.2,<3.0a0' - libxml2: '>=2.9.14,<2.11.0a0' - pango: '>=1.50.7,<1.51.0a0' + libglib: '>=2.76.1,<3.0a0' + libxml2: '>=2.10.4,<2.11.0a0' + pango: '>=1.50.14,<2.0a0' hash: - md5: 921e53675ed5ea352f022b79abab076a - sha256: 9b81f3854660e902a417e8194b43ed2f5d2a082227df28ba6804c68ac7c16aa0 + md5: 1ec4fab6eb4af1db9056b94265fe19cf + sha256: 6449497e50d2343c6caf73ad9c74f82341e0c22aca3d6f333869e0a069d0c472 manager: conda name: librsvg optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.54.4-h7abd40a_0.tar.bz2 - version: 2.54.4 + url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.0-h5cef280_0.conda + version: 2.56.0 - category: main dependencies: jsonschema: '>=3.2.0,<5.0.0' @@ -4814,14 +4913,14 @@ package: pyyaml: '>=5.1' virtualenv: '>=20.10.0' hash: - md5: 9a160452d1d88a9f10c373888f93586b - sha256: 91e104de6854e07a580603a7affb1a6e77823e9d4246486ecfd47d3978839212 + md5: c4aab94cab4ddeb340e36d4c670a5f24 + sha256: 4331584fffa05cf3096799c95495ce97563699dc7c4da341e9b1ced96e4f5526 manager: conda name: pre-commit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.2.0-pyha770c72_0.conda - version: 3.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.2.2-pyha770c72_0.conda + version: 3.2.2 - category: main dependencies: __unix: '' @@ -4860,58 +4959,59 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 3faabd8720a81a91566e6c01bf7bbacb - sha256: c677cba87c7027ccf264574a87130bf44f69be008315d2a840ae6cfaa61b7e44 + md5: fb3a321c00c20e538fa694ea3aa56bb3 + sha256: 6cd079ddf88e9fe825e60ce4f01cacbbd5e0571f792b9c4628b77eb073bcdbf7 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.27.59-pyhd8ed1ab_0.tar.bz2 - version: 1.27.59 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.116-pyhd8ed1ab_0.conda + version: 1.29.116 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' - expat: '>=2.5.0,<3.0a0' - fontconfig: '>=2.14.1,<3.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.74.1,<3.0a0' + libglib: '>=2.76.1,<3.0a0' librsvg: '>=2.54.4,<3.0a0' libstdcxx-ng: '>=12' libtool: '' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - pango: '>=1.50.12,<2.0a0' + pango: '>=1.50.14,<2.0a0' zlib: '' hash: - md5: e7ecda996c443142a0e9c379f3b28e48 - sha256: cecaa9e6dce7f2df042768d9a794f0126565a30384fcd59879e107d760bed7f1 + md5: 09c3cfc5ec50aef65f67c5f1bde535c6 + sha256: 9da43e1550de05f9e56d0b1d452d9567d9156e3fbcba0e0291ff458300bb70b4 manager: conda name: graphviz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-7.1.0-h2e5815a_0.conda - version: 7.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.3-h2e5815a_0.conda + version: 8.0.3 - category: main dependencies: certifi: '>=2017.4.17' - charset-normalizer: '>=2,<3' + charset-normalizer: '>=2,<4' idna: '>=2.5,<4' python: '>=3.7,<4.0' urllib3: '>=1.21.1,<1.27' hash: - md5: 11d178fc55199482ee48d6812ea83983 - sha256: 22c081b4cdd023a514400413f50efdf2c378f56f2a5ea9d65666aacf4696490a + md5: 3bfbd6ead1d7299ed46dab3a7bf0bc8c + sha256: 9a7c3410970217fa035cca7f72c175989e1c8b22f855b852b9d5fde07c3550dd manager: conda name: requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_1.conda version: 2.28.2 - category: main dependencies: @@ -4935,14 +5035,14 @@ package: python: '>=3.4' wrapt: '' hash: - md5: 2f18ecd9ec078c10f7086ad7ee05289b - sha256: ab3afec58f5368351efac43e813e62f944d41bd879c99e45ad49910aac666447 + 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.11.0-pyhd8ed1ab_0.tar.bz2 - version: 2.11.0 + 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' @@ -4950,14 +5050,14 @@ package: six: '>=1.11.0' typing-extensions: '>=4.0.1' hash: - md5: e49892b87d27fce696b7118a27558fae - sha256: bb995e74396dc34da1a1f9931f40949979913c7b2802c51c799a604edbb45516 + md5: f4d871cde207029fbd3059fc4ad76af9 + sha256: 85884ae07cd171b577dba67059b633df5c6ad0a8fff8222de4bf77530426aea6 manager: conda name: azure-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.26.3-pyhd8ed1ab_0.conda - version: 1.26.3 + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.26.4-pyhd8ed1ab_0.conda + version: 1.26.4 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -5030,19 +5130,19 @@ package: version: 1.4.3 - category: main dependencies: - cryptography: '>=0.6,<41' + cryptography: '>=0.6,<43' pyjwt: '>=1.0.0,<3' python: '>=3.6' requests: '>=2.0.0,<3' hash: - md5: 9304c2492b162934f748d061be0042e8 - sha256: a516cdfa79d90f678507c986da24d5d9979083d90337eeaa17fdd7f3d2e1a976 + md5: 24c290ee3278fd9a33b00cd1f8d1db0f + sha256: 7f4cc4d6383263ad9cc69dc83bb5dd5d4a309ebe53f117e1d14ffd76f31939de manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.21.0-pyhd8ed1ab_0.conda - version: 1.21.0 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.22.0-pyhd8ed1ab_0.conda + version: 1.22.0 - category: main dependencies: graphviz: '>=2.46.1' @@ -5114,7 +5214,7 @@ package: version: 5.1.1 - category: main dependencies: - botocore: 1.27.59 + botocore: 1.29.116 colorama: '>=0.2.5,<0.4.5' docutils: '>=0.10,<0.17' python: '>=3.9,<3.10.0a0' @@ -5123,29 +5223,29 @@ package: rsa: '>=3.1.2,<4.8' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: fa62dd9ed5d234c493ff14914d43f332 - sha256: 61483c628f9751a038d5634ce8ba2ed7ab484ffad50a7e7da13c2e3b30f93eae + md5: 7ff7995ef5ae66e3f40ecf8715f94af9 + sha256: 075259e8d6df02f58a7d4b0a981ea0713936de293758f77d874dfaead449ad55 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.25.60-py39hf3d152e_0.tar.bz2 - version: 1.25.60 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.116-py39hf3d152e_0.conda + version: 1.27.116 - category: main dependencies: - botocore: '>=1.27.59,<1.28.0' + botocore: '>=1.29.116,<1.30.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: ffb13a0a5fc8e17ce396f4dfcdf5dab5 - sha256: 89fd09bdc9d9a608387fd80b19fd084f26309d7857bd9a3957216a718f58b3de + md5: 858c31f9e605c623871cb7521e37c926 + sha256: c834aa58f41881ebf642da868008dfbe64b4868d4dcf8b91c57b52fcadccec3b manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.24.59-pyhd8ed1ab_0.tar.bz2 - version: 1.24.59 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.116-pyhd8ed1ab_0.conda + version: 1.26.116 - category: main dependencies: cachecontrol: 0.12.11 pyhd8ed1ab_1 @@ -5167,13 +5267,13 @@ package: networkx: '' python: '>=3.6' hash: - md5: f47b4fbd862cc05b914d2e4862df72a1 - sha256: 3a7f989bdcb5a6a284d092745892f8f27d15b348a02b95229d258899d418fd82 + 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_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda version: 1.1.0 - category: main dependencies: @@ -5206,21 +5306,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/msal_extensions-1.0.0-pyhd8ed1ab_0.tar.bz2 version: 1.0.0 -- category: main - dependencies: - aiobotocore: '>=2.4.2,<2.4.3' - aiohttp: '' - fsspec: 2023.3.0 - python: '>=3.8' - hash: - md5: 53b2e3e80df2a18eb74d53729b9464f2 - sha256: 2737102a9d3d538dccf22fc32e32e2ec608d69c2a002a1f137091b9611bf5d6e - manager: conda - name: s3fs - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3fs-2023.3.0-pyhd8ed1ab_0.conda - version: 2023.3.0 - category: main dependencies: livereload: '>=2.3.0' @@ -5286,14 +5371,14 @@ package: python: '' typing_extensions: '' hash: - md5: 009fa15810ae5d376e1bd29ab93c1081 - sha256: 380426f97ae074ad86a1b52bb106e1f10e868bc8b7c575bea6ea5ac7725bc84d + md5: cfd95e43a27c0af1a206f7557d7f132e + sha256: 02570a9062717ec9b3293199ab8e8983c92f2320f5f8066ef541929a1166d9f1 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.95-pyhd8ed1ab_0.conda - version: 1.26.95 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.117-pyhd8ed1ab_0.conda + version: 1.26.117 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5334,28 +5419,42 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: 0c79de238c80f668f5a4e85a2ca1dced - sha256: 348b0bdb9d9fcfdfc24c43ea93a29e2c5aba7f8d0e5570517e965c758c380419 + md5: cfc72b1b83d1b8503b1071455534ebac + sha256: 1df5aa62e1fc8d498a37f30723d15a1626dc9b686603e79b4b44ba6c95f8f659 manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.26.62-pyhd8ed1ab_0.conda - version: 1.26.62 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.26.116-pyhd8ed1ab_0.conda + version: 1.26.116 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: a0ead2e95ffa5942c419234c15463344 - sha256: 7e7bb339939a50d9e682c01938062d2d4e1157a7b034d7f91e44e11d98c0d05d + md5: 93e899cf501d962cfd1b251a45416825 + sha256: ef57856f4313eac453b53a119cedf121bd16fc98c64beaee8e3309959673daea manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.26.91-pyhd8ed1ab_0.conda - version: 1.26.91 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.26.106-pyhd8ed1ab_0.conda + version: 1.26.106 +- category: main + dependencies: + boto3: '' + fsspec: '>=0.6.0' + python: '>=3.5' + hash: + md5: ead328eb12f01d88706126ba061e7a69 + sha256: 7a4cb574ff7edf773e5e4c396733dcb08ffcfd6e4f8b27e5b84b35fd4666ef5b + manager: conda + name: s3fs + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/s3fs-0.4.2-py_0.tar.bz2 + version: 0.4.2 - category: main dependencies: docutils: <0.19 @@ -5396,18 +5495,18 @@ package: aws-xray-sdk: '!=0.96,>=0.93' boto3: '>=1.9.201' botocore: '>=1.12.201' - cfn-lint: '>=0.4.0' + cfn-lint: '>=0.40.0' cryptography: '>=3.3.1' docker-py: '>=2.5.1' - flask: '' + flask: '!=2.2.0,!=2.2.1' flask_cors: '' graphql-core: '' idna: '>=2.5,<4' importlib_metadata: '' jinja2: '>=2.10.1' jsondiff: '>=1.1.2' - openapi-spec-validator: '' - pyparsing: '' + openapi-spec-validator: '>=0.2.8' + pyparsing: '>=3.0.7' python: '>=3.3' python-dateutil: '>=2.1,<3.0.0' python-jose: '>=3.1.0,<4.0.0' @@ -5417,17 +5516,17 @@ package: responses: '>=0.9.0' setuptools: '' sshpubkeys: '>=3.1.0' - werkzeug: <2.2.0,>=0.5 + werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 702e5d281f691be1bec2f23d1f24fee8 - sha256: 5f7094094ef361b135068b12facdf34c18d2b285c4bd87a935ab1c7e633990ee + md5: c4172149b03b032cd60cc79f1484a1dd + sha256: 5891a5ce23d274406bda81e202ddc303d30a3355c01c7d9ae461fc5313247e9d manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.5-pyhd8ed1ab_0.conda - version: 4.1.5 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.7-pyhd8ed1ab_2.conda + version: 4.1.7 - category: main dependencies: {} hash: @@ -5480,12 +5579,14 @@ package: platform: linux-64 url: https://files.pythonhosted.org/packages/9f/53/1ac75eab589149b1e02e38185ecebf09e1b805fc3fdeadbc16d1a2b7d208/paramiko_ng-2.8.10-py2.py3-none-any.whl version: 2.8.10 -- dependencies: +- category: main + dependencies: ruamel.yaml.clib: '>=0.2.6' hash: sha256: 742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7 manager: pip name: ruamel.yaml + optional: false platform: linux-64 url: https://files.pythonhosted.org/packages/9e/cb/938214ac358fbef7058343b3765c79a1b7ed0c366f7f992ce7ff38335652/ruamel.yaml-0.17.21-py3-none-any.whl version: 0.17.21 @@ -5521,13 +5622,13 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: 638a6b8c3e631f85f235acf02d3bef35a0a6d7da2ec9fef17420d5dd2ce66678 + sha256: f4fb4dd5f7fac1f2206a25d0949024046fe8f855198e8edbd5206fa9d58ab05f manager: pip name: hammer-vlsi optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/53/39/18367e6fb4f20e9ae4fb3097f7b80704ff5cccf62980ea2871ba1d817a74/hammer_vlsi-1.1.0-py3-none-any.whl - version: 1.1.0 + url: https://files.pythonhosted.org/packages/0a/da/1897421311c6332655e2f73d02d8c914ecb724198a1988aacd8f4c61ae6e/hammer_vlsi-1.1.1-py3-none-any.whl + version: 1.1.1 - category: main dependencies: asttokens: '>=2,<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 ca4c96d2..1fbce68b 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: 1a7b0ae002798a28682d700644302284790c06503a7d3d04caa019aa74da7123 + linux-64: 3d155013008436d15b7f1d8d02c2aa15cfa96a5619d70b0a018c7ff253303935 platforms: - linux-64 sources: @@ -185,14 +185,14 @@ package: - category: main dependencies: {} hash: - md5: 7697d37e29669a14b053e82fad22a16b - sha256: ac993fa2774b90befcd6aba55b1c08853b2fa3b818753094c09bebd35fc55532 + md5: 0299e410bfb4300540bdc0012a7985ef + sha256: 8572efb7092c72fe7b73d2a0f1e5e27159a8edea0371e1bef533bcb7d85b19c6 manager: conda name: open_pdks.sky130a optional: false platform: linux-64 - url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.402_1_g12df12e-20230225_164303.tar.bz2 - version: 1.0.402_1_g12df12e + url: https://conda.anaconda.org/litex-hub/noarch/open_pdks.sky130a-1.0.406_0_g0c37b7c-20230412_103222.tar.bz2 + version: 1.0.406_0_g0c37b7c - category: main dependencies: {} hash: @@ -207,14 +207,14 @@ package: - category: main dependencies: {} hash: - md5: 51fc4fcfb19f5d95ffc8c339db5068e8 - sha256: 0bfae0b9962bc0dbf79048f9175b913ed4f53c4310d06708dc7acbb290ad82f6 + md5: 939e3e74d8be4dac89ce83b20de2492a + sha256: 0449138224adfa125b220154408419ec37c06b0b49f63c5954724325903ecf55 manager: conda name: tzdata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2022g-h191b570_0.conda - version: 2022g + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2023c-h71feb2d_0.conda + version: 2023c - category: main dependencies: font-ttf-dejavu-sans-mono: '' @@ -394,14 +394,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 80968e6760b2448f739cd32b1324d07d - sha256: c8b52559c1867ad59510c9479a15581cbfda0a7857a33ff2fce03a76a0775cfb + md5: 2975fe44881f8dce5c3759b53abf11d1 + sha256: 1c65245dc63a3f5a57040074c61baa2ae9dcb401753503712401867b02c6dcab manager: conda name: coreutils optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.2-h0b41bf4_0.conda - version: '9.2' + url: https://conda.anaconda.org/conda-forge/linux-64/coreutils-9.3-h0b41bf4_0.conda + version: '9.3' - category: main dependencies: libgcc-ng: '>=7.3.0' @@ -426,19 +426,6 @@ package: 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: '>=12' - libstdcxx-ng: '>=12' - hash: - md5: c4fbad8d4bddeb3c085f18cbf97fbfad - sha256: b44db0b92ae926b3fbbcd57c179fceb64fa11a9f9d09082e03be58b74dcad832 - manager: conda - name: expat - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-h27087fc_0.tar.bz2 - version: 2.5.0 - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -528,17 +515,17 @@ package: version: '1.12' - category: main dependencies: - libgcc-ng: '>=10.3.0' - libstdcxx-ng: '>=10.3.0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' hash: - md5: 87473a15119779e021c314249d4b4aed - sha256: 1d7950f3be4637ab915d886304e57731d39a41ab705ffc95c4681655c459374a + md5: 7c8d20d847bb45f56bd941578fcfa146 + sha256: e44cc00eec068e7f7a6dd117ba17bf5d57658729b7b841945546f82505138292 manager: conda name: icu optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2 - version: '70.1' + url: https://conda.anaconda.org/conda-forge/linux-64/icu-72.1-hcb278e6_0.conda + version: '72.1' - category: main dependencies: libgcc-ng: '>=12' @@ -592,14 +579,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: 5cc781fd91968b11a8a7fdbee0982676 - sha256: f9983a8ea03531f2c14bce76c870ca325c0fddf0c4e872bff1f78bc52624179c + md5: 6aa9c9de5542ecb07fdda9ca626252d8 + sha256: 949d84ceea543802c1e085b2aa58f1d6cb5dd8cec5a9abaaf4e8ac65d6094b3a manager: conda name: libdeflate optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.17-h0b41bf4_0.conda - version: '1.17' + url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.18-h0b41bf4_0.conda + version: '1.18' - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -612,6 +599,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2 version: '4.33' +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 6305a3dd2752c76335295da4e581f2fd + sha256: 74c98a563777ae2ad71f1f74d458a8ab043cee4a513467c159ccf159d0e461f3 + manager: conda + name: libexpat + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.5.0-hcb278e6_1.conda + version: 2.5.0 - category: main dependencies: libgcc-ng: '>=12' @@ -648,6 +647,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-h166bdaf_0.tar.bz2 version: '1.17' +- category: main + dependencies: + libgcc-ng: '>=12' + hash: + md5: 1edd9e67bdb90d78cea97733ff6b54e6 + sha256: b19de7bda34eac4fa931be11fa8d7640cdf1441dfd51c91786586a4a4c64c92f + 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 + version: 2.1.5.1 - category: main dependencies: libgcc-ng: '>=9.4.0' @@ -736,16 +747,16 @@ package: version: 0.9.10 - category: main dependencies: - libgcc-ng: '>=9.3.0' + libgcc-ng: '>=12' hash: - md5: 772d69f030955d9646d3d0eaf21d859d - sha256: 54f118845498353c936826f8da79b5377d23032bcac8c4a02de2019e26c3f6b3 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 manager: conda name: libuuid optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2 - version: 2.32.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + version: 2.38.1 - category: main dependencies: libgcc-ng: '>=12' @@ -762,14 +773,14 @@ package: dependencies: libgcc-ng: '>=12' hash: - md5: ac2ccf7323d21f2994e4d1f5da664f37 - sha256: 221f2e138dd264b7394b88f08884d93825d38800a51415059e813c02467abfd1 + md5: 0d4a7508d8c6c65314f2b9c1f56ad408 + sha256: ac3e073ea77803da71eb77e7fcef07defb345bda95eee3327c73ddf85b5714da manager: conda name: libwebp-base optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.4-h166bdaf_0.tar.bz2 - version: 1.2.4 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.3.0-h0b41bf4_0.conda + version: 1.3.0 - category: main dependencies: libgcc-ng: '>=12' @@ -954,15 +965,15 @@ package: version: '6.0' - category: main dependencies: - libgcc-ng: '>=7.3.0' + libgcc-ng: '>=12' hash: - md5: 2e5f1a8199794b21c9472c1a7f27e21a - sha256: a3ee6c02932fbee32babe39fa6bda9f781d6dc17122d2a90e62ff2b6866a5de8 + md5: 76d6bc123c1c75bf034c412856fcc935 + sha256: e94d0d5f75a5f58165ad8ac64a25df851c77ec6e9bf626c16807dcbd740226c8 manager: conda name: which optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/which-2.21-h516909a_0.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/which-2.21-h0b41bf4_1.conda version: '2.21' - category: main dependencies: @@ -1135,6 +1146,19 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/dtc-1.6.1-h166bdaf_2.tar.bz2 version: 1.6.1 +- category: main + dependencies: + libexpat: 2.5.0 hcb278e6_1 + libgcc-ng: '>=12' + hash: + md5: 8b9b5aca60558d02ddaa09d599e55920 + sha256: 36dfeb4375059b3bba75ce9b38c29c69fd257342a79e6cf20e9f25c1523f785f + manager: conda + name: expat + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.5.0-hcb278e6_1.conda + version: 2.5.0 - category: main dependencies: gettext: '' @@ -1373,20 +1397,20 @@ package: version: '1.13' - category: main dependencies: - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' hash: - md5: bb808b654bdc3c783deaf107a2ffb503 - sha256: d4170f1fe356768758b13a51db123f990bff81b0eae0d5a0ba11c7ca6b9536f4 + md5: 241845899caff54ac1d2b3102ad988cf + sha256: 624b6e29e23a51353cff2aff7364c42b831139afd131d239e79f60aea4dae887 manager: conda name: libxml2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.10.3-hca2bb57_4.conda - version: 2.10.3 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.10.4-hfdac1af_0.conda + version: 2.10.4 - category: main dependencies: libgcc-ng: '>=7.3.0' @@ -1472,14 +1496,14 @@ package: libgcc-ng: '>=12' ncurses: '>=6.3,<7.0a0' hash: - md5: db2ebbe2943aae81ed051a6a9af8e0fa - sha256: f5f383193bdbe01c41cb0d6f99fec68e820875e842e6e8b392dbe1a9b6c43ed8 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 manager: conda name: readline optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2 - version: 8.1.2 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + version: '8.2' - category: main dependencies: libgcc-ng: '>=7.5.0' @@ -1589,17 +1613,17 @@ package: version: '2.71' - category: main dependencies: - libgcc-ng: '>=10.3.0' - readline: '>=8.1,<9.0a0' + libgcc-ng: '>=12' + readline: '>=8.2,<9.0a0' hash: - md5: 54d1a374b75f14ecc58aea8c4236c0c3 - sha256: 6415903ad8774fc0f1bf5b156ae0b6f9988427a0f14bb35467c5938f05fe8707 + md5: 23b559a791d63ba4f51906763eb6bc53 + sha256: a7b2ea50068d86ac6e3749f76b118b15947d3f5ce48535eb5ab2ff7e22659c49 manager: conda name: bash optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.1.16-hd863ed2_0.tar.bz2 - version: 5.1.16 + url: https://conda.anaconda.org/conda-forge/linux-64/bash-5.2.15-hfbf034d_0.conda + version: 5.2.15 - category: main dependencies: flex: '' @@ -1685,13 +1709,13 @@ package: dependencies: gcc_impl_linux-64: 12.2.0.* hash: - md5: b4d86475bd1a21d139ea78770f606471 - sha256: 3cfb989723f8e115d35553c2b1d899b0f4185fc0551a996b9ff4037083a36432 + md5: c241b4f6676222c2feefc9dc4b9d1728 + sha256: f4b4184cc3e0864abadfc5b06ae869b479e736ff1dc46723967256d11b5bc7c4 manager: conda name: gcc optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.2.0-h26027b1_11.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/gcc-12.2.0-h26027b1_12.conda version: 12.2.0 - category: main dependencies: @@ -1782,14 +1806,14 @@ package: libzlib: '>=1.2.13,<1.3.0a0' pcre2: '>=10.40,<10.41.0a0' hash: - md5: ed5349aa96776e00b34eccecf4a948fe - sha256: 3cbad3d63cff2dd9ac1dc9cce54fd3d657f3aff53df41bfe5bae9d760562a5af + md5: 984fc0159591041a411d96718e7073d0 + sha256: afac276054c6fc2959347e7e1da211554f5cc4efbdda6d1f29b6d98919eae833 manager: conda name: libglib optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.74.1-h606061b_1.tar.bz2 - version: 2.74.1 + url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.76.1-ha491796_0.conda + version: 2.76.1 - category: main dependencies: libblas: 3.9.0 16_linux64_openblas @@ -1820,23 +1844,39 @@ package: version: 15.0.7 - category: main dependencies: - jpeg: '>=9e,<10a' - lerc: '>=4.0.0,<5.0a0' - libdeflate: '>=1.17,<1.18.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' - libwebp-base: '>=1.2.4,<2.0a0' + libxml2: '>=2.10.3,<2.11.0a0' + libzlib: '>=1.2.13,<1.3.0a0' + zstd: '>=1.5.2,<1.6.0a0' + hash: + md5: 716f4c806c384ee7bf1647814516c241 + sha256: 95a7e646c035b2515c69af0c47acf1840557160123f8ee6441d8b0f254098342 + manager: conda + name: libllvm16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libllvm16-16.0.1-hadd5161_0.conda + version: 16.0.1 +- category: main + dependencies: + lerc: '>=4.0.0,<5.0a0' + libdeflate: '>=1.18,<1.19.0a0' + libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' + libstdcxx-ng: '>=12' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' xz: '>=5.2.6,<6.0a0' zstd: '>=1.5.2,<1.6.0a0' hash: - md5: 2e648a34072eb39d7c4fc2a9981c5f0c - sha256: e3e18d91fb282b61288d4fd2574dfa31f7ae90ef2737f96722fb6ad3257862ee + md5: 4e5ee4b062c21519efbee7e2ae608748 + sha256: caacb23e1b95fbdd8115be69228f9c82068ed87bf57f055027e31d093ae6a1a2 manager: conda name: libtiff optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-h6adf6a1_2.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.5.0-ha587672_6.conda version: 4.5.0 - category: main dependencies: @@ -1881,20 +1921,20 @@ package: libuuid: '>=2.32.1,<3.0a0' libzlib: '>=1.2.13,<1.3.0a0' ncurses: '>=6.3,<7.0a0' - openssl: '>=3.0.7,<4.0a0' - readline: '>=8.1.2,<9.0a0' + openssl: '>=3.1.0,<4.0a0' + readline: '>=8.2,<9.0a0' tk: '>=8.6.12,<8.7.0a0' tzdata: '' xz: '>=5.2.6,<6.0a0' hash: - md5: 3cb3e91b3fe66baa68a12c85f39b9b40 - sha256: 073878d7cc9c7e25cf04983d02e6d44b531d47e0166258cbce964dd78bb716a9 + md5: de25afc7041c103c7f510c746bb63435 + sha256: 67748307da3fa057d17d4e991f3c60f87595a517b98f4b323a17b5f3dc287159 manager: conda name: python optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.9-he550d4f_0_cpython.conda - version: 3.10.9 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.10.10-he550d4f_0_cpython.conda + version: 3.10.10 - category: main dependencies: libgcc-ng: '>=12' @@ -1990,14 +2030,14 @@ package: dependencies: python: '>=3.6' hash: - md5: b3c15cb1d45fd10bc6f652bbc51e023a - sha256: 8dbc6de55113ea67a64f0be5d16ba939d1b58a25dbd9a5cc62b571cef24ef85c + md5: 99b19895abe40280358488acb9589532 + sha256: 2b273efc522834e4c8563da7998b9b683eed467660fe8a5a3c24d58aaa85a9cb manager: conda name: argcomplete optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.0.2-pyhd8ed1ab_0.conda - version: 3.0.2 + url: https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.0.5-pyhd8ed1ab_0.conda + version: 3.0.5 - category: main dependencies: libgcc-ng: '>=12' @@ -2203,14 +2243,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 6f90f1dc834447823b11d155726fcb37 - sha256: 6a6901f20c5b4d81aebd25a0645b3578ebb6a323f9fd7e87ee05ecbcfe19069e + md5: 650f18a56f366dbf419c15b543592c2d + sha256: 68db3a6280d6786be76f2c7c6cf41dd878c5d1a24f5de10f7f0af82c6fcfade6 manager: conda name: filelock optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.10.0-pyhd8ed1ab_0.conda - version: 3.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.12.0-pyhd8ed1ab_0.conda + version: 3.12.0 - category: main dependencies: expat: '>=2.5.0,<3.0a0' @@ -2245,29 +2285,30 @@ package: dependencies: python: '>=3.8' hash: - md5: 0db48a2f5a68e28e5af8d3df276f2255 - sha256: dfcee90620d13f4f667664620191d780c79ec7e9ba9908cd771d24a1361e0cc9 + md5: a993e42df87a292d8fd7396a2e2a8d75 + sha256: c2a5db01537aae91a54dbd163b85421de2b623c75803af4e38ea01ba000317d1 manager: conda name: fsspec optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.3.0-pyhd8ed1ab_1.conda - version: 2023.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/fsspec-2023.4.0-pyh1a96a4e_0.conda + version: 2023.4.0 - category: main dependencies: - jpeg: '>=9e,<10a' libgcc-ng: '>=12' libglib: '>=2.74.1,<3.0a0' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' + libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 1a109126a43003d65b39c1cad656bc9b - sha256: a27f49d85e0a730374cc77606e9484b23b0f3edf32df1994b6d7ff5dd44aef92 + md5: ee8220db21db8094998005990418fe5b + sha256: 7acc699871310e9a89aaa7e90de9ac949e2fa649232c8a8dfcafa67e8f36a266 manager: conda name: gdk-pixbuf optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h05c8ddd_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.10-h6b639ba_2.conda version: 2.42.10 - category: main dependencies: @@ -2305,13 +2346,13 @@ package: gcc: 12.2.0.* gxx_impl_linux-64: 12.2.0.* hash: - md5: 2b54322e0dbb1345d64913e8b20b7d7c - sha256: f6c390055f2846d6013160c41dece0973daf577c5f1aaa73ff5dcf597b35d0ec + md5: 56e0d282569b6cd349035a1bb5efae47 + sha256: b428f0af395194cb327fb212167efc3a837866d11b9f1a8bbad7e953c595c6cb manager: conda name: gxx optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.2.0-h26027b1_11.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/gxx-12.2.0-h26027b1_12.conda version: 12.2.0 - category: main dependencies: @@ -2439,17 +2480,17 @@ package: version: 1.4.4 - category: main dependencies: - jpeg: '>=9e,<10a' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libtiff: '>=4.5.0,<4.6.0a0' hash: - md5: aa8840cdf17ef0c6084d1e24abc7a28b - sha256: 443e926b585528112ec6aa4d85bf087722914ed8d85a2f75ae47c023c55c4238 + md5: 980d8aca0bc23ca73fa8caa3e7c84c28 + sha256: 0d88e0e7f8dbf8f01788e21dd63dd49b89433ce7dfd10f53839441396f6481cd manager: conda name: lcms2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-hfd0df8a_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.15-haa2dc70_1.conda version: '2.15' - category: main dependencies: @@ -2469,18 +2510,31 @@ package: - category: main dependencies: libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: a3a0f7a6f0885f5e1e0ec691566afb77 - sha256: e48481c37d02aefeddcfac20d48cf13b838c5f7b9018300fa7eac404d30f3d7f + md5: 2c00ecf8081a8f23043b055a68d7ba90 + sha256: 5f3eb78832674b8038dd65c80d09837a01f3300bf516370fc16650f33b8b87ed + manager: conda + name: libclang-cpp16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp16-16.0.1-default_h62803fd_0.conda + version: 16.0.1 +- category: main + dependencies: + libgcc-ng: '>=12' + libllvm16: '>=16.0.1,<16.1.0a0' + libstdcxx-ng: '>=12' + hash: + md5: 48c2eb0c9988c76ad34c47910fee3077 + sha256: aa4a685e98221cee06b6de93c9ac8efc329c648fdbbffbdd02f41cb1d228b3d8 manager: conda name: libclang13 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-15.0.7-default_h3e3d535_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-16.0.1-default_h9b593c0_0.conda + version: 16.0.1 - category: main dependencies: krb5: '>=1.20.1,<1.21.0a0' @@ -2542,20 +2596,20 @@ package: - category: main dependencies: giflib: '>=5.2.1,<5.3.0a0' - jpeg: '>=9e,<10a' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' hash: - md5: 77003f63d1763c1e6569a02c1742c9f4 - sha256: 43d563a16fe9db32b7d0be8d89968005f21139e9285dfe1fbfe9ae6647f1cc9f + md5: 9cfd7ad6e1539ca1ad172083586b3301 + sha256: 461fe2c0279309c21f206f114f3bd6592e906ef6f8cc181b2e28482941b8b925 manager: conda name: libwebp optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.4-h1daa5a0_1.conda - version: 1.2.4 + url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.3.0-hb47c5f0_0.conda + version: 1.3.0 - category: main dependencies: python: '' @@ -2697,14 +2751,14 @@ package: dependencies: python: '>=3.7' hash: - md5: 1ff2e3ca41f0ce16afec7190db28288b - sha256: 00288f5e5e841711e8b8fef1f1242c858d8ef99ccbe5d7e0df4789d5d8d40645 + md5: 91cda59e66e1e4afe9476f8ef98f5c30 + sha256: ded536a96a00d45a693dbc2971bb688248324dadd129eddda2100e177583d768 manager: conda name: packaging optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.0-pyhd8ed1ab_0.conda - version: '23.0' + url: https://conda.anaconda.org/conda-forge/noarch/packaging-23.1-pyhd8ed1ab_0.conda + version: '23.1' - category: main dependencies: python: '>=2.7' @@ -2760,14 +2814,14 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: c3c55664e9becc48e6a652e2b641961f - sha256: efaf186bc3be5074ff44a25372ec0f21564c0a8f9cd3ed3e8378389745999be5 + md5: b0f0a014fc04012c05f39df15fe270ce + sha256: 6864a95001b67413f7d06e35dc2ef0f13afb8c93cde8e826321453eac1bf1991 manager: conda name: psutil optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.4-py310h5764c6d_0.tar.bz2 - version: 5.9.4 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.5-py310h1fa729e_0.conda + version: 5.9.5 - category: main dependencies: python: '' @@ -2806,6 +2860,18 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2 version: '2.21' +- category: main + dependencies: + python: '>=3.7' + hash: + md5: d316679235612869eba305aa7d41d9bf + sha256: 1bddeb54863c77ed5613b535a3e06a3a16b55786301a5e28c9bf011656bda686 + manager: conda + name: pygments + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.15.1-pyhd8ed1ab_0.conda + version: 2.15.1 - category: main dependencies: python: '>=3.6' @@ -2873,14 +2939,26 @@ package: dependencies: python: '>=3.6' hash: - md5: f59d49a7b464901cf714b9e7984d01a2 - sha256: 93cfc7a92099e26b0575a343da4a667b52371cc38e4dee4ee264dc041ef77bac + md5: 2590495f608a63625e165915fb4e2e34 + sha256: 0108888507014fb24573c31e4deceb61c99e63d37776dddcadd7c89b2ecae0b6 + 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' +- category: main + dependencies: + python: '>=3.6' + hash: + md5: d3076b483092a435832603243567bc31 + sha256: e4999484f21763ca4b8f92c95b22cb6d1edc1b61d0a2bb073ee2bd11f39401b9 manager: conda name: pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytz-2022.7.1-pyhd8ed1ab_0.conda - version: 2022.7.1 + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2023.3-pyhd8ed1ab_0.conda + version: '2023.3' - category: main dependencies: __unix: '' @@ -2961,14 +3039,14 @@ package: dependencies: python: '>=3.7' hash: - md5: e18ed61c37145bb9b48d1d98801960f7 - sha256: a5c48b1fc7c89c5c937475e9434a63af7ce2e591f8e51afd56e3b2e232a9989d + md5: 6c443cccff3daa3d83b2b807b0a298ce + sha256: 6595024174d318848468c0e61899ff3c2f08a3545c85727b9a2871d6f8d0062a manager: conda name: setuptools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.0-pyhd8ed1ab_0.conda - version: 67.6.0 + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-67.6.1-pyhd8ed1ab_0.conda + version: 67.6.1 - category: main dependencies: python: '' @@ -3119,50 +3197,50 @@ package: python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: be4a201ac582c11d89ed7d15b3157cc3 - sha256: 7ca198ff3c4e9ab0a8c19fbd8dafe4ae7ff52dc12c24fa5abba88785269dc5d9 + md5: 7c08afb0f02d5673de8e4f6f535663a8 + sha256: b9c3eec0f102b04d893911be6761f13f653d02b12f55fd5a108959903fbac8ab manager: conda name: tornado optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py310h5764c6d_1.tar.bz2 - version: '6.2' + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.3-py310h1fa729e_0.conda + version: '6.3' - category: main dependencies: python: '>=3.6' hash: - md5: a4d6202101f04b76d545530728e696bf - sha256: 8e490e1d390be0ab59b538199b4cedec027c68ebaa3add554a6316a79d5a1dbe + md5: 2010a97e7298197221abc6295790ff62 + sha256: 5fb56cd0652e7cffc1141c66b09644f1dde588ef6dddcb47849a62d7b0186846 manager: conda name: types-pytz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2022.7.1.2-pyhd8ed1ab_0.conda - version: 2022.7.1.2 + url: https://conda.anaconda.org/conda-forge/noarch/types-pytz-2023.3.0.0-pyhd8ed1ab_0.conda + version: 2023.3.0.0 - category: main dependencies: python: '>=3.6' hash: - md5: d398b385822d9425fb21c6c8f89dbc9e - sha256: 32233b8d558c118b9d856c6b7e52499c36b9f867bbf76b5c8b7edfb7655230cf + md5: 0c0c5edec27d8284bf75023737f74823 + sha256: 10290d04934693214ea9a3caaefac35c3fdfc72094ffa8b0f063141bef469bbe manager: conda name: types-pyyaml optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.8-pyhd8ed1ab_0.conda - version: 6.0.12.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-pyyaml-6.0.12.9-pyhd8ed1ab_0.conda + version: 6.0.12.9 - category: main dependencies: python: '>=3.6' hash: - md5: 617bb6391b4b676f9b062aff31ef978d - sha256: 17f157579b6f0e9c2ef56e3d9c74eef625717865f8503101317cedc69f059b46 + md5: 1c44c106ac42fde5774d31e37220f4df + sha256: b9df570c65f14a002a3972bf9e9ed0c0ef8ff6a29087ba8d6be6493bfd1ea8ef manager: conda name: types-urllib3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-urllib3-1.26.25.8-pyhd8ed1ab_0.conda - version: 1.26.25.8 + url: https://conda.anaconda.org/conda-forge/noarch/types-urllib3-1.26.25.10-pyhd8ed1ab_0.conda + version: 1.26.25.10 - category: main dependencies: python: '>=3' @@ -3219,24 +3297,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/verilator-4.226-he0ac6c6_1.tar.bz2 version: '4.226' -- category: main - dependencies: - gettext: '>=0.21.1,<1.0a0' - libgcc-ng: '>=12' - libstdcxx-ng: '>=12' - ncurses: '>=6.3,<7.0a0' - perl: '>=5.32.1,<5.33.0a0 *_perl5' - python: '>=3.10,<3.11.0a0' - python_abi: 3.10.* *_cp310 - hash: - md5: 7cd55a1679e39c90e105c216d12af54b - sha256: fc189bde7d79ec70de87f176756b6cc04d9008c3e0de5d66f8832f7f9c85274c - manager: conda - name: vim - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.0814-py310pl5321hade1898_0.tar.bz2 - version: 9.0.0814 - category: main dependencies: python: '' @@ -3261,18 +3321,6 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.5.1-pyhd8ed1ab_0.conda version: 1.5.1 -- category: main - dependencies: - python: '>=3.7' - hash: - md5: 6dfc61103f2c33a6c875b93d82875c10 - sha256: 3e08e7a72a01fa53e4d2e2dedde32b3300dc9d12c91d7b5248d458ecfa0bd439 - manager: conda - name: werkzeug - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.1.2-pyhd8ed1ab_1.tar.bz2 - version: 2.1.2 - category: main dependencies: python: '>=3.7' @@ -3353,6 +3401,23 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2 version: 0.9.10 +- category: main + dependencies: + libgcc-ng: '>=9.3.0' + xorg-kbproto: '' + xorg-libice: 1.0.* + xorg-libsm: 1.2.* + xorg-libx11: '>=1.7.0,<2.0a0' + xorg-xproto: '' + hash: + md5: 60d6eec5273f1c9af096c10c268912e3 + sha256: 25bfc4d86df3498b88aac2f02ecf65e739bf99a687805c31a635df6f2e60a163 + manager: conda + name: xorg-libxt + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.2.1-h7f98852_2.tar.bz2 + version: 1.2.1 - category: main dependencies: python: '>=3.7' @@ -3406,30 +3471,30 @@ package: version: 2.12.1 - category: main dependencies: - fontconfig: '>=2.13.96,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' - libglib: '>=2.72.1,<3.0a0' - libpng: '>=1.6.38,<1.7.0a0' + libglib: '>=2.74.1,<3.0a0' + libpng: '>=1.6.39,<1.7.0a0' libxcb: '>=1.13,<1.14.0a0' - libzlib: '>=1.2.12,<1.3.0a0' + libzlib: '>=1.2.13,<1.3.0a0' pixman: '>=0.40.0,<1.0a0' xorg-libice: '' xorg-libsm: '' - xorg-libx11: '' - xorg-libxext: '' + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' xorg-libxrender: '' - zlib: '>=1.2.12,<1.3.0a0' + zlib: '' hash: - md5: d1a88f3ed5b52e1024b80d4bcd26a7a0 - sha256: f062cf56e6e50d3ad4b425ebb3765ca9138c6ebc52e6a42d1377de8bc8d954f6 + md5: 0c944213e40c9e4aa32292776b9c6903 + sha256: 0be3064cb30e3e69a47370abae85b2780cd81fbca00cbd17076d40c0f6302fdb manager: conda name: cairo optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-ha61ee94_1014.tar.bz2 + url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h35add3b_1015.conda version: 1.16.0 - category: main dependencies: @@ -3463,6 +3528,21 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15-15.0.7-default_had23c3d_1.conda version: 15.0.7 +- category: main + dependencies: + libclang-cpp16: '>=16.0.1,<16.1.0a0' + libgcc-ng: '>=12' + libllvm16: '>=16.0.1,<16.1.0a0' + libstdcxx-ng: '>=12' + hash: + md5: cc2343dad8afb0b3d9cc368da2d58e22 + sha256: a3ae4c803ff00cdf74984c02ac8279e39861bb4aad16854c18a81792936714ac + manager: conda + name: clang-format-16 + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-16-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: click: '' @@ -3493,8 +3573,9 @@ package: - category: main dependencies: bzip2: '>=1.0.8,<2.0a0' - expat: '>=2.5.0,<3.0a0' - libcurl: '>=7.88.1,<8.0a0' + expat: '' + libcurl: '>=7.88.1,<9.0a0' + libexpat: '>=2.5.0,<3.0a0' libgcc-ng: '>=12' libstdcxx-ng: '>=12' libuv: '' @@ -3505,14 +3586,14 @@ package: zlib: '' zstd: '>=1.5.2,<1.6.0a0' hash: - md5: 02142080aee43c8ef90db543ffbc13dd - sha256: cbd17c0375a021b7de854e0841f3f1b28b1359bc52bdc0ba5aabaee0f65a0b7d + md5: 6edec767268ad8451d27bb65f38c7ea4 + sha256: 3bb9d7c35d5297d85516769eb0517c83f7fc2ed7ab944a8c028871bb375bed51 manager: conda name: cmake optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.26.0-h077f3f9_0.conda - version: 3.26.0 + 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' @@ -3565,7 +3646,7 @@ package: dependencies: bzip2: '>=1.0.8,<2.0a0' libarchive: '>=3.5.2,<3.6.0a0' - libcurl: '>=7.82.0,<8.0a0' + libcurl: '>=7.82.0,<9.0a0' libgcc-ng: '>=10.3.0' libmicrohttpd: '>=0.9.75,<0.10.0a0' libstdcxx-ng: '>=10.3.0' @@ -3591,14 +3672,14 @@ package: python_abi: 3.10.* *_cp310 unicodedata2: '>=14.0.0' hash: - md5: 3b354798e12b65fa8ebe1d189de6a507 - sha256: 20b42570005cd3f6d961efa3ac1e389ef763a94224406a6f33121824390f5b71 + md5: 4f39f656d6ff2761d698e69af952be82 + sha256: 9c3765958a18d9bfc33e42d78a554aff00041d3da474db3045d6ce95ef6a4643 manager: conda name: fonttools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.39.2-py310h1fa729e_0.conda - version: 4.39.2 + url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.39.3-py310h1fa729e_0.conda + version: 4.39.3 - category: main dependencies: python: '>=3.4' @@ -3644,14 +3725,14 @@ package: python: '>=3.8' zipp: '>=0.5' hash: - md5: 30b3127c385ca2ed5ef87f3d53d466bc - sha256: 4fe127138487a2aa171862407605f0cd601d005f85e0eee7f38c770b407e4145 + md5: ab2f9216e346f43599af3f7839931da1 + sha256: 1854da61b10c601bae3497e0d457b1bb029715d4bcabb5594199519de7c72f5a manager: conda name: importlib-metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.1.0-pyha770c72_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-6.5.0-pyha770c72_0.conda + version: 6.5.0 - category: main dependencies: more-itertools: '' @@ -3723,26 +3804,26 @@ package: - category: main dependencies: expat: '>=2.5.0,<3.0a0' - fontconfig: '>=2.14.1,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' - icu: '>=70.1,<71.0a0' - jpeg: '>=9e,<10a' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libtiff: '>=4.5.0,<4.6.0a0' libwebp: '' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' zlib: '' hash: - md5: 82ef57611ace65b59db35a9687264572 - sha256: 6674781023188deeda7752e5dc429a54fd1639c9d61cbb25296cbbb55367884a + md5: ef06bee47510a7f5db3c2297a51d6ce2 + sha256: 6335db21afc72f86cf4ee0298acde3af950087db2b24df3d28a81c7d24574244 manager: conda name: libgd optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5aea950_4.conda + url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hfa28ad5_6.conda version: 2.3.3 - category: main dependencies: @@ -3769,14 +3850,14 @@ package: tomli: '>=1.1.0' typing_extensions: '>=3.10' hash: - md5: 7f519094ddab6b939cf6dae229c3b17b - sha256: d58fd7f0c34995d5dd829eff8b4261e782b65a6bb50f072919f0d0002fd35a77 + md5: 7696ac5b7bc40cd66e483f16ee652243 + sha256: 20901dc450437d7e583c1c8e63321bdaf105e6703a41f9d3a6d5551a0707bcfc manager: conda name: mypy optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.1.1-py310h1fa729e_0.conda - version: 1.1.1 + url: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.2.0-py310h1fa729e_0.conda + version: 1.2.0 - category: main dependencies: python: 2.7|>=3.7 @@ -3793,11 +3874,11 @@ package: - category: main dependencies: freetype: '>=2.12.1,<3.0a0' - jpeg: '>=9e,<10a' - lcms2: '>=2.14,<3.0a0' + lcms2: '>=2.15,<3.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libtiff: '>=4.5.0,<4.6.0a0' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libxcb: '>=1.13,<1.14.0a0' libzlib: '>=1.2.13,<1.3.0a0' openjpeg: '>=2.5.0,<3.0a0' @@ -3805,60 +3886,28 @@ package: python_abi: 3.10.* *_cp310 tk: '>=8.6.12,<8.7.0a0' hash: - md5: bbea829b541aa15df5c65bd40b8c1981 - sha256: 6d17af4c8bc8d8668d033725dd4691cfac86fdf0f46f655ab6f5df3e3ae0bb7c + md5: 58ea77873883be5b59328e29ca50997e + sha256: ca081b2a1af2dcab802dece28ac1a95e873c9ee278bbd50a5c2882b621dd0d99 manager: conda name: pillow optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-9.4.0-py310h023d228_1.conda - version: 9.4.0 + url: https://conda.anaconda.org/conda-forge/linux-64/pillow-9.5.0-py310h065c6d2_0.conda + version: 9.5.0 - category: main dependencies: python: '>=3.7' setuptools: '' wheel: '' hash: - md5: 8025ca83b8ba5430b640b83917c2a6f7 - sha256: e1698cbf4964cd60a2885c0edbc654133cd0db5ac4cb568412250e577dbc42ad + md5: 9ccbacfd1cbfa0be00cc345fe5ad8816 + sha256: 781992f04a8c765b1ad29b54fc9f76c12b0864f9defd2869eeb5edff15b51546 manager: conda name: pip optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pip-23.0.1-pyhd8ed1ab_0.conda - version: 23.0.1 -- category: main - dependencies: - python: '>=3.6' - setuptools: '' - hash: - md5: c78cd16b11cd6a295484bd6c8f24bea1 - sha256: e8710e24f60b6a97289468f47914e53610101755088bc237621cc1980edbfcd9 - manager: conda - name: pygments - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.14.0-pyhd8ed1ab_0.conda - version: 2.14.0 -- category: main - dependencies: - attrs: '>=19.2.0' - colorama: '' - exceptiongroup: '' - iniconfig: '' - packaging: '' - pluggy: '>=0.12,<2.0' - python: '>=3.8' - tomli: '>=1.0.0' - hash: - md5: 60958b19354e0ec295b43f6ab5cfab86 - sha256: d074ef1e2ffc3334927c281e4b79aebfa8eefd2d1588c3830a45ba4bce3e6ea9 - manager: conda - name: pytest - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.2.2-pyhd8ed1ab_0.conda - version: 7.2.2 + url: https://conda.anaconda.org/conda-forge/noarch/pip-23.1-pyhd8ed1ab_0.conda + version: '23.1' - category: main dependencies: python: '>=3.6' @@ -3922,17 +3971,17 @@ package: version: 0.17.21 - category: main dependencies: - python: '>=3.6' - typing: '>=3.6,<4.0' + python: '>=3.7' + typing: '>=3.7,<4.0' hash: - md5: 471bf9e605820b59988e830382b8d654 - sha256: e8b3bc2203266636740ce10536ef951c52b53b43bfed3b938117547efc47e374 + md5: 547d15e217a398578900787bf39ef01d + sha256: fd3747a968670b3db2e017102860d2087d193fdd99ebd17c6496ff4ec9287a5b manager: conda name: tomlkit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.6-pyha770c72_0.tar.bz2 - version: 0.11.6 + url: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.11.7-pyha770c72_0.conda + version: 0.11.7 - category: main dependencies: colorama: '' @@ -3951,14 +4000,14 @@ package: python: '>=3.6' types-urllib3: <1.27 hash: - md5: 35221b6d2f75276b786fb53fac5c4c35 - sha256: 54b0949b6fcdbdc36474dd3403a926b55331de6c1ea543c1d87f444f7fa8702a + md5: 856c0ae2398368dba2555354564d5228 + sha256: caacc1f5c91c39754611cd74cdc3b34a87efa5963d38c937fc927960586c18dd manager: conda name: types-requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.28.11.15-pyhd8ed1ab_0.conda - version: 2.28.11.15 + url: https://conda.anaconda.org/conda-forge/noarch/types-requests-2.28.11.17-pyhd8ed1ab_0.conda + version: 2.28.11.17 - category: main dependencies: typing_extensions: 4.5.0 pyha770c72_0 @@ -3971,6 +4020,39 @@ package: platform: linux-64 url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.5.0-hd8ed1ab_0.conda version: 4.5.0 +- category: main + dependencies: + gettext: '>=0.21.1,<1.0a0' + libgcc-ng: '>=12' + libstdcxx-ng: '>=12' + ncurses: '>=6.3,<7.0a0' + perl: '>=5.32.1,<5.33.0a0 *_perl5' + python: '>=3.10,<3.11.0a0' + python_abi: 3.10.* *_cp310 + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxt: '' + hash: + md5: 895f3629b577b0581598259037f40f2a + sha256: b208a6e91286a20c7ea0b21c15c56092051db953004efd20efed6e5624d360ca + manager: conda + name: vim + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/vim-9.0.1425-py310pl5321he38944a_0.conda + version: 9.0.1425 +- category: main + dependencies: + markupsafe: '>=2.1.1' + python: '>=3.7' + hash: + md5: 94dea682ba9d8e091e1f46872886fb1f + sha256: 38f68541580b74ed91396a67766fb96088f7b161bfd203675ed7a257d642e2e3 + manager: conda + name: werkzeug + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/werkzeug-2.2.3-pyhd8ed1ab_0.conda + version: 2.2.3 - category: main dependencies: libgcc-ng: '>=9.3.0' @@ -4050,37 +4132,36 @@ package: version: 0.7.0 - category: main dependencies: - clang-format-15: 15.0.7 default_had23c3d_1 - libclang-cpp15: '>=15.0.7,<15.1.0a0' + clang-format-16: 16.0.1 default_h62803fd_0 + libclang-cpp16: '>=16.0.1,<16.1.0a0' libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: 841d93c086f15b68916b3455711c2638 - sha256: 517c759576600decafd005b14f3df9660b525fdb85645a0c588ea979b62bdc5e + md5: 00d5150c0a2e28a2d32eceb23425b989 + sha256: 6205ff6e3545d6084103a9885bb173af652326c6927ac5008154ea664e3981c1 manager: conda name: clang-format optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-15.0.7-default_had23c3d_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-format-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: cffi: '>=1.12' libgcc-ng: '>=12' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.0,<4.0a0' python: '>=3.10,<3.11.0a0' python_abi: 3.10.* *_cp310 hash: - md5: 99dc5a02a8b16cd88ca9a12354496e78 - sha256: 23d3015849c45febab3085ecf2cc193c0966c1e2348756722b776f1cedea8596 + md5: 991a12eccbca3c9897c62f44b1104a54 + sha256: 692b0394bb3104ec117faa0130d67109a0132e9bd57084ebfde81fc2b9790e58 manager: conda name: cryptography optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-39.0.2-py310h34c0648_0.conda - version: 39.0.2 + url: https://conda.anaconda.org/conda-forge/linux-64/cryptography-40.0.2-py310h34c0648_0.conda + version: 40.0.2 - category: main dependencies: cloudpickle: '' @@ -4102,16 +4183,16 @@ package: itsdangerous: '>=2.0' jinja2: '>=3.0' python: '>=3.7' - werkzeug: '>=2.0' + werkzeug: '>=2.2.2' hash: - md5: 4b95b1c750d6d737905cdb447f097b9c - sha256: de8f2eb0b86e28b672839ae4ad0032eda30e09fee28a19b79159b35673f25a42 + md5: 917e433886a05676857035483214c70c + sha256: f38a7b55f17c5ad47464d4f02455e2ba722e9e08e2c3dc8a7f9fdd82188b72d8 manager: conda name: flask optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/flask-2.1.3-pyhd8ed1ab_0.tar.bz2 - version: 2.1.3 + url: https://conda.anaconda.org/conda-forge/noarch/flask-2.2.3-pyhd8ed1ab_0.conda + version: 2.2.3 - category: main dependencies: curl: '' @@ -4120,17 +4201,17 @@ package: libgcc-ng: '>=12' libiconv: '>=1.17,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - openssl: '>=3.0.8,<4.0a0' + openssl: '>=3.1.0,<4.0a0' pcre2: '>=10.40,<10.41.0a0' perl: 5.* hash: - md5: 70fd89375d9b5ca90c15dcf3662b1b42 - sha256: fba1e93848c20e29d205726142fb37ad7e2be785699f98aac348524080354f6d + md5: 06b9b63f77ee1dea0d3a0c97f839385a + sha256: 3734da309ef157024b69fb01947fa71a04dfd8ca798eba962e8575da9ebfac9a manager: conda name: git optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h693f4a3_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/git-2.40.0-pl5321h3ca6407_1.conda version: 2.40.0 - category: main dependencies: @@ -4151,31 +4232,31 @@ package: cairo: '>=1.16.0,<2.0a0' freetype: '>=2.12.1,<3.0a0' graphite2: '' - icu: '>=70.1,<71.0a0' + icu: '>=72.1,<73.0a0' libgcc-ng: '>=12' libglib: '>=2.74.1,<3.0a0' libstdcxx-ng: '>=12' hash: - md5: 448fe40d2fed88ccf4d9ded37cbb2b38 - sha256: f300fcb390253d6d63346ee71e56f82bc830783d1682ac933fe9ac86f39da942 + md5: 73d2c2d25fdcec40c24929bab9f44831 + sha256: d4bf8a3e23478efefe39ac2d965f44b55cee4058277f2ad7478384e7973fc97f manager: conda name: harfbuzz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-6.0.0-h8e241bc_0.conda + url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-6.0.0-h3ff4399_1.conda version: 6.0.0 - category: main dependencies: - importlib-metadata: '>=6.1.0,<6.1.1.0a0' + importlib-metadata: '>=6.5.0,<6.5.1.0a0' hash: - md5: 90bab1d97fdb6bb40c8e00207bf222dc - sha256: 80a10ad1bacf5bb85d497fd3e5629f5805b6e90ad8c8b923daa3e36729e7429a + md5: 24bfc0314deeea53d54c71de2b436ed6 + sha256: 11c866dd631856dfa043ced5d85b892798a93bd5cd617bce2368a83b90b5c93d manager: conda name: importlib_metadata optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.1.0-hd8ed1ab_0.conda - version: 6.1.0 + url: https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-6.5.0-hd8ed1ab_0.conda + version: 6.5.0 - category: main dependencies: attrs: '>=17.4.0' @@ -4240,17 +4321,18 @@ package: numpy: '>=1.21.6,<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: 467244b0dbb7da40927ac6ee0e9491de - sha256: 289bdc902fb8c536d8fe1297fdc97bb17f01a9b19ad15d96fc8ba0dbe239a379 + md5: 38dd747dcb3403c0958c4f510ed4316e + sha256: 1757d0991592083172a63fc79a576dd16e94cb4a353da4d00ac7280806e5dd30 manager: conda name: pandas optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pandas-1.5.3-py310h9b08913_0.conda - version: 1.5.3 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.0.0-py310h9b08913_0.conda + version: 2.0.0 - category: main dependencies: pip: '' @@ -4267,16 +4349,16 @@ package: - category: main dependencies: python: '>=3.7' - typing-extensions: '>=4.4' + typing-extensions: '>=4.5' hash: - md5: 1d1a27f637808c76dd83e3f469aa6f7e - sha256: 5875ef7f4b079fe080c10287b13843860bc69a42e457729a8c5dc32cb3563e92 + md5: f10c2cf447ca96f12a326b83c75b8e33 + sha256: 51816d5471cc42059cc7a8616c8899b6fda7347999359c3979fefd0035ab274c manager: conda name: platformdirs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.1.1-pyhd8ed1ab_0.conda - version: 3.1.1 + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-3.2.0-pyhd8ed1ab_0.conda + version: 3.2.0 - category: main dependencies: libgcc-ng: '>=12' @@ -4284,14 +4366,14 @@ package: python_abi: 3.10.* *_cp310 typing-extensions: '>=4.2.0' hash: - md5: d84eeeb2a7ef8ef996bb6acdb5ecdeb6 - sha256: 8ea1a03876dcf6432acd88f15cdb64bf4f985ea54599adef552f376cf68cf7a7 + md5: 6306ca76bc0635d84940349cf8d96264 + sha256: b0d9edaba389b3714bbc59266cfe7e7fef9c7f0bc664f455026455c998129b30 manager: conda name: pydantic optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.6-py310h1fa729e_0.conda - version: 1.10.6 + url: https://conda.anaconda.org/conda-forge/linux-64/pydantic-1.10.7-py310h1fa729e_0.conda + version: 1.10.7 - category: main dependencies: cffi: '>=1.4.1' @@ -4311,43 +4393,36 @@ package: version: 1.5.0 - category: main dependencies: - pytest: '>=3.6.0' - python: '' + colorama: '' + exceptiongroup: '' + importlib-metadata: '>=0.12' + iniconfig: '' + packaging: '' + pluggy: '>=0.12,<2.0' + python: '>=3.8' + tomli: '>=1.0.0' hash: - md5: b6764e23dece9f9cda0469af044fafeb - sha256: bdb25a7daf3efb7255b1a19d7b5d41d7d4d96bc647b8e5f7407ec4dd9e384257 + md5: 547c7de697ec99b494a28ddde185b5a4 + sha256: 42f89db577266b9dc195d09189b92f3af3354fb50c98b1f996c580322dffa8b5 manager: conda - name: pytest-dependency + name: pytest optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-dependency-0.5.1-pyh9f0ad1d_0.tar.bz2 - version: 0.5.1 -- category: main - dependencies: - pytest: '>=5.0' - python: '>=3.7' - hash: - md5: db93caa9fe182f0cd20291aeb22f57ac - sha256: 87bb8edc9976403237a0e6c3bd7b2224c346c95e4c7345971f411aef21593450 - manager: conda - name: pytest-mock - optional: false - platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.10.0-pyhd8ed1ab_0.tar.bz2 - version: 3.10.0 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-7.3.1-pyhd8ed1ab_0.conda + version: 7.3.1 - category: main dependencies: pip: '' python: '>=3.7,<4.0' hash: - md5: 25923bf9620c56f8bc0d4923d870edd8 - sha256: 3f8be46ba1cbd8533d25eba1a5b32062bb9231b16e308bbbc92b5e32177cbdad + md5: fb6a4bb2c52647f4422e8a47d706ef1c + sha256: 092ddd70025bbe90042fb77bc21aa467b6181f486e7137d2c47b72f824688ea9 manager: conda name: types-awscrt optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.13-pyhd8ed1ab_0.conda - version: 0.16.13 + url: https://conda.anaconda.org/conda-forge/noarch/types-awscrt-0.16.15-pyhd8ed1ab_0.conda + version: 0.16.15 - category: main dependencies: cffi: '' @@ -4424,32 +4499,31 @@ package: types-awscrt: '' typing_extensions: '' hash: - md5: 96971bc5cc944a1743fdde0634e55480 - sha256: fee2b0596dd34a70081d745e06f9302dd06fb56dd366e51a302f93c9764126d9 + md5: a2b0b88e5b4bcfdab4c03acd24667046 + sha256: 161c95587e95cedcf2587b1e666827d29c02383e4bbfdc338dfe0f8183af3747 manager: conda name: botocore-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.94-pyhd8ed1ab_0.conda - version: 1.29.94 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-stubs-1.29.115-pyhd8ed1ab_0.conda + version: 1.29.115 - category: main dependencies: - clang-format: 15.0.7 default_had23c3d_1 - libclang: '>=15.0.7,<15.1.0a0' - libclang-cpp15: '>=15.0.7,<15.1.0a0' + clang-format: 16.0.1 default_h62803fd_0 + libclang-cpp16: '>=16.0.1,<16.1.0a0' + libclang13: '>=16.0.1' libgcc-ng: '>=12' - libllvm15: '>=15.0.7,<15.1.0a0' + libllvm16: '>=16.0.1,<16.1.0a0' libstdcxx-ng: '>=12' - libzlib: '>=1.2.13,<1.3.0a0' hash: - md5: c23e2b0154fb2eb92442fa8ecbcf571c - sha256: d9931c1ce5907073de0269666881309cc896267723f38ef269101bd211e49062 + md5: 6fa41767486e911517c03bb069b9f5fa + sha256: a0acf37ed406a66e72577d40b52185488644a9a1ce56a99823c3318f9900260b manager: conda name: clang-tools optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-15.0.7-default_had23c3d_1.conda - version: 15.0.7 + url: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-16.0.1-default_h62803fd_0.conda + version: 16.0.1 - category: main dependencies: python: '>=3.7' @@ -4482,14 +4556,14 @@ package: python: '>=3.6' ukkonen: '' hash: - md5: b5ada314668cded097e08fea86262317 - sha256: 88bcba64d462867b5759e29784cf24685e1e49fffea75452b94d438d6bd9587c + md5: b8d16e273396a0115199a83769a39246 + sha256: 45cbad9e8329b33d348c536ef0c49fb1811261201072e3d536199c106562d607 manager: conda name: identify optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.21-pyhd8ed1ab_0.conda - version: 2.5.21 + url: https://conda.anaconda.org/conda-forge/noarch/identify-2.5.22-pyhd8ed1ab_0.conda + version: 2.5.22 - category: main dependencies: importlib_metadata: '' @@ -4533,31 +4607,31 @@ package: - category: main dependencies: alsa-lib: '>=1.2.8,<1.2.9.0a0' - fontconfig: '>=2.14.1,<3.0a0' + fontconfig: '>=2.14.2,<3.0a0' fonts-conda-ecosystem: '' freetype: '>=2.12.1,<3.0a0' giflib: '>=5.2.1,<5.3.0a0' harfbuzz: '>=6.0.0,<7.0a0' - jpeg: '>=9e,<10a' - lcms2: '>=2.14,<3.0a0' + lcms2: '>=2.15,<3.0a0' libcups: '>=2.3.3,<2.4.0a0' libgcc-ng: '>=12' + libjpeg-turbo: '>=2.1.5.1,<3.0a0' libpng: '>=1.6.39,<1.7.0a0' libstdcxx-ng: '>=12' libzlib: '>=1.2.13,<1.3.0a0' - xorg-libx11: '' - xorg-libxext: '' + xorg-libx11: '>=1.8.4,<2.0a0' + xorg-libxext: '>=1.3.4,<2.0a0' xorg-libxi: '' xorg-libxrender: '' xorg-libxtst: '' hash: - md5: 71a5dfe4a375fc43497cdc6f4aedff9d - sha256: baa527e6b59572e00e68c2362e1771f7741f3f062dac7a8c6365a97f48c04413 + md5: 33527b036cd6d369be12fd772cdd49e4 + sha256: 221de13214f051654177dd331c019a889ab1bbe3b2cf30d5cf17596378740359 manager: conda name: openjdk optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.3-h58dac75_5.conda + url: https://conda.anaconda.org/conda-forge/linux-64/openjdk-17.0.3-h4335b31_6.conda version: 17.0.3 - category: main dependencies: @@ -4596,17 +4670,43 @@ package: version: 3.1.0 - category: main dependencies: - cryptography: '>=38.0.0,<40' + cryptography: '>=38.0.0,<41' python: '>=3.6' hash: - md5: d41957700e83bbb925928764cb7f8878 - sha256: adbf8951f22bfa950b9e24394df1ef1d2b2d7dfb194d91c7f42bc11900695785 + md5: 0b34aa3ab7e7ccb1765a03dd9ed29938 + sha256: 458428cb867f70f2af2a4ed59d382291ea3eb3f10490196070a15d1d71d5432a manager: conda name: pyopenssl optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.0.0-pyhd8ed1ab_0.conda - version: 23.0.0 + url: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-23.1.1-pyhd8ed1ab_0.conda + version: 23.1.1 +- category: main + dependencies: + pytest: '>=3.6.0' + python: '' + hash: + md5: b6764e23dece9f9cda0469af044fafeb + sha256: bdb25a7daf3efb7255b1a19d7b5d41d7d4d96bc647b8e5f7407ec4dd9e384257 + manager: conda + name: pytest-dependency + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-dependency-0.5.1-pyh9f0ad1d_0.tar.bz2 + version: 0.5.1 +- category: main + dependencies: + pytest: '>=5.0' + python: '>=3.7' + hash: + md5: db93caa9fe182f0cd20291aeb22f57ac + sha256: 87bb8edc9976403237a0e6c3bd7b2224c346c95e4c7345971f411aef21593450 + manager: conda + name: pytest-mock + optional: false + platform: linux-64 + url: https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.10.0-pyhd8ed1ab_0.tar.bz2 + version: 3.10.0 - category: main dependencies: cryptography: '' @@ -4670,19 +4770,18 @@ package: - category: main dependencies: distlib: <1,>=0.3.6 - filelock: <4,>=3.4.1 - importlib-metadata: '>=4.8.3' - platformdirs: <4,>=2.4 - python: '>=3.7' + filelock: <4,>=3.11 + platformdirs: <4,>=3.2 + python: '>=3.8' hash: - md5: cb9a711f7c9f3074fe522e5a34481e60 - sha256: 28540cdda9279d7daeb8f2deec6f1128869ba90742a966e488b692e8083c5349 + md5: 054007ab693cb77a029ea4f1f12f34a7 + sha256: acb9f18ef811cda29690d41e0e7c54f7088d35e6b5aa5db6403d13c9eb18336a manager: conda name: virtualenv optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.21.0-pyhd8ed1ab_0.conda - version: 20.21.0 + url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.22.0-pyhd8ed1ab_0.conda + version: 20.22.0 - category: main dependencies: conda-package-streaming: '>=0.7.0' @@ -4748,22 +4847,22 @@ package: version: 23.13.1 - category: main dependencies: - cairo: '>=1.16.0,<2.0.0a0' - gdk-pixbuf: '>=2.42.8,<3.0a0' - gettext: '>=0.19.8.1,<1.0a0' + cairo: '>=1.16.0,<2.0a0' + gdk-pixbuf: '>=2.42.10,<3.0a0' + gettext: '>=0.21.1,<1.0a0' libgcc-ng: '>=12' - libglib: '>=2.70.2,<3.0a0' - libxml2: '>=2.9.14,<2.11.0a0' - pango: '>=1.50.7,<1.51.0a0' + libglib: '>=2.76.1,<3.0a0' + libxml2: '>=2.10.4,<2.11.0a0' + pango: '>=1.50.14,<2.0a0' hash: - md5: 921e53675ed5ea352f022b79abab076a - sha256: 9b81f3854660e902a417e8194b43ed2f5d2a082227df28ba6804c68ac7c16aa0 + md5: 1ec4fab6eb4af1db9056b94265fe19cf + sha256: 6449497e50d2343c6caf73ad9c74f82341e0c22aca3d6f333869e0a069d0c472 manager: conda name: librsvg optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.54.4-h7abd40a_0.tar.bz2 - version: 2.54.4 + url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.56.0-h5cef280_0.conda + version: 2.56.0 - category: main dependencies: jsonschema: '>=3.2.0,<5.0.0' @@ -4789,14 +4888,14 @@ package: pyyaml: '>=5.1' virtualenv: '>=20.10.0' hash: - md5: 9a160452d1d88a9f10c373888f93586b - sha256: 91e104de6854e07a580603a7affb1a6e77823e9d4246486ecfd47d3978839212 + md5: c4aab94cab4ddeb340e36d4c670a5f24 + sha256: 4331584fffa05cf3096799c95495ce97563699dc7c4da341e9b1ced96e4f5526 manager: conda name: pre-commit optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.2.0-pyha770c72_0.conda - version: 3.2.0 + url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.2.2-pyha770c72_0.conda + version: 3.2.2 - category: main dependencies: __unix: '' @@ -4835,89 +4934,90 @@ package: python-dateutil: '>=2.1,<3.0.0' urllib3: '>=1.25.4,<1.27' hash: - md5: 3faabd8720a81a91566e6c01bf7bbacb - sha256: c677cba87c7027ccf264574a87130bf44f69be008315d2a840ae6cfaa61b7e44 + md5: c23737efb6d9e44fa00795cded4f5ed9 + sha256: 38e65d48b017160bbcc455159616e1025ca48a8e54304d5f9448d304837021e2 manager: conda name: botocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.27.59-pyhd8ed1ab_0.tar.bz2 - version: 1.27.59 + url: https://conda.anaconda.org/conda-forge/noarch/botocore-1.29.76-pyhd8ed1ab_0.conda + version: 1.29.76 - category: main dependencies: cairo: '>=1.16.0,<2.0a0' - expat: '>=2.5.0,<3.0a0' - fontconfig: '>=2.14.1,<3.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.74.1,<3.0a0' + libglib: '>=2.76.1,<3.0a0' librsvg: '>=2.54.4,<3.0a0' libstdcxx-ng: '>=12' libtool: '' - libwebp-base: '>=1.2.4,<2.0a0' + libwebp-base: '>=1.3.0,<2.0a0' libzlib: '>=1.2.13,<1.3.0a0' - pango: '>=1.50.12,<2.0a0' + pango: '>=1.50.14,<2.0a0' zlib: '' hash: - md5: e7ecda996c443142a0e9c379f3b28e48 - sha256: cecaa9e6dce7f2df042768d9a794f0126565a30384fcd59879e107d760bed7f1 + md5: 09c3cfc5ec50aef65f67c5f1bde535c6 + sha256: 9da43e1550de05f9e56d0b1d452d9567d9156e3fbcba0e0291ff458300bb70b4 manager: conda name: graphviz optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-7.1.0-h2e5815a_0.conda - version: 7.1.0 + url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-8.0.3-h2e5815a_0.conda + version: 8.0.3 - category: main dependencies: certifi: '>=2017.4.17' - charset-normalizer: '>=2,<3' + charset-normalizer: '>=2,<4' idna: '>=2.5,<4' python: '>=3.7,<4.0' urllib3: '>=1.21.1,<1.27' hash: - md5: 11d178fc55199482ee48d6812ea83983 - sha256: 22c081b4cdd023a514400413f50efdf2c378f56f2a5ea9d65666aacf4696490a + md5: 3bfbd6ead1d7299ed46dab3a7bf0bc8c + sha256: 9a7c3410970217fa035cca7f72c175989e1c8b22f855b852b9d5fde07c3550dd manager: conda name: requests optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.28.2-pyhd8ed1ab_1.conda version: 2.28.2 - category: main dependencies: aiohttp: '>=3.3.1' aioitertools: '>=0.5.1' - botocore: '>=1.27.59,<1.27.60' - python: '>=3.6' + botocore: '>=1.29.76,<1.29.77' + python: '>=3.7' wrapt: '>=1.10.10' hash: - md5: a3f48ea10883a5df371b895008b1ca4b - sha256: 76068553358b26c9c03be992cbe982a369d1e015a53700f092db92c784ce98a9 + md5: 7e3b07efee162390a72ef004440198c1 + sha256: 1e301342489a5c01fcc823e27a7b835eb7a953f827ff0d4253fb4493476f1569 manager: conda name: aiobotocore optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.4.2-pyhd8ed1ab_0.conda - version: 2.4.2 + url: https://conda.anaconda.org/conda-forge/noarch/aiobotocore-2.5.0-pyhd8ed1ab_0.conda + version: 2.5.0 - category: main dependencies: botocore: '>=1.11.3' python: '>=3.4' wrapt: '' hash: - md5: 2f18ecd9ec078c10f7086ad7ee05289b - sha256: ab3afec58f5368351efac43e813e62f944d41bd879c99e45ad49910aac666447 + 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.11.0-pyhd8ed1ab_0.tar.bz2 - version: 2.11.0 + 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' @@ -4925,14 +5025,14 @@ package: six: '>=1.11.0' typing-extensions: '>=4.0.1' hash: - md5: e49892b87d27fce696b7118a27558fae - sha256: bb995e74396dc34da1a1f9931f40949979913c7b2802c51c799a604edbb45516 + md5: f4d871cde207029fbd3059fc4ad76af9 + sha256: 85884ae07cd171b577dba67059b633df5c6ad0a8fff8222de4bf77530426aea6 manager: conda name: azure-core optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.26.3-pyhd8ed1ab_0.conda - version: 1.26.3 + url: https://conda.anaconda.org/conda-forge/noarch/azure-core-1.26.4-pyhd8ed1ab_0.conda + version: 1.26.4 - category: main dependencies: msgpack-python: '>=0.5.2' @@ -5005,19 +5105,19 @@ package: version: 1.4.3 - category: main dependencies: - cryptography: '>=0.6,<41' + cryptography: '>=0.6,<43' pyjwt: '>=1.0.0,<3' python: '>=3.6' requests: '>=2.0.0,<3' hash: - md5: 9304c2492b162934f748d061be0042e8 - sha256: a516cdfa79d90f678507c986da24d5d9979083d90337eeaa17fdd7f3d2e1a976 + md5: 24c290ee3278fd9a33b00cd1f8d1db0f + sha256: 7f4cc4d6383263ad9cc69dc83bb5dd5d4a309ebe53f117e1d14ffd76f31939de manager: conda name: msal optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/msal-1.21.0-pyhd8ed1ab_0.conda - version: 1.21.0 + url: https://conda.anaconda.org/conda-forge/noarch/msal-1.22.0-pyhd8ed1ab_0.conda + version: 1.22.0 - category: main dependencies: graphviz: '>=2.46.1' @@ -5089,7 +5189,7 @@ package: version: 5.1.1 - category: main dependencies: - botocore: 1.27.59 + botocore: 1.29.76 colorama: '>=0.2.5,<0.4.5' docutils: '>=0.10,<0.17' python: '>=3.10,<3.11.0a0' @@ -5098,29 +5198,29 @@ package: rsa: '>=3.1.2,<4.8' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: 7fca00e32e7d64340bebb17799aafd16 - sha256: 118e95635796784bb1d0072d65be0fc1151ba7aca7118a5c79764ff2667301ad + md5: 8c10a8f0d1fdf0bcaf3e7ddba412dab1 + sha256: 80b95da17548e8ba8e2b3aa292829bc0c0e8edf37f25019b2a1ce97b94bb66f7 manager: conda name: awscli optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.25.60-py310hff52083_0.tar.bz2 - version: 1.25.60 + url: https://conda.anaconda.org/conda-forge/linux-64/awscli-1.27.76-py310hff52083_0.conda + version: 1.27.76 - category: main dependencies: - botocore: '>=1.27.59,<1.28.0' + botocore: '>=1.29.76,<1.30.0' jmespath: '>=0.7.1,<2.0.0' python: '>=3.7' s3transfer: '>=0.6.0,<0.7.0' hash: - md5: ffb13a0a5fc8e17ce396f4dfcdf5dab5 - sha256: 89fd09bdc9d9a608387fd80b19fd084f26309d7857bd9a3957216a718f58b3de + md5: 5246a3712ba575428ab1e4cf8c5e289d + sha256: bd52736dcdcf9a46d7fd93baea1140b0185af3880bdfef78b9d62fdf586b65fc manager: conda name: boto3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.24.59-pyhd8ed1ab_0.tar.bz2 - version: 1.24.59 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-1.26.76-pyhd8ed1ab_0.conda + version: 1.26.76 - category: main dependencies: cachecontrol: 0.12.11 pyhd8ed1ab_1 @@ -5142,13 +5242,13 @@ package: networkx: '' python: '>=3.6' hash: - md5: f47b4fbd862cc05b914d2e4862df72a1 - sha256: 3a7f989bdcb5a6a284d092745892f8f27d15b348a02b95229d258899d418fd82 + 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_0.conda + url: https://conda.anaconda.org/conda-forge/noarch/conda-tree-1.1.0-pyhd8ed1ab_2.conda version: 1.1.0 - category: main dependencies: @@ -5183,19 +5283,19 @@ package: version: 1.0.0 - category: main dependencies: - aiobotocore: '>=2.4.2,<2.4.3' + aiobotocore: '>=2.5.0,<2.5.1' aiohttp: '' - fsspec: 2023.3.0 + fsspec: 2023.4.0 python: '>=3.8' hash: - md5: 53b2e3e80df2a18eb74d53729b9464f2 - sha256: 2737102a9d3d538dccf22fc32e32e2ec608d69c2a002a1f137091b9611bf5d6e + md5: 4a0d69ed950a71844181abc227bc0bfc + sha256: cf9a0c2dabbd465b6ec4d1387babea78a39886d71444efc63061f62e79af8ec2 manager: conda name: s3fs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/s3fs-2023.3.0-pyhd8ed1ab_0.conda - version: 2023.3.0 + url: https://conda.anaconda.org/conda-forge/noarch/s3fs-2023.4.0-pyhd8ed1ab_0.conda + version: 2023.4.0 - category: main dependencies: livereload: '>=2.3.0' @@ -5261,14 +5361,14 @@ package: python: '' typing_extensions: '' hash: - md5: 009fa15810ae5d376e1bd29ab93c1081 - sha256: 380426f97ae074ad86a1b52bb106e1f10e868bc8b7c575bea6ea5ac7725bc84d + md5: cfd95e43a27c0af1a206f7557d7f132e + sha256: 02570a9062717ec9b3293199ab8e8983c92f2320f5f8066ef541929a1166d9f1 manager: conda name: boto3-stubs optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.95-pyhd8ed1ab_0.conda - version: 1.26.95 + url: https://conda.anaconda.org/conda-forge/noarch/boto3-stubs-1.26.117-pyhd8ed1ab_0.conda + version: 1.26.117 - category: main dependencies: cachecontrol-with-filecache: '>=0.12.9' @@ -5309,28 +5409,28 @@ package: python: '>=3.6' typing-extensions: '' hash: - md5: 0c79de238c80f668f5a4e85a2ca1dced - sha256: 348b0bdb9d9fcfdfc24c43ea93a29e2c5aba7f8d0e5570517e965c758c380419 + md5: cfc72b1b83d1b8503b1071455534ebac + sha256: 1df5aa62e1fc8d498a37f30723d15a1626dc9b686603e79b4b44ba6c95f8f659 manager: conda name: mypy-boto3-s3 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.26.62-pyhd8ed1ab_0.conda - version: 1.26.62 + url: https://conda.anaconda.org/conda-forge/noarch/mypy-boto3-s3-1.26.116-pyhd8ed1ab_0.conda + version: 1.26.116 - category: main dependencies: boto3: '' python: '>=3.6' typing-extensions: '' hash: - md5: a0ead2e95ffa5942c419234c15463344 - sha256: 7e7bb339939a50d9e682c01938062d2d4e1157a7b034d7f91e44e11d98c0d05d + md5: 93e899cf501d962cfd1b251a45416825 + sha256: ef57856f4313eac453b53a119cedf121bd16fc98c64beaee8e3309959673daea manager: conda name: mypy_boto3_ec2 optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.26.91-pyhd8ed1ab_0.conda - version: 1.26.91 + url: https://conda.anaconda.org/conda-forge/noarch/mypy_boto3_ec2-1.26.106-pyhd8ed1ab_0.conda + version: 1.26.106 - category: main dependencies: docutils: <0.19 @@ -5371,18 +5471,18 @@ package: aws-xray-sdk: '!=0.96,>=0.93' boto3: '>=1.9.201' botocore: '>=1.12.201' - cfn-lint: '>=0.4.0' + cfn-lint: '>=0.40.0' cryptography: '>=3.3.1' docker-py: '>=2.5.1' - flask: '' + flask: '!=2.2.0,!=2.2.1' flask_cors: '' graphql-core: '' idna: '>=2.5,<4' importlib_metadata: '' jinja2: '>=2.10.1' jsondiff: '>=1.1.2' - openapi-spec-validator: '' - pyparsing: '' + openapi-spec-validator: '>=0.2.8' + pyparsing: '>=3.0.7' python: '>=3.3' python-dateutil: '>=2.1,<3.0.0' python-jose: '>=3.1.0,<4.0.0' @@ -5392,17 +5492,17 @@ package: responses: '>=0.9.0' setuptools: '' sshpubkeys: '>=3.1.0' - werkzeug: <2.2.0,>=0.5 + werkzeug: '>=0.5,!=2.2.0,!=2.2.1' xmltodict: '' hash: - md5: 702e5d281f691be1bec2f23d1f24fee8 - sha256: 5f7094094ef361b135068b12facdf34c18d2b285c4bd87a935ab1c7e633990ee + md5: c4172149b03b032cd60cc79f1484a1dd + sha256: 5891a5ce23d274406bda81e202ddc303d30a3355c01c7d9ae461fc5313247e9d manager: conda name: moto optional: false platform: linux-64 - url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.5-pyhd8ed1ab_0.conda - version: 4.1.5 + url: https://conda.anaconda.org/conda-forge/noarch/moto-4.1.7-pyhd8ed1ab_2.conda + version: 4.1.7 - category: main dependencies: {} hash: @@ -5455,12 +5555,14 @@ package: platform: linux-64 url: https://files.pythonhosted.org/packages/9f/53/1ac75eab589149b1e02e38185ecebf09e1b805fc3fdeadbc16d1a2b7d208/paramiko_ng-2.8.10-py2.py3-none-any.whl version: 2.8.10 -- dependencies: +- category: main + dependencies: ruamel.yaml.clib: '>=0.2.6' hash: sha256: 742b35d3d665023981bd6d16b3d24248ce5df75fdb4e2924e93a05c1f8b61ca7 manager: pip name: ruamel.yaml + optional: false platform: linux-64 url: https://files.pythonhosted.org/packages/9e/cb/938214ac358fbef7058343b3765c79a1b7ed0c366f7f992ce7ff38335652/ruamel.yaml-0.17.21-py3-none-any.whl version: 0.17.21 @@ -5496,13 +5598,13 @@ package: pyyaml: '>=6.0,<7.0' ruamel.yaml: '>=0.17.21,<0.18.0' hash: - sha256: 638a6b8c3e631f85f235acf02d3bef35a0a6d7da2ec9fef17420d5dd2ce66678 + sha256: f4fb4dd5f7fac1f2206a25d0949024046fe8f855198e8edbd5206fa9d58ab05f manager: pip name: hammer-vlsi optional: false platform: linux-64 - url: https://files.pythonhosted.org/packages/53/39/18367e6fb4f20e9ae4fb3097f7b80704ff5cccf62980ea2871ba1d817a74/hammer_vlsi-1.1.0-py3-none-any.whl - version: 1.1.0 + url: https://files.pythonhosted.org/packages/0a/da/1897421311c6332655e2f73d02d8c914ecb724198a1988aacd8f4c61ae6e/hammer_vlsi-1.1.1-py3-none-any.whl + version: 1.1.1 - category: main dependencies: asttokens: '>=2,<3' diff --git a/docs/Customization/Keys-Traits-Configs.rst b/docs/Customization/Keys-Traits-Configs.rst index 364f31cb..7b6d565b 100644 --- a/docs/Customization/Keys-Traits-Configs.rst +++ b/docs/Customization/Keys-Traits-Configs.rst @@ -79,5 +79,4 @@ We can use this config fragment when composing our configs. Chipyard Config Fragments ------------------------- -For discoverability, users can run ``make find-config-fragments`` to see a list of config. fragments -(config. fragments that match "class NAME extends CONFIG\n" on a single line and a subset of their children) and their file path in a fully initialized Chipyard repository. +For discoverability, users can run ``make find-config-fragments`` to see a list of config. fragments. diff --git a/fpga/fpga-shells b/fpga/fpga-shells index 474ad191..b6cd1bb7 160000 --- a/fpga/fpga-shells +++ b/fpga/fpga-shells @@ -1 +1 @@ -Subproject commit 474ad19113b89ed5679695b269acdb011b9b871a +Subproject commit b6cd1bb7fe35bb7a44b6fe5a0d88d1293d7a3bc9 diff --git a/fpga/src/main/scala/arty/Configs.scala b/fpga/src/main/scala/arty/Configs.scala index a88848d0..10af0223 100644 --- a/fpga/src/main/scala/arty/Configs.scala +++ b/fpga/src/main/scala/arty/Configs.scala @@ -1,7 +1,7 @@ // See LICENSE for license details. package chipyard.fpga.arty -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.devices.debug._ import freechips.rocketchip.devices.tilelink._ @@ -17,9 +17,9 @@ import chipyard.{BuildSystem} // DOC include start: AbstractArty and Rocket class WithArtyTweaks extends Config( + new WithArtyResetHarnessBinder ++ new WithArtyJTAGHarnessBinder ++ new WithArtyUARTHarnessBinder ++ - new WithArtyResetHarnessBinder ++ new WithDebugResetPassthrough ++ new chipyard.config.WithDTSTimebase(32768) ++ diff --git a/fpga/src/main/scala/arty/HarnessBinders.scala b/fpga/src/main/scala/arty/HarnessBinders.scala index 4e90e858..84d47967 100644 --- a/fpga/src/main/scala/arty/HarnessBinders.scala +++ b/fpga/src/main/scala/arty/HarnessBinders.scala @@ -2,7 +2,7 @@ package chipyard.fpga.arty import chisel3._ -import freechips.rocketchip.devices.debug.{HasPeripheryDebug, HasPeripheryDebugModuleImp} +import freechips.rocketchip.devices.debug.{HasPeripheryDebug} import freechips.rocketchip.jtag.{JTAGIO} import sifive.blocks.devices.uart.{UARTPortIO, HasPeripheryUARTModuleImp} @@ -15,15 +15,15 @@ import chipyard.harness.{ComposeHarnessBinder, OverrideHarnessBinder} import chipyard.iobinders.JTAGChipIO class WithArtyResetHarnessBinder extends ComposeHarnessBinder({ - (system: HasPeripheryDebugModuleImp, th: ArtyFPGATestHarness, ports: Seq[Bool]) => { - require(ports.size == 2) - + (system: HasPeripheryDebug, th: ArtyFPGATestHarness, ports: Seq[Data]) => { + val resetPorts = ports.collect { case b: Bool => b } + require(resetPorts.size == 2) withClockAndReset(th.clock_32MHz, th.ck_rst) { // Debug module reset - th.dut_ndreset := ports(0) + th.dut_ndreset := resetPorts(0) // JTAG reset - ports(1) := PowerOnResetFPGAOnly(th.clock_32MHz) + resetPorts(1) := PowerOnResetFPGAOnly(th.clock_32MHz) } } }) @@ -63,6 +63,7 @@ class WithArtyJTAGHarnessBinder extends OverrideHarnessBinder({ io_jtag.TMS.i.po.map(_ := DontCare) io_jtag.TDO.i.po.map(_ := DontCare) } + case b: Bool => } } }) diff --git a/fpga/src/main/scala/arty/IOBinders.scala b/fpga/src/main/scala/arty/IOBinders.scala index db656752..da6c7318 100644 --- a/fpga/src/main/scala/arty/IOBinders.scala +++ b/fpga/src/main/scala/arty/IOBinders.scala @@ -3,12 +3,12 @@ package chipyard.fpga.arty import chisel3._ import chisel3.experimental.{IO} -import freechips.rocketchip.devices.debug.{HasPeripheryDebugModuleImp} +import freechips.rocketchip.devices.debug.{HasPeripheryDebug} import chipyard.iobinders.{ComposeIOBinder} class WithDebugResetPassthrough extends ComposeIOBinder({ - (system: HasPeripheryDebugModuleImp) => { + (system: HasPeripheryDebug) => { // Debug module reset val io_ndreset: Bool = IO(Output(Bool())).suggestName("ndreset") io_ndreset := system.debug.get.ndreset diff --git a/fpga/src/main/scala/arty/TestHarness.scala b/fpga/src/main/scala/arty/TestHarness.scala index a3d7fc33..5e280469 100644 --- a/fpga/src/main/scala/arty/TestHarness.scala +++ b/fpga/src/main/scala/arty/TestHarness.scala @@ -3,7 +3,7 @@ package chipyard.fpga.arty import chisel3._ import freechips.rocketchip.diplomacy.{LazyModule} -import freechips.rocketchip.config.{Parameters} +import org.chipsalliance.cde.config.{Parameters} import sifive.fpgashells.shell.xilinx.artyshell.{ArtyShell} diff --git a/fpga/src/main/scala/arty100t/Configs.scala b/fpga/src/main/scala/arty100t/Configs.scala index 0930dbdb..673b8b58 100644 --- a/fpga/src/main/scala/arty100t/Configs.scala +++ b/fpga/src/main/scala/arty100t/Configs.scala @@ -1,7 +1,7 @@ // See LICENSE for license details. package chipyard.fpga.arty100t -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.devices.debug._ import freechips.rocketchip.devices.tilelink._ diff --git a/fpga/src/main/scala/arty100t/Harness.scala b/fpga/src/main/scala/arty100t/Harness.scala index 5cc1e348..88ea88af 100644 --- a/fpga/src/main/scala/arty100t/Harness.scala +++ b/fpga/src/main/scala/arty100t/Harness.scala @@ -3,7 +3,7 @@ package chipyard.fpga.arty100t import chisel3._ import chisel3.util._ import freechips.rocketchip.diplomacy._ -import freechips.rocketchip.config.{Parameters} +import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink.{TLClientNode, TLBlockDuringReset} import sifive.fpgashells.shell.xilinx._ diff --git a/fpga/src/main/scala/arty100t/HarnessBinders.scala b/fpga/src/main/scala/arty100t/HarnessBinders.scala index 3d86f354..d9a2df45 100644 --- a/fpga/src/main/scala/arty100t/HarnessBinders.scala +++ b/fpga/src/main/scala/arty100t/HarnessBinders.scala @@ -2,7 +2,6 @@ package chipyard.fpga.arty100t import chisel3._ -import freechips.rocketchip.devices.debug.{HasPeripheryDebug, HasPeripheryDebugModuleImp} import freechips.rocketchip.jtag.{JTAGIO} import freechips.rocketchip.subsystem.{PeripheryBusKey} import freechips.rocketchip.tilelink.{TLBundle} diff --git a/fpga/src/main/scala/vc707/Configs.scala b/fpga/src/main/scala/vc707/Configs.scala index 07a96cfd..fa08a184 100644 --- a/fpga/src/main/scala/vc707/Configs.scala +++ b/fpga/src/main/scala/vc707/Configs.scala @@ -2,7 +2,7 @@ package chipyard.fpga.vc707 import sys.process._ -import freechips.rocketchip.config.{Config, Parameters} +import org.chipsalliance.cde.config.{Config, Parameters} import freechips.rocketchip.subsystem.{SystemBusKey, PeripheryBusKey, ControlBusKey, ExtMem} import freechips.rocketchip.devices.debug.{DebugModuleKey, ExportDebug, JTAG} import freechips.rocketchip.devices.tilelink.{DevNullParams, BootROMLocated} diff --git a/fpga/src/main/scala/vc707/TestHarness.scala b/fpga/src/main/scala/vc707/TestHarness.scala index 924c768e..94c0ba8e 100644 --- a/fpga/src/main/scala/vc707/TestHarness.scala +++ b/fpga/src/main/scala/vc707/TestHarness.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.experimental.{IO} import freechips.rocketchip.diplomacy.{LazyModule, LazyRawModuleImp, BundleBridgeSource} -import freechips.rocketchip.config.{Parameters} +import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink.{TLClientNode} import sifive.fpgashells.shell.xilinx.{VC707Shell, UARTVC707ShellPlacer, PCIeVC707ShellPlacer, ChipLinkVC707PlacedOverlay} diff --git a/fpga/src/main/scala/vcu118/Configs.scala b/fpga/src/main/scala/vcu118/Configs.scala index 85b6ee24..c4f4684e 100644 --- a/fpga/src/main/scala/vcu118/Configs.scala +++ b/fpga/src/main/scala/vcu118/Configs.scala @@ -2,7 +2,7 @@ package chipyard.fpga.vcu118 import sys.process._ -import freechips.rocketchip.config.{Config, Parameters} +import org.chipsalliance.cde.config.{Config, Parameters} import freechips.rocketchip.subsystem.{SystemBusKey, PeripheryBusKey, ControlBusKey, ExtMem} import freechips.rocketchip.devices.debug.{DebugModuleKey, ExportDebug, JTAG} import freechips.rocketchip.devices.tilelink.{DevNullParams, BootROMLocated} diff --git a/fpga/src/main/scala/vcu118/CustomOverlays.scala b/fpga/src/main/scala/vcu118/CustomOverlays.scala index 250e2040..02669b79 100644 --- a/fpga/src/main/scala/vcu118/CustomOverlays.scala +++ b/fpga/src/main/scala/vcu118/CustomOverlays.scala @@ -3,7 +3,7 @@ package chipyard.fpga.vcu118 import chisel3._ import freechips.rocketchip.diplomacy._ -import freechips.rocketchip.config.{Parameters, Field} +import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.tilelink.{TLInwardNode, TLAsyncCrossingSink} import sifive.fpgashells.shell._ diff --git a/fpga/src/main/scala/vcu118/TestHarness.scala b/fpga/src/main/scala/vcu118/TestHarness.scala index 9a3cc0d5..e46745a8 100644 --- a/fpga/src/main/scala/vcu118/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/TestHarness.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.experimental.{IO} import freechips.rocketchip.diplomacy.{LazyModule, LazyRawModuleImp, BundleBridgeSource} -import freechips.rocketchip.config.{Parameters} +import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.tilelink.{TLClientNode} import sifive.fpgashells.shell.xilinx._ diff --git a/fpga/src/main/scala/vcu118/bringup/Configs.scala b/fpga/src/main/scala/vcu118/bringup/Configs.scala index 62c2af31..bff715dc 100644 --- a/fpga/src/main/scala/vcu118/bringup/Configs.scala +++ b/fpga/src/main/scala/vcu118/bringup/Configs.scala @@ -2,7 +2,7 @@ package chipyard.fpga.vcu118.bringup import math.min -import freechips.rocketchip.config.{Config, Parameters} +import org.chipsalliance.cde.config.{Config, Parameters} import freechips.rocketchip.diplomacy.{DTSModel, DTSTimebase, RegionType, AddressSet, ResourceBinding, Resource, ResourceAddress} import freechips.rocketchip.tilelink._ import freechips.rocketchip.diplomacy._ diff --git a/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala b/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala index 43d559f0..4b9604f9 100644 --- a/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala +++ b/fpga/src/main/scala/vcu118/bringup/CustomOverlays.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.experimental.{attach} import freechips.rocketchip.diplomacy._ -import freechips.rocketchip.config.{Parameters, Field} +import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.tilelink.{TLInwardNode, TLAsyncCrossingSink} import sifive.fpgashells.shell._ diff --git a/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala b/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala index 5b554f5b..c5401d32 100644 --- a/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala +++ b/fpga/src/main/scala/vcu118/bringup/DigitalTop.scala @@ -4,7 +4,7 @@ import chisel3._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.system._ -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tilelink._ diff --git a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala index 2406cb7b..c311d84f 100644 --- a/fpga/src/main/scala/vcu118/bringup/TestHarness.scala +++ b/fpga/src/main/scala/vcu118/bringup/TestHarness.scala @@ -3,7 +3,7 @@ package chipyard.fpga.vcu118.bringup import chisel3._ import freechips.rocketchip.diplomacy._ -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.tilelink._ diff --git a/generators/boom b/generators/boom index 051dbadb..1b1f210b 160000 --- a/generators/boom +++ b/generators/boom @@ -1 +1 @@ -Subproject commit 051dbadb6d0e9018c5b1f843ac73cff4242a02f8 +Subproject commit 1b1f210bcf5985c1e1f588c1639d5d0ec2d04998 diff --git a/generators/chipyard/src/main/scala/ChipTop.scala b/generators/chipyard/src/main/scala/ChipTop.scala index 184f30f2..150221b6 100644 --- a/generators/chipyard/src/main/scala/ChipTop.scala +++ b/generators/chipyard/src/main/scala/ChipTop.scala @@ -6,7 +6,7 @@ import scala.collection.mutable.{ArrayBuffer} import freechips.rocketchip.prci.{ClockGroupIdentityNode, ClockSinkParameters, ClockSinkNode, ClockGroup} import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} -import freechips.rocketchip.config.{Parameters, Field} +import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, LazyRawModuleImp, LazyModuleImpLike, BindingScope} import freechips.rocketchip.util.{ResetCatchAndSync} import chipyard.iobinders._ diff --git a/generators/chipyard/src/main/scala/ConfigFinder.scala b/generators/chipyard/src/main/scala/ConfigFinder.scala new file mode 100644 index 00000000..dfee340d --- /dev/null +++ b/generators/chipyard/src/main/scala/ConfigFinder.scala @@ -0,0 +1,19 @@ +package chipyard + +import org.reflections.Reflections +import org.reflections.scanners.Scanners.SubTypes +import scala.jdk.CollectionConverters._ +import scala.collection.{SortedSet} + +import org.chipsalliance.cde.config.{Config} + +object ConfigFinder { + def main(args: Array[String]) = { + val reflections = new Reflections() + val classes = reflections.get(SubTypes.of(classOf[Config]).asClass()).asScala + val sortedClasses = SortedSet[String]() ++ classes.map(_.getName) + for (cls <- sortedClasses) { + println(cls) + } + } +} diff --git a/generators/chipyard/src/main/scala/Cospike.scala b/generators/chipyard/src/main/scala/Cospike.scala index 7b663b24..fffb97d6 100644 --- a/generators/chipyard/src/main/scala/Cospike.scala +++ b/generators/chipyard/src/main/scala/Cospike.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.experimental.{IntParam, StringParam, IO} import chisel3.util._ -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.subsystem._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.devices.tilelink._ diff --git a/generators/chipyard/src/main/scala/DigitalTop.scala b/generators/chipyard/src/main/scala/DigitalTop.scala index fef4a09f..e3845fe4 100644 --- a/generators/chipyard/src/main/scala/DigitalTop.scala +++ b/generators/chipyard/src/main/scala/DigitalTop.scala @@ -4,7 +4,7 @@ import chisel3._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.system._ -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.devices.tilelink._ // ------------------------------------ diff --git a/generators/chipyard/src/main/scala/HarnessBinders.scala b/generators/chipyard/src/main/scala/HarnessBinders.scala index 21dfe588..c39242f9 100644 --- a/generators/chipyard/src/main/scala/HarnessBinders.scala +++ b/generators/chipyard/src/main/scala/HarnessBinders.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.util._ import chisel3.experimental.{Analog, BaseModule, DataMirror, Direction} -import freechips.rocketchip.config.{Field, Config, Parameters} +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._ @@ -22,8 +22,8 @@ import barstools.iocell.chisel._ import testchipip._ import chipyard._ -import chipyard.clocking.{HasChipyardPRCI} -import chipyard.iobinders.{GetSystemParameters, JTAGChipIO, ClockWithFreq} +import chipyard.clocking.{HasChipyardPRCI, ClockWithFreq} +import chipyard.iobinders.{GetSystemParameters, JTAGChipIO} import tracegen.{TraceGenSystemModuleImp} import icenet.{CanHavePeripheryIceNIC, SimNetwork, NicLoopback, NICKey, NICIOvonly} @@ -154,7 +154,7 @@ class WithSimAXIMemOverSerialTL extends OverrideHarnessBinder({ ports.map({ port => // DOC include start: HarnessClockInstantiatorEx withClockAndReset(th.buildtopClock, th.buildtopReset) { - val memOverSerialTLClockBundle = p(HarnessClockInstantiatorKey).requestClockBundle("mem_over_serial_tl_clock", memFreq) + val memOverSerialTLClockBundle = th.harnessClockInstantiator.requestClockBundle("mem_over_serial_tl_clock", memFreq) val serial_bits = SerialAdapter.asyncQueue(port, th.buildtopClock, th.buildtopReset) val harnessMultiClockAXIRAM = SerialAdapter.connectHarnessMultiClockAXIRAM( system.serdesser.get, diff --git a/generators/chipyard/src/main/scala/HarnessClocks.scala b/generators/chipyard/src/main/scala/HarnessClocks.scala new file mode 100644 index 00000000..c256caba --- /dev/null +++ b/generators/chipyard/src/main/scala/HarnessClocks.scala @@ -0,0 +1,96 @@ +package chipyard + +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.prci._ + +import chipyard.harness.{ApplyHarnessBinders, HarnessBinders} +import chipyard.iobinders.HasIOBinders +import chipyard.clocking.{SimplePllConfiguration, ClockDividerN} +import chipyard.HarnessClockInstantiatorKey + + +// HarnessClockInstantiators are classes which generate clocks that drive +// TestHarness simulation models and any Clock inputs to the ChipTop +trait HarnessClockInstantiator { + val _clockMap: LinkedHashMap[String, (Double, ClockBundle)] = LinkedHashMap.empty + + // request a clock bundle at a particular frequency + def requestClockBundle(name: String, freqRequested: Double): ClockBundle = { + val clockBundle = Wire(new ClockBundle(ClockBundleParameters())) + _clockMap(name) = (freqRequested, clockBundle) + clockBundle + } + + // refClock is the clock generated by TestDriver that is + // passed to the TestHarness as its implicit clock + def instantiateHarnessClocks(refClock: ClockBundle): Unit +} + +// The DividerOnlyHarnessClockInstantiator uses synthesizable clock divisors +// to approximate frequency ratios between the requested clocks +class DividerOnlyHarnessClockInstantiator extends HarnessClockInstantiator { + // connect all clock wires specified to a divider only PLL + def instantiateHarnessClocks(refClock: ClockBundle): Unit = { + val sinks = _clockMap.map({ case (name, (freq, bundle)) => + ClockSinkParameters(take=Some(ClockParameters(freqMHz=freq / (1000 * 1000))), name=Some(name)) + }).toSeq + + val pllConfig = new SimplePllConfiguration("harnessDividerOnlyClockGenerator", sinks) + pllConfig.emitSummaries() + + val dividedClocks = LinkedHashMap[Int, Clock]() + def instantiateDivider(div: Int): Clock = { + val divider = Module(new ClockDividerN(div)) + divider.suggestName(s"ClockDivideBy${div}") + divider.io.clk_in := refClock.clock + dividedClocks(div) = divider.io.clk_out + divider.io.clk_out + } + + // connect wires to clock source + for (sinkParams <- sinks) { + // bypass the reference freq. (don't create a divider + reset sync) + val (divClock, divReset) = if (sinkParams.take.get.freqMHz != pllConfig.referenceFreqMHz) { + val div = pllConfig.sinkDividerMap(sinkParams) + val divClock = dividedClocks.getOrElse(div, instantiateDivider(div)) + (divClock, ResetCatchAndSync(divClock, refClock.reset.asBool)) + } else { + (refClock.clock, refClock.reset) + } + + _clockMap(sinkParams.name.get)._2.clock := divClock + _clockMap(sinkParams.name.get)._2.reset := divReset + } + } +} + +// The AbsoluteFreqHarnessClockInstantiator uses a Verilog blackbox to +// provide the precise requested frequency. +// This ClockInstantiator cannot be synthesized, run in Verilator, or run in FireSim +// It is useful for VCS/Xcelium-driven RTL simulations +class AbsoluteFreqHarnessClockInstantiator extends HarnessClockInstantiator { + def instantiateHarnessClocks(refClock: ClockBundle): Unit = { + val sinks = _clockMap.map({ case (name, (freq, bundle)) => + ClockSinkParameters(take=Some(ClockParameters(freqMHz=freq / (1000 * 1000))), name=Some(name)) + }).toSeq + + // connect wires to clock source + for (sinkParams <- sinks) { + val source = Module(new ClockSourceAtFreq(sinkParams.take.get.freqMHz)) + source.io.power := true.B + source.io.gate := false.B + + _clockMap(sinkParams.name.get)._2.clock := source.io.clk + _clockMap(sinkParams.name.get)._2.reset := refClock.reset + } + } +} + +class WithAbsoluteFreqHarnessClockInstantiator extends Config((site, here, up) => { + case HarnessClockInstantiatorKey => () => new AbsoluteFreqHarnessClockInstantiator +}) diff --git a/generators/chipyard/src/main/scala/IOBinders.scala b/generators/chipyard/src/main/scala/IOBinders.scala index 9ef32091..1e234144 100644 --- a/generators/chipyard/src/main/scala/IOBinders.scala +++ b/generators/chipyard/src/main/scala/IOBinders.scala @@ -3,7 +3,7 @@ package chipyard.iobinders import chisel3._ import chisel3.experimental.{Analog, IO, DataMirror} -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.devices.debug._ import freechips.rocketchip.jtag.{JTAGIO} @@ -248,7 +248,7 @@ class WithDebugIOCells extends OverrideLazyIOBinder({ def clockBundle = clockSinkNode.get.in.head._1 - InModuleBody { system.asInstanceOf[BaseSubsystem].module match { case system: HasPeripheryDebugModuleImp => { + InModuleBody { system.asInstanceOf[BaseSubsystem] match { case system: HasPeripheryDebug => { system.debug.map({ debug => // We never use the PSDIO, so tie it off on-chip system.psd.psd.foreach { _ <> 0.U.asTypeOf(new PSDTestMode) } @@ -425,45 +425,4 @@ class WithDontTouchPorts extends OverrideIOBinder({ (system: DontTouch) => system.dontTouchPorts(); (Nil, Nil) }) -class ClockWithFreq(val freqMHz: Double) extends Bundle { - val clock = Clock() -} -class WithDividerOnlyClockGenerator 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 - }} - } - - // Connect all other requested clocks - val referenceClockSource = ClockSourceNode(Seq(ClockSourceParameters())) - val dividerOnlyClockGen = LazyModule(new DividerOnlyClockGenerator("buildTopClockGenerator")) - - (system.allClockGroupsNode - := dividerOnlyClockGen.node - := referenceClockSource) - - InModuleBody { - val clock_wire = Wire(Input(new ClockWithFreq(dividerOnlyClockGen.module.referenceFreq))) - 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)) - - referenceClockSource.out.unzip._1.map { o => - o.clock := clock_wire.clock - o.reset := reset_wire - } - - (Seq(clock_io, reset_io), clockIOCell ++ resetIOCell) - } - } -}) diff --git a/generators/chipyard/src/main/scala/SpikeTile.scala b/generators/chipyard/src/main/scala/SpikeTile.scala index 98c750ce..9aac7421 100644 --- a/generators/chipyard/src/main/scala/SpikeTile.scala +++ b/generators/chipyard/src/main/scala/SpikeTile.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.util._ import chisel3.experimental.{IntParam, StringParam, IO} -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.diplomacy._ diff --git a/generators/chipyard/src/main/scala/Subsystem.scala b/generators/chipyard/src/main/scala/Subsystem.scala index a2f81c0a..e98a51bc 100644 --- a/generators/chipyard/src/main/scala/Subsystem.scala +++ b/generators/chipyard/src/main/scala/Subsystem.scala @@ -9,9 +9,9 @@ import chisel3._ import chisel3.internal.sourceinfo.{SourceInfo} import freechips.rocketchip.prci._ -import freechips.rocketchip.config.{Field, Parameters} +import org.chipsalliance.cde.config.{Field, Parameters} import freechips.rocketchip.devices.tilelink._ -import freechips.rocketchip.devices.debug.{HasPeripheryDebug, HasPeripheryDebugModuleImp, ExportDebug, DebugModuleKey} +import freechips.rocketchip.devices.debug.{HasPeripheryDebug, ExportDebug, DebugModuleKey} import sifive.blocks.devices.uart.{HasPeripheryUART, PeripheryUARTKey} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tile._ @@ -65,12 +65,14 @@ trait CanHaveChosenInDTS { this: BaseSubsystem => t.uarts.foreach(u => Resource(chosen, "uart").bind(ResourceAlias(u.device.label))) } } + case _ => } } } class ChipyardSubsystem(implicit p: Parameters) extends BaseSubsystem with HasTiles + with HasPeripheryDebug with CanHaveHTIF with CanHaveChosenInDTS { diff --git a/generators/chipyard/src/main/scala/System.scala b/generators/chipyard/src/main/scala/System.scala index 827b97c0..5643e380 100644 --- a/generators/chipyard/src/main/scala/System.scala +++ b/generators/chipyard/src/main/scala/System.scala @@ -7,7 +7,7 @@ package chipyard import chisel3._ -import freechips.rocketchip.config.{Parameters, Field} +import org.chipsalliance.cde.config.{Parameters, Field} import freechips.rocketchip.subsystem._ import freechips.rocketchip.tilelink._ import freechips.rocketchip.devices.tilelink._ @@ -31,6 +31,14 @@ 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/TestHarness.scala b/generators/chipyard/src/main/scala/TestHarness.scala index 240ae5cc..a8b18d4f 100644 --- a/generators/chipyard/src/main/scala/TestHarness.scala +++ b/generators/chipyard/src/main/scala/TestHarness.scala @@ -4,7 +4,7 @@ import chisel3._ import scala.collection.mutable.{ArrayBuffer, LinkedHashMap} import freechips.rocketchip.diplomacy.{LazyModule} -import freechips.rocketchip.config.{Field, Parameters} +import org.chipsalliance.cde.config.{Field, Parameters} import freechips.rocketchip.util.{ResetCatchAndSync} import freechips.rocketchip.prci.{ClockBundle, ClockBundleParameters, ClockSinkParameters, ClockParameters} @@ -18,9 +18,11 @@ import chipyard.clocking.{SimplePllConfiguration, ClockDividerN} case object BuildTop extends Field[Parameters => LazyModule]((p: Parameters) => new ChipTop()(p)) case object DefaultClockFrequencyKey extends Field[Double](100.0) // MHz +case object HarnessClockInstantiatorKey extends Field[() => HarnessClockInstantiator](() => new DividerOnlyHarnessClockInstantiator) trait HasHarnessSignalReferences { implicit val p: Parameters + val harnessClockInstantiator = p(HarnessClockInstantiatorKey)() // clock/reset of the chiptop reference clock (can be different than the implicit harness clock/reset) var refClockFreq: Double = p(DefaultClockFrequencyKey) def setRefClockFreq(freqMHz: Double) = { refClockFreq = freqMHz } @@ -30,53 +32,6 @@ trait HasHarnessSignalReferences { def success: Bool } -class HarnessClockInstantiator { - private val _clockMap: LinkedHashMap[String, (Double, ClockBundle)] = LinkedHashMap.empty - - // request a clock bundle at a particular frequency - def requestClockBundle(name: String, freqRequested: Double): ClockBundle = { - val clockBundle = Wire(new ClockBundle(ClockBundleParameters())) - _clockMap(name) = (freqRequested, clockBundle) - clockBundle - } - - // connect all clock wires specified to a divider only PLL - def instantiateHarnessDividerPLL(refClock: ClockBundle): Unit = { - val sinks = _clockMap.map({ case (name, (freq, bundle)) => - ClockSinkParameters(take=Some(ClockParameters(freqMHz=freq / (1000 * 1000))), name=Some(name)) - }).toSeq - - val pllConfig = new SimplePllConfiguration("harnessDividerOnlyClockGenerator", sinks) - pllConfig.emitSummaries() - - val dividedClocks = LinkedHashMap[Int, Clock]() - def instantiateDivider(div: Int): Clock = { - val divider = Module(new ClockDividerN(div)) - divider.suggestName(s"ClockDivideBy${div}") - divider.io.clk_in := refClock.clock - dividedClocks(div) = divider.io.clk_out - divider.io.clk_out - } - - // connect wires to clock source - for (sinkParams <- sinks) { - // bypass the reference freq. (don't create a divider + reset sync) - val (divClock, divReset) = if (sinkParams.take.get.freqMHz != pllConfig.referenceFreqMHz) { - val div = pllConfig.sinkDividerMap(sinkParams) - val divClock = dividedClocks.getOrElse(div, instantiateDivider(div)) - (divClock, ResetCatchAndSync(divClock, refClock.reset.asBool)) - } else { - (refClock.clock, refClock.reset) - } - - _clockMap(sinkParams.name.get)._2.clock := divClock - _clockMap(sinkParams.name.get)._2.reset := divReset - } - } -} - -case object HarnessClockInstantiatorKey extends Field[HarnessClockInstantiator](new HarnessClockInstantiator) - class TestHarness(implicit val p: Parameters) extends Module with HasHarnessSignalReferences { val io = IO(new Bundle { val success = Output(Bool()) @@ -96,7 +51,7 @@ class TestHarness(implicit val p: Parameters) extends Module with HasHarnessSign ApplyHarnessBinders(this, d.lazySystem, d.portMap) } - val refClkBundle = p(HarnessClockInstantiatorKey).requestClockBundle("buildtop_reference_clock", getRefClockFreq * (1000 * 1000)) + val refClkBundle = harnessClockInstantiator.requestClockBundle("buildtop_reference_clock", getRefClockFreq * (1000 * 1000)) buildtopClock := refClkBundle.clock buildtopReset := WireInit(refClkBundle.reset) @@ -104,5 +59,5 @@ class TestHarness(implicit val p: Parameters) extends Module with HasHarnessSign val implicitHarnessClockBundle = Wire(new ClockBundle(ClockBundleParameters())) implicitHarnessClockBundle.clock := clock implicitHarnessClockBundle.reset := reset - p(HarnessClockInstantiatorKey).instantiateHarnessDividerPLL(implicitHarnessClockBundle) + harnessClockInstantiator.instantiateHarnessClocks(implicitHarnessClockBundle) } diff --git a/generators/chipyard/src/main/scala/TestSuites.scala b/generators/chipyard/src/main/scala/TestSuites.scala index a47ae425..0e4e3310 100644 --- a/generators/chipyard/src/main/scala/TestSuites.scala +++ b/generators/chipyard/src/main/scala/TestSuites.scala @@ -4,7 +4,7 @@ import scala.collection.mutable.{LinkedHashSet} import freechips.rocketchip.subsystem._ import freechips.rocketchip.tile.{XLen, TileParams} -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.system.{TestGeneration, RegressionTestSuite, RocketTestSuite} /** diff --git a/generators/chipyard/src/main/scala/clocking/ClockBinders.scala b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala new file mode 100644 index 00000000..5a02277c --- /dev/null +++ b/generators/chipyard/src/main/scala/clocking/ClockBinders.scala @@ -0,0 +1,127 @@ +package chipyard.clocking + +import chisel3._ +import chisel3.util._ +import chipyard.iobinders.{OverrideLazyIOBinder, GetSystemParameters, IOCellKey} +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 synthesizable clock divisors to approximate frequency rations +// between the requested clocks. This is currently the defualt clock generator "model", +// as it can be used in VCS/Xcelium/Verilator/FireSim +class WithDividerOnlyClockGenerator 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 + }} + } + + // Connect all other requested clocks + val referenceClockSource = ClockSourceNode(Seq(ClockSourceParameters())) + val dividerOnlyClockGen = LazyModule(new DividerOnlyClockGenerator("buildTopClockGenerator")) + + (system.allClockGroupsNode + := dividerOnlyClockGen.node + := referenceClockSource) + + InModuleBody { + val clock_wire = Wire(Input(new ClockWithFreq(dividerOnlyClockGen.module.referenceFreq))) + 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)) + + referenceClockSource.out.unzip._1.map { o => + o.clock := clock_wire.clock + o.reset := reset_wire + } + + (Seq(clock_io, reset_io), clockIOCell ++ resetIOCell) + } + } +}) + +// 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 +// between the FakePLL and the slow off-chip clock +// Note: This will not simulate properly with verilator or firesim +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)) } + val clockSelector = system.prci_ctrl_domain { LazyModule(new TLClockSelector(baseAddress + 0x30000, tlbus.beatBytes)) } + val pllCtrl = system.prci_ctrl_domain { LazyModule(new FakePLLCtrl (baseAddress + 0x40000, tlbus.beatBytes)) } + + tlbus.toVariableWidthSlave(Some("clock-div-ctrl")) { clockDivider.tlNode := TLBuffer() } + tlbus.toVariableWidthSlave(Some("clock-sel-ctrl")) { clockSelector.tlNode := TLBuffer() } + tlbus.toVariableWidthSlave(Some("pll-ctrl")) { pllCtrl.tlNode := TLBuffer() } + + system.allClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode + + // Connect all other requested clocks + val slowClockSource = ClockSourceNode(Seq(ClockSourceParameters())) + val pllClockSource = ClockSourceNode(Seq(ClockSourceParameters())) + + // The order of the connections to clockSelector.clockNode configures the inputs + // of the clockSelector's clockMux. Default to using the slowClockSource, + // software should enable the PLL, then switch to the pllClockSource + clockSelector.clockNode := slowClockSource + clockSelector.clockNode := pllClockSource + + val pllCtrlSink = BundleBridgeSink[FakePLLCtrlBundle]() + pllCtrlSink := pllCtrl.ctrlNode + + InModuleBody { + val clock_wire = Wire(Input(new ClockWithFreq(80))) + 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.reset := reset_wire + } + + // 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")) + fake_pll.io.power := pllCtrlSink.in(0)._1.power + fake_pll.io.gate := pllCtrlSink.in(0)._1.gate + + pllClockSource.out.unzip._1.map { o => + o.clock := fake_pll.io.clk + o.reset := reset_wire + } + + (Seq(clock_io, reset_io), clockIOCell ++ resetIOCell) + } + } +}) diff --git a/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala b/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala index 07ae536b..c8bad8c4 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockGroupCombiner.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.util._ import chisel3.experimental.{Analog, IO} -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ diff --git a/generators/chipyard/src/main/scala/clocking/ClockGroupNamePrefixer.scala b/generators/chipyard/src/main/scala/clocking/ClockGroupNamePrefixer.scala index 965beed3..39cb379b 100644 --- a/generators/chipyard/src/main/scala/clocking/ClockGroupNamePrefixer.scala +++ b/generators/chipyard/src/main/scala/clocking/ClockGroupNamePrefixer.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ -import freechips.rocketchip.config.{Parameters, Config, Field} +import org.chipsalliance.cde.config.{Parameters, Config, Field} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ diff --git a/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala b/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala index d72b2a70..121cca24 100644 --- a/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala +++ b/generators/chipyard/src/main/scala/clocking/DividerOnlyClockGenerator.scala @@ -2,7 +2,7 @@ package chipyard.clocking import chisel3._ -import freechips.rocketchip.config.{Parameters} +import org.chipsalliance.cde.config.{Parameters} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ import freechips.rocketchip.util.ElaborationArtefacts diff --git a/generators/chipyard/src/main/scala/clocking/FakePLL.scala b/generators/chipyard/src/main/scala/clocking/FakePLL.scala new file mode 100644 index 00000000..ac8f8b44 --- /dev/null +++ b/generators/chipyard/src/main/scala/clocking/FakePLL.scala @@ -0,0 +1,36 @@ +package chipyard.clocking + +import chisel3._ +import chisel3.util._ +import org.chipsalliance.cde.config.Parameters +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.tilelink._ +import freechips.rocketchip.devices.tilelink._ +import freechips.rocketchip.regmapper._ +import freechips.rocketchip.util._ + +class FakePLLCtrlBundle extends Bundle { + val gate = Bool() + val power = Bool() +} + +class FakePLLCtrl(address: BigInt, beatBytes: Int)(implicit p: Parameters) extends LazyModule +{ + val device = new SimpleDevice(s"pll", Nil) + val tlNode = TLRegisterNode(Seq(AddressSet(address, 4096-1)), device, "reg/control", beatBytes=beatBytes) + val ctrlNode = BundleBridgeSource(() => Output(new FakePLLCtrlBundle)) + lazy val module = new LazyModuleImp(this) { + // This PLL only has 2 address, the gate and power + // Both should be set to turn on the PLL + // TODO: Should these be reset by the top level reset pin? + val gate_reg = Module(new AsyncResetRegVec(w=1, init=0)) + val power_reg = Module(new AsyncResetRegVec(w=1, init=0)) + + ctrlNode.out(0)._1.gate := gate_reg.io.q + ctrlNode.out(0)._1.power := power_reg.io.q + tlNode.regmap( + 0 -> Seq(RegField.rwReg(1, gate_reg.io)), + 4 -> Seq(RegField.rwReg(1, power_reg.io)) + ) + } +} diff --git a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala index 0cfc702a..d571bc95 100644 --- a/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala +++ b/generators/chipyard/src/main/scala/clocking/HasChipyardPRCI.scala @@ -4,7 +4,7 @@ import chisel3._ import scala.collection.mutable.{ArrayBuffer} -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tilelink._ import freechips.rocketchip.devices.tilelink._ @@ -20,7 +20,8 @@ import chipyard.{DefaultClockFrequencyKey} case class ChipyardPRCIControlParams( slaveWhere: TLBusWrapperLocation = CBUS, baseAddress: BigInt = 0x100000, - enableTileClockGating: Boolean = true + enableTileClockGating: Boolean = true, + enableTileResetSetting: Boolean = true ) @@ -72,12 +73,13 @@ trait HasChipyardPRCI { this: BaseSubsystem with InstantiatesTiles => val frequencySpecifier = ClockGroupFrequencySpecifier(p(ClockFrequencyAssignersKey), p(DefaultClockFrequencyKey)) val clockGroupCombiner = ClockGroupCombiner() val resetSynchronizer = ClockGroupResetSynchronizer() - val tileClockGater = prci_ctrl_domain { - TileClockGater(prciParams.baseAddress + 0x00000, tlbus, prciParams.enableTileClockGating) - } - val tileResetSetter = prci_ctrl_domain { + val tileClockGater = if (prciParams.enableTileClockGating) { prci_ctrl_domain { + TileClockGater(prciParams.baseAddress + 0x00000, tlbus) + } } else { ClockGroupEphemeralNode() } + val tileResetSetter = if (prciParams.enableTileResetSetting) { prci_ctrl_domain { TileResetSetter(prciParams.baseAddress + 0x10000, tlbus, tile_prci_domains.map(_.tile_reset_domain.clockNode.portParams(0).name.get), Nil) - } + } } else { ClockGroupEphemeralNode() } + (aggregator := frequencySpecifier := clockGroupCombiner diff --git a/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala new file mode 100644 index 00000000..bc722799 --- /dev/null +++ b/generators/chipyard/src/main/scala/clocking/TLClockDivider.scala @@ -0,0 +1,56 @@ +package chipyard.clocking + +import chisel3._ + +import org.chipsalliance.cde.config.Parameters +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.tilelink._ +import freechips.rocketchip.devices.tilelink._ +import freechips.rocketchip.regmapper._ +import freechips.rocketchip.util._ +import freechips.rocketchip.prci._ +import freechips.rocketchip.util.ElaborationArtefacts + +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 { + 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) + + lazy val module = new LazyModuleImp(this) { + require (clockNode.out.size == 1) + val sources = clockNode.in.head._1.member.data.toSeq + val sinks = clockNode.out.head._1.member.elements.toSeq + require (sources.size == sinks.size) + val nSinks = sinks.size + + val regs = (0 until nSinks) .map { i => + val sinkName = sinks(i)._1 + val asyncReset = sources(i).reset + val reg = withReset (asyncReset) { + Module(new AsyncResetRegVec(w=divBits, init=0)) + } + println(s"${(address+i*4).toString(16)}: Clock domain $sinkName divider") + sinks(i)._2.clock := withClockAndReset(sources(i).clock, asyncReset) { + val divider = Module(new testchipip.ClockDivideOrPass(divBits, depth = 3, genClockGate = p(ClockGateImpl))) + divider.io.divisor := reg.io.q + divider.io.resetAsync := ResetStretcher(sources(i).clock, asyncReset, 20).asAsyncReset + 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 + reg + } + + tlNode.regmap((0 until nSinks).map { i => + i * 4 -> Seq(RegField.rwReg(divBits, regs(i).io)) + }: _*) + } +} diff --git a/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala new file mode 100644 index 00000000..06821ead --- /dev/null +++ b/generators/chipyard/src/main/scala/clocking/TLClockSelector.scala @@ -0,0 +1,73 @@ +package chipyard.clocking + +import chisel3._ +import chisel3.util._ +import org.chipsalliance.cde.config.Parameters +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.tilelink._ +import freechips.rocketchip.devices.tilelink._ +import freechips.rocketchip.regmapper._ +import freechips.rocketchip.util._ +import freechips.rocketchip.prci._ +import freechips.rocketchip.util.ElaborationArtefacts + +import testchipip._ + +object ResetStretcher { + def apply(clock: Clock, reset: Reset, cycles: Int): Reset = { + withClockAndReset(clock, reset) { + val n = log2Ceil(cycles) + val count = Module(new AsyncResetRegVec(w=n, init=0)) + val resetout = Module(new AsyncResetRegVec(w=1, init=1)) + count.io.en := resetout.io.q + count.io.d := count.io.q + 1.U + resetout.io.en := resetout.io.q + resetout.io.d := count.io.q < (cycles-1).U + + resetout.io.q.asBool + } + } +} + + +case class ClockSelNode()(implicit valName: ValName) + extends MixedNexusNode(ClockImp, ClockGroupImp)( + dFn = { d => ClockGroupSourceParameters() }, + uFn = { u => ClockSinkParameters() } +) + +// 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 { + val device = new SimpleDevice("clk-sel-ctrl", Nil) + val tlNode = TLRegisterNode(Seq(AddressSet(address, 4096-1)), device, "reg/control", beatBytes=beatBytes) + + val clockNode = ClockSelNode() + + lazy val module = new LazyModuleImp(this) { + val asyncReset = clockNode.in.map(_._1).map(_.reset).toSeq(0) + val clocks = clockNode.in.map(_._1).map(_.clock) + val (outClocks, _) = clockNode.out.head + val (sinkNames, sinks) = outClocks.member.elements.toSeq.unzip + + val regs = (0 until sinks.size).map { i => + val sinkName = sinkNames(i) + val sel = Wire(UInt(log2Ceil(clocks.size).W)) + val reg = withReset(asyncReset) { Module(new AsyncResetRegVec(w=log2Ceil(clocks.size), init=0)) } + 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") + 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 + + reg + } + tlNode.regmap((0 until sinks.size).map { i => + i * 4 -> Seq(RegField.rwReg(log2Ceil(clocks.size), regs(i).io)) + }: _*) + } +} diff --git a/generators/chipyard/src/main/scala/clocking/TileClockGater.scala b/generators/chipyard/src/main/scala/clocking/TileClockGater.scala index 5ca8d271..23d525a6 100644 --- a/generators/chipyard/src/main/scala/clocking/TileClockGater.scala +++ b/generators/chipyard/src/main/scala/clocking/TileClockGater.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.util._ import chisel3.experimental.{Analog, IO} -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ @@ -19,7 +19,7 @@ import freechips.rocketchip.subsystem._ * flag will generate the registers, preserving the same memory map and behavior, but will not * generate any gaters */ -class TileClockGater(address: BigInt, beatBytes: Int, enable: Boolean)(implicit p: Parameters, valName: ValName) extends LazyModule +class TileClockGater(address: BigInt, beatBytes: Int)(implicit p: Parameters, valName: ValName) extends LazyModule { val device = new SimpleDevice(s"clock-gater", Nil) val clockNode = ClockGroupIdentityNode() @@ -31,8 +31,8 @@ class TileClockGater(address: BigInt, beatBytes: Int, enable: Boolean)(implicit val regs = (0 until nSinks).map({i => val sinkName = sinks(i)._1 val reg = withReset(sources(i).reset) { Module(new AsyncResetRegVec(w=1, init=1)) } - if (sinkName.contains("tile") && enable) { - println(s"ClockGate for ${sinkName} regmapped at ${(address+i*4).toString(16)}") + if (sinkName.contains("tile")) { + println(s"${(address+i*4).toString(16)}: Tile $sinkName clock gate") sinks(i)._2.clock := ClockGate(sources(i).clock, reg.io.q.asBool) sinks(i)._2.reset := sources(i).reset } else { @@ -47,8 +47,8 @@ class TileClockGater(address: BigInt, beatBytes: Int, enable: Boolean)(implicit } object TileClockGater { - def apply(address: BigInt, tlbus: TLBusWrapper, enable: Boolean)(implicit p: Parameters, v: ValName) = { - val gater = LazyModule(new TileClockGater(address, tlbus.beatBytes, enable)) + def apply(address: BigInt, tlbus: TLBusWrapper)(implicit p: Parameters, v: ValName) = { + val gater = LazyModule(new TileClockGater(address, tlbus.beatBytes)) tlbus.toVariableWidthSlave(Some("clock-gater")) { gater.tlNode := TLBuffer() } gater.clockNode } diff --git a/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala b/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala index b67371d5..9ea4bfd5 100644 --- a/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala +++ b/generators/chipyard/src/main/scala/clocking/TileResetSetter.scala @@ -4,7 +4,7 @@ import chisel3._ import chisel3.util._ import chisel3.experimental.{Analog, IO} -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.diplomacy._ import freechips.rocketchip.prci._ @@ -39,16 +39,16 @@ class TileResetSetter(address: BigInt, beatBytes: Int, tileNames: Seq[String], i }): _*) val tileMap = tileNames.zipWithIndex.map({ case (n, i) => - n -> (tile_async_resets(i), r_tile_resets(i).io.q) + n -> (tile_async_resets(i), r_tile_resets(i).io.q, address + i * 4) }) (clockNode.out zip clockNode.in).map { case ((o, _), (i, _)) => (o.member.elements zip i.member.elements).foreach { case ((name, oD), (_, iD)) => oD.clock := iD.clock oD.reset := iD.reset - for ((n, (rIn, rOut)) <- tileMap) { + for ((n, (rIn, rOut, addr)) <- tileMap) { if (name.contains(n)) { - println(name, n) + println(s"${addr.toString(16)}: Tile $name reset control") // Async because the reset coming out of the AsyncResetRegVec is // clocked to the bus this is attached to, not the clock in this // clock bundle. We expect a ClockGroupResetSynchronizer downstream diff --git a/generators/chipyard/src/main/scala/config/AbstractConfig.scala b/generators/chipyard/src/main/scala/config/AbstractConfig.scala index c13139bf..e270c978 100644 --- a/generators/chipyard/src/main/scala/config/AbstractConfig.scala +++ b/generators/chipyard/src/main/scala/config/AbstractConfig.scala @@ -1,6 +1,6 @@ package chipyard.config -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // -------------- // Chipyard abstract ("base") configuration @@ -40,7 +40,11 @@ class AbstractConfig extends Config( new chipyard.iobinders.WithTraceIOPunchthrough ++ new chipyard.iobinders.WithExtInterruptIOCells ++ new chipyard.iobinders.WithCustomBootPin ++ - new chipyard.iobinders.WithDividerOnlyClockGenerator ++ + + // Default behavior is to use a divider-only clock-generator + // This works in VCS, Verilator, and FireSim/ + // This should get replaced with a PLL-like config instead + new chipyard.clocking.WithDividerOnlyClockGenerator ++ new testchipip.WithSerialTLWidth(32) ++ // fatten the serialTL interface to improve testing performance new testchipip.WithDefaultSerialTL ++ // use serialized tilelink port to external serialadapter/harnessRAM diff --git a/generators/chipyard/src/main/scala/config/BoomConfigs.scala b/generators/chipyard/src/main/scala/config/BoomConfigs.scala index 0de224c9..4c101403 100644 --- a/generators/chipyard/src/main/scala/config/BoomConfigs.scala +++ b/generators/chipyard/src/main/scala/config/BoomConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // --------------------- // BOOM Configs diff --git a/generators/chipyard/src/main/scala/config/CVA6Configs.scala b/generators/chipyard/src/main/scala/config/CVA6Configs.scala index 132a3009..c0d6adb1 100644 --- a/generators/chipyard/src/main/scala/config/CVA6Configs.scala +++ b/generators/chipyard/src/main/scala/config/CVA6Configs.scala @@ -2,7 +2,7 @@ package chipyard import chisel3._ -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // --------------------- // CVA6 Configs diff --git a/generators/chipyard/src/main/scala/config/ChipConfigs.scala b/generators/chipyard/src/main/scala/config/ChipConfigs.scala new file mode 100644 index 00000000..2d6cb206 --- /dev/null +++ b/generators/chipyard/src/main/scala/config/ChipConfigs.scala @@ -0,0 +1,44 @@ +package chipyard + +import org.chipsalliance.cde.config.{Config} +import freechips.rocketchip.diplomacy._ + +// A simple config demonstrating how to set up a basic chip in Chipyard +class ChipLikeQuadRocketConfig extends Config( + //================================== + // Set up TestHarness + //================================== + new chipyard.WithAbsoluteFreqHarnessClockInstantiator ++ // use absolute frequencies for simulations in the harness + // NOTE: This only simulates properly in VCS + + //================================== + // Set up tiles + //================================== + new freechips.rocketchip.subsystem.WithAsynchronousRocketTiles(3, 3) ++ // Add rational crossings between RocketTile and uncore + new freechips.rocketchip.subsystem.WithNBigCores(4) ++ // quad-core (4 RocketTiles) + + //================================== + // Set up I/O + //================================== + new testchipip.WithSerialTLWidth(4) ++ + new chipyard.harness.WithSimAXIMemOverSerialTL ++ // Attach fast SimDRAM to TestHarness + new chipyard.config.WithSerialTLBackingMemory ++ // Backing memory is over serial TL protocol + new freechips.rocketchip.subsystem.WithExtMemSize((1 << 30) * 4L) ++ // 4GB max external memory + + //================================== + // Set up clock./reset + //================================== + new chipyard.clocking.WithPLLSelectorDividerClockGenerator ++ // Use a PLL-based clock selector/divider generator structure + + // Create two clock groups, uncore and fbus, in addition to the tile clock groups + new chipyard.clocking.WithClockGroupsCombinedByName("uncore", "implicit", "sbus", "mbus", "cbus", "system_bus") ++ + new chipyard.clocking.WithClockGroupsCombinedByName("fbus", "fbus", "pbus") ++ + + // Set up the crossings + new chipyard.config.WithFbusToSbusCrossingType(AsynchronousCrossing()) ++ // Add Async crossing between SBUS and FBUS + 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) + diff --git a/generators/chipyard/src/main/scala/config/HeteroConfigs.scala b/generators/chipyard/src/main/scala/config/HeteroConfigs.scala index 8e8c7fe9..206b086b 100644 --- a/generators/chipyard/src/main/scala/config/HeteroConfigs.scala +++ b/generators/chipyard/src/main/scala/config/HeteroConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // --------------------- // Heterogenous Configs diff --git a/generators/chipyard/src/main/scala/config/IbexConfigs.scala b/generators/chipyard/src/main/scala/config/IbexConfigs.scala index 63b7aa5d..6d1b6e4e 100644 --- a/generators/chipyard/src/main/scala/config/IbexConfigs.scala +++ b/generators/chipyard/src/main/scala/config/IbexConfigs.scala @@ -2,7 +2,7 @@ package chipyard import chisel3._ -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // --------------------- // Ibex Configs diff --git a/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala index aa04cfe1..6a7710d9 100644 --- a/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/MMIOAcceleratorConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // ------------------------------ diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index bd36fe04..0036e988 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} import freechips.rocketchip.subsystem.{SBUS, MBUS} diff --git a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala index 9d0c4132..10be8aca 100644 --- a/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCoreConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} // A empty config with no cores. Useful for testing class NoCoresConfig extends Config( diff --git a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala index d01bcd8d..3bb2390d 100644 --- a/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala +++ b/generators/chipyard/src/main/scala/config/PeripheralDeviceConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // --------------------------------------------------------- diff --git a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala index 7487a50e..4077fcbd 100644 --- a/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RoCCAcceleratorConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // ------------------------------ diff --git a/generators/chipyard/src/main/scala/config/RocketConfigs.scala b/generators/chipyard/src/main/scala/config/RocketConfigs.scala index d48696e6..e1827acb 100644 --- a/generators/chipyard/src/main/scala/config/RocketConfigs.scala +++ b/generators/chipyard/src/main/scala/config/RocketConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // -------------- @@ -93,6 +93,7 @@ class MbusScratchpadRocketConfig extends Config( // DOC include end: mbusscratchpadrocket class MulticlockRocketConfig extends Config( + new freechips.rocketchip.subsystem.WithRationalRocketTiles ++ // Add rational crossings between RocketTile and uncore new freechips.rocketchip.subsystem.WithNBigCores(1) ++ // Frequency specifications new chipyard.config.WithTileFrequency(1600.0) ++ // Matches the maximum frequency of U540 @@ -103,7 +104,6 @@ class MulticlockRocketConfig extends Config( // Crossing specifications 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 freechips.rocketchip.subsystem.WithRationalRocketTiles ++ // Add rational crossings between RocketTile and uncore new testchipip.WithAsynchronousSerialSlaveCrossing ++ // Add Async crossing between serial and MBUS. Its master-side is tied to the FBUS new chipyard.config.AbstractConfig) diff --git a/generators/chipyard/src/main/scala/config/RocketSha3Configs.scala b/generators/chipyard/src/main/scala/config/RocketSha3Configs.scala index 3eb568ba..43ad1de3 100644 --- a/generators/chipyard/src/main/scala/config/RocketSha3Configs.scala +++ b/generators/chipyard/src/main/scala/config/RocketSha3Configs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.diplomacy.{AsynchronousCrossing} // -------------- diff --git a/generators/chipyard/src/main/scala/config/SodorConfigs.scala b/generators/chipyard/src/main/scala/config/SodorConfigs.scala index 3679ed07..24eb1f4d 100644 --- a/generators/chipyard/src/main/scala/config/SodorConfigs.scala +++ b/generators/chipyard/src/main/scala/config/SodorConfigs.scala @@ -2,7 +2,7 @@ package chipyard import chisel3._ -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} class Sodor1StageConfig extends Config( // Create a Sodor 1-stage core diff --git a/generators/chipyard/src/main/scala/config/SpikeConfigs.scala b/generators/chipyard/src/main/scala/config/SpikeConfigs.scala index cc6d0c90..cb82360e 100644 --- a/generators/chipyard/src/main/scala/config/SpikeConfigs.scala +++ b/generators/chipyard/src/main/scala/config/SpikeConfigs.scala @@ -1,7 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} -import freechips.rocketchip.rocket.{DCacheParams} +import org.chipsalliance.cde.config.{Config} // Configs which instantiate a Spike-simulated // tile that interacts with the Chipyard SoC diff --git a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala index 4ab51994..b92b2f46 100644 --- a/generators/chipyard/src/main/scala/config/TracegenConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TracegenConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.rocket.{DCacheParams} class AbstractTraceGenConfig extends Config( @@ -9,7 +9,7 @@ class AbstractTraceGenConfig extends Config( new chipyard.harness.WithClockAndResetFromHarness ++ new chipyard.iobinders.WithAXI4MemPunchthrough ++ new chipyard.iobinders.WithTraceGenSuccessPunchthrough ++ - new chipyard.iobinders.WithDividerOnlyClockGenerator ++ + new chipyard.clocking.WithDividerOnlyClockGenerator ++ new chipyard.config.WithTracegenSystem ++ new chipyard.config.WithNoSubsystemDrivenClocks ++ new chipyard.config.WithPeripheryBusFrequencyAsDefault ++ diff --git a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala index c871ba6f..daa08265 100644 --- a/generators/chipyard/src/main/scala/config/TutorialConfigs.scala +++ b/generators/chipyard/src/main/scala/config/TutorialConfigs.scala @@ -1,6 +1,6 @@ package chipyard -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import constellation.channel._ import constellation.routing._ import constellation.topology._ diff --git a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala index 0c79f6dc..7000c81c 100644 --- a/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/ClockingFragments.scala @@ -4,7 +4,7 @@ import scala.util.matching.Regex import chisel3._ import chisel3.util.{log2Up} -import freechips.rocketchip.config.{Field, Parameters, Config} +import org.chipsalliance.cde.config.{Field, Parameters, Config} import freechips.rocketchip.subsystem._ import freechips.rocketchip.prci._ import freechips.rocketchip.diplomacy._ diff --git a/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala b/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala index ec9ff47c..7ac7f569 100644 --- a/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/PeripheralFragments.scala @@ -4,7 +4,7 @@ import scala.util.matching.Regex import chisel3._ import chisel3.util.{log2Up} -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.devices.tilelink.{BootROMLocated, PLICKey} import freechips.rocketchip.devices.debug.{Debug, ExportDebug, DebugModuleKey, DMI} import freechips.rocketchip.stage.phases.TargetDirKey diff --git a/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala b/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala index 774b23c2..4680eeeb 100644 --- a/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/RoCCFragments.scala @@ -2,7 +2,7 @@ package chipyard.config import chisel3._ -import freechips.rocketchip.config.{Field, Parameters, Config} +import org.chipsalliance.cde.config.{Field, Parameters, Config} import freechips.rocketchip.tile._ import freechips.rocketchip.diplomacy._ diff --git a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala index c41e2716..40f18d5d 100644 --- a/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/SubsystemFragments.scala @@ -1,6 +1,6 @@ package chipyard.config -import freechips.rocketchip.config.{Config} +import org.chipsalliance.cde.config.{Config} import freechips.rocketchip.subsystem.{SystemBusKey, BankedL2Key, CoherenceManagerWrapper} import freechips.rocketchip.diplomacy.{DTSTimebase} diff --git a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala index f19759cb..56042c3d 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TileFragments.scala @@ -2,7 +2,7 @@ package chipyard.config import chisel3._ -import freechips.rocketchip.config.{Field, Parameters, Config} +import org.chipsalliance.cde.config.{Field, Parameters, Config} import freechips.rocketchip.tile._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.rocket.{RocketCoreParams, MulDivParams, DCacheParams, ICacheParams} diff --git a/generators/chipyard/src/main/scala/config/fragments/TracegenFragments.scala b/generators/chipyard/src/main/scala/config/fragments/TracegenFragments.scala index 2e849c58..c8b4f828 100644 --- a/generators/chipyard/src/main/scala/config/fragments/TracegenFragments.scala +++ b/generators/chipyard/src/main/scala/config/fragments/TracegenFragments.scala @@ -1,6 +1,6 @@ package chipyard.config -import freechips.rocketchip.config.{Config, Field, Parameters} +import org.chipsalliance.cde.config.{Config, Field, Parameters} import tracegen.{TraceGenSystem} import chipyard.{BuildSystem} import chipyard.clocking.{HasChipyardPRCI} diff --git a/generators/chipyard/src/main/scala/example/CustomChipTop.scala b/generators/chipyard/src/main/scala/example/CustomChipTop.scala index 19be7d5b..19ec945b 100644 --- a/generators/chipyard/src/main/scala/example/CustomChipTop.scala +++ b/generators/chipyard/src/main/scala/example/CustomChipTop.scala @@ -3,7 +3,7 @@ package chipyard.example import chisel3._ import chipyard.iobinders._ -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.diplomacy.{InModuleBody} import barstools.iocell.chisel._ import chipyard._ diff --git a/generators/chipyard/src/main/scala/example/FlatChipTop.scala b/generators/chipyard/src/main/scala/example/FlatChipTop.scala new file mode 100644 index 00000000..c10baab4 --- /dev/null +++ b/generators/chipyard/src/main/scala/example/FlatChipTop.scala @@ -0,0 +1,145 @@ +package chipyard.example + + +import chisel3._ +import org.chipsalliance.cde.config.{Field, Parameters} +import freechips.rocketchip.diplomacy._ +import freechips.rocketchip.prci._ +import freechips.rocketchip.util._ +import freechips.rocketchip.devices.debug.{ExportDebug, JtagDTMKey, Debug} +import freechips.rocketchip.tilelink.{TLBuffer} +import chipyard.{BuildSystem, DigitalTop} +import chipyard.clocking._ +import chipyard.iobinders.{IOCellKey, JTAGChipIO} +import barstools.iocell.chisel._ + + +// 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 { + override lazy val desiredName = "ChipTop" + val system = LazyModule(p(BuildSystem)(p)).suggestName("system").asInstanceOf[DigitalTop] + + //======================== + // 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)) } + val clockSelector = system.prci_ctrl_domain { LazyModule(new TLClockSelector(baseAddress + 0x30000, tlbus.beatBytes)) } + val pllCtrl = system.prci_ctrl_domain { LazyModule(new FakePLLCtrl (baseAddress + 0x40000, tlbus.beatBytes)) } + + tlbus.toVariableWidthSlave(Some("clock-div-ctrl")) { clockDivider.tlNode := TLBuffer() } + tlbus.toVariableWidthSlave(Some("clock-sel-ctrl")) { clockSelector.tlNode := TLBuffer() } + tlbus.toVariableWidthSlave(Some("pll-ctrl")) { pllCtrl.tlNode := TLBuffer() } + + system.allClockGroupsNode := clockDivider.clockNode := clockSelector.clockNode + + // Connect all other requested clocks + val slowClockSource = ClockSourceNode(Seq(ClockSourceParameters())) + val pllClockSource = ClockSourceNode(Seq(ClockSourceParameters())) + + // The order of the connections to clockSelector.clockNode configures the inputs + // of the clockSelector's clockMux. Default to using the slowClockSource, + // software should enable the PLL, then switch to the pllClockSource + clockSelector.clockNode := slowClockSource + clockSelector.clockNode := pllClockSource + + val pllCtrlSink = BundleBridgeSink[FakePLLCtrlBundle]() + pllCtrlSink := pllCtrl.ctrlNode + + val debugClockSinkNode = ClockSinkNode(Seq(ClockSinkParameters())) + debugClockSinkNode := system.locateTLBusWrapper(p(ExportDebug).slaveWhere).fixedClockNode + def debugClockBundle = debugClockSinkNode.in.head._1 + + override lazy val module = new FlatChipTopImpl + class FlatChipTopImpl extends LazyRawModuleImp(this) { + //========================= + // 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(new ClockWithFreq(80))) + 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.reset := reset_wire + } + + // 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")) + fake_pll.io.power := pllCtrlSink.in(0)._1.power + fake_pll.io.gate := pllCtrlSink.in(0)._1.gate + + pllClockSource.out.unzip._1.map { o => + o.clock := fake_pll.io.clk + o.reset := reset_wire + } + + //========================= + // Custom Boot + //========================= + val (custom_boot_pad, customBootIOCell) = IOCell.generateIOFromSignal(system.custom_boot_pin.get.getWrappedValue, "custom_boot", p(IOCellKey)) + + //========================= + // Serialized TileLink + //========================= + val (serial_tl_pad, serialTLIOCells) = IOCell.generateIOFromSignal(system.serial_tl.get.getWrappedValue, "serial_tl", p(IOCellKey)) + + //========================= + // JTAG/Debug + //========================= + val debug = system.debug.get + // We never use the PSDIO, so tie it off on-chip + system.psd.psd.foreach { _ <> 0.U.asTypeOf(new PSDTestMode) } + system.resetctrl.map { rcio => rcio.hartIsInReset.map { _ := false.B } } + + // Tie off extTrigger + debug.extTrigger.foreach { t => + t.in.req := false.B + t.out.ack := t.out.req + } + // Tie off disableDebug + debug.disableDebug.foreach { d => d := false.B } + // Drive JTAG on-chip IOs + debug.systemjtag.map { j => + j.reset := ResetCatchAndSync(j.jtag.TCK, debugClockBundle.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) + } + + Debug.connectDebugClockAndReset(Some(debug), debugClockBundle.clock) + + // Add IOCells for the DMI/JTAG/APB ports + require(!debug.clockeddmi.isDefined) + require(!debug.apb.isDefined) + val (jtag_pad, jtagIOCells) = debug.systemjtag.map { j => + val jtag_wire = Wire(new JTAGChipIO) + j.jtag.TCK := jtag_wire.TCK + 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) + }.get + + //========================== + // UART + //========================== + require(system.uarts.size == 1) + val (uart_pad, uartIOCells) = IOCell.generateIOFromSignal(system.module.uart.head, "uart_0", p(IOCellKey)) + } +} diff --git a/generators/chipyard/src/main/scala/example/FlatTestHarness.scala b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala new file mode 100644 index 00000000..3954931e --- /dev/null +++ b/generators/chipyard/src/main/scala/example/FlatTestHarness.scala @@ -0,0 +1,83 @@ +package chipyard.example + +import chisel3._ + +import scala.collection.mutable.{ArrayBuffer, LinkedHashMap} + +import org.chipsalliance.cde.config.{Field, Parameters} +import freechips.rocketchip.diplomacy.{LazyModule} +import freechips.rocketchip.prci.{ClockSourceAtFreqFromPlusArg, ClockBundle, ClockBundleParameters} +import freechips.rocketchip.util.{PlusArg} +import freechips.rocketchip.subsystem.{CacheBlockBytes} +import freechips.rocketchip.devices.debug.{SimJTAG} +import freechips.rocketchip.jtag.{JTAGIO} +import testchipip.{SerialTLKey, SerialAdapter, UARTAdapter, SimDRAM} +import chipyard.{BuildTop} + +// A "flat" TestHarness that doesn't use IOBinders +// use with caution. +// This example is hard-coded to work only for FlatChipTop, and the ChipLikeRocketConfig +class FlatTestHarness(implicit val p: Parameters) extends Module { + val io = IO(new Bundle { + val success = Output(Bool()) + }) + + // This only works with FlatChipTop + val lazyDut = LazyModule(new FlatChipTop).suggestName("chiptop") + val dut = Module(lazyDut.module) + + // Clock + 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 + + // Reset + dut.reset_pad := reset.asAsyncReset + + // Custom boot + dut.custom_boot_pad := PlusArg("custom_boot_pin", width=1) + + // Serialized TL + val sVal = p(SerialTLKey).get + require(sVal.axiMemOverSerialTLParams.isDefined) + require(sVal.isMemoryDevice) + val axiDomainParams = sVal.axiMemOverSerialTLParams.get + val memFreq = axiDomainParams.getMemFrequency(lazyDut.system) + + withClockAndReset(clock, reset) { + val memOverSerialTLClockBundle = Wire(new ClockBundle(ClockBundleParameters())) + memOverSerialTLClockBundle.clock := clock + memOverSerialTLClockBundle.reset := reset + val serial_bits = SerialAdapter.asyncQueue(dut.serial_tl_pad, clock, reset) + val harnessMultiClockAXIRAM = SerialAdapter.connectHarnessMultiClockAXIRAM( + lazyDut.system.serdesser.get, + serial_bits, + memOverSerialTLClockBundle, + reset) + io.success := SerialAdapter.connectSimSerial(harnessMultiClockAXIRAM.module.io.tsi_ser, clock, reset) + + // connect SimDRAM from the AXI port coming from the harness multi clock axi ram + (harnessMultiClockAXIRAM.mem_axi4 zip harnessMultiClockAXIRAM.memNode.edges.in).map { case (axi_port, edge) => + val memSize = sVal.memParams.size + val lineSize = p(CacheBlockBytes) + val mem = Module(new SimDRAM(memSize, lineSize, BigInt(memFreq.toLong), edge.bundle)).suggestName("simdram") + mem.io.axi <> axi_port.bits + mem.io.clock := axi_port.clock + mem.io.reset := axi_port.reset + } + } + + // JTAG + val jtag_wire = Wire(new JTAGIO) + jtag_wire.TDO.data := dut.jtag_pad.TDO + jtag_wire.TDO.driven := true.B + dut.jtag_pad.TCK := jtag_wire.TCK + dut.jtag_pad.TMS := jtag_wire.TMS + dut.jtag_pad.TDI := jtag_wire.TDI + val dtm_success = WireInit(false.B) + val jtag = Module(new SimJTAG(tickDelay=3)).connect(jtag_wire, clock, reset.asBool, ~(reset.asBool), dtm_success) + + // UART + UARTAdapter.connect(Seq(dut.uart_pad)) +} diff --git a/generators/chipyard/src/main/scala/example/GCD.scala b/generators/chipyard/src/main/scala/example/GCD.scala index fe55f288..bf05ba9c 100644 --- a/generators/chipyard/src/main/scala/example/GCD.scala +++ b/generators/chipyard/src/main/scala/example/GCD.scala @@ -5,7 +5,7 @@ import chisel3.util._ import chisel3.experimental.{IntParam, BaseModule} import freechips.rocketchip.amba.axi4._ import freechips.rocketchip.subsystem.BaseSubsystem -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.regmapper.{HasRegMap, RegField} import freechips.rocketchip.tilelink._ diff --git a/generators/chipyard/src/main/scala/example/InitZero.scala b/generators/chipyard/src/main/scala/example/InitZero.scala index 5051c37d..bb6ecd72 100644 --- a/generators/chipyard/src/main/scala/example/InitZero.scala +++ b/generators/chipyard/src/main/scala/example/InitZero.scala @@ -3,7 +3,7 @@ package chipyard.example import chisel3._ import chisel3.util._ import freechips.rocketchip.subsystem.{BaseSubsystem, CacheBlockBytes} -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, IdRange} import freechips.rocketchip.tilelink._ diff --git a/generators/chipyard/src/main/scala/example/NodeTypes.scala b/generators/chipyard/src/main/scala/example/NodeTypes.scala index cafc470f..1cdddd32 100644 --- a/generators/chipyard/src/main/scala/example/NodeTypes.scala +++ b/generators/chipyard/src/main/scala/example/NodeTypes.scala @@ -1,6 +1,6 @@ package chipyard.example -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tilelink._ diff --git a/generators/chipyard/src/main/scala/example/RegisterNodeExample.scala b/generators/chipyard/src/main/scala/example/RegisterNodeExample.scala index cda91ffe..e7a8b0b8 100644 --- a/generators/chipyard/src/main/scala/example/RegisterNodeExample.scala +++ b/generators/chipyard/src/main/scala/example/RegisterNodeExample.scala @@ -2,7 +2,7 @@ import chisel3._ import chisel3.util._ -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.diplomacy._ import freechips.rocketchip.regmapper._ import freechips.rocketchip.tilelink.TLRegisterNode diff --git a/generators/chipyard/src/main/scala/example/TutorialTile.scala b/generators/chipyard/src/main/scala/example/TutorialTile.scala index 3d8e1ae1..1a9114b9 100644 --- a/generators/chipyard/src/main/scala/example/TutorialTile.scala +++ b/generators/chipyard/src/main/scala/example/TutorialTile.scala @@ -3,7 +3,7 @@ package chipyard.example import chisel3._ import chisel3.util._ -import freechips.rocketchip.config._ +import org.chipsalliance.cde.config._ import freechips.rocketchip.subsystem._ import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.diplomacy._ diff --git a/generators/chipyard/src/main/scala/example/dsptools/DspBlocks.scala b/generators/chipyard/src/main/scala/example/dsptools/DspBlocks.scala index b51e2223..9ad23a4c 100644 --- a/generators/chipyard/src/main/scala/example/dsptools/DspBlocks.scala +++ b/generators/chipyard/src/main/scala/example/dsptools/DspBlocks.scala @@ -5,7 +5,7 @@ import chisel3.util._ import dspblocks._ import dsptools.numbers._ import freechips.rocketchip.amba.axi4stream._ -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.diplomacy._ import freechips.rocketchip.regmapper._ import freechips.rocketchip.tilelink._ diff --git a/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala b/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala index f45b318c..15dfb992 100644 --- a/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala +++ b/generators/chipyard/src/main/scala/example/dsptools/GenericFIR.scala @@ -8,7 +8,7 @@ import chisel3.util._ import dspblocks._ import dsptools.numbers._ import freechips.rocketchip.amba.axi4stream._ -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tilelink._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala b/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala index c6ffaf42..2846277c 100644 --- a/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala +++ b/generators/chipyard/src/main/scala/example/dsptools/StreamingPassthrough.scala @@ -8,7 +8,7 @@ import chisel3.util._ import dspblocks._ import dsptools.numbers._ import freechips.rocketchip.amba.axi4stream._ -import freechips.rocketchip.config.{Parameters, Field, Config} +import org.chipsalliance.cde.config.{Parameters, Field, Config} import freechips.rocketchip.diplomacy._ import freechips.rocketchip.tilelink._ import freechips.rocketchip.subsystem._ diff --git a/generators/chipyard/src/main/scala/stage/phases/AddDefaultTests.scala b/generators/chipyard/src/main/scala/stage/phases/AddDefaultTests.scala index 03aa0b56..2258228e 100644 --- a/generators/chipyard/src/main/scala/stage/phases/AddDefaultTests.scala +++ b/generators/chipyard/src/main/scala/stage/phases/AddDefaultTests.scala @@ -6,7 +6,7 @@ package chipyard.stage.phases import scala.util.Try import scala.collection.mutable -import chipsalliance.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import chisel3.stage.phases.Elaborate import firrtl.AnnotationSeq import firrtl.annotations.{Annotation, NoTargetAnnotation} diff --git a/generators/chipyard/src/main/scala/unittest/TestHarness.scala b/generators/chipyard/src/main/scala/unittest/TestHarness.scala index 8bb4bbd9..a5ca5551 100644 --- a/generators/chipyard/src/main/scala/unittest/TestHarness.scala +++ b/generators/chipyard/src/main/scala/unittest/TestHarness.scala @@ -1,7 +1,7 @@ package chipyard.unittest import chisel3._ -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters class TestHarness(implicit val p: Parameters) extends Module { val io = IO(new Bundle { val success = Output(Bool()) }) diff --git a/generators/chipyard/src/main/scala/unittest/UnitTestSuite.scala b/generators/chipyard/src/main/scala/unittest/UnitTestSuite.scala index 40e991a2..d3281dc1 100644 --- a/generators/chipyard/src/main/scala/unittest/UnitTestSuite.scala +++ b/generators/chipyard/src/main/scala/unittest/UnitTestSuite.scala @@ -1,6 +1,6 @@ package chipyard.unittest -import freechips.rocketchip.config.Parameters +import org.chipsalliance.cde.config.Parameters import freechips.rocketchip.util.{ElaborationArtefacts, PlusArgArtefacts} class UnitTestSuite(implicit p: Parameters) extends freechips.rocketchip.unittest.UnitTestSuite { diff --git a/generators/constellation b/generators/constellation index 4606ee19..e9f1c828 160000 --- a/generators/constellation +++ b/generators/constellation @@ -1 +1 @@ -Subproject commit 4606ee19b74d32d165b1708ef6f4ee98baa1c50d +Subproject commit e9f1c828ca5adb4fa46a242cd1798391fc9e6f62 diff --git a/generators/cva6 b/generators/cva6 index 737fd83b..0011494b 160000 --- a/generators/cva6 +++ b/generators/cva6 @@ -1 +1 @@ -Subproject commit 737fd83b820aea6d615f372a97766b1d390a18d5 +Subproject commit 0011494bb70d2327ab4d6b0258f5073f137927ee diff --git a/generators/fft-generator b/generators/fft-generator index a31bd038..be8ab768 160000 --- a/generators/fft-generator +++ b/generators/fft-generator @@ -1 +1 @@ -Subproject commit a31bd038ddf3c941634cb830608edb0bdd6442db +Subproject commit be8ab768bd15824c69531df632478e4429078b94 diff --git a/generators/firechip/src/main/scala/BridgeBinders.scala b/generators/firechip/src/main/scala/BridgeBinders.scala index 4d64a8ad..4d768da9 100644 --- a/generators/firechip/src/main/scala/BridgeBinders.scala +++ b/generators/firechip/src/main/scala/BridgeBinders.scala @@ -6,9 +6,9 @@ import chisel3._ import chisel3.experimental.annotate import chisel3.util.experimental.BoringUtils -import freechips.rocketchip.config.{Field, Config, Parameters} +import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule} -import freechips.rocketchip.devices.debug.{Debug, HasPeripheryDebugModuleImp} +import freechips.rocketchip.devices.debug.{Debug, HasPeripheryDebug} import freechips.rocketchip.amba.axi4.{AXI4Bundle} import freechips.rocketchip.subsystem._ import freechips.rocketchip.tile.{RocketTile} diff --git a/generators/firechip/src/main/scala/FireSim.scala b/generators/firechip/src/main/scala/FireSim.scala index bd35341b..a62059e3 100644 --- a/generators/firechip/src/main/scala/FireSim.scala +++ b/generators/firechip/src/main/scala/FireSim.scala @@ -9,7 +9,7 @@ import chisel3.experimental.{IO} import freechips.rocketchip.prci._ import freechips.rocketchip.subsystem.{BaseSubsystem, SubsystemDriveAsyncClockGroupsKey} -import freechips.rocketchip.config.{Field, Config, Parameters} +import org.chipsalliance.cde.config.{Field, Config, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, InModuleBody, ValName} import freechips.rocketchip.util.{ResetCatchAndSync, RecordMap} diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 2ea848df..7af98c57 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -4,7 +4,7 @@ import java.io.File import chisel3._ import chisel3.util.{log2Up} -import freechips.rocketchip.config.{Parameters, Config} +import org.chipsalliance.cde.config.{Parameters, Config} import freechips.rocketchip.groundtest.TraceGenParams import freechips.rocketchip.tile._ import freechips.rocketchip.tilelink._ diff --git a/generators/gemmini b/generators/gemmini index 4dd19f3e..965ea0b3 160000 --- a/generators/gemmini +++ b/generators/gemmini @@ -1 +1 @@ -Subproject commit 4dd19f3e93d2decc24048eb1776e53fb20855841 +Subproject commit 965ea0b3c5ffd7b68e6bf5a50ea9ff0750a5b988 diff --git a/generators/hwacha b/generators/hwacha index e1be8e2a..d01ca1e7 160000 --- a/generators/hwacha +++ b/generators/hwacha @@ -1 +1 @@ -Subproject commit e1be8e2a41c6bc2239aed4e23355cf34a224f380 +Subproject commit d01ca1e7f8a3ba3f419509273dfef00e41095f6a diff --git a/generators/ibex b/generators/ibex index 626127f2..916fb7a6 160000 --- a/generators/ibex +++ b/generators/ibex @@ -1 +1 @@ -Subproject commit 626127f229dd6dc926b7670eb4dd138f32a7940a +Subproject commit 916fb7a6ff4a65f989279bcc082676a565beee0c diff --git a/generators/icenet b/generators/icenet index 90d52a6a..ce1ec55c 160000 --- a/generators/icenet +++ b/generators/icenet @@ -1 +1 @@ -Subproject commit 90d52a6a8435c862e6435d04436f587c3b36c8c0 +Subproject commit ce1ec55c1fd9c4339e7c0eec3a82d86041fa5d20 diff --git a/generators/mempress b/generators/mempress index b9eaedc0..295ae085 160000 --- a/generators/mempress +++ b/generators/mempress @@ -1 +1 @@ -Subproject commit b9eaedc061adbbe488f4c094f0ddd2177852e11a +Subproject commit 295ae0854a429182e4a38b120c8771a4e898834e diff --git a/generators/nvdla b/generators/nvdla index 2b17011b..7130a5c0 160000 --- a/generators/nvdla +++ b/generators/nvdla @@ -1 +1 @@ -Subproject commit 2b17011b266025704b958efeeca2363c0cdd446d +Subproject commit 7130a5c0f7016cd177ec9cf908a18edd668660d1 diff --git a/generators/riscv-sodor b/generators/riscv-sodor index d6ccc5de..c051956d 160000 --- a/generators/riscv-sodor +++ b/generators/riscv-sodor @@ -1 +1 @@ -Subproject commit d6ccc5de5cf6f07be500a0d1351656bb0c50e4a3 +Subproject commit c051956d3be3269c4ed9fcbb6afe920a6f54fd32 diff --git a/generators/rocket-chip b/generators/rocket-chip index ed635289..cbe252af 160000 --- a/generators/rocket-chip +++ b/generators/rocket-chip @@ -1 +1 @@ -Subproject commit ed635289310c85575d50ced2035b567255998c17 +Subproject commit cbe252aff11c7442bc5c2838d759edfcc6c51fa6 diff --git a/generators/sha3 b/generators/sha3 index 8c5d2443..1fa5ef8a 160000 --- a/generators/sha3 +++ b/generators/sha3 @@ -1 +1 @@ -Subproject commit 8c5d244303694311c4e63e51915a492491a3f5c7 +Subproject commit 1fa5ef8ae5b67126d709193896e75dba50c5fd28 diff --git a/generators/sifive-blocks b/generators/sifive-blocks index 3938f301..534d3b74 160000 --- a/generators/sifive-blocks +++ b/generators/sifive-blocks @@ -1 +1 @@ -Subproject commit 3938f301ce453c86e908211788017fd3a7e2765e +Subproject commit 534d3b74a0f22e67198aa361ae987042ee56dead diff --git a/generators/sifive-cache b/generators/sifive-cache index 850e1215..02e002b3 160000 --- a/generators/sifive-cache +++ b/generators/sifive-cache @@ -1 +1 @@ -Subproject commit 850e12154c1de6baee9e40094d115e9b85d799b1 +Subproject commit 02e002b324c0e6316234045fa739fdb9d716170d diff --git a/generators/testchipip b/generators/testchipip index dead693f..efdef967 160000 --- a/generators/testchipip +++ b/generators/testchipip @@ -1 +1 @@ -Subproject commit dead693f8f317bfeeb4eb777c4d58c4427fbba31 +Subproject commit efdef967720ac836cf007f361371f095fbdce4ea diff --git a/generators/tracegen/src/main/scala/Configs.scala b/generators/tracegen/src/main/scala/Configs.scala index ac2477a1..5d4f0211 100644 --- a/generators/tracegen/src/main/scala/Configs.scala +++ b/generators/tracegen/src/main/scala/Configs.scala @@ -2,7 +2,7 @@ package tracegen import chisel3._ import chisel3.util.log2Ceil -import freechips.rocketchip.config.{Config, Parameters} +import org.chipsalliance.cde.config.{Config, Parameters} import freechips.rocketchip.groundtest.{TraceGenParams, TraceGenTileAttachParams} import freechips.rocketchip.subsystem._ import freechips.rocketchip.system.BaseConfig diff --git a/generators/tracegen/src/main/scala/System.scala b/generators/tracegen/src/main/scala/System.scala index fceb0072..2a0ba3d5 100644 --- a/generators/tracegen/src/main/scala/System.scala +++ b/generators/tracegen/src/main/scala/System.scala @@ -1,9 +1,9 @@ package tracegen import chisel3._ -import freechips.rocketchip.config.{Field, Parameters} +import org.chipsalliance.cde.config.{Field, Parameters} import freechips.rocketchip.diplomacy.{LazyModule, LazyModuleImp, BufferParams} -import freechips.rocketchip.interrupts.{IntSinkNode, IntSinkPortSimple} +import freechips.rocketchip.interrupts.{IntSinkNode, IntSinkPortSimple, NullIntSyncSource, IntSyncXbar} import freechips.rocketchip.groundtest.{DebugCombiner, TraceGenParams, GroundTestTile} import freechips.rocketchip.subsystem._ import boom.lsu.BoomTraceGenTile @@ -17,6 +17,7 @@ class TraceGenSystem(implicit p: Parameters) extends BaseSubsystem case t: GroundTestTile => t.statusNode.makeSink() case t: BoomTraceGenTile => t.statusNode.makeSink() } + lazy val debugNode = IntSyncXbar() := NullIntSyncSource() override lazy val module = new TraceGenSystemModuleImp(this) } diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index aa78942b..262b3a19 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -91,6 +91,7 @@ run_step() { # Check for this, since many users will be attempting to use this with gemmini if [ $TOOLCHAIN_TYPE == "esp-tools" ]; then while true; do + printf '\033[2J' read -p "WARNING: You are trying to install the esp-tools toolchain."$'\n'"This should ONLY be used for Hwacha development."$'\n'"Gemmini should be used with riscv-tools."$'\n'"Type \"y\" to continue if this is intended, or \"n\" if not: " validate case "$validate" in y | Y) diff --git a/scripts/config-finder.py b/scripts/config-finder.py deleted file mode 100755 index a7377939..00000000 --- a/scripts/config-finder.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/env python3 - -import argparse -import subprocess -from collections import defaultdict -import re -from copy import deepcopy -import os - -cy_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) - -# from https://gist.github.com/angstwad/bf22d1822c38a92ec0a9 -def deep_merge(a: dict, b: dict) -> dict: - """Merge two dicts and return a singular dict""" - result = deepcopy(a) - for bk, bv in b.items(): - av = result.get(bk) - if isinstance(av, dict) and isinstance(bv, dict): - result[bk] = deep_merge(av, bv) - else: - result[bk] = deepcopy(bv) - return result - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Pretty print all configs given a filelist of scala files') - parser.add_argument('FILE', type=str, help='Filelist of scala files to search within') - parser.add_argument('-l', '--levels', default=0, type=int, help='Number of levels to recursively look for configs') - args = parser.parse_args() - - files = [] - with open(args.FILE, 'r') as f: - files = f.read().splitlines() - - cmd = ['grep', '-o', r"class \+.* \+extends \+Config"] + files - r = subprocess.run(cmd, check=True, capture_output=True) - - base_file_path_dict = defaultdict(list) - for l in r.stdout.decode("UTF-8").splitlines(): - match = re.match(r"^(.*):class +([a-zA-Z_$][a-zA-Z\d_$]*).* +extends", l) - if match: - base_file_path_dict[match.group(1)].append(match.group(2)) - - levels = [] - for level in range(args.levels): - if level == 0: - # use the base - dict_to_use = base_file_path_dict - else: - # use the level-1 dict - assert len(levels) > 0 - dict_to_use = levels[-1] - - file_path_dict = defaultdict(list) - - for configs in dict_to_use.values(): - for config in configs: - cmd = ['grep', '-o', r"class \+.* \+extends \+" + f"{config}"] + files - r = subprocess.run(cmd, capture_output=True) - - for l in r.stdout.decode("UTF-8").splitlines(): - match = re.match(r"^(.*):class +([a-zA-Z_$][a-zA-Z\d_$]*).* +extends", l) - if match: - file_path_dict[match.group(1)].append(match.group(2)) - - levels.append(file_path_dict) - - final_dict = base_file_path_dict - for dct in levels: - final_dict = deep_merge(final_dict, dct) - - print(f"Finding all one-line config. fragments (up to {args.levels} levels)\n") - for k, v in final_dict.items(): - print(f"{k.replace(cy_path, 'chipyard')}:") - for e in v: - print(f" {e}") - print("") diff --git a/scripts/init-submodules-no-riscv-tools-nolog.sh b/scripts/init-submodules-no-riscv-tools-nolog.sh index 3f939bc2..b3426288 100755 --- a/scripts/init-submodules-no-riscv-tools-nolog.sh +++ b/scripts/init-submodules-no-riscv-tools-nolog.sh @@ -65,6 +65,7 @@ restore_bash_options if [ "$git_tag_rc" -ne 0 ]; then if [ "$FORCE" == false ]; then while true; do + printf '\033[2J' read -p "WARNING: You are not on an official release of Chipyard."$'\n'"Type \"y\" to continue if this is intended or \"n\" if not: " validate case "$validate" in y | Y) diff --git a/scripts/repo-clean.sh b/scripts/repo-clean.sh index 9c6d0389..0ecdbb27 100755 --- a/scripts/repo-clean.sh +++ b/scripts/repo-clean.sh @@ -21,7 +21,7 @@ rm -rf $RDIR/toolchains/esp-tools/riscv-tests/build.log popd ) ( - pushd $RDIR/tools/api-config-chipsalliance + pushd $RDIR/tools/cde git config --local status.showUntrackedFiles no popd ) diff --git a/scripts/uniqify-module-names.py b/scripts/uniqify-module-names.py new file mode 100755 index 00000000..a6255a8c --- /dev/null +++ b/scripts/uniqify-module-names.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 + +import json +import argparse +import shutil +import os +import datetime + + +parser = argparse.ArgumentParser(description="") +parser.add_argument("--top-filelist", type=str, required=True, help="Abs path to ..top.f") +parser.add_argument("--mod-filelist", type=str, required=True, help="Abs path to ..model.f") +parser.add_argument("--gen-collateral-path", dest="gcpath", type=str, required=True, help="Abs path to the gen-collateral directory") +parser.add_argument("--model-hier-json", type=str, required=True, help="Path to hierarchy JSON emitted by firtool. Must include DUT as a module.") +parser.add_argument("--out-model-hier-json", type=str, required=True, help="Path to updated hierarchy JSON emitted by this script.") +parser.add_argument("--dut", type=str, required=True, help="Name of the DUT module.") +parser.add_argument("--model", type=str, required=True, help="Name of the Model module.") +args = parser.parse_args() + + +MODEL_SFX=args.model + "_UNIQUIFIED" + +def bash(cmd): + fail = os.system(cmd) + if fail: + print(f'[*] failed to execute {cmd}') + sys.exit(1) + else: + print(cmd) + +def get_filelist(filelist): + fnames = [] + with open(filelist) as f: + lines = f.readlines() + for line in lines: + try: + fname = line.split("/")[-1].strip() + fnames.append(fname) + except: + print(f"Something is wrong about this line '{line}'") + return fnames + +def update_filelist(cur_file, new_file): + bash(f"echo \"{args.gcpath}/{new_file}\" >> {os.path.join(args.gcpath, args.mod_filelist)}") + +def generate_copy(c, sfx): + (cur_name, ext) = os.path.splitext(c) + new_name = cur_name + "_" + sfx + new_file = new_name + ext + + cur_file = os.path.join(args.gcpath, c) + 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}") + return new_file + +def dfs_update_modules(tree, common_fnames, visited, top_fnames): + # List of direct submodules to update + childs_to_update = list() + for child in tree['instances']: + # We don't have to change stuff that are under the dut + if (child['module_name'] == args.dut) or (child['module_name'] in visited): + continue + if dfs_update_modules(child, common_fnames, visited, top_fnames): + childs_to_update.append(child['module_name']) + if (child['module_name'] + ".sv") in common_fnames: + child['module_name'] = child['module_name'] + "_" + MODEL_SFX + + cur_module = tree['module_name'] + cur_file = cur_module + ".sv" + new_file = None + + # cur_file is in the common list, or is a ancestor of of them, generate a new file + if (cur_file in common_fnames) or len(childs_to_update) > 0: + new_file = generate_copy(cur_file, MODEL_SFX) + update_filelist(cur_file, os.path.basename(new_file)) + + for submodule_name in childs_to_update: + if (submodule_name + ".sv") in common_fnames: + bash(f"sed -i s/\"{submodule_name}\"/\"{submodule_name}_{MODEL_SFX}\"/ {new_file}") + + visited.add(cur_module) + return (new_file is not None) + +def main(): + top_fnames = set(get_filelist(args.top_filelist)) + mod_fnames = set(get_filelist(args.mod_filelist)) + common_fnames = top_fnames.intersection(mod_fnames) + + with open(args.model_hier_json) as imhj: + imhj_data = json.load(imhj) + + with open(args.out_model_hier_json, "w+") as out_file: + visited = set() + dfs_update_modules(imhj_data, common_fnames, visited, top_fnames) + json.dump(imhj_data, out_file, indent=2) + +if __name__ == "__main__": + main() diff --git a/sims/firesim b/sims/firesim index 68e51138..8c85960b 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 68e5113887d36e87bb6202e7fd1e7e51e786a91b +Subproject commit 8c85960b939a0090de30a31936981972874d979d diff --git a/software/tutorial/.gitignore b/software/tutorial/.gitignore new file mode 100644 index 00000000..08047cf6 --- /dev/null +++ b/software/tutorial/.gitignore @@ -0,0 +1 @@ +overlay diff --git a/software/tutorial/build.sh b/software/tutorial/build.sh new file mode 100755 index 00000000..d84c5c3b --- /dev/null +++ b/software/tutorial/build.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -ex + +CYDIR=$(git rev-parse --show-toplevel) +G_DIR=$CYDIR/generators/gemmini/software/gemmini-rocc-tests +O_DIR=$CYDIR/software/tutorial/overlay/root + +echo "Building Gemmini RoCC tests" +cd $G_DIR + +./build.sh imagenet +cd build +rm -rf $O_DIR +mkdir -p $O_DIR +cp -r imagenet/resnet50-baremetal $O_DIR/ +cp -r imagenet/resnet50-linux $O_DIR/ +cp -r imagenet/mobilenet-baremetal $O_DIR/ +cp -r imagenet/mobilenet-linux $O_DIR/ + +echo "Complete!" diff --git a/software/tutorial/marshal-configs/mobilenet-baremetal.yaml b/software/tutorial/marshal-configs/mobilenet-baremetal.yaml new file mode 100644 index 00000000..3b2df3e6 --- /dev/null +++ b/software/tutorial/marshal-configs/mobilenet-baremetal.yaml @@ -0,0 +1,8 @@ +{ + "name" : "mobilenet-baremetal", + "base" : "bare-base.json", + "workdir" : "..", + "host-init" : "build.sh", + "bin" : "overlay/root/mobilenet-baremetal", + "spike-args" : "--extension=gemmini" +} diff --git a/software/tutorial/marshal-configs/resnet50-baremetal.yaml b/software/tutorial/marshal-configs/resnet50-baremetal.yaml new file mode 100644 index 00000000..f4b00630 --- /dev/null +++ b/software/tutorial/marshal-configs/resnet50-baremetal.yaml @@ -0,0 +1,8 @@ +{ + "name" : "resnet50-baremetal", + "base" : "bare-base.json", + "workdir" : "..", + "host-init" : "build.sh", + "bin" : "overlay/root/resnet50-baremetal", + "spike-args" : "--extension=gemmini" +} diff --git a/software/tutorial/marshal-configs/resnet50-linux-interactive.yaml b/software/tutorial/marshal-configs/resnet50-linux-interactive.yaml new file mode 100644 index 00000000..4dff0843 --- /dev/null +++ b/software/tutorial/marshal-configs/resnet50-linux-interactive.yaml @@ -0,0 +1,8 @@ +{ + "name" : "resnet50-linux-interactive", + "base" : "br-base.json", + "workdir" : "..", + "host-init" : "build.sh", + "overlay" : "overlay", + "spike-args" : "--extension=gemmini" +} diff --git a/software/tutorial/marshal-configs/resnet50-linux.yaml b/software/tutorial/marshal-configs/resnet50-linux.yaml new file mode 100644 index 00000000..372e1e2b --- /dev/null +++ b/software/tutorial/marshal-configs/resnet50-linux.yaml @@ -0,0 +1,9 @@ +{ + "name" : "resnet50-linux", + "base" : "br-base.json", + "workdir" : "..", + "host-init" : "build.sh", + "overlay" : "overlay", + "command" : "/root/resnet50-linux", + "spike-args" : "--extension=gemmini" +} diff --git a/tests/Makefile b/tests/Makefile index 8756350d..28976a6a 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,24 +1,46 @@ -GCC=riscv64-unknown-elf-gcc -OBJDUMP=riscv64-unknown-elf-objdump -CFLAGS= -std=gnu99 -O2 -fno-common -fno-builtin-printf -Wall -LDFLAGS= -static +################################# +# RISCV Toolchain +################################# + +PREFIX = riscv64-unknown-elf- + +GCC = $(PREFIX)gcc +CXX = $(PREFIX)g++ +CP = $(PREFIX)objcopy +OBJDUMP = $(PREFIX)objdump +DG = $(PREFIX)gdb +SIZE = $(PREFIX)size + + +################################# +# Flags +################################# + +# SoC Settings +ARCH = rv64imafdc +ABI = lp64d +ARCHFLAGS = -march=$(ARCH) -mabi=$(ABI) + +CFLAGS = -std=gnu99 -O2 -fno-common -fno-builtin-printf -Wall +CFLAGS += $(ARCHFLAGS) +LDFLAGS = -static include libgloss.mk PROGRAMS = pwm blkdev accum charcount nic-loopback big-blkdev pingd \ streaming-passthrough streaming-fir nvdla spiflashread spiflashwrite fft gcd \ - hello + hello mt-hello -spiflash.img: spiflash.py - python3 $< .DEFAULT_GOAL := default -.PHONY: default -default: $(addsuffix .riscv,$(PROGRAMS)) spiflash.img -.PHONY: dumps -dumps: $(addsuffix .dump,$(PROGRAMS)) +################################# +# Build +################################# + +spiflash.img: spiflash.py + python3 $< %.o: %.S $(GCC) $(CFLAGS) -D__ASSEMBLY__=1 -c $< -o $@ @@ -33,7 +55,17 @@ dumps: $(addsuffix .dump,$(PROGRAMS)) $(OBJDUMP) -D $< > $@ +################################# +# Recipes +################################# + .PHONY: clean clean: rm -f *.riscv *.o *.dump $(if $(libgloss),rm -rf $(libgloss_builddir)/) + +.PHONY: default +default: $(addsuffix .riscv, $(PROGRAMS)) spiflash.img + +.PHONY: dumps +dumps: $(addsuffix .dump, $(PROGRAMS)) diff --git a/tests/hello.c b/tests/hello.c index 28d667e0..626cd930 100644 --- a/tests/hello.c +++ b/tests/hello.c @@ -1,6 +1,10 @@ #include +#include +#include "marchid.h" int main(void) { - printf("Hello world\n"); + uint64_t marchid = read_csr(marchid); + const char* march = get_march(marchid); + printf("Hello world from core 0, a %s\n", march); return 0; } diff --git a/tests/marchid.h b/tests/marchid.h new file mode 100644 index 00000000..5dfb2a3c --- /dev/null +++ b/tests/marchid.h @@ -0,0 +1,17 @@ +#ifndef MARCHID_H +#define MARCHID_H + +const char* get_march(size_t marchid) { + switch (marchid) { + case 1: + return "rocket"; + case 2: + return "sonicboom"; + case 5: + return "spike"; + default: + return "unknown"; + } +} + +#endif diff --git a/tests/mt-hello.c b/tests/mt-hello.c new file mode 100644 index 00000000..f0f521c7 --- /dev/null +++ b/tests/mt-hello.c @@ -0,0 +1,48 @@ +#include +#include +#include "marchid.h" + +// EDIT THIS +static size_t n_cores = 4; + +static void __attribute__((noinline)) barrier() +{ + static volatile int sense; + static volatile int count; + static __thread int threadsense; + + __sync_synchronize(); + + threadsense = !threadsense; + if (__sync_fetch_and_add(&count, 1) == n_cores-1) + { + count = 0; + sense = threadsense; + } + else while(sense != threadsense) + ; + + __sync_synchronize(); +} + +void __main(void) { + size_t mhartid = read_csr(mhartid); + + if (mhartid >= n_cores) while (1); + + const char* march = get_march(read_csr(marchid)); + for (size_t i = 0; i < n_cores; i++) { + if (mhartid == i) { + printf("Hello world from core %lu, a %s\n", mhartid, march); + } + barrier(); + } + + // Spin if not core 0 + if (mhartid > 0) while (1); +} + +int main(void) { + __main(); + return 0; +} diff --git a/tools/api-config-chipsalliance b/tools/api-config-chipsalliance deleted file mode 160000 index fd8df110..00000000 --- a/tools/api-config-chipsalliance +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fd8df1105a92065425cd353b6855777e35bd79b4 diff --git a/tools/cde b/tools/cde new file mode 160000 index 00000000..384c06b8 --- /dev/null +++ b/tools/cde @@ -0,0 +1 @@ +Subproject commit 384c06b8d45c8184ca2f3fba2f8e78f79d2c1b51 diff --git a/tools/rocket-dsp-utils b/tools/rocket-dsp-utils index 46d6ed77..dcd9eb21 160000 --- a/tools/rocket-dsp-utils +++ b/tools/rocket-dsp-utils @@ -1 +1 @@ -Subproject commit 46d6ed77981ef18789636426cc23f0bd7edc64d9 +Subproject commit dcd9eb212aefd8040cdf9c50adffbbf975422a1d diff --git a/variables.mk b/variables.mk index 4b852b34..1035e3ec 100644 --- a/variables.mk +++ b/variables.mk @@ -174,6 +174,7 @@ SFC_ANNO_FILE ?= $(build_dir)/$(long_name).sfc.anno.json # firtool compiler outputs MFC_TOP_HRCHY_JSON ?= $(build_dir)/top_module_hierarchy.json MFC_MODEL_HRCHY_JSON ?= $(build_dir)/model_module_hierarchy.json +MFC_MODEL_HRCHY_JSON_UNIQUIFIED ?= $(build_dir)/model_module_hierarchy.uniquified.json MFC_SMEMS_CONF ?= $(build_dir)/$(long_name).mems.conf # hardcoded firtool outputs MFC_FILELIST = $(GEN_COLLATERAL_DIR)/filelist.f diff --git a/vlsi/sim.mk b/vlsi/sim.mk index 1f5b530d..13a7fcc3 100644 --- a/vlsi/sim.mk +++ b/vlsi/sim.mk @@ -10,7 +10,7 @@ $(SIM_CONF): $(sim_common_files) echo " top_module: $(VLSI_TOP)" >> $@ echo " tb_name: ''" >> $@ # don't specify -top echo " input_files:" >> $@ - for x in $$(comm -23 <(cat $(MODEL_MODS_FILELIST) $(MODEL_BB_MODS_FILELIST) | sort -u) <(sort $(VLSI_RTL))) $(MODEL_SMEMS_FILE) $(SIM_FILE_REQS); do \ + for x in $$(cat $(MODEL_MODS_FILELIST) $(MODEL_BB_MODS_FILELIST) | sort -u) $(MODEL_SMEMS_FILE) $(SIM_FILE_REQS); do \ echo ' - "'$$x'"' >> $@; \ done echo " input_files_meta: 'append'" >> $@