// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  build_cmd:  "{job_prefix} dsim"
  run_cmd:    "{job_prefix} dsim"

  build_opts: ["-work {build_dir}/dsim_out",
               "-genimage image",
               "-sv",
               // Set parallel compilation jobs limit
               "-j 12",
               // UVM
               "+incdir+{UVM_HOME}/src",
               "{UVM_HOME}/src/uvm_pkg.sv",
               // Add dpi/vpi include path.
               "-c-opts -I{DSIM_HOME}/include",
               "-timescale 1ns/1ps",
               "-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'",
               "+incdir+{build_dir}",
               // TODO Remove buggy optimization when dsim fixes bug
               // https://gitlab.metrics.ca/google/google/-/issues/242.
               "-noopt-task-func",
               // Suppress following DSim errors and warnings:
               //   EnumMustBePositive - UVM 1.2 violates this
               "-suppress EnumMustBePositive"]

  run_opts:   ["-work {build_dir}/dsim_out",
               "-image image",
               // UVM DPI
               "-sv_lib {DSIM_HOME}/lib/libuvm_dpi.so",
               "-sv_seed {seed}",
               // tell DSim to write line-buffered stdout (lines will be written in proper order)
               "-linebuf",
               "+UVM_TESTNAME={uvm_test}",
               "+UVM_TEST_SEQ={uvm_test_seq}"]

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

  // Default tcl script used when running the sim. Override if needed.
  run_script: ""

  // TODO: refactor coverage configuration for DSim.

  // COVERAGE related.
  cov_db_dir: "{scratch_path}/coverage/{build_mode}.vdb"

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

  // 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_dir}/merged.vdb"
  cov_merge_cmd:    "{job_prefix} urg"
  cov_merge_opts:   []

  // Generate coverage reports in text as well as html.
  cov_report_dir:   "{scratch_path}/cov_report"
  cov_report_cmd:   "{job_prefix} urg"
  cov_report_opts:  []
  cov_report_txt:   "{cov_report_dir}/dashboard.txt"
  cov_report_page:  "dashboard.html"

  // 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:  "{job_prefix} verdi"
  cov_analyze_opts: ["-cov",
                     "-covdir {cov_merge_db_dir}",
                     "-line nocasedef",
                     "-elfile {vcs_cov_excl_files}"]

  // Vars that need to exported to the env.
  exports: [
    { PATH: "{DSIM_HOME}:{PATH}" }
    { LD_LIBRARY_PATH: "{DSIM_HOME}/lib:{DSIM_HOME}/system_lib:{LD_LIBRARY_PATH}" }
  ]

  // Defaults for DSim
  // TODO: there is currently no equivalent of "all" coverage metrics in DSim
  cov_metrics: ""

  // pass and fail patterns
  build_fail_patterns: ["^=E:"]
  run_fail_patterns:   ["^=E:"]

  // waveform
  probe_file: "dsim.probe"

  build_modes: [
    {
      name: dsim_gui
      is_sim_mode: 1
      build_opts: []
      run_opts: []
    }
    {
      name: dsim_waves
      is_sim_mode: 1
      build_opts: ["+acc+b"]
      run_opts:   ["-waves waves.{waves}",
                   // dsim.probe is currently undefined
                   //"-wave-scope-specs {probe_file}",
                   // Dump unpacked structs and arrays.
                   "-dump-agg"]
    }
    // TODO: support coverage mode
    // Note: no specific build or run options are required for dsim to produce functional
    // coverage. Code coverage support is evolving.
    {
      name: dsim_cov
      is_sim_mode: 1
      build_opts: [// Enable the required cov metrics
                   ]
      run_opts:   [// Enable the required cov metrics
                   ]
    }
    // TODO: support xprop mode
    {
      name: dsim_xprop
      is_sim_mode: 1
    }
    {
      name: dsim_profile
      is_sim_mode: 1
      run_opts:   ["-profile"]
    }
    {
      // TODO: Add build and run options to enable zero delay loop detection.
      name: dsim_loopdetect
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
  ]
}
