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

  // Where to find DV code
  dv_root:          "{proj_root}/hw/dv"

  flow:             sim
  flow_makefile:    "{dv_root}/data/sim.mk"

  import_cfgs:      ["{proj_root}/hw/data/common_project_cfg.hjson",
                     "{dv_root}/data/common_modes.hjson",
                     "{dv_root}/data/fusesoc.hjson",
                     "{dv_root}/data/{tool}/{tool}.hjson"]

  // Default directory structure for the output
  build_dir:          "{scratch_path}/{build_mode}"
  run_dir_name:       "{index}.{test}"
  run_dir:            "{scratch_path}/{run_dir_name}/out"
  sw_build_dir:       "{scratch_path}/sw"
  sw_root_dir:        "{proj_root}/sw"

  // pass and fail patterns
  build_pass_patterns: []
  build_fail_patterns: ["^ERROR:.*$"] // fusesoc build error
  run_pass_patterns:   ["^TEST PASSED (UVM_)?CHECKS$"]
  run_fail_patterns:   ["^UVM_ERROR\\s[^:].*$",
                        "^UVM_FATAL\\s[^:].*$",
                        "^UVM_WARNING\\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

  // Path to the dut instance (this is used in a couple of places such as coverage cfg
  // file, xprop cfg file etc. If this is different for your block, then override it with
  // the 'overrides' directive.
  dut_instance: "{tb}.dut"

  // 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",
               "+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: [
    TOOL_SRCS_DIR: {tool_srcs_dir}
    EN_WAVES: {waves}
    DUMP_FMT: {dump_fmt}
    DUT_TOP: {dut}
    TB_TOP: {tb}
    dut_instance: {dut_instance}
  ]

  // 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
      tests: []
      reseed: 1
    }

    {
      name: all
    }

    {
      name: all_once
      reseed: 1
    }

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

  // Add waves.tcl to the set of sources to be copied over to
  // {tool_srcs_dir}. This can be sourced by the tool-specific TCL
  // script to set up wave dumping.
  tool_srcs:  ["{dv_root}/tools/waves.tcl"],

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

  // Project defaults for Xcelium
  // xcelium_cov_cfg_file: "-covfile {tool_srcs_dir}/cover.ccf"
  // xcelium_cov_refine_file: ["{tool_srcs_dir}/common_cov.vRefine"]
}
