FPGA開発日記

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

RISC-Vのランダムテストジェネレータ AAPGを試す (9. AAPGを使ったデバッグ)

自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。

gitlab.com

もともとshakti向けに提供されている例を使って検証を拡充してみることにした。

落ちた命令を大きく区分けしてみた。半分以上が、csrwi命令によるFRMレジスタへの書き込み時の例外対応ミスとなっている。

$ tail -n20 */*.rv64imafdc.standard.log | grep -B3 Wrong | grep PC= | grep -v Exception | cut -f8 -d' ' | sort | uniq -c
      2 beqz
     46 c.addi16sp
      4 c.ldsp
     13 c.sdsp
    121 csrwi
      1 fadd.s
      4 fcvt.l.s
      1 fcvt.lu.s
      1 fcvt.s.l
      2 fcvt.wu.d
      1 fle.s
      2 fmadd.s
      1 fmin.s
      2 fmv.w.x
      1 fmv.x.w
      1 fsgnj.s
      2 fsgnjn.s
      1 fsqrt.d
178542 : L1D Load-In     : 80098000(01536) : 00000000_9724142c_00000000_00000000_00000000_9724142c_00000000_00000000_00000000_9724142c_00000000_00000000_00000000_9724142c_00000000_00000000
178542 : Load ISS Check  : 80098000        : 09a26f00_9d804d79_442c2712_8d862c55_117d4b7d_9e7732fd_474f43fe_42ebdf50_58cfd8b0_97620d05_00000000_00000000_00000000_9724142c_3fd5920f_b7a9ff86
44635 : RTL(33,1) Exception Cause = CSR Update Flush(27) PC=0000800016a0, Inst=0023d073, csrwi   frm, 7
44635 : 3475 : PC=[00000000800016a0] (M,33,01) 0023d073 csrwi   frm, 7
==========================================
Wrong PC: RTL = 00000000800016a0, ISS = 00000000800001e0
==========================================

これはおそらくmstatus.FSをCSRのアップデート条件に入れていなかったせいだ。修正は簡単。