// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  // Sim modes are collection of build_opts and run_opts
  // These are only set on the command line
  // These are different from the build modes in the sense that these collection of
  // options are appended to actual build_modes
  build_modes: [
    {
      name: gui
      is_sim_mode: 1
      en_build_modes: ["{tool}_gui"]
    }
    {
      name: waves
      is_sim_mode: 1
      en_build_modes: ["{tool}_waves"]
    }
    {
      name: cov
      is_sim_mode: 1
      en_build_modes: ["{tool}_cov"]
      // This plusarg is retrieved in `hw/dv/sv/dv_lib/dv_base_test.sv`. If not set, the coverage
      // collection components are not created.
      run_opts: ["+en_cov=1"]
    }
    {
      name: profile
      is_sim_mode: 1
      en_build_modes: ["{tool}_profile"]
    }
    {
      name: xprop
      is_sim_mode: 1
      en_build_modes: ["{tool}_xprop"]
    }
    {
      name: loopdetect
      is_sim_mode: 1
      en_build_modes: ["{tool}_loopdetect"]
    }
  ]

  run_modes: [
    {
      name: uvm_trace
      run_opts: ["+UVM_PHASE_TRACE", "+UVM_CONFIG_DB_TRACE", "+UVM_OBJECTION_TRACE"]
    }
  ]
}
