From 7c2153afa841d4d283faf562d0303cb593752993 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 4 Feb 2023 14:02:40 -0800 Subject: [PATCH 1/9] Add example ring-only NoC Config --- .../src/main/scala/config/NoCConfigs.scala | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/generators/chipyard/src/main/scala/config/NoCConfigs.scala b/generators/chipyard/src/main/scala/config/NoCConfigs.scala index c5ad178a..bd36fe04 100644 --- a/generators/chipyard/src/main/scala/config/NoCConfigs.scala +++ b/generators/chipyard/src/main/scala/config/NoCConfigs.scala @@ -186,3 +186,32 @@ class SharedNoCConfig extends Config( new chipyard.config.AbstractConfig ) // DOC include end: SharedNoCConfig + +class SbusRingNoCConfig extends Config( + new constellation.soc.WithSbusNoC(constellation.protocol.TLNoCParams( + constellation.protocol.DiplomaticNetworkNodeMapping( + inNodeMapping = ListMap( + "Core 0" -> 0, + "Core 1" -> 1, + "Core 2" -> 2, + "Core 3" -> 3, + "Core 4" -> 4, + "Core 5" -> 5, + "Core 6" -> 6, + "Core 7" -> 7, + "serial-tl" -> 8), + outNodeMapping = ListMap( + "system[0]" -> 9, + "system[1]" -> 10, + "system[2]" -> 11, + "system[3]" -> 12, + "pbus" -> 8)), // TSI is on the pbus, so serial-tl and pbus should be on the same node + NoCParams( + topology = UnidirectionalTorus1D(13), + channelParamGen = (a, b) => UserChannelParams(Seq.fill(10) { UserVirtualChannelParams(4) }), + routingRelation = NonblockingVirtualSubnetworksRouting(UnidirectionalTorus1DDatelineRouting(), 5, 2)) + )) ++ + new freechips.rocketchip.subsystem.WithNBigCores(8) ++ + new freechips.rocketchip.subsystem.WithNBanks(4) ++ + new chipyard.config.AbstractConfig +) From 3c256d1f3dd3b17b4226421e589d4c098e37d3eb Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 4 Feb 2023 15:24:11 -0800 Subject: [PATCH 2/9] Bump gemmini --- generators/gemmini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/gemmini b/generators/gemmini index 49494fcf..74251dc6 160000 --- a/generators/gemmini +++ b/generators/gemmini @@ -1 +1 @@ -Subproject commit 49494fcfce24798cd6da9afc7918135286e158d3 +Subproject commit 74251dc61f971fd684bc37963f7db9d8a5bd206a From 13f87e9ff602e6449dc33b3f62acde7b5c679fb9 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 09:11:56 -0800 Subject: [PATCH 3/9] Recommend riscv-tools for gemmini users in build-setup script --- scripts/build-setup.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/build-setup.sh b/scripts/build-setup.sh index 77a988c3..7f14a738 100755 --- a/scripts/build-setup.sh +++ b/scripts/build-setup.sh @@ -87,6 +87,27 @@ run_step() { { +# esp-tools should ONLY be used for hwacha. +# Check for this, since many users will be attempting to use this with gemmini +if [ $TOOLCHAIN_TYPE == "esp-tools" ]; then + while true; do + 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) + echo "Installing esp-tools." + break + ;; + n | N) + error "Rerun with riscv-tools" + exit 3 + ;; + *) + error "Invalid response. Please type \"y\" or \"n\"" + ;; + esac + done +fi + # setup and install conda environment if run_step "1"; then # note: lock file must end in .conda-lock.yml - see https://github.com/conda-incubator/conda-lock/issues/154 From 11a479673180230f1fa4c3531a36bea295711a78 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 09:13:46 -0800 Subject: [PATCH 4/9] Advise riscv-tools for gemmini users in docs --- docs/Chipyard-Basics/Initial-Repo-Setup.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/Chipyard-Basics/Initial-Repo-Setup.rst b/docs/Chipyard-Basics/Initial-Repo-Setup.rst index 6543afc2..2102c1fb 100644 --- a/docs/Chipyard-Basics/Initial-Repo-Setup.rst +++ b/docs/Chipyard-Basics/Initial-Repo-Setup.rst @@ -63,9 +63,11 @@ Start by checking out the proper Chipyard version. Run: git checkout |version| Next run the following script to fully setup Chipyard with a specific toolchain. -There are two toolchains, one for normal RISC-V programs called ``riscv-tools`` which is the one needed for most Chipyard use-cases, and another for Hwacha/Gemmini called ``esp-tools``. +There are two toolchains, one for normal RISC-V programs called ``riscv-tools`` which is the one needed for most Chipyard use-cases, and another for Hwacha called ``esp-tools``. Run the following script based off which compiler you would like to use. +.. Note:: Prior versions of Chipyard recommended ``esp-tools`` for Gemmini development. Gemmini should now be used with the standard ``riscv-tools``. + .. Warning:: The following script will complete a "full" installation of Chipyard which may take a long time depending on the system. Ensure that this script completes fully (no interruptions) before continuing on. From 95df7c9e7ec0634ccfffe30247455b4a32865fbd Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 09:15:32 -0800 Subject: [PATCH 5/9] Bump spike --- toolchains/riscv-tools/riscv-isa-sim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/toolchains/riscv-tools/riscv-isa-sim b/toolchains/riscv-tools/riscv-isa-sim index 0eec0c91..46176719 160000 --- a/toolchains/riscv-tools/riscv-isa-sim +++ b/toolchains/riscv-tools/riscv-isa-sim @@ -1 +1 @@ -Subproject commit 0eec0c911933ccc722d4b4479a6c4b8ac68f2f52 +Subproject commit 461767199aac9c15894513254ae4844de5ee78d0 From 30019f3fd739c49206afafea84b316312832efd8 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 09:23:08 -0800 Subject: [PATCH 6/9] Install libgemmini in build-toolchain-extra --- scripts/build-toolchain-extra.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/build-toolchain-extra.sh b/scripts/build-toolchain-extra.sh index 1bc54297..f81ec135 100755 --- a/scripts/build-toolchain-extra.sh +++ b/scripts/build-toolchain-extra.sh @@ -102,4 +102,9 @@ echo '==> Installing espresso logic minimizer' echo '==> Installing libgloss' CC= CXX= SRCDIR="$(pwd)/toolchains" module_all libgloss --prefix="${RISCV}/riscv${XLEN}-unknown-elf" --host=riscv${XLEN}-unknown-elf +if [ $TOOLCHAIN == "riscv-tools" ]; then + echo '==> Installing gemmini spike extensions' + make -C $RDIR/generators/gemmini/software/libgemmini install +fi + echo "Extra Toolchain Utilities/Tests Build Complete!" From e5a734e20a2f4f54db14a190bc0de5efe51f15b2 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 09:59:58 -0800 Subject: [PATCH 7/9] Bump gemmini --- generators/gemmini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/gemmini b/generators/gemmini index 74251dc6..b6389f3e 160000 --- a/generators/gemmini +++ b/generators/gemmini @@ -1 +1 @@ -Subproject commit 74251dc61f971fd684bc37963f7db9d8a5bd206a +Subproject commit b6389f3ea7bbf070aa3dd40972daa5be7e2d4261 From bcbe3b7f1f40d1c388aca68df498fd7dd4d16e89 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 10:36:09 -0800 Subject: [PATCH 8/9] Init gemmini before installing libgemmini --- scripts/build-toolchain-extra.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/build-toolchain-extra.sh b/scripts/build-toolchain-extra.sh index f81ec135..54afe983 100755 --- a/scripts/build-toolchain-extra.sh +++ b/scripts/build-toolchain-extra.sh @@ -102,8 +102,12 @@ echo '==> Installing espresso logic minimizer' echo '==> Installing libgloss' CC= CXX= SRCDIR="$(pwd)/toolchains" module_all libgloss --prefix="${RISCV}/riscv${XLEN}-unknown-elf" --host=riscv${XLEN}-unknown-elf +cd $RDIR if [ $TOOLCHAIN == "riscv-tools" ]; then echo '==> Installing gemmini spike extensions' + git submodule update --init generators/gemmini + cd generators/gemmini + git submodule update --init software/libgemmini make -C $RDIR/generators/gemmini/software/libgemmini install fi From 48905323d11ced8c2ac7efe27f9b845597b0b82a Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sun, 5 Feb 2023 23:11:16 -0800 Subject: [PATCH 9/9] Fix spiketile not compiling: --- generators/chipyard/src/main/resources/csrc/spiketile.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generators/chipyard/src/main/resources/csrc/spiketile.cc b/generators/chipyard/src/main/resources/csrc/spiketile.cc index 06b57ab3..bedc41f3 100644 --- a/generators/chipyard/src/main/resources/csrc/spiketile.cc +++ b/generators/chipyard/src/main/resources/csrc/spiketile.cc @@ -260,11 +260,11 @@ extern "C" void spike_tile(int hartid, char* isa, "vlen:128,elen:64", false, endianness_little, - false, pmpregions, std::vector(), std::vector(), - false); + false, + 0); processor_t* p = new processor_t(isa_parser, cfg, simif,