What matters is that stuff is binary compatible between RISC-V implementations.
That means there shouldn't be two different groups of people implementing the same instruction differently. Any unimplemented instruction must either be trappable (so that it can be emulated on software) or have a feature flag (so that compilers can produce a separate bit of code for CPU's without support).
If I were RISC-V, I would push hard for any binary made for any RISC-V machine must run correctly on any other. But performance doesn't matter.
I'd also require anyone implementing hardware extensions also release software and pseudocode of what each extension does, so that all other people without the extension can emulate it.
Binary compatibility is bare minimum for any cpu project. Riscv as the new kid on town, and after basically promising a CPU revolution, needs to achieve far more than that.
ARM is currently moving towards a standard and open boot system, and making previously optional things mandatory.
That means there shouldn't be two different groups of people implementing the same instruction differently. Any unimplemented instruction must either be trappable (so that it can be emulated on software) or have a feature flag (so that compilers can produce a separate bit of code for CPU's without support).
If I were RISC-V, I would push hard for any binary made for any RISC-V machine must run correctly on any other. But performance doesn't matter.
I'd also require anyone implementing hardware extensions also release software and pseudocode of what each extension does, so that all other people without the extension can emulate it.
Sadly that's far from true today.