| // Copyright lowRISC contributors. | |
| // Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| // SPDX-License-Identifier: Apache-2.0 | |
| { | |
| flow: sim | |
| // Where to find DV code | |
| dv_root: "{proj_root}/hw/dv" | |
| flow_makefile: "{dv_root}/tools/dvsim/sim.mk" | |
| import_cfgs: ["{proj_root}/hw/data/common_project_cfg.hjson", | |
| "{dv_root}/tools/dvsim/common_modes.hjson", | |
| "{dv_root}/tools/dvsim/fusesoc.hjson", | |
| "{dv_root}/tools/dvsim/bazel.hjson", | |
| "{dv_root}/tools/dvsim/{tool}.hjson"] | |
| // Default directory structure for the output | |
| build_dir: "{scratch_path}/{build_mode}" | |
| run_dir_name: "{index}.{test}" | |
| run_dir: "{scratch_path}/{run_dir_name}/latest" | |
| sw_root_dir: "{proj_root}/sw" | |
| // Default file to store build_seed value | |
| build_seed_file_path: "{build_dir}/build_seed.log" | |
| run_pass_patterns: ["^TEST PASSED (UVM_)?CHECKS$"] | |
| run_fail_patterns: ["^UVM_ERROR\\s[^:].*$", | |
| "^UVM_FATAL\\s[^:].*$", | |
| "^UVM_WARNING\\s[^:].*$", | |
| "^Assert failed: ", | |
| "^\\s*Offending '.*'", | |
| "^TEST FAILED (UVM_)?CHECKS$", | |
| "^Error:.*$"] // ISS errors | |
| // Default TileLink widths | |
| tl_aw: 32 | |
| tl_dw: 32 | |
| tl_dbw: 4 | |
| // Default UVM verbosity settings | |
| expand_uvm_verbosity_n: UVM_NONE | |
| expand_uvm_verbosity_l: UVM_LOW | |
| expand_uvm_verbosity_m: UVM_MEDIUM | |
| expand_uvm_verbosity_h: UVM_HIGH | |
| expand_uvm_verbosity_f: UVM_FULL | |
| expand_uvm_verbosity_d: UVM_DEBUG | |
| // Default simulation verbosity (l => UVM_LOW). Can be overridden by | |
| // the --verbosity command-line argument. | |
| verbosity: l | |
| // Path to the dut instance (this is used in a couple of places such as coverage cfg | |
| // file, xprop cfg file etc. If this is different for your block, then override it with | |
| // the 'overrides' directive. | |
| dut_instance: "{tb}.dut" | |
| timescale: "1ns/1ps" | |
| // Top level simulation entities. | |
| sim_tops: ["{tb}"] | |
| // Default build and run opts | |
| build_opts: [// Standard UVM defines | |
| "+define+UVM", | |
| "+define+UVM_NO_DEPRECATED", | |
| "+define+UVM_REGEX_NO_DPI", | |
| "+define+UVM_REG_ADDR_WIDTH={tl_aw}", | |
| "+define+UVM_REG_DATA_WIDTH={tl_dw}", | |
| "+define+UVM_REG_BYTENABLE_WIDTH={tl_dbw}", | |
| "+define+SIMULATION", | |
| "+define+DUT_HIER={dut_instance}"] | |
| run_opts: ["+UVM_NO_RELNOTES", | |
| "+UVM_VERBOSITY={expand_uvm_verbosity_{verbosity}}"] | |
| // Default list of things to export to shell | |
| exports: [ | |
| { dv_root: "{dv_root}" }, | |
| { SIMULATOR: "{tool}" }, | |
| { GUI: "{gui}"}, | |
| { WAVES: "{waves}" }, | |
| { DUT_TOP: "{dut}" }, | |
| { TB_TOP: "{tb}" }, | |
| { dut_instance: "{dut_instance}" } | |
| ] | |
| // Build modes are collection of build_opts and run_opts | |
| // | |
| // To define a build mode that overrides these flags, add something | |
| // like the following to the IP block's configuration: | |
| // | |
| // build_modes: [ | |
| // { | |
| // name: foo | |
| // build_opts: ["+define+bx", | |
| // "+define+by", | |
| // "+define+bz"] | |
| // run_opts: ["+rx=1", | |
| // "+ry=2", | |
| // "+rz=3"] | |
| // } | |
| // ] | |
| // | |
| // To use a build mode for a specific test, set the 'use_build_mode' key. | |
| // | |
| build_modes: [] | |
| // Regressions are tests that can be grouped together and run in one shot | |
| // By default, two regressions are made available - "all" and "nightly". Both | |
| // run all available tests for the DUT. "nightly" enables coverage as well. | |
| // The 'tests' key is set to an empty list, which indicates "run everything". | |
| // Regressions can enable sim modes, which are a set of build_opts and run_opts | |
| // that are grouped together. These are appended to the build modes used by the | |
| // tests. | |
| regressions: [ | |
| { | |
| name: smoke | |
| tests: [] | |
| reseed: 1 | |
| run_opts: [// Knob used to configure an existing test / vseq to have a shorter runtime. | |
| "+smoke_test=1" | |
| ] | |
| } | |
| { | |
| name: all | |
| } | |
| { | |
| name: all_once | |
| reseed: 1 | |
| } | |
| { | |
| name: nightly | |
| en_sim_modes: ["cov"] | |
| } | |
| ] | |
| // Project defaults for VCS | |
| vcs_cov_cfg_file: "{{build_mode}_vcs_cov_cfg_file}" | |
| vcs_unr_cfg_file: "{dv_root}/tools/vcs/unr.cfg" | |
| vcs_xprop_cfg_file: "{dv_root}/tools/vcs/xprop.cfg" | |
| vcs_fsm_reset_cov_cfg_file: "{dv_root}/tools/vcs/fsm_reset_cov.cfg" | |
| vcs_cov_excl_files: [] | |
| // Build-specific coverage cfg files for VCS. | |
| default_vcs_cov_cfg_file: "-cm_hier {dv_root}/tools/vcs/cover.cfg+{dv_root}/tools/vcs/common_cov_excl.cfg" | |
| cover_reg_top_vcs_cov_cfg_file: "-cm_hier {dv_root}/tools/vcs/cover_reg_top.cfg+{dv_root}/tools/vcs/common_cov_excl.cfg" | |
| // Project defaults for Xcelium | |
| xcelium_cov_cfg_file: "{{build_mode}_xcelium_cov_cfg_file}" | |
| xcelium_unr_cfg_file: "{dv_root}/tools/xcelium/unr.cfg" | |
| xcelium_cov_excl_script: "{dv_root}/tools/xcelium/common_cov_excl.tcl" | |
| xcelium_cov_refine_files: [] | |
| // Build-specific coverage cfg files for Xcelium. | |
| default_xcelium_cov_cfg_file: "{dv_root}/tools/xcelium/cover.ccf" | |
| cover_reg_top_xcelium_cov_cfg_file: "{dv_root}/tools/xcelium/cover_reg_top.ccf" | |
| } |