Draft: User config
Created by: cathales
⚠ This PR is not ready for merge yet. It builds CVA6 with embedded configuration on Verilator and runs CoreMark but there are still formatting + history cleanup + rebase + fixes to do for VCS and other configurations.
This PR is a step towards CVA6 parametrization.
- It distinguishes two types: "user configuration" VS "extended configuration", which is interesting because:
- It is not needed anymore to insert dummy values into a structure if the configuration file.
- It appears in the type signature that configuration has been extended or not: when the extended configuration is needed, the appropriate type is used to force that the transmitted parameter is already extended, avoiding the accidental use of dummy values.
- It creates a function to gather the extension logic.
- It moves user-config-dependent information from packages to this configuration structure as it is not possible for packages to use values from a configuration structure.
Not everything has been moved yet, but as moving XLEN (and its dependents PLEN, VLEN and many more types and values) implied a lot of changes, it is better to commit them as soon as it is working to avoid an even bigger PR (and the associated conflicts).