| // 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} {QUESTA_HOME}/questasim/linux_x86_64/qrun -optimize" | 
 |   run_cmd:    "{job_prefix} {QUESTA_HOME}/questasim/linux_x86_64/qrun -simulate" | 
 |  | 
 |  | 
 |   build_opts: [ "-timescale 1ns/1ps", | 
 |                 "-outdir {build_dir}/qrun.out", | 
 |                 "-uvm -uvmhome {QUESTA_HOME}/questasim/verilog_src/uvm-1.2", | 
 |                 "-mfcu", | 
 |                 "-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'", | 
 |                 "-voptargs=\"+acc=nr\"" | 
 |               ] | 
 |  | 
 |   run_opts:   [ "-outdir {build_dir}/qrun.out", | 
 |                 "-sv_seed {seed}", | 
 |                 // dv_macros.svh has a macro printing null using %0d | 
 |                 // format specifier, Questa throws an error on this | 
 |                 // we demote this error in Questa | 
 |                 "-suppress vsim-8323", | 
 |                 // Questa forces all declared virtual interfaces to be allocated, | 
 |                 // even in classes that are not even created at runtime. The switch | 
 |                 // below demotes the associated error thrown. | 
 |                 "-permit_unmatched_virtual_intf", | 
 |                 "+UVM_TESTNAME={uvm_test}", | 
 |                 "+UVM_TEST_SEQ={uvm_test_seq}", | 
 |                 "-do {run_script}" | 
 |               ] | 
 |  | 
 |   // Supported wave dumping formats (in order of preference). | 
 |   supported_wave_formats: [] | 
 |  | 
 |   // Default tcl script used when running the sim. Override if needed. | 
 |   run_script: "{dv_root}/tools/questa/sim.tcl" | 
 |  | 
 |   // Coverage related. | 
 |   cov_db_dir: "{scratch_path}/coverage/{build_mode}.ucdb" | 
 |  | 
 |   // 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}/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_report" | 
 |   cov_merge_db_dir: "" | 
 |   cov_merge_cmd:    "" | 
 |   cov_merge_opts:   [] | 
 |  | 
 |   // Generate covreage reports in text as well as html. | 
 |   cov_report_dir:       "{scratch_path}/cov_report" | 
 |   cov_report_cmd:       "" | 
 |   cov_report_opts:      [] | 
 |   cov_report_txt:   "{cov_report_dir}/dashboard.txt" | 
 |  | 
 |   // 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:  "" | 
 |   cov_analyze_opts: [] | 
 |  | 
 |   // By default, collect all coverage metrics. | 
 |   cov_metrics: "bcestf" | 
 |  | 
 |   // pass and fail patterns | 
 |   build_fail_patterns: ["^## \\*\\* Error.*$" | 
 |                         "^\\*\\* Error.*$"] | 
 |   run_fail_patterns:   ["^\\*\\* Error.*$"] | 
 |  | 
 |   build_modes: [ | 
 |    { | 
 |       name: questa_gui | 
 |       is_sim_mode: 1 | 
 |       build_opts: [] | 
 |       run_opts: ["-gui"] | 
 |     } | 
 |     { | 
 |       name: questa_waves | 
 |       is_sim_mode: 1 | 
 |     } | 
 |     // TODO Questa coverage only currently supported in the GUI with no merging | 
 |     { | 
 |       name: questa_cov | 
 |       is_sim_mode: 1 | 
 |       build_opts: ["+cover={cov_metrics}"] | 
 |       run_opts:   ["-coverage", "-gui"] | 
 |     } | 
 |     // TODO support profiling for questa | 
 |     { | 
 |       name: questa_profile | 
 |       is_sim_mode: 1 | 
 |       build_opts: [] | 
 |       run_opts:   [] | 
 |     } | 
 |     { | 
 |       name: questa_xprop | 
 |       is_sim_mode: 1 | 
 |       build_opts: [] | 
 |     } | 
 |     { | 
 |       // TODO: Add build and run options to enable zero delay loop detection. | 
 |       name: questa_loopdetect | 
 |       is_sim_mode: 1 | 
 |       build_opts: [] | 
 |       run_opts:   [] | 
 |     } | 
 |  | 
 |   ] | 
 | } |