# Copyright Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- iss: spike
  path_var: SPIKE_PATH
  cmd: >
    <path_var>/spike --log-commits --isa=<variant> -l <elf>

- iss: ovpsim
  path_var: OVPSIM_PATH
  cmd: >
    <path_var>/riscvOVPsim.exe
    --controlfile <cfg_path>/riscvOVPsim.ic
    --objfilenoentry <elf>
    --override riscvOVPsim/cpu/PMP_registers=0
    --override riscvOVPsim/cpu/simulateexceptions=T
    --trace --tracechange --traceshowicount --tracemode --traceregs
    --finishafter 1000000

- iss: sail
  path_var: SAIL_RISCV
  cmd: >
    <path_var> <elf>
