// Copyright lowRISC contributors.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
{
  // Replicate settings from `common_sim_cfg.hjson`.
  //
  // Unfortunately, that file assumes that the tools are invoked natively as
  // opposed to via FuseSoC. Verilator is setup to be invoked via FuseSoC,
  // which causes FuseSoC to fail due to unknown {build_opts}. Hence, contents
  // from `common_sim_cfg.hjson` are replicated here as appropriate.
  // -- START --
  dv_root:          "{proj_root}/hw/dv"
  flow:             sim
  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",
                     ]

  // Default directory structure for the output
  build_dir:          "{scratch_path}/{build_mode}"
  run_dir_name:       "{index}.{test}"
  run_dir:            "{scratch_path}/{run_dir_name}/out"
  sw_root_dir:        "{proj_root}/sw"

  regressions: [
    {
      name: smoke
      reseed: 1
    }
    {
      name: all
    }
    {
      name: all_once
      reseed: 1
    }
    {
      name: nightly
    }
  ]
  // -- END --

  pre_build_cmds: []

  build_cmd:  "fusesoc {fusesoc_cores_root_dirs} run"
  ex_name:    "{eval_cmd} echo \"{fusesoc_core}\" | cut -d: -f3"
  run_cmd:    "{build_dir}/sim-verilator/V{ex_name}"

  // TODO: Verilator has a few useful build switches. Need to figure out how to
  // pass them via FuseSoC.

  build_opts: ["--flag=fileset_{design_level}",
               "--target=sim",
               "--build-root={build_dir}",
               "--setup",
               "--build",
               "{fusesoc_core}"
               // "--timescale 1ns/1ps",
               // Enable all assertions.
               // "--assert",
               // Flush streams immediately after all $displays.
               // "--autoflush",
               // Enable multi-threading.
               // "--threads 4",
               // Randomize all 2-state vars if driven to unknown 'X'.
               // "--x-assign unique",
               // "--x-initial unique",
               ]

  run_opts: [// Set random seed.
             // "+verilator+seed+{seed}",
             ]

  // Supported wave dumping formats (in order of preference).
  supported_wave_formats: ["fst"]

  // Vars that need to exported to the env.
  exports: [
  ]

  // pass and fail patterns
  build_fail_patterns: [// Verilator compile error.
                        "^%Error.*?:",
                        // FuseSoC build error.
                        "^ERROR:.*$",
                        ]
  run_pass_patterns:   ["^TEST PASSED CHECKS$"]
  run_fail_patterns:   [// $warning/error/fatal messages.
                        "^\\[[0-9]+\\] %Warning.*?: ",
                        "^\\[[0-9]+\\] %Error.*?: ",
                        "^\\[[0-9]+\\] %Fatal.*?: ",
                        // Ninja / SW compile failure.
                        "^FAILED: ",
                        " error: ",
                        // Failure signature pattern.
                        "^TEST FAILED CHECKS$"
                        ]

  // Coverage related.
  cov_db_dir: ""
  cov_db_test_dir: ""

  build_modes: [
    // TODO: Verilator will likely never have GUI. Find a better way to support
    // --gui when the tool itself doesn't support it.
    {
      name: verilator_gui
      is_sim_mode: 1
      build_opts: []
      run_opts: []
    }
    {
      name: verilator_waves
      is_sim_mode: 1
      // build_opts: ["--trace",
      //              "--trace-fst"
      //              "--trace-structs",
      //              "--trace-params",
      //              "-CFLAGS \"-DVM_TRACE_FMT_FST\"",
      //              ]
      run_opts: ["--trace"]
    }
    // TODO: These need to be fine-tuned.
    {
      name: verilator_cov
      is_sim_mode: 1
      // build_opts: ["--coverage"]
    }
    {
      name: verilator_xprop
      is_sim_mode: 1
    }
    {
      name: verilator_profile
      is_sim_mode: 1
      // build_opts: ["--prof-cfuncs",
      //              "--prof-threads",
      //             ]
    }
    {
      name: verilator_loopdetect
      is_sim_mode: 1
    }
  ]
}
