| // 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: waves_off |
| is_sim_mode: 1 |
| en_build_modes: ["{tool}_waves_off"] |
| } |
| { |
| 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"] |
| } |
| // Enables randomization of testbench / RTL build. |
| // |
| // Build randomization is achieved by passing `--build-seed <optional-seed>` on the dvsim |
| // command-line. If not passed, the build is not randomized. Build randomization is achieved |
| // in two ways. One of them is setting the pre-processor macro `BUILD_SEED` to the seed value, |
| // which is done below. The SystemVerilog testbench sources can use the `BUILD_SEED` macro |
| // value to set some design constants (such as parameters) upon instantiation. The `BUILD_SEED`, |
| // if not set externally (by passing the --build-seed switch) is set to 1 in |
| // `hw/dv/sv/dv_utils/dv_macros.svh`. The other way is by passing the {seed} value to utility |
| // scripts that generate packages that contain randomized constants. These utility scripts can |
| // be invoked as a `pre_build_cmd`, wrapped within the `build_seed` sim mode in the DUT |
| // simulation configuration Hjson file. All forms of build randomization must be wrapped within |
| // this `build_seed` sim mode. They will all use the same {seed} value, which allows us to |
| // deterministically reproduce failures. The `--build-seed` switch is expected to be passed |
| // when running the nightly regressions. The `seed` value set by dvsim is a 32-bit unsigned |
| // integer (unless specified on the command-line). |
| { |
| name: build_seed |
| is_sim_mode: 1 |
| build_opts: ["+define+BUILD_SEED={seed}"] |
| } |
| ] |
| |
| run_modes: [ |
| { |
| name: uvm_trace |
| run_opts: ["+UVM_PHASE_TRACE", "+UVM_CONFIG_DB_TRACE", "+UVM_OBJECTION_TRACE"] |
| } |
| ] |
| } |