From 7014ae24dae27b4251d12e169841273d8f22ae0f Mon Sep 17 00:00:00 2001 From: Hansung Kim Date: Tue, 19 Mar 2024 15:25:46 -0700 Subject: [PATCH] Prettier perf count reports --- hw/rtl/core/VX_core.sv | 59 +++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/hw/rtl/core/VX_core.sv b/hw/rtl/core/VX_core.sv index 095d61bf..e93e5c93 100644 --- a/hw/rtl/core/VX_core.sv +++ b/hw/rtl/core/VX_core.sv @@ -374,40 +374,47 @@ module VX_core import VX_gpu_pkg::*; #( if (!reset) begin $display("====================CORE : %d===================",CORE_ID); $display("time : %t", $time); - $display("perf_dcache_rd_req_per_cycle: %d", perf_dcache_rd_req_per_cycle); - $display("perf_dcache_wr_req_per_cycle: %d", perf_dcache_wr_req_per_cycle); - $display("perf_dcache_rsp_per_cycle: %d", perf_dcache_rsp_per_cycle); - $display("perf_icache_pending_read_cycle: %d", perf_icache_pending_read_cycle); - $display("perf_dcache_pending_read_cycle: %d", perf_dcache_pending_read_cycle); - $display("perf_icache_pending_reads: %d", perf_icache_pending_reads); - $display("perf_dcache_pending_reads: %d", perf_dcache_pending_reads); - $display("perf_icache_req_fire: %b", perf_icache_req_fire); - $display("perf_icache_rsp_fire: %b", perf_icache_rsp_fire); - $display("perf_dcache_rd_req_fire: %b", perf_dcache_rd_req_fire); - $display("perf_dcache_rd_req_fire_r: %b", perf_dcache_rd_req_fire_r); - $display("perf_dcache_wr_req_fire: %b", perf_dcache_wr_req_fire); - $display("perf_dcache_wr_req_fire_r: %b", perf_dcache_wr_req_fire_r); - $display("perf_dcache_rsp_fire: %b", perf_dcache_rsp_fire); + // $display("perf_dcache_rd_req_per_cycle: %d", perf_dcache_rd_req_per_cycle); + // $display("perf_dcache_wr_req_per_cycle: %d", perf_dcache_wr_req_per_cycle); + // $display("perf_dcache_rsp_per_cycle: %d", perf_dcache_rsp_per_cycle); + // $display("perf_icache_pending_read_cycle: %d", perf_icache_pending_read_cycle); + // $display("perf_dcache_pending_read_cycle: %d", perf_dcache_pending_read_cycle); + // $display("perf_icache_pending_reads: %d", perf_icache_pending_reads); + // $display("perf_dcache_pending_reads: %d", perf_dcache_pending_reads); + // $display("perf_icache_req_fire: %b", perf_icache_req_fire); + // $display("perf_icache_rsp_fire: %b", perf_icache_rsp_fire); + // $display("perf_dcache_rd_req_fire: %b", perf_dcache_rd_req_fire); + // $display("perf_dcache_rd_req_fire_r: %b", perf_dcache_rd_req_fire_r); + // $display("perf_dcache_wr_req_fire: %b", perf_dcache_wr_req_fire); + // $display("perf_dcache_wr_req_fire_r: %b", perf_dcache_wr_req_fire_r); + // $display("perf_dcache_rsp_fire: %b", perf_dcache_rsp_fire); $display("Instructions: %d, Cycles: %d, IPC: %f", commit_csr_if.instret, sched_csr_if.cycles, $itor(instrs) / $itor(cycles)); $display("scheduler idle: %d cycles (%f%%)", pipeline_perf_if.sched_idles, - $itor(scheduler_idles) / $itor(cycles)); + $itor(scheduler_idles) / $itor(cycles) * 100.0); $display("scheduler stalls: %d cycles (%f%%)", pipeline_perf_if.sched_stalls, - $itor(scheduler_stalls) / $itor(cycles)); + $itor(scheduler_stalls) / $itor(cycles) * 100.0); $display("ibuffer stalls: %d cycles (%f%%)",pipeline_perf_if.ibf_stalls, - $itor(ibuf_stalls) / $itor(cycles)); + $itor(ibuf_stalls) / $itor(cycles) * 100.0); // see VX_scoreboard.sv - $display("issue stalls: %d (ISSUE_WIDTH=%d) (alu=%f%%, fpu=%f%%, lsu=%f%%, sfu=%f%%)", - pipeline_perf_if.scb_stalls, - `ISSUE_WIDTH, - $itor(scrb_alu_per_core) / $itor(scrb_tot), - $itor(scrb_fpu_per_core) / $itor(scrb_tot), - $itor(scrb_lsu_per_core) / $itor(scrb_tot), - $itor(scrb_sfu_per_core) / $itor(scrb_tot)); + $display("issue stalls: %d (summed across ISSUE_WIDTH=%d)", + pipeline_perf_if.scb_stalls, `ISSUE_WIDTH); + $display("issue stalls: alu %d (%f%%)", + scrb_alu_per_core, + $itor(scrb_alu_per_core) / $itor(scrb_tot) * 100.0); + $display("issue stalls: fpu %d (%f%%)", + scrb_fpu_per_core, + $itor(scrb_fpu_per_core) / $itor(scrb_tot) * 100.0); + $display("issue stalls: lsu %d (%f%%)", + scrb_lsu_per_core, + $itor(scrb_lsu_per_core) / $itor(scrb_tot) * 100.0); + $display("issue stalls: sfu %d (%f%%)", + scrb_sfu_per_core, + $itor(scrb_sfu_per_core) / $itor(scrb_tot) * 100.0); $display("sfu stalls: %d (scrs=%f, wctl=%f)",pipeline_perf_if.units_uses[`EX_SFU], - $itor(scrb_csrs_per_core) / $itor(sfu_tot), - $itor(scrb_wctl_per_core) / $itor(sfu_tot)); + $itor(scrb_csrs_per_core) / $itor(sfu_tot) * 100.0, + $itor(scrb_wctl_per_core) / $itor(sfu_tot) * 100.0); $display("ifetches: %d", perf_ifetches); $display("ifetch latency: %f Cycles", $itor(icache_lat) / $itor(ifetches));