// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  project:          opentitan
  repo_server:      "github.com/lowrisc/opentitan"
  doc_server:       docs.opentitan.org
  results_server:   reports.opentitan.org

  // Default directory structure for the output
  scratch_base_path:  "{scratch_root}/{branch}"
  scratch_path:       "{scratch_base_path}/{dut}-{flow}-{tool}"

  // Common data structure
  build_pass_patterns: []
  // TODO: Add back FuseSoC fail pattern after
  // https://github.com/lowRISC/opentitan/issues/7348 is resolved.
  build_fail_patterns: []

  exports: [
    { SCRATCH_PATH: "{scratch_path}" },
    { proj_root: "{proj_root}" }
  ]

  // Results server stuff - indicate what command to use to copy over the results.
  // Workaround for gsutil to fall back to using python2.7.
  results_server_prefix:      "gs://"
  results_server_cmd:         "/usr/bin/gsutil"
  results_html_name:          "report.html"

  // If defined, this is printed into the results md files
  revision: '''{eval_cmd}
            COMMIT_L=`git rev-parse HEAD`; \
            COMMIT_S=`git rev-parse --short HEAD`; \
            REV_STR="GitHub Revision: [\`$COMMIT_S\`](https://{repo_server}/tree/$COMMIT_L)"; \
            printf "$REV_STR"; \
            if [ -d "{proj_root}/hw/foundry" ]; then \
              COMMIT_FOUNDRY_S=`git -C {proj_root}/hw/foundry rev-parse --short HEAD`; \
              REV_STR_FOUNDRY="Foundry Revision: \`$COMMIT_FOUNDRY_S\`"; \
              printf "<br>$REV_STR_FOUNDRY"; \
            fi
            '''

  // The current design level
  design_level:  "ip"
}
