|
120 | 120 | // ============================================================ |
121 | 121 | // 3) REGISTER WRITE ONLY (normal ALU, load result, jump-link, etc.) |
122 | 122 | // ============================================================ |
123 | | - else if (instr_type_i inside {i_lb, i_lh, i_lw, i_lbu, i_lhu}) begin |
| 123 | + else if (instr_type_i inside {i_lb, i_lh, i_lw, i_lbu, i_lhu} && rd_addr_i != 0) begin |
124 | 124 | automatic string spacing = (rd_addr_i < 10) ? " " : " "; |
125 | 125 | $fwrite(trace_fd, |
126 | 126 | "core 0: 3 0x%08h (0x%08h) x%0d%s0x%08h mem 0x%08h\n", |
|
130 | 130 | ); |
131 | 131 | end |
132 | 132 |
|
| 133 | + // Load to x0 - just log memory access without register write |
| 134 | + else if (instr_type_i inside {i_lb, i_lh, i_lw, i_lbu, i_lhu} && rd_addr_i == 0) begin |
| 135 | + $fwrite(trace_fd, |
| 136 | + "core 0: 3 0x%08h (0x%08h) mem 0x%08h\n", |
| 137 | + pc_i, fe_tracer_i.inst, |
| 138 | + alu_result_i |
| 139 | + ); |
| 140 | + end |
| 141 | + |
133 | 142 | else if (rf_rw_en_i && rd_addr_i != 0) begin |
134 | 143 | automatic string spacing = (rd_addr_i < 10) ? " " : " "; |
135 | 144 | $fwrite(trace_fd, |
@@ -258,13 +267,16 @@ task automatic check_pass_fail(); |
258 | 267 | end |
259 | 268 | endtask |
260 | 269 |
|
| 270 | +// TOHOST check - only for riscv-tests (isa tests), not arch tests |
| 271 | +// When addr_check_enabled is true, pass/fail is determined by PC addresses |
| 272 | +// When addr_check_enabled is false, use TOHOST memory-mapped register |
261 | 273 | always @(posedge clk_i) begin |
262 | 274 | automatic logic we = wr_en_i; |
263 | 275 | automatic logic valid = `SOC.pipe4.dcache_valid; |
264 | 276 | automatic logic [31:0] addr = `SOC.pipe4.alu_result; |
265 | 277 | automatic logic [31:0] data = `SOC.pipe4.write_data; |
266 | 278 |
|
267 | | - if (addr_check_enabled && valid && we && addr == 32'h80001000) begin |
| 279 | + if (!addr_check_enabled && valid && we && addr == 32'h80001000) begin |
268 | 280 | if (data == 32'h1) begin |
269 | 281 | $display("🎉 TOHOST PASS"); |
270 | 282 | $finish; |
|
0 commit comments