From 0225ab7b5159bfe0b7d9487c6919c316f98cb5a6 Mon Sep 17 00:00:00 2001 From: Howard Mao Date: Tue, 28 Jan 2020 15:35:18 -0800 Subject: [PATCH 01/11] bump sifive-cache for updated gitignore (#411) --- generators/sifive-cache | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/sifive-cache b/generators/sifive-cache index f5a09e289b..d3d95ece5a 160000 --- a/generators/sifive-cache +++ b/generators/sifive-cache @@ -1 +1 @@ -Subproject commit f5a09e289b92e53039d74114140d0380032ad8b4 +Subproject commit d3d95ece5a570b423892bede4fed6cb0030c7701 From 14c4c62eeae6d65c2f3c1a6304994dbaa0527a70 Mon Sep 17 00:00:00 2001 From: Sagar Karandikar Date: Tue, 28 Jan 2020 16:38:44 -0800 Subject: [PATCH 02/11] [ci-skip] Gitignore generated env-riscv-tools.sh (#414) * Gitignore generated {env,esp}-riscv-tools.sh [ci-skip] --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 7c1463a487..e2c66082b8 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ riscv-tools-install esp-tools-install tags *~ +env-riscv-tools.sh +env-esp-tools.sh From b8104904210af0e65ff6ec456f24a5c8711c3836 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Tue, 28 Jan 2020 16:39:39 -0800 Subject: [PATCH 03/11] [example] fix multi-rocc boom+rocket+hwacha config (#413) --- generators/example/src/main/scala/HeteroConfigs.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generators/example/src/main/scala/HeteroConfigs.scala b/generators/example/src/main/scala/HeteroConfigs.scala index d68532ad8d..ff3bf33877 100644 --- a/generators/example/src/main/scala/HeteroConfigs.scala +++ b/generators/example/src/main/scala/HeteroConfigs.scala @@ -92,7 +92,8 @@ class DualLargeBoomAndHwachaRocketConfig extends Config( new freechips.rocketchip.subsystem.WithNoMMIOPort ++ new freechips.rocketchip.subsystem.WithNoSlavePort ++ new WithMultiRoCC ++ // support heterogeneous rocc - new WithMultiRoCCHwacha(2) ++ // put hwacha on hart-2 (rocket) + new WithMultiRoCCHwacha(2) ++ // override: put hwacha on hart-2 (rocket) + new hwacha.DefaultHwachaConfig ++ // setup hwacha on all harts new boom.common.WithRenumberHarts ++ new boom.common.WithLargeBooms ++ new boom.common.WithNBoomCores(2) ++ From 5d27ac5bbc12047ab379fa16f4e27015d24f7dfa Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Thu, 30 Jan 2020 10:08:53 -0800 Subject: [PATCH 04/11] [sim] Pipe /dev/null to simulators to fix VCS messing up stdout (#417) --- common.mk | 12 ++++++------ sims/vcs/Makefile | 2 +- sims/verilator/Makefile | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/common.mk b/common.mk index 2259bb409f..1fd7a193a2 100644 --- a/common.mk +++ b/common.mk @@ -102,19 +102,19 @@ verilog: $(sim_vsrcs) ######################################################################################### .PHONY: run-binary run-binary-fast run-binary-debug run-fast run-binary: $(sim) - (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) $(BINARY) 2> >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log) + (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) $(BINARY) >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log) ######################################################################################### # helper rules to run simulator as fast as possible ######################################################################################### run-binary-fast: $(sim) - (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(PERMISSIVE_OFF) $(BINARY) | tee $(sim_out_name).log) + (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(PERMISSIVE_OFF) $(BINARY) >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log) + (set -o pipefail && $(sim_debug) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) $(WAVEFORM_FLAG) $(PERMISSIVE_OFF) $(BINARY) >(spike-dasm > $(sim_out_name).out) | tee $(sim_out_name).log) run-fast: run-asm-tests-fast run-bmark-tests-fast @@ -126,10 +126,10 @@ $(output_dir)/%: $(RISCV)/riscv64-unknown-elf/share/riscv-tests/isa/% ln -sf $< $@ $(output_dir)/%.run: $(output_dir)/% $(sim) - (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(PERMISSIVE_OFF) $< | tee $<.log) && touch $@ + (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(PERMISSIVE_OFF) $< >(spike-dasm > $@) | tee $<.log) + (set -o pipefail && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) $< >(spike-dasm > $@) | tee $<.log) ######################################################################################### # include build/project specific makefrags made from the generator @@ -149,7 +149,7 @@ $(AXE): $(wildcard $(AXE_DIR)/*.[ch]) $(AXE_DIR)/make.sh cd $(AXE_DIR) && ./make.sh $(output_dir)/tracegen.out: $(sim) - mkdir -p $(output_dir) && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) none 2> $@ + mkdir -p $(output_dir) && $(sim) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(VERBOSE_FLAGS) $(PERMISSIVE_OFF) none $@ $(output_dir)/tracegen.result: $(output_dir)/tracegen.out $(AXE) $(base_dir)/scripts/check-tracegen.sh $< > $@ diff --git a/sims/vcs/Makefile b/sims/vcs/Makefile index f9bb8ca984..86c28f23cd 100644 --- a/sims/vcs/Makefile +++ b/sims/vcs/Makefile @@ -91,7 +91,7 @@ $(sim_debug) : $(sim_vsrcs) $(sim_common_files) ######################################################################################### .PRECIOUS: $(output_dir)/%.vpd %.vpd $(output_dir)/%.vpd: $(output_dir)/% $(sim_debug) - (set -o pipefail && $(sim_debug) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) +vcdplusfile=$@ $(PERMISSIVE_OFF) $< 2> >(spike-dasm > $<.out) | tee $<.log) + (set -o pipefail && $(sim_debug) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) +vcdplusfile=$@ $(PERMISSIVE_OFF) $< >(spike-dasm > $<.out) | tee $<.log) ######################################################################################### # general cleanup rule diff --git a/sims/verilator/Makefile b/sims/verilator/Makefile index 364d68fd2c..caaba672e4 100644 --- a/sims/verilator/Makefile +++ b/sims/verilator/Makefile @@ -110,7 +110,7 @@ $(sim_debug): $(model_mk_debug) $(output_dir)/%.vpd: $(output_dir)/% $(sim_debug) rm -f $@.vcd && mkfifo $@.vcd vcd2vpd $@.vcd $@ > /dev/null & - (set -o pipefail && $(sim_debug) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) -v$@.vcd $(PERMISSIVE_OFF) $< 2> >(spike-dasm > $<.out) | tee $<.log) + (set -o pipefail && $(sim_debug) $(PERMISSIVE_ON) +max-cycles=$(timeout_cycles) $(SIM_FLAGS) $(VERBOSE_FLAGS) -v$@.vcd $(PERMISSIVE_OFF) $< >(spike-dasm > $<.out) | tee $<.log) ######################################################################################### # general cleanup rule From 59dd6a79ff00a25c681ef26953fb3c4ea589f5e1 Mon Sep 17 00:00:00 2001 From: David Biancolin Date: Thu, 30 Jan 2020 15:26:00 -0800 Subject: [PATCH 05/11] [firechip] Enable trace by default in BOOM-based targets (#412) * [firechip] Enable trace by default in BOOM-based targets * Bump boom for trace enchancements --- generators/boom | 2 +- generators/firechip/src/main/scala/TargetConfigs.scala | 5 +++++ generators/firechip/src/main/scala/TargetMixins.scala | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/generators/boom b/generators/boom index a88fe70c81..1d4d0cda50 160000 --- a/generators/boom +++ b/generators/boom @@ -1 +1 @@ -Subproject commit a88fe70c81c33fb4773d52a529633029fa6eb9af +Subproject commit 1d4d0cda50969a0c46f1807cc7b2201bbf42a6f3 diff --git a/generators/firechip/src/main/scala/TargetConfigs.scala b/generators/firechip/src/main/scala/TargetConfigs.scala index 17ac06e69e..ed2a86c5fe 100644 --- a/generators/firechip/src/main/scala/TargetConfigs.scala +++ b/generators/firechip/src/main/scala/TargetConfigs.scala @@ -80,6 +80,10 @@ class WithBoomL2TLBs(entries: Int) extends Config((site, here, up) => { )) }) +class WithBoomEnableTrace extends Config((site, here, up) => { + case BoomTilesKey => up(BoomTilesKey) map (tile => tile.copy(trace = true)) +}) + // Disables clock-gating; doesn't play nice with our FAME-1 pass class WithoutClockGating extends Config((site, here, up) => { case DebugModuleKey => up(DebugModuleKey, site).map(_.copy(clockGate = false)) @@ -176,6 +180,7 @@ class FireSimBoomConfig extends Config( new WithNICKey ++ new WithSerial ++ new WithBlockDevice ++ + new WithBoomEnableTrace ++ new WithBoomL2TLBs(1024) ++ new WithoutClockGating ++ new WithDefaultMemModel ++ diff --git a/generators/firechip/src/main/scala/TargetMixins.scala b/generators/firechip/src/main/scala/TargetMixins.scala index c3982d956e..be93bb7afb 100644 --- a/generators/firechip/src/main/scala/TargetMixins.scala +++ b/generators/firechip/src/main/scala/TargetMixins.scala @@ -45,7 +45,7 @@ trait HasTraceIOImp extends LazyModuleImp { // Enabled to test TracerV trace capture if (p(PrintTracePort)) { val traceprint = Wire(UInt(512.W)) - traceprint := Cat(traceIO.traces.map(_.asUInt)) + traceprint := Cat(traceIO.traces.map(_.reverse.asUInt)) printf("TRACEPORT: %x\n", traceprint) } } From 3e4c99e044cb548a7cc8db75d0a0437f182c2655 Mon Sep 17 00:00:00 2001 From: Abraham Gonzalez Date: Tue, 4 Feb 2020 18:33:08 -0800 Subject: [PATCH 06/11] [ci] use re-usable config. components (#421) --- .circleci/config.yml | 806 +++++++++++-------------------------------- 1 file changed, 208 insertions(+), 598 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 9fbb2958f4..8a1fdb48d8 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,28 +1,32 @@ # CircleCI Configuration File # version of circleci -version: 2 - -# set of jobs to run -jobs: - commit-on-master-check: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb - steps: - - checkout - - run: - name: Check commits of each submodule - command: | - .circleci/check-commit.sh - install-riscv-toolchain: +version: 2.1 + +parameters: + verilator-cache-version: + type: string + default: "v3" + tools-cache-version: + type: string + default: "v4" + +# default execution env.s +executors: + main-env: docker: - image: riscvboom/riscvboom-images:0.0.12 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + +# re-usable commands +commands: + toolchain-build: + description: "Build a toolchain" + parameters: + tools-version: + type: string + default: "riscv-tools" steps: - checkout - run: @@ -31,81 +35,151 @@ jobs: .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} + - << parameters.tools-version >>-installed-<< pipeline.parameters.tools-cache-version >>-{{ checksum "../<< parameters.tools-version >>.hash" }} - run: - name: Building riscv-tools toolchain + name: Building << parameters.tools-version >> command: | - .circleci/build-toolchains.sh riscv-tools + .circleci/build-toolchains.sh << parameters.tools-version >> no_output_timeout: 120m - save_cache: - key: riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} + key: << parameters.tools-version >>-installed-<< pipeline.parameters.tools-cache-version >>-{{ checksum "../<< parameters.tools-version >>.hash" }} paths: - - "/home/riscvuser/riscv-tools-install" - install-esp-toolchain: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + - "/home/riscvuser/<< parameters.tools-version >>-install" + + ssh-checkout: + description: "Add SSH key and checkout code" steps: + - add_ssh_keys: + fingerprints: + - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - checkout + + setup-tools-verilator: + description: "Get toolchain and verilator" + parameters: + tools-version: + type: string + default: "riscv-tools" + steps: + - ssh-checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - - esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} + - << parameters.tools-version >>-installed-<< pipeline.parameters.tools-cache-version >>-{{ checksum "../<< parameters.tools-version >>.hash" }} + - restore_cache: + keys: + - verilator-installed-<< pipeline.parameters.verilator-cache-version >>-{{ checksum "sims/verilator/verilator.mk" }} + + prepare-rtl: + description: "Run the prepare step of RTL" + parameters: + tools-version: + type: string + default: "riscv-tools" + project-key: + type: string + timeout: + type: string + default: "120m" + build-script: + type: string + default: "do-rtl-build.sh" + steps: + - setup-tools-verilator: + tools-version: "<< parameters.tools-version >>" - run: - name: Building esp-tools toolchain - command: | - .circleci/build-toolchains.sh esp-tools - no_output_timeout: 120m + name: Building << parameters.project-key >> subproject using Verilator + command: .circleci/<< parameters.build-script >> << parameters.project-key >> + no_output_timeout: << parameters.timeout >> - save_cache: - key: esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} + key: << parameters.project-key >>-{{ .Branch }}-{{ .Revision }} paths: - - "/home/riscvuser/esp-tools-install" - install-verilator: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + - "/home/riscvuser/project" + + run-tests: + description: "Run a set of tests" + parameters: + tools-version: + type: string + default: "riscv-tools" + project-key: + type: string + extra-cache-restore: + type: string + default: "" + run-script: + type: string + default: "run-tests.sh" + timeout: + type: string + default: "10m" + steps: + - setup-tools-verilator: + tools-version: "<< parameters.tools-version >>" + - restore_cache: + keys: + - << parameters.project-key >>-{{ .Branch }}-{{ .Revision }} + - when: + condition: << parameters.extra-cache-restore >> + steps: + - restore_cache: + keys: + - << parameters.extra-cache-restore >>-{{ .Branch }}-{{ .Revision }} + - run: + name: Run << parameters.project-key >> subproject tests + command: .circleci/<< parameters.run-script >> << parameters.project-key >> + no_output_timeout: << parameters.timeout >> + +# set of jobs to run +jobs: + commit-on-master-check: + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - checkout + - run: + name: Check commits of each submodule + command: | + .circleci/check-commit.sh + install-riscv-toolchain: + executor: main-env + steps: + - toolchain-build: + tools-version: "riscv-tools" + install-esp-toolchain: + executor: main-env + steps: + - toolchain-build: + tools-version: "esp-tools" + install-verilator: + executor: main-env + steps: + - ssh-checkout - restore_cache: keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} + - verilator-installed-<< pipeline.parameters.verilator-cache-version >>-{{ checksum "sims/verilator/verilator.mk" }} - run: name: Build Verilator command: | .circleci/build-verilator.sh no_output_timeout: 120m - save_cache: - key: verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} + key: verilator-installed-<< pipeline.parameters.verilator-cache-version >>-{{ checksum "sims/verilator/verilator.mk" }} paths: - "/home/riscvuser/verilator" build-extra-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout + - ssh-checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} + - riscv-tools-installed-<< pipeline.parameters.tools-cache-version >>-{{ checksum "../riscv-tools.hash" }} - run: name: Build extra tests command: .circleci/build-extra-tests.sh @@ -115,593 +189,129 @@ jobs: paths: - "/home/riscvuser/project/tests" prepare-example: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the example subproject using Verilator - command: .circleci/do-rtl-build.sh example - no_output_timeout: 120m - - save_cache: - key: example-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "example" prepare-boomrocketexample: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the boomrocketexample subproject using Verilator - command: .circleci/do-rtl-build.sh boomrocketexample - no_output_timeout: 240m - - save_cache: - key: boomrocketexample-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "boomrocketexample" + timeout: "240m" prepare-boom: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the boom subproject using Verilator - command: .circleci/do-rtl-build.sh boom - no_output_timeout: 120m - - save_cache: - key: boom-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "boom" prepare-rocketchip: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the rocketchip subproject using Verilator - command: .circleci/do-rtl-build.sh rocketchip - no_output_timeout: 120m - - save_cache: - key: rocketchip-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "rocketchip" prepare-blockdevrocketchip: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the blockdevrocketchip subproject using Verilator - command: .circleci/do-rtl-build.sh blockdevrocketchip - no_output_timeout: 120m - - save_cache: - key: blockdevrocketchip-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "blockdevrocketchip" prepare-hwacha: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the hwacha subproject using Verilator - command: .circleci/do-rtl-build.sh hwacha - no_output_timeout: 120m - - save_cache: - key: hwacha-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + tools-version: "esp-tools" + project-key: "hwacha" prepare-gemmini: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the gemmini subproject using Verilator - command: .circleci/do-rtl-build.sh gemmini - no_output_timeout: 120m - - save_cache: - key: gemmini-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + tools-version: "esp-tools" + project-key: "gemmini" prepare-tracegen: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the tracegen subproject using Verilator - command: .circleci/do-rtl-build.sh tracegen - no_output_timeout: 120m - - save_cache: - key: tracegen-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "tracegen" prepare-tracegen-boom: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building the tracegen-boom subproject using Verilator - command: .circleci/do-rtl-build.sh tracegen-boom - no_output_timeout: 120m - - save_cache: - key: tracegen-boom-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "tracegen-boom" prepare-firesim: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building FireSim MIDAS simulator using Verilator - command: .circleci/do-firesim-build.sh firesim - no_output_timeout: 120m - - save_cache: - key: firesim-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "firesim" + build-script: "do-firesim-build.sh" prepare-fireboom: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - add_ssh_keys: - fingerprints: - - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Building FireSim MIDAS simulator using Verilator - command: .circleci/do-firesim-build.sh fireboom - no_output_timeout: 120m - - save_cache: - key: fireboom-{{ .Branch }}-{{ .Revision }} - paths: - - "/home/riscvuser/project" + - prepare-rtl: + project-key: "fireboom" + build-script: "do-firesim-build.sh" midasexamples-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} + - setup-tools-verilator - run: name: Run midasexamples tests command: .circleci/run-midasexamples-tests.sh example-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - example-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run example tests - command: .circleci/run-tests.sh example + - run-tests: + project-key: "example" boomrocketexample-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - boomrocketexample-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run boomrocketexample tests - command: .circleci/run-tests.sh boomrocketexample + - run-tests: + project-key: "boomrocketexample" boom-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - boom-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run boom tests - command: .circleci/run-tests.sh boom + - run-tests: + project-key: "boom" rocketchip-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - rocketchip-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run rocketchip tests - command: .circleci/run-tests.sh rocketchip + - run-tests: + project-key: "rocketchip" hwacha-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} - - restore_cache: - keys: - - hwacha-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run hwacha tests - command: .circleci/run-tests.sh hwacha + - run-tests: + tools-version: "esp-tools" + project-key: "hwacha" gemmini-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - esp-tools-installed-v4-{{ checksum "../esp-tools.hash" }} - - restore_cache: - keys: - - gemmini-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run gemmini tests - command: .circleci/run-tests.sh gemmini + - run-tests: + tools-version: "esp-tools" + project-key: "gemmini" tracegen-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - tracegen-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run tracegen tests - command: .circleci/run-tests.sh tracegen + - run-tests: + project-key: "tracegen" tracegen-boom-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v2-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - tracegen-boom-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run tracegen-boom tests - command: .circleci/run-tests.sh tracegen-boom + - run-tests: + project-key: "tracegen-boom" firesim-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - firesim-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - extra-tests-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run FireSim tests - command: .circleci/run-firesim-tests.sh firesim + - run-tests: + extra-cache-restore: "extra-tests" + project-key: "firesim" + run-script: "run-firesim-tests.sh" fireboom-run-tests: - docker: - - image: riscvboom/riscvboom-images:0.0.12 - environment: - JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit - TERM: dumb + executor: main-env steps: - - checkout - - run: - name: Create hash of toolchains - command: | - .circleci/create-hash.sh - - restore_cache: - keys: - - riscv-tools-installed-v4-{{ checksum "../riscv-tools.hash" }} - - restore_cache: - keys: - - fireboom-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - extra-tests-{{ .Branch }}-{{ .Revision }} - - restore_cache: - keys: - - verilator-installed-v3-{{ checksum "sims/verilator/verilator.mk" }} - - run: - name: Run FireSim tests - command: .circleci/run-firesim-tests.sh fireboom - no_output_timeout: 20m - + - run-tests: + extra-cache-restore: "extra-tests" + project-key: "fireboom" + run-script: "run-firesim-tests.sh" + timeout: "20m" # Order and dependencies of jobs to run workflows: From aae93ad065bb26d7f2209f973ee4f6e40827fb2d Mon Sep 17 00:00:00 2001 From: Sagar Karandikar Date: Thu, 6 Feb 2020 10:08:58 -0800 Subject: [PATCH 07/11] bump boom with rocc/lsu exu fix (#425) * bump boom with rocc/lsu exu fix --- generators/boom | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generators/boom b/generators/boom index 1d4d0cda50..779c62c563 160000 --- a/generators/boom +++ b/generators/boom @@ -1 +1 @@ -Subproject commit 1d4d0cda50969a0c46f1807cc7b2201bbf42a6f3 +Subproject commit 779c62c5634847b517be64c554af66829de40067 From ccd6ecd41867ca11d262425a3606eeb5a31451bb Mon Sep 17 00:00:00 2001 From: Nathan Pemberton Date: Sun, 9 Feb 2020 17:58:56 -0800 Subject: [PATCH 08/11] Marhsal in chipyard (#415) * Move firemarshal into chipyard (was in firesim) --- .gitmodules | 3 +++ scripts/build-toolchains.sh | 2 +- scripts/init-submodules-no-riscv-tools.sh | 14 ++++++++++++-- sims/firesim | 2 +- software/firemarshal | 2 +- 5 files changed, 18 insertions(+), 5 deletions(-) mode change 120000 => 160000 software/firemarshal diff --git a/.gitmodules b/.gitmodules index d514a4e953..c4a9b2b934 100644 --- a/.gitmodules +++ b/.gitmodules @@ -110,3 +110,6 @@ [submodule "generators/gemmini"] path = generators/gemmini url = https://github.com/ucb-bar/gemmini +[submodule "software/firemarshal"] + path = software/firemarshal + url = https://github.com/firesim/FireMarshal.git diff --git a/scripts/build-toolchains.sh b/scripts/build-toolchains.sh index d5d181e753..27c874171c 100755 --- a/scripts/build-toolchains.sh +++ b/scripts/build-toolchains.sh @@ -141,5 +141,5 @@ cd "$RDIR" } > env-$TOOLCHAIN.sh # create general env.sh -ln -sf env-$TOOLCHAIN.sh env.sh +echo "source \$( realpath \$(dirname "\${BASH_SOURCE[0]}") )/env-$TOOLCHAIN.sh" >> env.sh echo "Toolchain Build Complete!" diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index 67e74e99cd..ef77374e4a 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -23,6 +23,7 @@ git config submodule.sims/firesim.update none git config submodule.vlsi/hammer-cadence-plugins.update none git config submodule.vlsi/hammer-synopsys-plugins.update none git config submodule.vlsi/hammer-mentor-plugins.update none +git config submodule.software/firemarshal.update none git submodule update --init --recursive #--jobs 8 # Un-ignore toolchain submodules @@ -37,6 +38,8 @@ git config --unset submodule.vlsi/hammer-synopsys-plugins.update git config --unset submodule.vlsi/hammer-mentor-plugins.update git config --unset submodule.generators/sha3.update +git config --unset submodule.software/firemarshal.update + # Non-recursive clone to exclude riscv-linux git submodule update --init generators/sha3 @@ -47,7 +50,14 @@ git submodule update --init sims/firesim cd sims/firesim # Initialize dependencies for MIDAS-level RTL simulation git submodule update --init sim/midas - # Exclude riscv-linux - git submodule update --init sw/firesim-software ) git config submodule.sims/firesim.update none + +# Only shallow clone needed for basic SW tests +git submodule update --init software/firemarshal + +# Configure firemarshal to know where our firesim installation is +if [ ! -f $RDIR/software/firemarshal/marshal-config.yaml ]; then + echo "firesim-dir: '../../sims/firesim/'" > $RDIR/software/firemarshal/marshal-config.yaml +fi +echo "PATH=\$( realpath \$(dirname "\${BASH_SOURCE[0]}") )/software/firemarshal:\$PATH" >> $RDIR/env.sh diff --git a/sims/firesim b/sims/firesim index b4951f2589..c377a5f4a1 160000 --- a/sims/firesim +++ b/sims/firesim @@ -1 +1 @@ -Subproject commit b4951f2589114e3849c77c798982afd10fc11b3e +Subproject commit c377a5f4a13f95c91a2d5e6ef6c1fc45f5041deb diff --git a/software/firemarshal b/software/firemarshal deleted file mode 120000 index c1e20e8069..0000000000 --- a/software/firemarshal +++ /dev/null @@ -1 +0,0 @@ -../sims/firesim/sw/firesim-software/ \ No newline at end of file diff --git a/software/firemarshal b/software/firemarshal new file mode 160000 index 0000000000..ef2d467fe2 --- /dev/null +++ b/software/firemarshal @@ -0,0 +1 @@ +Subproject commit ef2d467fe214d4d5294681ee8a3b25c3f470ea6b From cf9a52c052bcc7cec18193e57b3628f6ab738a9c Mon Sep 17 00:00:00 2001 From: Sagar Karandikar Date: Mon, 10 Feb 2020 02:14:32 +0000 Subject: [PATCH 09/11] bump firemarshal --- software/firemarshal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/firemarshal b/software/firemarshal index ef2d467fe2..c614142f85 160000 --- a/software/firemarshal +++ b/software/firemarshal @@ -1 +1 @@ -Subproject commit ef2d467fe214d4d5294681ee8a3b25c3f470ea6b +Subproject commit c614142f85e29cfac93b251b761147a53d3a10ec From 7004bfdba35f23b86013e72bceda2486bd8bbabd Mon Sep 17 00:00:00 2001 From: Sagar Karandikar Date: Tue, 11 Feb 2020 00:55:05 +0000 Subject: [PATCH 10/11] bump to firemarshal dev --- software/firemarshal | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/firemarshal b/software/firemarshal index c614142f85..ef69bde3b3 160000 --- a/software/firemarshal +++ b/software/firemarshal @@ -1 +1 @@ -Subproject commit c614142f85e29cfac93b251b761147a53d3a10ec +Subproject commit ef69bde3b3fe7b233ac91e16aca3b955b6eff438 From 19b4b872b1d76e11ed007178ab1925fd764a38a8 Mon Sep 17 00:00:00 2001 From: David Biancolin Date: Sat, 15 Feb 2020 00:23:31 +0000 Subject: [PATCH 11/11] Fix generation of env.sh for ZSH --- scripts/build-toolchains.sh | 2 +- scripts/firesim-setup.sh | 2 +- scripts/init-submodules-no-riscv-tools.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/build-toolchains.sh b/scripts/build-toolchains.sh index 27c874171c..b5d767c04d 100755 --- a/scripts/build-toolchains.sh +++ b/scripts/build-toolchains.sh @@ -141,5 +141,5 @@ cd "$RDIR" } > env-$TOOLCHAIN.sh # create general env.sh -echo "source \$( realpath \$(dirname "\${BASH_SOURCE[0]}") )/env-$TOOLCHAIN.sh" >> env.sh +echo "source \$( realpath \$(dirname "\${BASH_SOURCE[0]:-\${\(%\):-%x}}") )/env-$TOOLCHAIN.sh" >> env.sh echo "Toolchain Build Complete!" diff --git a/scripts/firesim-setup.sh b/scripts/firesim-setup.sh index 0787fd3cf9..959777d72f 100755 --- a/scripts/firesim-setup.sh +++ b/scripts/firesim-setup.sh @@ -6,7 +6,7 @@ set -e set -o pipefail RDIR=$(pwd) -scripts_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +scripts_dir="$( cd "$( dirname "${BASH_SOURCE[0]:-${(%):-%x}}" )" >/dev/null 2>&1 && pwd )" cd "${scripts_dir}/.." diff --git a/scripts/init-submodules-no-riscv-tools.sh b/scripts/init-submodules-no-riscv-tools.sh index ef77374e4a..c4716ce4c2 100755 --- a/scripts/init-submodules-no-riscv-tools.sh +++ b/scripts/init-submodules-no-riscv-tools.sh @@ -60,4 +60,4 @@ git submodule update --init software/firemarshal if [ ! -f $RDIR/software/firemarshal/marshal-config.yaml ]; then echo "firesim-dir: '../../sims/firesim/'" > $RDIR/software/firemarshal/marshal-config.yaml fi -echo "PATH=\$( realpath \$(dirname "\${BASH_SOURCE[0]}") )/software/firemarshal:\$PATH" >> $RDIR/env.sh +echo "PATH=\$( realpath \$(dirname "\${BASH_SOURCE[0]:-\${\(%\):-%x}}") )/software/firemarshal:\$PATH" >> $RDIR/env.sh