| // 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", | |
| "-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}", | |
| // 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:{DSIM_HOME}/system_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_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"] | |
| } | |
| // 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: [] | |
| } | |
| ] | |
| } |