[TASK] Modify Spike to match core-specific configuration
Created by: zchamski
Background
Spike implements a complete set of functionality corresponding to the RISC-V specifications. At times this set can be a superset of features of an implementation, in particular in the areas where the specification allows behaviors ("an implementation can" or "may" ...) without enforcing their presence.
In such situations Spike behavior needs to be constrained to match the exact set of features provided by the implementation so that behaviors not supported by the implementation will be duly rejected by Spike.
What (objective description)
Add extra controls to Spike in the areas where the RISC-V specification allows an implementation to choose a specific behjavior so that Spike behaves as described in the specification of the "Embedded" CVA6 configuration.
How To
- Identify all points in RISC-V specification where the behavior is allowed to be implementation-defined
- Identify all points in the specification of the Embedded CVA6 configuration which determine the implementation-defined behaviors identified in previous step
- Extend Spike control interface (command line and/or configuration scripts) with parameters necessary to represent the properties of the Embedded configuration and constrain Spike behavior according to the values of these parameters.
Ideally this would be a set of class extensions for each CVA6 configuration. We can use the "step 1" and "embedded" cores as the examples.
Current Status
- Initial implementation of Spike parameterization done by
@MarioOpenHWGroup
- Initial identification of implementation-definable behaviors done by
@zchamski
Risks
- Specification of the Embedded configuration incomplete / imprecise
Prerequisites
None
KPI
TBD
Description of DONE
Spike simulations using parameter values for Embedded configuration yield identical results as RTL simulations of the Embedded configuration on all CI tests.