FPGA開発日記

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

Tenstorrentの公開したRISC-V検証パタン riscv_arch_tests を試す (2. テストパタンを自作CPUで試してみる)

ずっと試してみたかった、Tenstorrentが公開したRISC-V検証パタンである riscv_arch_tests を試してみることにした。 自作CPUに適用して、さらなるバグが発見されることを期待している。

github.com

とりあえずpkを使わなくても、メモリ領域を拡張することで何とかなりそうな気がしてきた。

spike -l -m0x80000000:65536,0x726000:4096 ../tests/riscv_arch_tests/riscv_tests/rv_i/rvi_compute_register_register/rvi_compute_register_register_1

メモリ領域を定義して、エラーで指定されたメモリ領域を0x726000を定義する。 いちおうこれでテストパタンが動き出すようになった。

core   0: 0x0000000000001000 (0x00000297) auipc   t0, 0x0
core   0: 0x0000000000001004 (0x02028593) addi    a1, t0, 32
core   0: 0x0000000000001008 (0xf1402573) csrr    a0, mhartid
core   0: 0x000000000000100c (0x0182b283) ld      t0, 24(t0)
core   0: 0x0000000000001010 (0x00028067) jr      t0
core   0: >>>>  __section_text
core   0: 0x0000000080000000 (0x00000013) nop
core   0: >>>>  init
core   0: 0x0000000080000004 (0x00000093) li      ra, 0
core   0: 0x0000000080000008 (0x00000113) li      sp, 0
core   0: 0x000000008000000c (0x00000193) li      gp, 0
core   0: 0x0000000080000010 (0x00000213) li      tp, 0
core   0: 0x0000000080000014 (0x00000293) li      t0, 0
core   0: 0x0000000080000018 (0x00000313) li      t1, 0
core   0: 0x000000008000001c (0x00000393) li      t2, 0
core   0: 0x0000000080000020 (0x00000413) li      s0, 0
core   0: 0x0000000080000024 (0x00000493) li      s1, 0
core   0: 0x0000000080000028 (0x00000513) li      a0, 0

早速自作CPUで動かしてみる。 MISAの設定が違うのかな?

2223 : 41 : PC=[0000000080000090] (M,07,01) 12e08093 addi    ra, ra, 302
GPR[01](28) <= 800000000034112e
2229 : RTL(8,1) Exception Cause = CSR Update Flush(27) PC=000080000094, Inst=30109073, csrw    misa, ra
2229 : 42 : PC=[0000000080000094] (M,08,01) 30109073 csrw    misa, ra
2249 : RTL(13,1) Exception Cause = CSR Update Flush(27) PC=000080000098, Inst=301020f3, csrr    ra, misa
2249 : 43 : PC=[0000000080000098] (M,13,01) 301020f3 csrr    ra, misa
==========================================
Wrong GPR[01](37): RTL = 800000000034112e, ISS = 8000000000141104
==========================================

MISAとしては、RV64IMCが正解らしい。MISAの設定がちょっと問題だ。

msyksphinz.hatenablog.com