FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

RISC-Vのランダムテストジェネレータ AAPGを試す (5. FPUの命令系統をチェックする)

AAPGを久しぶりに触っている。久しぶりにテストパタンを動かして問題ないことを確認したので、もうちょっと命令範囲を拡張することにした。

https://gitlab.com/shaktiproject/tools/aapg

FPU系の命令でバグがちょいちょい見つかっている。riscv-testsでカバーし切れなかったのは、Nan-Boxingなどの処理についてチェックが足りていないようだ。

GPR[00](0) <= 0000000000000000
22077 : 512 : PC=[000000008000091a] (M,06,01) 000006c2 c.slli  a3, 16
GPR[13](20) <= ffffffffffff0000
22077 : 513 : PC=[000000008000091c] (M,06,02) 04c16d03 lwu     s10, 76(sp)
MR4(0x0000000080092b2c)=>000000002ee19ee4
GPR[26](12) <= 000000002ee19ee4
22078 : 514 : PC=[0000000080000920] (M,07,01) 0000d622 c.swsp  s0, 44(sp)
MW4(0x0000000080092b0c)=>000000001210d429
88370 : L1D Load-In     : 80092b10(00177) : 5e7d2c4c_230d5720_46ce8f91_07d33c1a
88370 : Load ISS Check  : 80092b10        : 5e7d2c4c_230d5720_46ce8f91_07d33c1a
88374 : L1D Load-In     : 80092bb0(00187) : 3b0ba8b3_3df3688c_44c1bb49_64993217
88374 : Load ISS Check  : 80092bb0        : 3b0ba8b3_3df3688c_44c1bb49_64993217
88386 : L1D Evict       : 80092510(00081) : 4b74b5ad_448ba266_2818edb5_dc99020d
88386 : EVict ISS Check : 80092510        : 4b74b5ad_448ba266_2818edb5_dc99020d
88394 : L1D Evict       : 800939b0(00411) : 0785d0da_ba0d1009_69499af2_0000000e
88394 : EVict ISS Check : 800939b0        : 0785d0da_ba0d1009_69499af2_0000000e
88450 : L1D Load-In     : 800932a0(00298) : 00000000_00000000_1804d62f_67770222
88450 : L1D Merged      : 800932a0(00298) : 00000000_00000000_1804d62f_67770222
88450 : Load ISS Check  : 800932a0        : 00000000_00000000_1804d62f_67770222
88454 : L1D Load-In     : 80092ae0(00174) : 778c4980_d1c56733_1baf7ae0_0acaaca7
88454 : Load ISS Check  : 80092ae0        : 778c4980_d1c56733_1baf7ae0_0acaaca7
88466 : L1D Evict       : 800940a0(00010) : 7360b042_85603a03_1818784c_e5f69e94
88466 : EVict ISS Check : 800940a0        : 7360b042_85603a03_1818784c_e5f69e94
22117 : 515 : PC=[0000000080000922] (M,08,01) c081372f amominu.d a4, s0, (sp)
MR8(0x0000000080092ae0)=>1baf7ae00acaaca7
MW8(0x0000000080092ae0)=>1baf7ae00acaaca7
GPR[14](5) <= 1baf7ae00acaaca7
22117 : 516 : PC=[0000000080000926] (M,08,02) 1877b453 fdiv.s  fs0, fa5, ft7
==========================================
Wrong FPR[08](30): RTL = ffffffff8651808d, ISS = ffffffff7fc00000
==========================================

FPU側の実装をちょいちょい直している。変換系の命令も含めて全部見直しだな。