Add description about Core Versions and RTL Freeze
Created by: davideschiavone
CV32E40P has its own architectural id marchid that defines its architecture, ISA, and features. This value never changes in the CV32E40P repository, and the RISC-V foundation gives it. For every change in the architecture or ISA, it is highly recommended to create a new repository and ask for a new marchid rather than changing the pre-agreed features of the core.
Its implementation id mimpid specifies which parameters are verified on a given date, which we refer to as "RTL Freeze, " labeled by a git tag.
Not all the parameters are verified at a given time. In addition, bugs can always be found after "RTL Freeze," even on pre-verified parameter values. On top of that, power, performance, area (PPA) optimizations can be implemented in the core.
How can we control the CORE version?
-
The RTL Freeze is controlled by the (mimpid, git tag, verified parameters) set (rtl-freeze-set). Only Logically-Equivalent changes are allowed within this set. A new git tag is defined.
-
A bug is found: by definition, its solution will be not logically equivalent. Thus a new rtl-freeze-set is defined by incrementing the mimpid in the RTL (mimpid, git tag, verified parameters). The documentation should report such bug specifying which rtl-freeze-set fails it and which not. A new git tag is defined.
-
New parameters are verified, and changes in the RTL are required. Thus, a new rtl-freeze-set is defined by incrementing the mimpid in the RTL and the documentation's verified parameters (mimpid, git tag, verified parameters). The documentation should report the new parameters verified with respect to the mimpid. Every change in the new parameters must be logically-equivalent to the pre-verified parameters. For example, if a change in the RTL is required for a PULP instruction (i.e., XPULP parameter is equal to 1), such change must be logically equivalent when the XPULP parameter is set to 0.
-
Non-Logically-Equivalent PPA optimizations on an rtl-freeze-set are forbidden (e.g., a faster divider is not allowed).