// 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_build_dir:       "{scratch_path}"
  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_pass_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
    }
  ]
}
