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

  flow:             sim
  flow_makefile:    "{proj_root}/hw/dv/data/sim.mk"

  import_cfgs:      ["{proj_root}/hw/dv/data/common_modes.hjson",
                     "{proj_root}/hw/dv/data/fusesoc.hjson",
                     "{proj_root}/hw/dv/data/gen_ral_pkg.hjson",
                     "{proj_root}/hw/dv/data/{simulator}/{simulator}.hjson"]

  // Default directory structure for the output
  scratch_base_path:  "{scratch_root}/{dut}.{flow}.{simulator}"
  scratch_path:       "{scratch_base_path}/{branch}"
  simulator_srcs_dir: "{scratch_path}/{simulator}"
  build_dir:          "{scratch_path}/{build_mode}"
  run_dir_name:       "{index}.{test}"
  run_dir:            "{scratch_path}/{run_dir_name}/out"
  sw_build_dir:       "{run_dir}/sw_build"

  // pass and fail patterns
  pass_patterns:    ["^TEST PASSED (UVM_)?CHECKS$"]
  fail_patterns:    ["^UVM_ERROR\\s[^:].*$",
                     "^Assert failed: ",
                     "^\\s*Offending '.*'",
                     "^TEST FAILED (UVM_)?CHECKS$"]

  // Default TileLink widths
  tl_aw: 32
  tl_dw: 32
  tl_dbw: 4

  // Default UVM verbosity settings
  n: UVM_NONE
  l: UVM_LOW
  m: UVM_MEDIUM
  h: UVM_HIGH
  d: UVM_DEBUG

  // Default waves dump settings
  dump_file:  waves.{dump}

  // Top level simulation entities.
  sim_tops: ["-top {tb}"]

  // Default build and run opts
  build_opts: [// List multiple tops for the simulation
               "{sim_tops}",
               // Standard UVM defines
               "+define+UVM_NO_DEPRECATED",
               "+define+UVM_REGEX_NO_DPI",
               "+define+UVM_REG_ADDR_WIDTH={tl_aw}",
               "+define+UVM_REG_DATA_WIDTH={tl_dw}",
               "+define+UVM_REG_BYTENABLE_WIDTH={tl_dbw}"]

  run_opts: ["+UVM_NO_RELNOTES",
             "+UVM_VERBOSITY={verbosity}"]

  // Default list of things to export to shell
  exports: [
    DUMP_FILE: {dump_file}
    WAVES: {waves}
    DUT_TOP: {dut}
    TB_TOP: {tb}
  ]

  // Build modes are collection of build_opts and run_opts
  // A test can enable a specific build mode by setting 'use_build_mode' key
  build_modes: [
    {
      name: foo
      build_opts: ["+define+bx",
                   "+define+by",
                   "+define+bz"]
      run_opts: ["+rx=1",
                 "+ry=2",
                 "+rz=3"]
    }
    {
      name: bar
      build_opts: ["+define+bbaru1",
                   "+define+bbaru2",
                   "+define+bbaru3"]
      run_opts: ["+rbar1u=1",
                 "+rbar2u=2",
                 "+rbar3u=3"]
    }
  ]

  // Regressions are tests that can be grouped together and run in one shot
  // By default, two regressions are made available - "all" and "nightly". Both
  // run all available tests for the DUT. "nightly" enables coverage as well.
  // The 'tests' key is set to an empty list, which indicates "run everything".
  // Test sets can enable sim modes, which are a set of build_opts and run_opts
  // that are grouped together. These are appended to the build modes used by the
  // tests.
  regressions: [
    {
      name: sanity
      reseed: 1
    }

    {
      name: all
      tests: []
    }

    {
      name: all_once
      reseed: 1
      tests: []
    }

    {
      name: nightly
      tests: []
      en_sim_modes: ["cov"]
    }
  ]

  // Project defaults for VCS
  vcs_cov_hier: "-cm_hier {simulator_srcs_dir}/cover.cfg"
  vcs_cov_excl_files: ["{simulator_srcs_dir}/common_cov_excl.el"]

  // 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_url_prefix:  "https://"
  results_server_cmd:     "CLOUDSDK_PYTHON=/usr/bin/python2.7 /usr/bin/gsutil"
  results_server_path:    "{results_server_prefix}{results_server}/{rel_path}"
  results_server_dir:     "{results_server_path}/latest"
}
