blob: 1439bfd885621361172361561e8ea1f40fc2773b [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} xrun"
run_cmd: "{job_prefix} xrun"
// Indicate the tool specific helper sources - these are copied over to the
// {tool_srcs_dir} before running the simulation.
tool_srcs: ["{proj_root}/hw/dv/tools/xcelium/*"]
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 {UVM_HOME}",
"-xmlibdirname {build_dir}/xcelium.d"]
run_opts: ["-input {tool_srcs_dir}/xcelium_{dump}.tcl",
"-licqueue",
"-64bit -xmlibdirname {build_dir}/xcelium.d -R",
"+SVSEED={seed}",
"+UVM_TESTNAME={uvm_test}",
"+UVM_TEST_SEQ={uvm_test_seq}"]
// 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
// 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}"
]
// 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 file.
// Note that this needs to be set as -load_refinement <file>.
xcelium_cov_refine_file: ""
// 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_base_path}/cov_merge"
cov_merge_db_dir: "{cov_merge_dir}/merged"
cov_merge_cmd: "{job_prefix} imc"
cov_merge_opts: ["-64bit",
"-licqueue",
"-exec {tool_srcs_dir}/cov_merge.tcl"]
// Generate covreage reports in text as well as html.
cov_report_dir: "{scratch_base_path}/cov_report"
cov_report_cmd: "{job_prefix} imc"
cov_report_opts: ["-64bit",
"-licqueue",
"-exec {tool_srcs_dir}/cov_report.tcl"]
cov_report_txt: "{cov_report_dir}/cov_report.txt"
cov_report_page: "cov_report/index.html"
// Analyzing coverage - this is done by invoking --cov-analyze switch. It opens up the
// GUI for visual analysis.
cov_analyze_dir: "{scratch_base_path}/cov_analyze"
cov_analyze_cmd: "{job_prefix} imc"
cov_analyze_opts: ["-gui",
"-64bit",
"-licqueue",
"-load {cov_merge_db_dir}",
"{xcelium_cov_refine_file}"]
// 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
# -xverbose << add to see which modules does not have xprop enabled
build_opts: ["-xprop F"]
}
]
}