blob: 7cdf7102455a6b39381d19fa04ed97e0cb2b688a [file] [log] [blame]
// 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"]
}
]
}