# 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.10 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: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - run: name: Building riscv-tools toolchain command: | .circleci/build-toolchains.sh riscv-tools no_output_timeout: 120m - save_cache: key: riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} paths: - "/home/riscvuser/riscv-tools-install" install-esp-toolchain: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} - run: name: Building esp-tools toolchain command: | .circleci/build-toolchains.sh esp-tools no_output_timeout: 120m - save_cache: key: esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} paths: - "/home/riscvuser/esp-tools-install" install-verilator: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - add_ssh_keys: fingerprints: - "3e:c3:02:5b:ed:64:8c:b7:b0:04:43:bc:83:43:73:1e" - checkout - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Build Verilator command: | .circleci/build-verilator.sh no_output_timeout: 120m - save_cache: key: verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} paths: - "/home/riscvuser/verilator" prepare-example: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the example subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=example no_output_timeout: 120m - save_cache: key: example-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" prepare-boomexample: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the boomexample subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=example CONFIG=SmallDefaultBoomConfig no_output_timeout: 120m - save_cache: key: boomexample-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" prepare-boomrocketexample: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the boomrocketexample subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=example CONFIG=SmallDefaultBoomAndRocketConfig no_output_timeout: 120m - save_cache: key: boomrocketexample-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" prepare-boom: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the boom subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=boom no_output_timeout: 120m - save_cache: key: boom-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" prepare-rocketchip: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the rocketchip subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=rocketchip no_output_timeout: 120m - save_cache: key: rocketchip-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" prepare-hwacha: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb 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-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - verilator-installed-v2-{{ checksum "sims/verisim/verilator.mk" }} - run: name: Building the hwacha subproject using Verilator command: .circleci/do-rtl-build.sh SUB_PROJECT=hwacha no_output_timeout: 120m - save_cache: key: hwacha-{{ .Branch }}-{{ .Revision }} paths: - "/home/riscvuser/project" example-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - example-{{ .Branch }}-{{ .Revision }} - run: name: Run example benchmark tests command: make run-bmark-tests -C sims/verisim SUB_PROJECT=example boomexample-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - boomexample-{{ .Branch }}-{{ .Revision }} - run: name: Run boomexample benchmark tests command: make run-bmark-tests -C sims/verisim SUB_PROJECT=example CONFIG=SmallDefaultBoomConfig boomrocketexample-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - boomrocketexample-{{ .Branch }}-{{ .Revision }} - run: name: Run boomrocketexample benchmark tests command: make run-bmark-tests -C sims/verisim SUB_PROJECT=example CONFIG=SmallDefaultBoomAndRocketConfig boom-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - boom-{{ .Branch }}-{{ .Revision }} - run: name: Run boom benchmark tests command: make run-bmark-tests -C sims/verisim SUB_PROJECT=boom rocketchip-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - riscv-tools-installed-v1-{{ checksum "../riscv-tools.hash" }} - restore_cache: keys: - rocketchip-{{ .Branch }}-{{ .Revision }} - run: name: Run rocketchip benchmark tests command: make run-bmark-tests -C sims/verisim SUB_PROJECT=rocketchip hwacha-run-benchmark-tests: docker: - image: riscvboom/riscvboom-images:0.0.10 environment: JVM_OPTS: -Xmx3200m # Customize the JVM maximum heap limit TERM: dumb steps: - checkout - run: name: Create hash of toolchains command: | .circleci/create-hash.sh - restore_cache: keys: - esp-tools-installed-v1-{{ checksum "../esp-tools.hash" }} - restore_cache: keys: - hwacha-{{ .Branch }}-{{ .Revision }} - run: name: Run hwacha benchmark tests command: export RISCV=/home/riscvuser/esp-tools-install; export LD_LIBRARY_PATH=$RISCV/lib; make run-bmark-tests -C sims/verisim SUB_PROJECT=hwacha # Order and dependencies of jobs to run workflows: version: 2 build-and-test-chipyard-integration: jobs: # check to make sure commits are on master - commit-on-master-check # Make the toolchains - install-riscv-toolchain - install-esp-toolchain # Build verilator - install-verilator # Prepare the verilator builds - prepare-example: requires: - install-riscv-toolchain - install-verilator - prepare-boomexample: requires: - install-riscv-toolchain - install-verilator - prepare-boomrocketexample: requires: - install-riscv-toolchain - install-verilator - prepare-boom: requires: - install-riscv-toolchain - install-verilator - prepare-rocketchip: requires: - install-riscv-toolchain - install-verilator - prepare-hwacha: requires: - install-esp-toolchain - install-verilator # Run the respective tests # Run the example tests - example-run-benchmark-tests: requires: - prepare-example - boomexample-run-benchmark-tests: requires: - prepare-boomexample - boomrocketexample-run-benchmark-tests: requires: - prepare-boomrocketexample - boom-run-benchmark-tests: requires: - prepare-boom - rocketchip-run-benchmark-tests: requires: - prepare-rocketchip - hwacha-run-benchmark-tests: requires: - prepare-hwacha