blob: 42171a587ad199548e8b18577bd6f9d8464b4765 [file] [log] [blame]
// 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",
// Needed for including "secded_enc.h".
"-c-opts -I{build_dir}/src/lowrisc_dv_secded_enc_0",
"-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:{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"]
}
{
name: dsim_waves_off
is_sim_mode: 1
build_opts: []
}
// 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: []
}
]
}