The spec says that the vs2 field of vid.v must be set to v0, otherwise the encoding is reserved. Currently, this is implicitly enforced by the encdec pattern which hardcodes 0b00000 for vs2. However, there is no explicit check in the execute clause.
Spike does not check vs2 at all for vid.v and executes the instruction regardless of the vs2 field.
It may be worth decoding vs2 as a variable, explicitly returning Illegal_Instruction() when vs2 != v0 and to add a config option that matches spike.
The spec says that the vs2 field of vid.v must be set to v0, otherwise the encoding is reserved. Currently, this is implicitly enforced by the encdec pattern which hardcodes 0b00000 for vs2. However, there is no explicit check in the execute clause.
Spike does not check vs2 at all for vid.v and executes the instruction regardless of the vs2 field.
It may be worth decoding vs2 as a variable, explicitly returning Illegal_Instruction() when vs2 != v0 and to add a config option that matches spike.