Tail-undisturbed policy violation for comparison instructions.
Hi @michael-platzer
Issue
Comparison instructions should write the result of each comparison into the corresponding mask element of the result register. Vicuna does this, but it also updates the "mask tail elements", which is not compliant with the specs.
AFAIK, all comparison instruction violate this policy (vmseq.(vv|vx|vi), vmsne.(vv|vx|vi), vmslt(u).(vv|vx), vmsle(u).(vv|vx|vi), vmsgt(u).(vv|vx)) .
Below you can see an example warning of the UVM environment caused by tail-undisturbed violation:
(configuration: SEW=8, VL=8, LMUL=1/4)
# UVM_WARNING cvxif_scoreboard.svh(412) @ 15740: uvm_test_top.env.scoreboard [CVXIF_SCOREBOARD] Instr "vmsgtu.vi v3, v23, 1 mf4, tu, mu" with id = 5 in Prog "vmsgtu_vi" failed:
# at 15740 ns:
# State Difference
# ref.vproc_register[3]: d95224b44d1baac103a912d636614c8aabbe3dcb295429c8b1d99a5205c141ff, dut.vproc_reg[3]: d95224b44d1baac103a912d636614c8aabbe3dcb295429c8b1d99a52ffffffff
This issue might be related to #79 because both issues occur if the result is in "Mask-Register-Layout".
How to reproduce
You can reproduce this issue by running the cvxif_test_direct_issue_97 in the UVM environment.