久しぶりにTenstorrentのOcelotの最新版を試行してみることにした。 OcelotはBOOMをベースとした、RISC-V Vectorの実装で、Tenstorrentがオープンソースとして公開している。
+SIM_CXXFLAGS += -DVL_DEBUG
3 0x00000000800018cc vfmacc.vv v24, v8, v16 -V{t1,1}- Verilated::debug is on. Message prefix indicates {<thread>,<sequence_number>}. -V{t1,2}+ VTestHarness___024root___change_request -V{t1,3}+ VTestHarness___024root___change_request_1 -V{t1,4} CHANGE: /home/msyksphinz/work/riscv/chipyard/chipyard-ocelot/sims/verilator/generated-src/chipyard.TestHarness.MediumBoomVecConfig/tt_mem.sv:170: TestHarness.chiptop.system.tile_prci_domain.tile_reset_domain.boom_tile.core.vec_exe_unit.iresp_fu_units_0.sv_pipeline.vfp_pipeline.mem.wb_full %Error: /home/msyksphinz/work/riscv/chipyard/chipyard-ocelot/sims/verilator/generated-src/chipyard.TestHarness.MediumBoomVecConfig/chipyard.TestHarness.MediumBoomVecConfig.harness.v:28715: Verilated model didn't converge - See https://verilator.org/warn/DIDNOTCONVERGE Aborting...
うーむ、VLE命令は動作していそうだが、VFMACCで失敗した。Verilator向けに改造した部分が良くなかったかな。
とりあえず以下の部分はループが発生している。
diff --git a/src/main/resources/vsrc/rvv/tt_mem.sv b/src/main/resources/vsrc/rvv/tt_mem.sv index 99ab7b57..59bace80 100644 --- a/src/main/resources/vsrc/rvv/tt_mem.sv +++ b/src/main/resources/vsrc/rvv/tt_mem.sv @@ -320,7 +320,8 @@ assign wb_byten = mem_byten; assign wb_ordered = mem_ordered; assign wb_ldst_sz = mem_ldst_sz; assign wb_hit = 1'b0; -assign wb_empty = !wb_store_valid; +// assign wb_empty = !wb_store_valid; +assign wb_empty = 1'b0; assign wb_full_raw = !i_data_req_rtr; assign wb_full = wb_full_raw | ((~wb_empty));
これを修正すると今度は以下のエラーが発生した。これはROBの中だ。修正するのはちょっとしんどそうだなあ..
3 0x0000000080001b74 jalr ra, ra, -704 x 1 0x0000000080001b78 3 0x00000000800018b0 vsetvli a5, a2, e64, m8, ta, mu x15 0x0000000000000020 3 0x00000000800018b4 vfmv.v.f v16, fa0 3 0x00000000800018b8 bge zero, a2, pc + 80 3 0x00000000800018bc vle64.v v8, (a0) 3 0x00000000800018c0 vle64.v v24, (a1) 3 0x00000000800018c4 sext.w a4, a5 x14 0x0000000000000020 [47000] %Error: chipyard.TestHarness.MediumBoomVecConfig.top.v:340340: Assertion failed in TOP.TestHarness.chiptop.system.tile_prci_domain.tile_reset_domain.boom_tile.core.rob %Error: /home/kimura/work/riscv/chipyard/chipyard-ocelot/sims/verilator/generated-src/chipyard.TestHarness.MediumBoomVecConfig/chipyard.TestHarness.MediumBoomVecConfig.top.v:340340: Verilog $stop Aborting...