Zfinx support in riscv-arch-test added #838
Replies: 4 comments 5 replies
-
After a bit of script tuning to ensure we don't clobber the result address register the neorv32 zfinx suite now runs. There are still ... challenges .. with Sail Zfinx support. I'm unsure what version of Sail we are running. I can see it "takes" the instruction and does - something - but if you look at the signature file something is off e,g the fclass ref signature is borked. All the test fail compare, when in reality at least half should pass even with subnormals in the test suite. For my internal testing I ran the F test suite on sail and just copied over the signature files. The ref signature files where compared with the neorv32 running the converted zfinx test suite. |
Beta Was this translation helpful? Give feedback.
-
Result of my local run on my home server: |
Beta Was this translation helpful? Give feedback.
-
That's really great! I tried to come up with something like this myself, but I failed miserably 😅. I haven't checked all the details yet, but I wonder how close this is to the current Zfinx integration proposal: riscv-non-isa/riscv-arch-test#367 |
Beta Was this translation helpful? Give feedback.
-
FYI
I don't think it will work right away, but let's see... |
Beta Was this translation helpful? Give feedback.
-
@stnolting its taken me a while to get time to add support for this. This is an upgraded version of what I've used internally to validate that the Zfinx extension is compliant. Upgraded as in it converts everything and has room for subnormal flush support.
I've added initial support for Zfinx to the riscv-arch-test suite. There is a branch here that has Zfinx test suite support:
https://github.com/mikaelsky/riscv-arch-test/tree/Zfinx_test_suite
The changes are:
Note: I've yet to add support for flushing sub-normals in the ref simulation, so quite a few test will fail as the ref will correctly interpret sub-normals.
The branch doesn't include any tests as the scripts are tunable as to what is generated. This to allow us to generate neorv32 compliant zfinx test suites. Basically you will need to manually run the scripts first before calling the riscof framework.
There is also a branch of neorv32-riscof: https://github.com/mikaelsky/neorv32-riscof/tree/Zfinx_test_suite
The changes are:
To generate a test suite simply go into the Zfinx test suite directory. Create a src folder if it doesn't exists and run:
./script/generate_test_suite.py ../F/ ./
this will generate a neorv32 compliant test suite.Note: All the neorv32 test run and generate an output with GHDL.
Note: I recommend keeping an eye on Sail as Zfinx support is still a work-in-progress. If test logs begin to go off the rails said instruction isn't working right. What I do is keep htop running in a terminal and if a given test takes a long time something is off.
Note: calling either script with -h or no parameters will output all the options available.
To just run the Zfinx test the following can be run from the root of the riscv32-riscvof folder:
riscof --verbose info run --config ./config.ini --suite ./riscv-arch-test/riscv-test-suite/rv32i_m/Zfinx --env ./riscv-arch-test/riscv-test-suite/env
. This is quite useful to just check a singular extension.Beta Was this translation helpful? Give feedback.
All reactions