From f30daa406319d1761b1c5bb8cb6428c49fefd2b2 Mon Sep 17 00:00:00 2001 From: David Biancolin Date: Fri, 24 Apr 2020 13:33:30 -0700 Subject: [PATCH 1/3] [ci] Lengthen hetero tests timeout --- .circleci/config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index d91e7115..97a27e7a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -279,6 +279,7 @@ jobs: steps: - run-tests: project-key: "chipyard-hetero" + timeout: "15m" chipyard-boom-run-tests: executor: main-env steps: From b26ed91b7364d79c903f84832539fcda001e371b Mon Sep 17 00:00:00 2001 From: David Biancolin Date: Fri, 24 Apr 2020 13:35:23 -0700 Subject: [PATCH 2/3] [CI] Convert FireSim tests to use ScalaTest --- .circleci/config.yml | 49 ++++++++----------- .circleci/defaults.sh | 8 +-- ...im-build.sh => run-firesim-scala-tests.sh} | 29 ++--------- .circleci/run-firesim-tests.sh | 29 ----------- generators/ariane | 2 +- .../src/test/scala/ScalaTestSuite.scala | 3 ++ sims/firesim | 2 +- 7 files changed, 35 insertions(+), 87 deletions(-) rename .circleci/{do-firesim-build.sh => run-firesim-scala-tests.sh} (60%) delete mode 100755 .circleci/run-firesim-tests.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 97a27e7a..801c3b85 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -247,18 +247,6 @@ jobs: steps: - prepare-rtl: project-key: "tracegen-boom" - prepare-firesim: - executor: main-env - steps: - - prepare-rtl: - project-key: "firesim" - build-script: "do-firesim-build.sh" - prepare-fireboom: - executor: main-env - steps: - - prepare-rtl: - project-key: "fireboom" - build-script: "do-firesim-build.sh" prepare-chipyard-ariane: executor: main-env steps: @@ -318,15 +306,24 @@ jobs: - run-tests: extra-cache-restore: "extra-tests" project-key: "firesim" - run-script: "run-firesim-tests.sh" + run-script: "run-firesim-scala-tests.sh" + timeout: "20m" fireboom-run-tests: executor: main-env steps: - run-tests: extra-cache-restore: "extra-tests" project-key: "fireboom" - run-script: "run-firesim-tests.sh" - timeout: "30m" + run-script: "run-firesim-scala-tests.sh" + timeout: "45m" + firesim-multiclock-run-tests: + executor: main-env + steps: + - run-tests: + extra-cache-restore: "extra-tests" + project-key: "firesim-multiclock" + run-script: "run-firesim-scala-tests.sh" + timeout: "20m" midasexamples-run-tests: executor: main-env steps: @@ -429,16 +426,6 @@ workflows: - install-riscv-toolchain - install-verilator - - prepare-firesim: - requires: - - install-riscv-toolchain - - install-verilator - - - prepare-fireboom: - requires: - - install-riscv-toolchain - - install-verilator - - prepare-chipyard-ariane: requires: - install-riscv-toolchain @@ -491,12 +478,18 @@ workflows: # Run the firesim tests - firesim-run-tests: requires: - - prepare-firesim + - install-riscv-toolchain + - install-verilator + - build-extra-tests + - firesim-multiclock-run-tests: + requires: + - install-riscv-toolchain + - install-verilator - build-extra-tests - - fireboom-run-tests: requires: - - prepare-fireboom + - install-riscv-toolchain + - install-verilator - build-extra-tests - chipyard-ariane-run-tests: diff --git a/.circleci/defaults.sh b/.circleci/defaults.sh index 7d4fdaa3..f1be9e05 100755 --- a/.circleci/defaults.sh +++ b/.circleci/defaults.sh @@ -50,9 +50,9 @@ mapping["chipyard-boom"]="SUB_PROJECT=chipyard CONFIG=SmallBoomConfig" mapping["chipyard-blkdev"]="SUB_PROJECT=chipyard CONFIG=SimBlockDeviceRocketConfig" mapping["chipyard-hwacha"]="SUB_PROJECT=chipyard CONFIG=HwachaRocketConfig" mapping["chipyard-gemmini"]="SUB_PROJECT=chipyard CONFIG=GemminiRocketConfig" +mapping["chipyard-ariane"]="SUB_PROJECT=chipyard CONFIG=ArianeConfig" mapping["tracegen"]="SUB_PROJECT=chipyard CONFIG=NonBlockingTraceGenL2Config TOP=TraceGenSystem" mapping["tracegen-boom"]="SUB_PROJECT=chipyard CONFIG=BoomTraceGenConfig TOP=TraceGenSystem" -mapping["firesim"]="DESIGN=FireSim TARGET_CONFIG=WithNIC_DDR3FRFCFSLLC4MB_FireSimRocketConfig PLATFORM_CONFIG=BaseF1Config" -mapping["fireboom"]="DESIGN=FireSim TARGET_CONFIG=WithNIC_DDR3FRFCFSLLC4MB_FireSimLargeBoomConfig PLATFORM_CONFIG=BaseF1Config" -mapping["chipyard-ariane"]="SUB_PROJECT=chipyard CONFIG=ArianeConfig" -mapping["fireariane"]="DESIGN=FireSim TARGET_CONFIG=WithNIC_DDR3FRFCFSLLC4MB_FireSimArianeConfig PLATFORM_CONFIG=BaseF1Config" +mapping["firesim"]="SCALA_TEST=firesim.firesim.RocketNICF1Tests" +mapping["firesim-multiclock"]="SCALA_TEST=firesim.firesim.RocketMulticlockF1Tests" +mapping["fireboom"]="SCALA_TEST=firesim.firesim.BoomF1Tests" diff --git a/.circleci/do-firesim-build.sh b/.circleci/run-firesim-scala-tests.sh similarity index 60% rename from .circleci/do-firesim-build.sh rename to .circleci/run-firesim-scala-tests.sh index 7d86c779..93c4561d 100755 --- a/.circleci/do-firesim-build.sh +++ b/.circleci/run-firesim-scala-tests.sh @@ -22,7 +22,6 @@ cd $LOCAL_CHIPYARD_DIR/sims/firesim ./scripts/build-libdwarf.sh cd $LOCAL_CHIPYARD_DIR - # set stricthostkeychecking to no (must happen before rsync) run "echo \"Ping $SERVER\"" @@ -30,7 +29,9 @@ clean # copy over riscv/esp-tools, and chipyard to remote run "mkdir -p $REMOTE_CHIPYARD_DIR" +run "mkdir -p $REMOTE_RISCV_DIR" copy $LOCAL_CHIPYARD_DIR/ $SERVER:$REMOTE_CHIPYARD_DIR +copy $LOCAL_RISCV_DIR/ $SERVER:$REMOTE_RISCV_DIR run "cp -r ~/.ivy2 $REMOTE_WORK_DIR" run "cp -r ~/.sbt $REMOTE_WORK_DIR" @@ -38,31 +39,11 @@ run "cp -r ~/.sbt $REMOTE_WORK_DIR" TOOLS_DIR=$REMOTE_RISCV_DIR LD_LIB_DIR=$REMOTE_RISCV_DIR/lib -if [ $1 = "hwacha" ] || [ $1 = "gemmini" ]; then - TOOLS_DIR=$REMOTE_ESP_DIR - LD_LIB_DIR=$REMOTE_ESP_DIR/lib - run "mkdir -p $REMOTE_ESP_DIR" - copy $LOCAL_ESP_DIR/ $SERVER:$REMOTE_ESP_DIR -else - run "mkdir -p $REMOTE_RISCV_DIR" - copy $LOCAL_RISCV_DIR/ $SERVER:$REMOTE_RISCV_DIR -fi -# Build MIDAS-level verilator sim -FIRESIM_VARS="${mapping[$1]}" -run "export FIRESIM_ENV_SOURCED=1; make -C $REMOTE_FIRESIM_DIR clean" +# Run Firesim Scala Tests run "export RISCV=\"$TOOLS_DIR\"; \ export LD_LIBRARY_PATH=\"$LD_LIB_DIR\"; \ + export FIRESIM_ENV_SOURCED=1; \ export PATH=\"$REMOTE_VERILATOR_DIR/bin:\$PATH\"; \ export VERILATOR_ROOT=\"$REMOTE_VERILATOR_DIR\"; \ - export FIRESIM_ENV_SOURCED=1; \ - make -C $REMOTE_FIRESIM_DIR JAVA_ARGS=\"$REMOTE_JAVA_ARGS\" $FIRESIM_VARS verilator" -run "rm -rf $REMOTE_CHIPYARD_DIR/project" - -# copy back the final build -mkdir -p $LOCAL_CHIPYARD_DIR -copy $SERVER:$REMOTE_CHIPYARD_DIR/ $LOCAL_CHIPYARD_DIR - -# Fix dramsim2_ini symlink -export $FIRESIM_VARS -ln -sf $LOCAL_FIRESIM_DIR/midas/src/main/resources/dramsim2_ini $LOCAL_FIRESIM_DIR/generated-src/f1/${DESIGN}-${TARGET_CONFIG}-${PLATFORM_CONFIG}/dramsim2_ini + make -C $REMOTE_FIRESIM_DIR JAVA_ARGS=\"$REMOTE_JAVA_ARGS\" testOnly ${mapping[$1]}" diff --git a/.circleci/run-firesim-tests.sh b/.circleci/run-firesim-tests.sh deleted file mode 100755 index d1111e60..00000000 --- a/.circleci/run-firesim-tests.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -# turn echo on and error on earliest command -set -ex - -# get remote exec variables -SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" -source $SCRIPT_DIR/defaults.sh - -export FIRESIM_ENV_SOURCED=1 - -SIMULATION_ARGS="${mapping[$1]}" - -cd $LOCAL_CHIPYARD_DIR/sims/firesim -./scripts/build-libelf.sh -./scripts/build-libdwarf.sh -cd $LOCAL_CHIPYARD_DIR - - -run_test_suite () { - export RISCV=$LOCAL_RISCV_DIR - export LD_LIBRARY_PATH=$LOCAL_RISCV_DIR/lib - make -C $LOCAL_FIRESIM_DIR $SIMULATION_ARGS run-${1}-tests-fast -} - - -run_test_suite bmark -run_test_suite nic -run_test_suite blockdev diff --git a/generators/ariane b/generators/ariane index 621201b1..f4ba64a6 160000 --- a/generators/ariane +++ b/generators/ariane @@ -1 +1 @@ -Subproject commit 621201b1d5a929ab0e89f1a857b76a33e7e2e8a8 +Subproject commit f4ba64a624091600e9d7d40c293b8d5c17f47c56 diff --git a/generators/firechip/src/test/scala/ScalaTestSuite.scala b/generators/firechip/src/test/scala/ScalaTestSuite.scala index 68797432..c5af5cda 100644 --- a/generators/firechip/src/test/scala/ScalaTestSuite.scala +++ b/generators/firechip/src/test/scala/ScalaTestSuite.scala @@ -141,6 +141,9 @@ class BoomF1Tests extends FireSimTestSuite("FireSim", "DDR3FRFCFSLLC4MB_FireSimL class RocketNICF1Tests extends FireSimTestSuite("FireSim", "WithNIC_DDR3FRFCFSLLC4MB_FireSimRocketConfig", "BaseF1Config") { runSuite("verilator")(NICLoopbackTests) } +class ArianeF1Tests extends FireSimTestSuite("FireSim", "WithNIC_DDR3FRFCFSLLC4MB_FireSimArianeConfig", "BaseF1Config") { + runSuite("verilator")(NICLoopbackTests) +} // Disabled until RAM optimizations re-enabled in multiclock //class RamModelRocketF1Tests extends FireSimTestSuite("FireSim", "FireSimDualRocketConfig", "BaseF1Config_MCRams") //class RamModelBoomF1Tests extends FireSimTestSuite("FireSim", "FireSimBoomConfig", "BaseF1Config_MCRams") diff --git a/sims/firesim b/sims/firesim index f82e115c..d5d4f4d6 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit f82e115c6641c5fe33f756abeb8093f64b0d0a80 +Subproject commit d5d4f4d6f8cf5a499fee5365eec9eec794bbd08c From 462f4d0f315baca7c9a13b57381c35acb83e7482 Mon Sep 17 00:00:00 2001 From: David Biancolin Date: Sat, 25 Apr 2020 11:28:21 -0700 Subject: [PATCH 3/3] [CI] Disable SBT supershell --- .circleci/defaults.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/defaults.sh b/.circleci/defaults.sh index f1be9e05..9dfff4d5 100755 --- a/.circleci/defaults.sh +++ b/.circleci/defaults.sh @@ -30,7 +30,8 @@ REMOTE_ESP_DIR=$REMOTE_WORK_DIR/esp-tools-install REMOTE_CHIPYARD_DIR=$REMOTE_WORK_DIR/chipyard REMOTE_SIM_DIR=$REMOTE_CHIPYARD_DIR/sims/verilator REMOTE_FIRESIM_DIR=$REMOTE_CHIPYARD_DIR/sims/firesim/sim -REMOTE_JAVA_ARGS="-Xmx8G -Xss8M -Dsbt.ivy.home=$REMOTE_WORK_DIR/.ivy2 -Dsbt.global.base=$REMOTE_WORK_DIR/.sbt -Dsbt.boot.directory=$REMOTE_WORK_DIR/.sbt/boot" +# Disable the supershell to greatly improve the readability of SBT output when captured by Circle CI +REMOTE_JAVA_ARGS="-Xmx9G -Xss8M -Dsbt.ivy.home=$REMOTE_WORK_DIR/.ivy2 -Dsbt.supershell=false -Dsbt.global.base=$REMOTE_WORK_DIR/.sbt -Dsbt.boot.directory=$REMOTE_WORK_DIR/.sbt/boot" REMOTE_VERILATOR_DIR=$CI_DIR/$CIRCLE_PROJECT_REPONAME-$CIRCLE_BRANCH-$CIRCLE_SHA1-verilator-install # local variables (aka within the docker container)