# Scala CircleCI 2.1 configuration file # # Check https://circleci.com/docs/2.0/sample-config/ for more details # version: 2.1 executors: chisel-executor: # Use the chisel3-tools image to build and run FIRRTL and chisel tests. docker: - image: ucbbar/chisel3-tools user: "chisel" working_directory: ~/repo environment: # Customize the JVM maximum heap limit JVM_OPTS: -Xmx3200m TERM: dumb CHISEL_REV: origin/master FIRRTL_REPO: git@github.com:freechipsproject/firrtl.git FIRRTL_BRANCH: master FIRRTL_REV: master TREADLE_REPO: git@github.com:freechipsproject/treadle.git TREADLE_BRANCH: master TREADLE_REV: master SBT_ARGS: "" commands: test-chisel: description: "Run chisel tests with a specific Scala version" parameters: scalaVersion: type: string default: "" steps: - attach_workspace: at: /home/chisel # Set environment - run: echo 'export PATH="/opt/verilator/verilator_4_016/bin:/opt/yosys/bin:$PATH"' >> $BASH_ENV # The -DminimalResources flag causes sbt to run tests sequentially, # so we could actually use "sbt +test" to run all the crossVersioned tests. # We currently run them separately so we can run them in parallel. - run: command: | (cd chisel3 && cat /dev/null | sbt $SBT_ARGS -DminimalResources << parameters.scalaVersion >> test) jobs: build-prep: executor: chisel-executor steps: # Perform a "default" checkout to get ssh set up. - checkout: path: chisel3 - run: command: | date > date.prep printenv ls -l git clone --depth 10 --branch $FIRRTL_BRANCH "$FIRRTL_REPO" firrtl && (cd firrtl && git checkout $FIRRTL_REV) echo $FIRRTL_REV && (cd firrtl && git log -1 > ../firrtl.log) git clone --depth 10 --branch $TREADLE_BRANCH "$TREADLE_REPO" treadle && (cd treadle && git checkout $TREADLE_REV) echo $TREADLE_REV && (cd treadle && git log -1 > ../treadle.log) - persist_to_workspace: root: /home/chisel paths: - repo - .ivy2 - .m2 - .sbt build-firrtl: executor: chisel-executor steps: - attach_workspace: at: /home/chisel # publish FIRRTL - run: command: | date > date.firrtl (cd firrtl && cat /dev/null | sbt $SBT_ARGS +publishLocal) - persist_to_workspace: root: /home/chisel paths: - repo - .ivy2 - .m2 - .sbt build-treadle: executor: chisel-executor steps: - attach_workspace: at: /home/chisel # publish Treadle - run: command: | date > date.treadle (cd treadle && cat /dev/null | sbt $SBT_ARGS +publishLocal) - persist_to_workspace: root: /home/chisel paths: - repo - .ivy2 - .m2 - .sbt # Define a pure build chisel - currently unused since we can compile and test chisel in one step # and we don't have downstream jobs that need the published version of chisel. build-chisel: executor: chisel-executor steps: - attach_workspace: at: /home/chisel # publish chisel - run: date > date.chisel3 && (cd chisel3 && cat /dev/null | sbt $SBT_ARGS +publishLocal) - persist_to_workspace: root: /home/chisel paths: - repo - .ivy2 - .m2 - .sbt test-chisel-2_11: executor: chisel-executor steps: - test-chisel: scalaVersion: "++2.11.12" test-chisel-2_12: executor: chisel-executor steps: - test-chisel: scalaVersion: "++2.12.11" workflows: build_and_test: jobs: - build-prep - build-firrtl: requires: - build-prep - build-treadle: requires: - build-firrtl - test-chisel-2_11: requires: - build-treadle - test-chisel-2_12: requires: - build-treadle