# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
#
# Azure Pipelines CI build configuration
# Documentation at https://aka.ms/yaml

variables:
  #
  # If updating VERILATOR_VERSION, OPENOCD_VERSION, TOOLCHAIN_VERSION or RUST_VERSION
  # update the definitions in util/container/Dockerfile as well.
  #
  VERILATOR_VERSION: 4.210
  OPENOCD_VERSION: 0.11.0
  TOOLCHAIN_PATH: /opt/buildcache/riscv
  VERIBLE_VERSION: v0.0-2135-gb534c1fe
  RUST_VERSION: 1.60.0
  # Release tag from https://github.com/lowRISC/lowrisc-toolchains/releases
  TOOLCHAIN_VERSION: 20220210-1
  # This controls where builds happen, and gets picked up by build_consts.sh.
  BUILD_ROOT: $(Build.ArtifactStagingDirectory)
  VIVADO_VERSION: "2020.2"

trigger:
  batch: true
  branches:
    include:
    - "*"
  tags:
    include:
    - "*"
pr:
  branches:
    include:
    - "*"

jobs:
- job: checkout
  displayName: Checkout repository
  pool:
    vmImage: ubuntu-20.04
  steps:
  - checkout: self
    path: opentitan-repo
  - bash: |
      tar -C $(Pipeline.Workspace)/opentitan-repo -czf $(Pipeline.Workspace)/opentitan-repo.tar.gz .
    displayName: Pack up repository
  - publish: $(Pipeline.Workspace)/opentitan-repo.tar.gz
    artifact: opentitan-repo
    displayName: Upload repository
- job: lint
  displayName: Quality (quick lint)
  # Run code quality checks (quick lint)
  dependsOn: checkout
  pool:
    vmImage: ubuntu-20.04
  steps:
  - template: ci/checkout-template.yml
  - bash: |
      sudo apt-get remove -y clang-6.0 libclang-common-6.0-dev libclang1-6.0 libllvm6.0
    displayName: Uninstall Clang
    # Remove existing Clang installation
  - template: ci/install-package-dependencies.yml
    ## !!!
    ##
    ##   The steps below here are duplicated in ci/jobs/quick-lint.sh
    ##   to allow developers to "run CI" locally. Keep them in sync.
    ##
    ## !!!
  - bash: ci/scripts/show-env.sh
    displayName: Environment Info
    # Display environment information
  - bash: ci/scripts/lint-commits.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Commit metadata
  - bash: ci/scripts/check-licence-headers.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Licence Headers
  - bash: ci/scripts/exec-check.sh
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Executable Bits
  - bash: ci/scripts/check-ascii.sh
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: ASCII Chars
    # Check for non-ASCII characters in source code
  - bash: ci/scripts/python-lint.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: flake8 (Python lint)
    # Run Python lint (flake8)
    continueOnError: true
  - bash: ci/scripts/mypy.sh
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: mypy (Python lint)
    # Run Python lint (mypy)
  - bash: ci/scripts/clang-format.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: clang-format (C/C++ lint)
    # Use clang-format to check C/C++ coding style
  - bash: ci/scripts/rust-format.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: rustfmt
  - bash: |
      set -e
      # Azure-specific installation:
      # The latest version of shellcheck available to ubuntu-18.04 is 0.4.6-1.
      # We need a newer version that provides the --warning flag.
      SC_VERSION="v0.8.0"
      SHELLCHECK_FILE="shellcheck-$SC_VERSION.linux.x86_64.tar.xz"
      SHELLCHECK_URL="https://github.com/koalaman/shellcheck/releases/download/$SC_VERSION/$SHELLCHECK_FILE"
      SC_SHA256=ab6ee1b178f014d1b86d1e24da20d1139656c8b0ed34d2867fbb834dad02bf0a
      echo "Installing Shellcheck $SC_VERSION"
      curl -L -o "$SHELLCHECK_FILE" "$SHELLCHECK_URL" --silent --show-error
      echo "${SC_SHA256}  ${SHELLCHECK_FILE}" | sha256sum -c
      tar -xJf $SHELLCHECK_FILE
      sudo cp "shellcheck-$SC_VERSION/shellcheck" /usr/bin
      # Run shellcheck
      echo "Checking shell scripts..."
      ci/scripts/run-shellcheck.sh || {
        echo -n "##vso[task.logissue type=error]"
        echo "Shellcheck failed. Run ci/scripts/run-shellcheck.sh to see errors."
        exit 1
      }
    displayName: shellcheck
  - bash: ci/scripts/include-guard.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Header guards
    # Check formatting on header guards
  - bash: ci/scripts/whitespace.sh $SYSTEM_PULLREQUEST_TARGETBRANCH
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Check trailing whitespace
  - bash: ci/scripts/build-docs.sh
    displayName: Render documentation
  - bash: ci/scripts/build-site.sh
    displayName: Render landing site
  - bash: ci/scripts/get-build-type.sh "$SYSTEM_PULLREQUEST_TARGETBRANCH" "$(Build.Reason)"
    displayName: Type of change
    # Check what kinds of changes the PR contains
    name: DetermineBuildType

- job: download_bazel_dependencies
  displayName: Prefetch Bazel deps
  # Download Bazel fetched dependencies
  dependsOn: checkout
  pool:
    vmImage: ubuntu-20.04
  steps:
  - template: ci/checkout-template.yml
  - bash: |
      set -x -e
      util/prep-bazel-airgapped-build.sh || {
        echo -n "##vso[task.logissue type=warning]Failed to prefetch Bazel dependencies";
        exit 1;
      }
      rm -rf bazel-airgapped/bitstreams-cache
      tar -cf bazel-airgapped.tar.gz bazel-airgapped
    displayName: Pre-fetch and package Bazel dependencies
    continueOnError: True # This step is flaky on the ubuntu-18.04 image
  - publish: $(System.DefaultWorkingDirectory)/bazel-airgapped.tar.gz
    artifact: bazel-dependencies
    condition: eq(variables['Agent.JobStatus'], 'Succeeded')

- job: slow_lints
  displayName: Quality (in-depth lint)
  # Run code quality checks (in-depth lint)
  dependsOn: lint
  pool:
    vmImage: ubuntu-20.04
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - bash: ci/scripts/check-generated.sh
    displayName: Check Generated
    # Ensure all generated files are clean and up-to-date
  - bash: ci/bazelisk.sh run buildifier_check
    displayName: Buildifier (Bazel lint)
  - bash: ci/scripts/check-vendoring.sh
    displayName: Vendored directories
  - bash: ci/scripts/verible-lint.sh rtl
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Verible RTL (Verilog lint)
  - bash: ci/scripts/verible-lint.sh dv
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Verible DV (Verilog lint)
  - bash: ci/scripts/verible-lint.sh fpv
    condition: eq(variables['Build.Reason'], 'PullRequest')
    displayName: Verible FPV (Verilog lint)

- job: sw_build
  displayName: Earl Grey SW Build & Test
  # Build and test Software for Earl Grey toplevel design
  timeoutInMinutes: 120
  dependsOn: lint
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool:
    vmImage: ubuntu-20.04
  variables:
    - name: bazelCacheGcpKeyPath
      value: ''
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - task: DownloadSecureFile@1
    condition: eq(variables['Build.SourceBranchName'], 'master')
    name: bazelCacheGcpKey
    inputs:
      secureFile: "bazel_cache_gcp_key.json"
  - bash: echo "##vso[task.setvariable variable=bazelCacheGcpKeyPath]$(bazelCacheGcpKey.secureFilePath)"
    condition: eq(variables['Build.SourceBranchName'], 'master')
    displayName: GCP key path
    # Set the remote cache GCP key path
  - bash: |
      set -x -e
      # This command builds all software and runs all unit tests that run on
      # the host.
      export GCP_BAZEL_CACHE_KEY=$(bazelCacheGcpKeyPath)
      ci/bazelisk.sh test \
      --build_tests_only=false \
      --test_output=errors \
      --define DISABLE_VERILATOR_BUILD=true \
      --test_tag_filters=-broken,-cw310,-verilator,-dv \
      //sw/...
    displayName: Build & test SW
  - bash: |
      set -x -e
      . util/build_consts.sh
      # copy the rom to a specific location
      ROM_TARGET=${BIN_DIR}/sw/device/silicon_creator/rom
      mkdir -p ${ROM_TARGET}
      ROM=$(ci/scripts/target-location.sh //sw/device/silicon_creator/rom:rom_fpga_cw310_scr_vmem)
      cp $ROM $ROM_TARGET/rom_fpga_cw310.scr.39.vmem
      ROM_DIR=$(dirname $ROM)
      cp $ROM_DIR/rom_fpga_cw310.elf $ROM_TARGET/rom_fpga_cw310.elf
      cp $ROM_DIR/rom_fpga_cw310.bin $ROM_TARGET/rom_fpga_cw310.bin
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/sw/***"

- job: cw310_sw_build
  displayName: CW310 Bitstream Software
  # Build Earl Grey Software required for CW310 FPGA synthesis
  dependsOn: lint
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool:
    vmImage: ubuntu-20.04
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - bash: |
      . util/build_consts.sh
      ci/bazelisk.sh build \
        //hw/ip/otp_ctrl/data:img_rma \
        //sw/device/lib/testing/test_rom:test_rom_fpga_cw310_scr_vmem \
        //sw/device/lib/testing/test_rom:test_rom_fpga_cw310_bin
      mkdir -p $BIN_DIR/sw/device/otp_img
      mkdir -p $BIN_DIR/sw/device/lib/testing/test_rom
      cp $(ci/scripts/target-location.sh //hw/ip/otp_ctrl/data:img_rma) $BIN_DIR/sw/device/otp_img/otp_img_fpga_cw310.vmem
      TEST_ROM=$(ci/scripts/target-location.sh //sw/device/lib/testing/test_rom:test_rom_fpga_cw310_scr_vmem)
      TEST_ROM_DIR=$(dirname $TEST_ROM)
      TEST_ROM_TARGET=$BIN_DIR/sw/device/lib/testing/test_rom
      cp $TEST_ROM $TEST_ROM_TARGET/test_rom_fpga_cw310.scr.39.vmem
      cp $TEST_ROM_DIR/*fpga_cw310.elf $TEST_ROM_TARGET/test_rom_fpga_cw310.elf
      cp $TEST_ROM_DIR/*fpga_cw310.bin $TEST_ROM_TARGET/test_rom_fpga_cw310.bin
    displayName: Build embedded targets
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/sw/***"

- job: chip_englishbreakfast_verilator
  displayName: Verilated English Breakfast
  # Build Verilator simulation of the English Breakfast toplevel design
  dependsOn: lint
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool:
    vmImage: ubuntu-20.04
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - bash: |
      python3 --version
      fusesoc --version
      verilator --version
      verible-verilog-lint --version
    displayName: Display environment
  - bash: ci/scripts/build-chip-verilator.sh englishbreakfast
    displayName: Build simulation with Verilator
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/hw/top_englishbreakfast/Vchip_englishbreakfast_verilator"

- job: execute_verilated_tests
  displayName: Fast Verilated Earl Grey tests
  # Build and run fast tests on sim_verilator
  pool: ci-public
  timeoutInMinutes: 120
  dependsOn: lint
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - task: DownloadSecureFile@1
    condition: eq(variables['Build.SourceBranchName'], 'master')
    name: bazelCacheGcpKey
    inputs:
      secureFile: "bazel_cache_gcp_key.json"
  - bash: echo "##vso[task.setvariable variable=bazelCacheGcpKeyPath]$(bazelCacheGcpKey.secureFilePath)"
    condition: eq(variables['Build.SourceBranchName'], 'master')
    displayName: GCP key path
    # Set the remote cache GCP key path
  - bash: |
      set -x -e
      export GCP_BAZEL_CACHE_KEY=$(bazelCacheGcpKeyPath)
      ci/scripts/run-verilator-tests.sh
    displayName: Build & execute tests
  # TODO: build and cache the verilator model to avoid building twice (#12574)
  - bash: |
      . util/build_consts.sh
      mkdir -p "$BIN_DIR/hw/top_earlgrey/"
      cp $(ci/scripts/target-location.sh //hw:verilator) \
        "$BIN_DIR/hw/top_earlgrey/Vchip_earlgrey_verilator"
    displayName: Copy //hw:verilator to $BIN_DIR
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/hw/top_earlgrey/Vchip_earlgrey_verilator"

# Software targeting the English Breakfast top level is produced by patching
# the source tree before building. This builds a selected subset of software
# only.
# TODO: This is a rather ugly hack, which will go away once we properly support
# building more than one top-level design with different parametrizations.
# Work towards this goal is tracked in issue #4669.
- job: build_and_execute_verilated_tests_englishbreakfast
  displayName: Verilated English Breakfast
  # Build and execute tests on the Verilated English Breakfast toplevel design with Bazel
  pool:
    vmImage: ubuntu-20.04
  dependsOn: chip_englishbreakfast_verilator
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - chip_englishbreakfast_verilator
  - bash: |
      . util/build_consts.sh
      ci/scripts/run-english-breakfast-verilator-tests.sh
    displayName: Execute tests
  - bash: |
      . util/build_consts.sh
      mkdir -p "$BIN_DIR/sw/device/lib/testing/test_rom"
      cp $(ci/scripts/target-location.sh //sw/device/lib/testing/test_rom:test_rom_fpga_nexysvideo_vmem) \
        "$BIN_DIR/sw/device/lib/testing/test_rom"
    displayName: Copy test_rom_fpga_nexysvideo_vmem to $BIN_DIR
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/sw/device/lib/testing/test_rom/test_rom_fpga_nexysvideo.32.vmem"

- job: otbn_standalone_tests
  displayName: Run OTBN Smoke Test
  dependsOn: lint
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool:
    vmImage: ubuntu-20.04
  timeoutInMinutes: 10
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - bash: |
      set -x
      sudo util/get-toolchain.py \
        --install-dir="$TOOLCHAIN_PATH" \
        --release-version="$TOOLCHAIN_VERSION" \
        --update
      echo "##vso[task.prependpath]$TOOLCHAIN_PATH/bin"
    displayName: Install toolchain
  - bash: |
      python3 --version
      fusesoc --version
      verilator --version
    displayName: Display environment
  - bash: |
      make -C hw/ip/otbn/dv/otbnsim test
    displayName: OTBN ISS Test
  - bash: |
      ./hw/ip/otbn/dv/smoke/run_smoke.sh
    displayName: OTBN Smoke Test
  - bash: |
      make -C hw/ip/otbn/util asm-check
    displayName: Assemble & link code snippets

- job: chip_earlgrey_cw310
  displayName: CW310's Earl Grey Bitstream
  # Build CW310 variant of the Earl Grey toplevel design using Vivado
  dependsOn:
    - lint
    # The bootrom is built into the FPGA image at synthesis time.
    - cw310_sw_build
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyDvChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool: ci-public
  timeoutInMinutes: 180
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - cw310_sw_build
  - bash: |
      ci/scripts/get-bitstream-strategy.sh "@bitstreams//:bitstream_test_rom" ':!/sw/' ':!/*testplan.hjson' ':!/site/' ':!/doc/' ':!/COMMITTERS' ':!/CLA' ':!/*.md' ':!/hw/**/dv/*'
    displayName: Configure bitstream strategy
  - bash: |
      set -e
      module load "xilinx/vivado/$(VIVADO_VERSION)"
      ci/scripts/prepare-cached-bitstream.sh
    condition: eq(variables.bitstreamStrategy, 'cached')
    displayName: Prepare cached bitstream
  - bash: |
      set -e
      module load "xilinx/vivado/$(VIVADO_VERSION)"
      ci/scripts/build-bitstream-vivado.sh top_earlgrey cw310
    condition: ne(variables.bitstreamStrategy, 'cached')
    displayName: Build bitstream with Vivado
  - bash: |
      . util/build_consts.sh
      echo Synthesis log
      cat $OBJ_DIR/hw/synth-vivado/lowrisc_systems_chip_earlgrey_cw310_0.1.runs/synth_1/runme.log || true

      echo Implementation log
      cat $OBJ_DIR/hw/synth-vivado/lowrisc_systems_chip_earlgrey_cw310_0.1.runs/impl_1/runme.log || true
    condition: ne(variables.bitstreamStrategy, 'cached')
    displayName: Display synthesis & implementation logs
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/hw/***"
  - publish: "$(Build.ArtifactStagingDirectory)"
    artifact: chip_earlgrey_cw310-build-out
    displayName: Upload artifacts for CW310
    condition: failed()

- job: chip_earlgrey_cw310_hyperdebug
  displayName: CW310's Earl Grey Bitstream for Hyperdebug
  # Build CW310-hyperdebug variant of the Earl Grey toplevel design using Vivado
  dependsOn:
    - lint
    # The bootrom is built into the FPGA image at synthesis time.
    - cw310_sw_build
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyDvChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'), eq(variables['Build.SourceBranchName'], 'master'))
  pool: ci-public
  timeoutInMinutes: 180
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - bash: |
      set -e
      module load "xilinx/vivado/$(VIVADO_VERSION)"
      . util/build_consts.sh
      mkdir -p $OBJ_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/
      mkdir -p $BIN_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/
      ci/bazelisk.sh build //hw/bitstream/vivado:fpga_cw310_hyperdebug
      cp -r -t $OBJ_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/ \
        $($REPO_TOP/bazelisk.sh cquery --output=starlark --starlark:expr "' '.join([x.path for x in target.files.to_list()])" //hw/bitstream/vivado:fpga_cw310_hyperdebug)
      cp -t $BIN_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/ \
        $($REPO_TOP/bazelisk.sh cquery --output=starlark --starlark:expr "' '.join([x.path for x in target.files.to_list()])" //hw/bitstream/vivado:hyperdebug)
    displayName: Build bitstream with Vivado
  - bash: |
      . util/build_consts.sh
      echo Synthesis log
      cat $BIN_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/synth-vivado/lowrisc_systems_chip_earlgrey_cw310_hyperdebug_0.1.runs/synth_1/runme.log || true

      echo Implementation log
      cat $BIN_DIR/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/synth-vivado/lowrisc_systems_chip_earlgrey_cw310_hyperdebug_0.1.runs/impl_1/runme.log || true
    displayName: Display synthesis & implementation logs
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/hw/***"
  - publish: "$(Build.ArtifactStagingDirectory)"
    artifact: chip_earlgrey_cw310_hyperdebug-build-out
    displayName: Upload artifacts for CW310
    condition: failed()

- job: chip_earlgrey_cw310_splice_rom
  displayName: Splice ROM into CW310 bitstream
  dependsOn:
    - chip_earlgrey_cw310
    - chip_earlgrey_cw310_hyperdebug
    - sw_build
  condition: |
    and
    (
      succeeded('chip_earlgrey_cw310'),
      succeeded('sw_build'),
      in(dependencies.chip_earlgrey_cw310_hyperdebug.result, 'Succeeded', 'SucceededWithIssues', 'Skipped')
    )
  pool: ci-public
  timeoutInMinutes: 10
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - chip_earlgrey_cw310
        - sw_build
        - ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
          - chip_earlgrey_cw310_hyperdebug
  - bash: |
      set -e
      . util/build_consts.sh

      module load "xilinx/vivado/$(VIVADO_VERSION)"

      util/fpga/splice_rom.sh -t cw310 -T earlgrey -b PROD

    displayName: Splicing bitstream with Vivado
  - template: ci/upload-artifacts-template.yml
    parameters:
      unconditionalIncludePatterns:
        - "/hw/top_earlgrey/rom.mmi"
        - "/hw/top_earlgrey/otp.mmi"
        - ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
          - "/hw/top_earlgrey/chip_earlgrey_cw310_hyperdebug/***"
      includePatterns:
        - "/hw/***"
  - ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
    - template: ci/gcp-upload-bitstream-template.yml
      parameters:
        parentDir: "$BIN_DIR/hw/top_earlgrey"
        includeFiles:
          - "lowrisc_systems_chip_earlgrey_cw310_0.1.bit.orig"
          - "lowrisc_systems_chip_earlgrey_cw310_0.1.bit.splice"
          - "rom.mmi"
          - "otp.mmi"
          - "chip_earlgrey_cw310_hyperdebug/lowrisc_systems_chip_earlgrey_cw310_hyperdebug_0.1.bit"
          - "chip_earlgrey_cw310_hyperdebug/rom.mmi"
          - "chip_earlgrey_cw310_hyperdebug/otp.mmi"
        gcpKeyFile: "gcpkey.json"
        bucketURI: "gs://opentitan-bitstreams/master"
  - publish: "$(Build.ArtifactStagingDirectory)"
    artifact: chip_earlgrey_cw310-splice-rom-build-out
    displayName: Upload artifacts for CW310
    condition: failed()

- job: chip_englishbreakfast_cw305
  displayName: CW305's Bitstream
  # Build CW305 variant of the English Breakfast toplevel design using Vivado
  dependsOn: build_and_execute_verilated_tests_englishbreakfast
  condition: and(succeeded(), eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyDvChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  pool: ci-public
  timeoutInMinutes: 120 # 2 hours
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - build_and_execute_verilated_tests_englishbreakfast
  - bash: |
      set -e
      module load "xilinx/vivado/$(VIVADO_VERSION)"
      ci/scripts/build-bitstream-vivado.sh top_englishbreakfast cw305
    displayName: Build bitstream
  - template: ci/upload-artifacts-template.yml
    parameters:
      includePatterns:
        - "/hw/top_englishbreakfast/lowrisc_systems_chip_englishbreakfast_cw305_0.1.bit"

- job: execute_fpga_tests_cw310
  displayName: CW310 Tests
  # Execute tests on ChipWhisperer CW310 FPGA board
  pool: FPGA
  timeoutInMinutes: 45
  dependsOn:
    - chip_earlgrey_cw310
    - chip_earlgrey_cw310_splice_rom
    - sw_build
  condition: succeeded( 'chip_earlgrey_cw310', 'chip_earlgrey_cw310_splice_rom', 'sw_build' )
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - chip_earlgrey_cw310_splice_rom
        - sw_build
  - bash: |
      set -e
      ci/scripts/run-fpga-cw310-tests.sh || { res=$?; echo "To reproduce failures locally, follow the instructions at https://docs.opentitan.org/doc/getting_started/setup_fpga/#reproducing-fpga-ci-failures-locally"; exit "${res}"; }
    displayName: Execute tests

- job: deploy_release_artifacts
  displayName: Package & deploy release
  pool:
    vmImage: ubuntu-20.04
  dependsOn:
    - lint
    - sw_build
    - execute_verilated_tests
    - chip_earlgrey_cw310
  condition: and(eq(dependencies.lint.outputs['DetermineBuildType.onlyDocChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyDvChanges'], '0'), eq(dependencies.lint.outputs['DetermineBuildType.onlyCdcChanges'], '0'))
  steps:
  - template: ci/checkout-template.yml
  - template: ci/install-package-dependencies.yml
  - template: ci/download-artifacts-template.yml
    parameters:
      downloadPartialBuildBinFrom:
        - sw_build
        - execute_verilated_tests
        - chip_earlgrey_cw310
        - chip_englishbreakfast_verilator
  - bash: |
      . util/build_consts.sh

      ci/scripts/make_distribution.sh

      tar --list -f $BIN_DIR/opentitan-*.tar.xz
      # Put the resulting tar file into a directory the |publish| step below can reference.
      mkdir "$BUILD_ROOT/dist-final"
      mv $BIN_DIR/opentitan-*.tar.xz "$BUILD_ROOT/dist-final"
    displayName: Create final dist
  - publish: $(Build.ArtifactStagingDirectory)/dist-final
    artifact: opentitan-dist
    displayName: Upload release
  - task: GithubRelease@0
    displayName: Upload to GitHub releases (only tags)
    condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
    inputs:
      gitHubConnection: opentitan-release-upload
      repositoryName: lowrisc/opentitan
      addChangeLog: false
      assets: |
          $(Build.ArtifactStagingDirectory)/dist-final/*


- job: build_docker_containers
  displayName: "Build Docker Containers"
  pool:
    vmImage: ubuntu-20.04
  dependsOn:
    - lint
  steps:
  - template: ci/checkout-template.yml
  - task: Docker@2
    displayName: Build Developer Utility Container
    continueOnError: True
    inputs:
      command: build
      Dockerfile: ./util/container/Dockerfile
      buildContext: .
  - task: Docker@2
    displayName: Build Documentation Builder Container
    inputs:
      command: build
      tags: gcr.io/active-premise-257318/builder
      Dockerfile: ./site/docs/builder.Dockerfile
      buildContext: .
  - task: Docker@2
    displayName: Build Documentation Redirector Container
    inputs:
      command: build
      Dockerfile: ./site/redirector/Dockerfile
      buildContext: ./site/redirector
