From 41c560e5a8c20c831765fdc358c535880b4b078b Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Thu, 3 Oct 2019 18:47:04 -0400 Subject: [PATCH 1/9] Add symlink to firemarshal to software/firemarshal. Marshal still lives in firesim for now, but can be accessed from chipyard top. --- scripts/init-submodules-no-riscv-tools.sh | 27 ++++++++++++++++++----- sims/firesim | 2 +- software/firemarshal | 1 + 3 files changed, 23 insertions(+), 7 deletions(-) create mode 120000 software/firemarshal diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index e17b67ef..667f33b4 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -6,6 +6,18 @@ set -o pipefail RDIR=$(git rev-parse --show-toplevel) +NO_FIRESIM=false + +while test $# -gt 0 +do + case "$1" in + --no-firesim) + NO_FIRESIM=true; + ;; + esac + shift +done + # Ignore toolchain submodules cd "$RDIR" for name in toolchains/*/*/ ; do @@ -26,9 +38,12 @@ git config --unset submodule.vlsi/hammer-cadence-plugins.update git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update -# Renable firesim and init only the required submodules to provide -# all required scala deps, without doing a full build-setup -git config --unset submodule.sims/firesim.update -git submodule update --init sims/firesim -git -C sims/firesim submodule update --init sim/midas -git config submodule.sims/firesim.update none +if [ "NO_FIRESIM" = false ]; then + # Renable firesim and init only the required submodules to provide + # all required scala deps, without doing a full build-setup + git config --unset submodule.sims/firesim.update + git submodule update --init sims/firesim + git -C sims/firesim submodule update --init sim/midas + git -C sims/firesim submodule update --init --recursive sw/firesim-software + git config submodule.sims/firesim.update none +fi diff --git a/sims/firesim b/sims/firesim index 26ffba7c..ffe68ac7 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 26ffba7cbca2982fef6b221a7abbc51d5cdc4b62 +Subproject commit ffe68ac7f69795b2cccf7d9510facd5e2db4edc6 diff --git a/software/firemarshal b/software/firemarshal new file mode 120000 index 00000000..c1e20e80 --- /dev/null +++ b/software/firemarshal @@ -0,0 +1 @@ +../sims/firesim/sw/firesim-software/ \ No newline at end of file From dcddf2c842679dfdc819fbcb7371f84a0b9b16d2 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Thu, 3 Oct 2019 20:20:41 -0400 Subject: [PATCH 2/9] Fix typo in firesim initialization in init-submodules-no-riscv-tools.sh --- scripts/init-submodules-no-riscv-tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index 667f33b4..da34adf0 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -38,7 +38,7 @@ git config --unset submodule.vlsi/hammer-cadence-plugins.update git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update -if [ "NO_FIRESIM" = false ]; then +if [ $NO_FIRESIM = false ]; then # Renable firesim and init only the required submodules to provide # all required scala deps, without doing a full build-setup git config --unset submodule.sims/firesim.update From e5713a4127d26e0a514b00e5731eb4b1badb9134 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Thu, 3 Oct 2019 20:36:37 -0400 Subject: [PATCH 3/9] Update docs to include path to FireMarshal --- docs/Software/FireMarshal.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/Software/FireMarshal.rst b/docs/Software/FireMarshal.rst index ecc23736..da529f13 100644 --- a/docs/Software/FireMarshal.rst +++ b/docs/Software/FireMarshal.rst @@ -1,5 +1,6 @@ FireMarshal ================= +``software/firemarshal`` FireMarshal is a workload generation tool for RISC-V based systems. It currently only supports the FireSim FPGA-accelerated simulation platform. From 95a44ff6d06186d0bdaa72cb308b0bc37be76d93 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Fri, 4 Oct 2019 17:54:33 -0400 Subject: [PATCH 4/9] Switch to bash optarg for cli handling in init-submodules script --- scripts/init-submodules-no-riscv-tools.sh | 24 +++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index da34adf0..34b9ed8d 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -6,17 +6,24 @@ set -o pipefail RDIR=$(git rev-parse --show-toplevel) -NO_FIRESIM=false +_usage() { + echo "usage: ${0} [--no-firesim]" >&2 + exit 1 +} -while test $# -gt 0 -do - case "$1" in - --no-firesim) - NO_FIRESIM=true; - ;; +NO_FIRESIM=false +while getopts 'h-:' opt ; do + case ${opt} in + -) + case ${OPTARG} in + no-firesim) NO_FIRESIM=true ;; + *) echo "invalid option: --${OPTARG}" >&2 ; _usage ;; + esac ;; + h) _usage ;; + *) echo "invalid option: -${opt}" >&2 ; _usage ;; esac - shift done +shift $((OPTIND - 1)) # Ignore toolchain submodules cd "$RDIR" @@ -39,6 +46,7 @@ git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update if [ $NO_FIRESIM = false ]; then +echo "initializing firesim" # Renable firesim and init only the required submodules to provide # all required scala deps, without doing a full build-setup git config --unset submodule.sims/firesim.update From 8e8ce09ce92e239920732ee2352ef24f43074436 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Fri, 4 Oct 2019 19:04:08 -0400 Subject: [PATCH 5/9] Move qemu to chipyard from firesim --- .gitmodules | 3 +++ scripts/build-toolchains.sh | 3 +++ scripts/init-submodules-no-riscv-tools.sh | 2 ++ sims/firesim | 2 +- toolchains/qemu | 1 + 5 files changed, 10 insertions(+), 1 deletion(-) create mode 160000 toolchains/qemu diff --git a/.gitmodules b/.gitmodules index 4c23765e..2f4d9eb3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -92,3 +92,6 @@ [submodule "vlsi/hammer-mentor-plugins"] path = vlsi/hammer-mentor-plugins url = git@github.com:ucb-bar/hammer-mentor-plugins.git +[submodule "toolchains/qemu"] + path = toolchains/qemu + url = https://github.com/qemu/qemu.git diff --git a/scripts/build-toolchains.sh b/scripts/build-toolchains.sh index 738b5ae7..cde56227 100755 --- a/scripts/build-toolchains.sh +++ b/scripts/build-toolchains.sh @@ -121,6 +121,9 @@ cp -p "${SRCDIR}/riscv-isa-sim/build/libfesvr.a" "${RISCV}/lib/" CC= CXX= module_all riscv-pk --prefix="${RISCV}" --host=riscv64-unknown-elf module_all riscv-tests --prefix="${RISCV}/riscv64-unknown-elf" +# Common tools (not in any particular toolchain dir) +SRCDIR="$RDIR/toolchains" module_all qemu --prefix="${RISCV}" --target-list=riscv64-softmmu + cd "$RDIR" { diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index 34b9ed8d..8f90f2d1 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -30,6 +30,8 @@ cd "$RDIR" for name in toolchains/*/*/ ; do git config submodule."${name%/}".update none done +git config submodule.toolchains.qemu.update none + # Disable updates to the FireSim submodule until explicitly requested git config submodule.sims/firesim.update none # Disable updates to the hammer tool plugins repos diff --git a/sims/firesim b/sims/firesim index ffe68ac7..1e7f304c 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit ffe68ac7f69795b2cccf7d9510facd5e2db4edc6 +Subproject commit 1e7f304c49507b46cf77ccf5d21a807db633f35c diff --git a/toolchains/qemu b/toolchains/qemu new file mode 160000 index 00000000..4f591025 --- /dev/null +++ b/toolchains/qemu @@ -0,0 +1 @@ +Subproject commit 4f59102571fce49af180cfc6d4cdd2b5df7bdb14 From 3e2fba51505f470735adb11c4d8552ba1fd4dcd3 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Fri, 4 Oct 2019 19:06:47 -0400 Subject: [PATCH 6/9] Update firesim to a version that has this chipyard submoduled. --- sims/firesim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sims/firesim b/sims/firesim index 1e7f304c..3840b6e7 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 1e7f304c49507b46cf77ccf5d21a807db633f35c +Subproject commit 3840b6e7bfab7ad954d9494cf732cf99e0d86dc2 From 151d3f16c3260a00e427372b9dd866e32d9b9e68 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Sat, 5 Oct 2019 00:24:31 +0000 Subject: [PATCH 7/9] typo in command for ignoring qemu submodule --- scripts/init-submodules-no-riscv-tools.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index 8f90f2d1..0ce30475 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -30,7 +30,7 @@ cd "$RDIR" for name in toolchains/*/*/ ; do git config submodule."${name%/}".update none done -git config submodule.toolchains.qemu.update none +git config submodule.toolchains/qemu.update none # Disable updates to the FireSim submodule until explicitly requested git config submodule.sims/firesim.update none @@ -43,6 +43,8 @@ git submodule update --init --recursive #--jobs 8 for name in toolchains/*/*/ ; do git config --unset submodule."${name%/}".update done +git config --unset submodule.toolchains/qemu.update + git config --unset submodule.vlsi/hammer-cadence-plugins.update git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update From e0b4f21ce6d907aed13076afc74e5ba5e4f3a107 Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Sun, 6 Oct 2019 18:46:22 -0400 Subject: [PATCH 8/9] fixup circular reference with firesim --- sims/firesim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sims/firesim b/sims/firesim index 6d578eeb..226df1d6 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit 6d578eeb40b6da88e192d0ab4844b3ac690868f3 +Subproject commit 226df1d6134aca22e1e1592935b0b8033f8e0734 From c7cba24bf608219328ff3a586c29a41fc43e976b Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Sun, 6 Oct 2019 19:13:40 -0400 Subject: [PATCH 9/9] Add qemu to CI rules for rebuilding toolchain --- .circleci/create-hash.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/create-hash.sh b/.circleci/create-hash.sh index 63dfa242..939eeb31 100755 --- a/.circleci/create-hash.sh +++ b/.circleci/create-hash.sh @@ -15,7 +15,7 @@ cd $LOCAL_CHIPYARD_DIR # Use normalized output of git-submodule status as hashfile for tools in 'riscv-tools' 'esp-tools' ; do - git submodule status "toolchains/${tools}" | while read -r line ; do + git submodule status "toolchains/${tools}" "toolchains/qemu" | while read -r line ; do echo "${line#[!0-9a-f]}" done > "${HOME}/${tools}.hash" done