// 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} xrun"
  run_cmd:    "{job_prefix} xrun"

  build_opts: ["-elaborate -64bit -access +r -sv",
               "-licqueue",
               // TODO: duplicate primitives between OT and Ibex #1231
               "-ALLOWREDEFINITION",
               "-messages -errormax 50",
               "-timescale 1ns/1ps",
               "-f {sv_flist}",
               "-uvmhome CDNS-1.2",
               "-xmlibdirname {build_dir}/xcelium.d",
               // List multiple tops for the simulation. Prepend each top level with `-top`.
               "{eval_cmd} echo {sim_tops} | sed -E 's/(\\S+)/-top \\1/g'",
               // Set the top level elaborated entity (snapshot name) correctly since there are
               // multiple tops.
               "-snapshot {tb}",
               // for uvm_hdl_* used by csr backdoor
               "-access +rw",
               // Use this to conditionally compile for Xcelium (example: LRM interpretations differ
               // across tools).
               "+define+XCELIUM",
               // Ignore "timescale is not specified for the package" warning
               "-nowarn TSNSPK",
               // Ignore "IEEE 1800-2009 SystemVerilog simulation semantics" warning
               "-nowarn DSEMEL",
               // Ignore hierarchial ref warnings in interfaces
               "-nowarn CUVIHR",
               ]

  run_opts:   ["-input {run_script}",
               "-licqueue",
               "-64bit -xmlibdirname {build_dir}/xcelium.d",
               // Use the same snapshot name set during the build step.
               "-r {tb}",
               "+SVSEED={seed}",
               "+UVM_TESTNAME={uvm_test}",
               "+UVM_TEST_SEQ={uvm_test_seq}",
               // Ignore "IEEE 1800-2009 SystemVerilog simulation semantics" warning
               "-nowarn DSEM2009",
               ]

  // Vars that need to exported to the env.
  exports: [
    // Poll for an available license in all servers.
    { CDS_LIC_QUEUE_POLL: 1 },

    // Poll for an available license every 1 min.
    { CDS_LIC_QUEUE_POLL_INT: 60 },

    // X-prop related: these were suggested by Xcelium as warnings during the build time.
    // These enable array corruption when the index is out of range or invalid.
    { VL_ENABLE_INVALID_IDX_XPROP: 1 },
    { VL_ENABLE_OUTOFRANGE_IDX_XPROP: 1 },

    // Export the cov_report path so that the tcl file can read these as env vars.
    { cov_merge_db_dir: "{cov_merge_db_dir}" },
    { cov_report_dir: "{cov_report_dir}" }
  ]

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

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

  // Coverage related.
  // By default, collect all coverage metrics: block:expr:fsm:toggle:functional.
  cov_metrics: all

  // Supply the cov configuration file.
  // Note that this needs to be set as -covfile <file>.
  xcelium_cov_cfg_file: ""

  // Supply the cov refinement files.
  // Note that this needs to be set as -load_refinement <file>.
  xcelium_cov_refine_files: []

  // Set the coverage directories.
  cov_work_dir: "{scratch_path}/coverage"
  cov_db_dir:   "{cov_work_dir}/{build_mode}"

  // 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:      "{cov_db_dir}/{cov_db_test_dir_name}"

  // Merging coverage.
  // It is constructed by the tool itself.
  cov_merge_dir:    "{scratch_path}/cov_merge"
  cov_merge_db_dir: "{cov_merge_dir}/merged"
  cov_merge_cmd:    "{job_prefix} imc"
  cov_merge_opts:   ["-64bit",
                     "-licqueue",
                     "-exec {dv_root}/tools/xcelium/cov_merge.tcl"]

  // Generate covreage reports in text as well as html.
  cov_report_dir:   "{scratch_path}/cov_report"
  cov_report_cmd:   "{job_prefix} imc"
  cov_report_opts:  ["-64bit",
                     "-licqueue",
                     "-exec {dv_root}/tools/xcelium/cov_report.tcl",
                     "{xcelium_cov_refine_files}"]
  cov_report_txt:   "{cov_report_dir}/cov_report.txt"
  cov_report_page:  "index.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} imc"
  cov_analyze_opts: ["-gui",
                     "-64bit",
                     "-licqueue",
                     "-load {cov_merge_db_dir}",
                     "{xcelium_cov_refine_files}"]

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

  build_modes: [
    {
      name: xcelium_waves
      is_sim_mode: 1
    }
    {
      name: xcelium_cov
      is_sim_mode: 1
      build_opts: [// Enable the required cov metrics.
                   "-coverage {cov_metrics}",
                   // Limit the scope of coverage collection to the DUT.
                   "-covdut {dut}",
                   // Set the coverage configuration file.
                   "{xcelium_cov_cfg_file}"]
      run_opts:   [// Coverage database output location.
                   "-covworkdir {cov_work_dir}",
                   // Set the scope to the build mode name.
                   "-covscope {build_mode}",
                   // Test coverage dir name to create under cov_db_dir.
                   "-covtest {cov_db_test_dir_name}",
                   // Overwrite the coverage data of a specific test/seed if it already exists.
                   "-covoverwrite"]
    }
    // TODO support profile for xcelium
    {
      name: xcelium_profile
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
    {
      name: xcelium_xprop
      is_sim_mode: 1
      build_opts: ["-xprop F -xverbose"]
    }
    {
      // TODO: Add build and run options to enable zero delay loop detection.
      name: xcelium_loopdetect
      is_sim_mode: 1
      build_opts: []
      run_opts:   []
    }
  ]
}
