順序違反と、LMUL>1の対応を実装して、どうにか最初のテストパタンvadd.vi
のPASSに成功した。
// vadd.vi-0 MW4(0x000000008003c000)<=0000000000000001 322930 : 41349 : PC=[000000008000003a] (M,11,01) 0003cf17 auipc t5, 0x3c GPR[30](26) <= 000000008003c03a 322942 : 41350 : PC=[000000008000003e] (M,12,01) fc0f2523 sw zero, -54(t5) MW4(0x000000008003c004)<=0000000000000000 322942 : 41351 : PC=[0000000080000042] (M,12,02) 0000bfc5 c.j pc - 16 GPR[00](0) <= 0000000000000000 1291786 : L1D Load-In : 8003c000(00000) : 00000000_00000000_00000000_00000001 =============================== SIMULATION FINISH : PASS RUNNING TIME : 1291786 ===============================
とりあえず最初のテストでは、LMUL=2までのテストをしているっぽいな。 それ以降のテストは、vadd.vi-1およびvadd.vi-2を走らせてみなければならない。
vadd.vi-1
は、ロードとの順序違反検出に失敗しているっぽい。
// vadd.vi-1 GPR[07](36) <= 0000000080001918 253397 : 1272 : PC=[0000000080001902] (U,05,02) 0003b383 ld t2, 0(t2) MR8(0x0000000080001918)=>00ff7fff000f0200 GPR[07](35) <= 00ff7fff000f0200 253398 : 1273 : PC=[0000000080001906] (U,06,01) 00728d63 beq t0, t2, pc + 26 253423 : 1274 : PC=[0000000080001920] (U,12,01) 07a00193 li gp, 122 GPR[03](30) <= 000000000000007a 253423 : 1275 : PC=[0000000080001924] (U,12,02) 00053283 ld t0, 0(a0) MR8(0x00000000800df040)=>92d2901b2c2227dc ========================================== Wrong GPR[05](62): RTL = 0200ff7fff000f02, ISS = 92d2901b2c2227dc ========================================== =============================== SIMULATION FINISH : FAIL (CODE=100) RUNNING TIME : 253423 ===============================
vadd.vi-2
は、デッドロックが発生している...
// vadd.vi-2 382078 : Load ISS Check : 2ba0 : 00000000_00000000_00000000_00000000 382266 : L1D Load-In : 2bb0(00699) : 00000000_00000000_00000000_00000000 382266 : Load ISS Check : 2bb0 : 00000000_00000000_00000000_00000000 Spike Result : 183 : PC=[0000000000002112] (M) 0000058e c.slli a1, 3 Spike Result : 184 : PC=[0000000000002114] (M) 02050007 vle8.v v0, (a0) Spike Result : 185 : PC=[0000000000002118] (M) 0000952e c.add a0, a1 Spike Result : 186 : PC=[000000000000211a] (M) 02050407 vle8.v v8, (a0) Spike Result : 187 : PC=[000000000000211e] (M) 0000952e c.add a0, a1 Spike Result : 188 : PC=[0000000000002120] (M) 02050807 vle8.v v16, (a0) Spike Result : 189 : PC=[0000000000002124] (M) 0000952e c.add a0, a1 Spike Result : 190 : PC=[0000000000002126] (M) 02050c07 vle8.v v24, (a0) Spike Result : 191 : PC=[000000000000212a] (M) 0000952e c.add a0, a1 Spike Result : 192 : PC=[000000000000212c] (M) 0000a241 c.j pc + 384 =============================== COMMIT DEADLOCKED RUNNING TIME : 99414 ===============================