// Copyright lowRISC contributors (OpenTitan project).
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  build_cmd:  "vlib work && {job_prefix} vlog"
  run_cmd:    "{job_prefix} vsim"

  build_opts: ["-timescale 1ns/1ps",
               "+incdir+\"{RIVIERA_HOME}/vlib/uvm-1.2/src\"",
               "\"{RIVIERA_HOME}/vlib/uvm-1.2/src/uvm_pkg.sv\"",
               "-f {sv_flist}",
               // List multiple tops for the simulation. Prepend each top level with `-top`.
               "{eval_cmd} echo {sim_tops} | sed -E 's/(\\S+)/-top \\1/g'",
              ]

  run_opts:   ["-sv_seed={seed}",
               "-c",
               "{tb}",
               "-lib {sv_flist_gen_dir}/work",
               "+UVM_TESTNAME={uvm_test}",
               "+UVM_TEST_SEQ={uvm_test_seq}",
               "-sv_lib \"{RIVIERA_HOME}/bin/uvm_1_2_dpi\"",
               "-do {run_script}"]


  // Supported wave dumping formats (in order of preference).
  supported_wave_formats: []

  // Default tcl script used when running the sim. Override if needed.
  run_script: "{dv_root}/tools/riviera/riviera_run.do"

  // Coverage related.
  // TODO: These options have to be filled in.
  cov_db_dir: ""

  // Individual test specific coverage data - this will be deleted if the test fails
  // so that coverage from failiing tests is not included in the final report.
  cov_db_test_dir_name: "{run_dir_name}.{seed}"
  cov_db_test_dir: ""

  // Merging coverage.
  // "cov_db_dirs" is a special variable that appends all build directories in use.
  // It is constructed by the tool itself.
  cov_merge_dir:    "{scratch_path}/cov_merge"
  cov_merge_db_dir: ""
  cov_merge_cmd:    ""
  cov_merge_opts:   []

  // Generate covreage reports in text as well as html.
  cov_report_dir:       "{scratch_path}/cov_report"
  cov_report_cmd:       ""
  cov_report_opts:      []
  cov_report_dashboard: ""

  // Analyzing coverage - this is done by invoking --cov-analyze switch. It opens up the
  // GUI for visual analysis.
  cov_analyze_dir:  "{scratch_path}/cov_analyze"
  cov_analyze_cmd:  ""
  cov_analyze_opts: []

  // pass and fail patterns
  build_fail_patterns: ["\\*E.*$"]
  run_fail_patterns:   ["\\*E.*$"] // Null pointer error

  build_modes: [
    {
      name: riviera_gui
      is_sim_mode: 1
      build_opts: []
      run_opts: []
    }
    {
      name: riviera_gui_debug
      // TODO: Add options to setup Riviera gui debug environment and features (as in xcelium.hjson)
      is_sim_mode: 1
      build_opts: []
      run_opts: []
    }
    {
      name: riviera_waves
      is_sim_mode: 1
    }
    {
      name: riviera_waves_off
      is_sim_mode: 1
      build_opts: []
    }
    // TODO support coverage for riviera
    {
      name: riviera_cov
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
    // TODO support profiling for riviera
    {
      name: riviera_profile
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
    {
      name: riviera_xprop
      is_sim_mode: 1
      build_opts: []
    }
    // TODO: Add build and run options to enable zero delay loop detection.
    {
      name: riviera_loopdetect
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
  ]
}
