riscv-torture(ランダムテストパタン)はしばらくメンテナンスされていなかったのだが、最近アップデートされて一応make
が通るようになった。
自作CPUのランダムテストパタンとして使用することにする。
RISC-V TortureのConfiguration
Tortureの生成パタンの構成を変えたいときは、config/*.config
を変更するとよいらしい。
config/default.config
torture.generator.nseqs 200 torture.generator.memsize 1024 torture.generator.fprnd 0 torture.generator.amo true torture.generator.mul true torture.generator.divider true torture.generator.segment true torture.generator.loop true torture.generator.loop_size 64 torture.generator.mix.xmem 10 torture.generator.mix.xbranch 20 torture.generator.mix.xalu 50 torture.generator.mix.fgen 10 torture.generator.mix.fpmem 5 torture.generator.mix.fax 3 torture.generator.mix.fdiv 2 torture.generator.mix.vec 0 ...
このxmem
からvec
までの数値が合計100になっていればよい。これがランダムパタンの生成確率に相当している。
例えば以下のように変更する。
torture.generator.mix.xmem 30 torture.generator.mix.xbranch 20 torture.generator.mix.xalu 50 torture.generator.mix.fgen 0 torture.generator.mix.fpmem 0 torture.generator.mix.fax 0 torture.generator.mix.fdiv 0 torture.generator.mix.vec 0
これでテストパタンを生成してみる。単純にmake
と打てばよろしい。output/test.S
にテストが生成される。
ld x30, 240(x31) ld x31, 248(x31) j pseg_0 pseg_12: addi x30, x0, 110 sll x28, x28, 63 addi x24, x0, -1 add x5, x22, x30 la x20, test_memory+655 xor x24, x24, x28 addi x7, x13, 0 addi x25, x0, 1601 la x2, test_memory-1770 addi x11, x0, 352 addi x5, x0, 0 and x6, x29, x24 la x27, test_memory-1117 add x9, x25, x25 ld x4, 2010(x2) addi x30, x0, 0 srliw x29, x1, 0 la x17, test_memory+1010 ld x21, 215(x23) sltu x26, x31, x31 la x19, test_memory-553 ...
で、一応自作CPUで動かしてみたらさっそくハングした。デバッグ開始だ...