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

schedules:
# Run this pipeline every day at 07:21 UTC.
# Use an arbitrary minute value to avoid congestion on the hour.
- cron: "21 7 * * *"
  displayName: "OpenTitan Nightly Tests"
  branches:
    include:
    - "master"
  always: True

trigger: none
pr: none

variables:
  # If updating VERILATOR_VERSION, TOOLCHAIN_VERSION or RUST_VERSION, update
  # the definitions in util/container/Dockerfile as well.
  VERILATOR_VERSION: 4.210
  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"

jobs:
- job: checkout
  displayName: "Checkout repository"
  pool:
    vmImage: ubuntu-20.04
  steps:
  - checkout: self
    # Set fetchDepth to 0 to pull the entire git tree for the bitstream cache to work
    # https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout#shallow-fetch
    fetchDepth: 0
    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: rom_e2e
  displayName: "ROM E2E Tests"
  timeoutInMinutes: 180
  dependsOn: checkout
  pool: FPGA
  steps:
  - template: ../ci/checkout-template.yml
  - template: ../ci/install-package-dependencies.yml
  - bash: |
      set -x
      module load "xilinx/vivado/$(VIVADO_VERSION)"
      ci/bazelisk.sh test \
        --define DISABLE_VERILATOR_BUILD=true \
        --define bitstream=gcp_splice \
        --test_tag_filters=-verilator,-dv,-broken \
        --build_tests_only \
        --test_output=errors \
        //sw/device/silicon_creator/rom/e2e/...
    displayName: "Run all ROM E2E tests"
