[TASK] Allow Spike-specific ISA/extension configuration in cva6.py

Placeholder seongwon
2026-03-26T07:30:58Z

### Is there an existing CVA6 task for this?

- [x] I have searched the existing task issues

### Task Description

Hi, I am working on Svadu/Svade-related verification using the CVA6 test flow.

In this setup, some architectural features (e.g., Svadu) affect the simulation behavior in Spike, but do not require any special compiler support or compiler-visible ISA encoding from GCC.

Currently, it would be helpful to cleanly separate:

* compiler-related options (GCC)
* simulation-specific configuration (Spike)

For example, in my case:

* Svadu only needs to be enabled in Spike,
* but GCC should compile the test with its normal configuration.

At the moment, this requires manual handling, and it would be nice if the flow officially supported this separation.

One limitation of the current flow is that the existing options do not fully cover this use case:

1. `isa_extension`
This is applied to both GCC and Spike. As a result, extensions that are only relevant to Spike simulation behavior become unnecessarily coupled to the compiler flow.

2. `--spike_params`
This allows passing parameters only to Spike, but it does not modify the Spike ISA string itself. So it is not sufficient when an extension needs to be reflected in Spike's ISA configuration.

Because of this, there is currently no clean way to:

* enable an extension only in Spike,
* while leaving the compiler configuration unchanged.

It would therefore be helpful to support tool-specific configuration in `cva6.py`, such as:

* base options for GCC
* additional options/extensions applied only to Spike

For example:

```bash
--spike_extension="svadu" // For me, it works well for separating ISA between Compile and Simulator
```

This would make it easier to validate privileged/MMU-related features that are not directly tied to compiler-visible ISA support.

Thanks!

### Required Changes

Add support in `cva6.py` for tool-specific ISA/extension configuration, allowing Spike-specific extensions (e.g., Svadu) to be enabled without affecting GCC options.

Specifically:

* introduce a mechanism (e.g., `--spike_extension`) to modify only the SPIKE or other simulator ISA string,
* ensure this extension is not propagated to the GCC/toolchain configuration,
* keep existing `isa_extension` behavior unchanged for shared use cases.

### Current Status

Currently, `cva6.py` does not provide a clean way to configure ISA/extensions separately for different tools.

* The `isa_extension` option is applied globally, affecting both GCC and Spike.
* The `--spike_params` option allows passing parameters only to Spike, but does not modify the Spike ISA string.

As a result, enabling extensions that are only relevant to Spike (e.g., Svadu) requires manual workarounds and is not directly supported in the test flow.

### Risks

_No response_

### Prerequisites

_No response_

### KPI (KEY Performance Indicators)

_No response_

### Description of Done

The task is considered complete when:

* `cva6.py` supports configuring Spike/Simulator-specific ISA/extensions independently from GCC.
* A user can enable an extension (e.g., Svadu) only for Spike without modifying compiler options.
* The Spike ISA string is correctly updated based on the provided option (e.g., `--spike_extension`).
* Existing flows using `isa_extension` remain unchanged and backward-compatible.
* Documentation or help messages clearly describe how to use the new option.

### Associated PRs

_No response_