FPGA開発日記

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

自作CPUにベクトル命令を追加する実装検討 (37. riscv-vector-testsのリグレッション結果確認)

ベクトル命令のテストパタンriscv-vector-testsvadd.viに属するテストパタンがすべてPASSできるようになったので、とりあえず手持ちのテストパタンを全部流してみた。

実行したのは878個のriscv-vector-testsだ。それぞれの命令についてテストするもので、それぞれのテストパタンがかなり長い。 PASSしたのは、87パタンだった。全て基本的な算術演算命令のものだ。

{'pass': 87, 'match': 2, 'timeout': 0, 'error': 756, 'deadlock': 33, 'unknown': 0, 'cycle_deleg': 0}
    "vl1re16.v-0": "pass",
    "vl1re32.v-0": "pass",
    "vl1re64.v-0": "pass",
    "vl8re64.v-0": "pass",
    "vl1re8.v-0": "pass",
    "vl2re16.v-0": "pass",
    "vl2re32.v-0": "pass",
    "vl8re8.v-0": "pass",
    "vl2re64.v-0": "pass",
    "vl2re8.v-0": "pass",
    "vl4re16.v-0": "pass",
    "vl4re32.v-0": "pass",
    "vl4re64.v-0": "pass",
    "vl4re8.v-0": "pass",
    "vl8re16.v-0": "pass",
    "vl8re32.v-0": "pass",
    "vadd.vi-0": "pass",
    "vand.vx-1": "pass",
    "vfmv.v.f-0": "pass",
    "vmaxu.vx-3": "pass",
    "vminu.vx-1": "pass",
    "vmax.vv-0": "pass",
/* ... 途中省略 ... */
    "vsub.vx-2": "pass",
    "vxor.vi-0": "pass",
    "vxor.vi-2": "pass",
    "vxor.vv-0": "pass",
    "vxor.vx-0": "pass",
    "vxor.vx-1": "pass",
    "vxor.vx-2": "pass",
    "vxor.vx-3": "pass",

今のパタン内でこれは通っていてほしい、というのは、これ以外を見てみると、シフト演算のいくつか、さらにMask命令など、実装したつもりでいても細かいところで間違っているものが目立つ。

{
    "vcpop.m-0": "error",
    "vfclass.v-0": "error",
    "vfcvt.f.x.v-0": "error",
    "vaadd.vv-0": "error",
    "vdiv.vv-0": "error",
    "vfcvt.f.xu.v-0": "error",
    "vfrdiv.vf-0": "error",
    "vfsgnjn.vf-1": "error",
    "vfcvt.rtz.x.f.v-0": "error",
    "vfmadd.vf-0": "error",
    "vaadd.vx-0": "error",
    "vfsgnjn.vv-0": "error",
    "vfcvt.rtz.xu.f.v-0": "error",
    "vdiv.vx-0": "error",
    "vfmsub.vf-1": "error",
    "vadc.vxm-1": "error",
    "vfcvt.x.f.v-0": "error",
    "vfmsub.vv-0": "error",
    "vfcvt.xu.f.v-0": "error",
/* ... 途中省略 ... */

一個ずつ、テストをデバッグしていこうと思う。