// 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}"

  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"
}
