Reformat perfcount report
This commit is contained in:
@@ -346,14 +346,6 @@ module VX_core import VX_gpu_pkg::*; #(
|
||||
assign dcache_lat = 32'(perf_dcache_lat);
|
||||
int loads;
|
||||
assign loads = 32'(perf_loads);
|
||||
int scheduler_idles;
|
||||
assign scheduler_idles = 32'(pipeline_perf_if.sched_idles);
|
||||
int scheduler_stalls;
|
||||
assign scheduler_stalls = 32'(pipeline_perf_if.sched_stalls);
|
||||
int scheduler_barrier_stalls;
|
||||
assign scheduler_barrier_stalls = 32'(pipeline_perf_if.sched_barrier_stalls);
|
||||
int ibuf_stalls;
|
||||
assign ibuf_stalls = 32'(pipeline_perf_if.ibf_stalls);
|
||||
int scrb_alu_per_core;
|
||||
assign scrb_alu_per_core = 32'(pipeline_perf_if.units_uses[`EX_ALU]);
|
||||
int scrb_fpu_per_core;
|
||||
@@ -364,7 +356,6 @@ module VX_core import VX_gpu_pkg::*; #(
|
||||
assign scrb_sfu_per_core = 32'(pipeline_perf_if.units_uses[`EX_SFU]);
|
||||
int scrb_tot;
|
||||
assign scrb_tot = scrb_alu_per_core+scrb_fpu_per_core+scrb_lsu_per_core+scrb_sfu_per_core;
|
||||
|
||||
int scrb_wctl_per_core;
|
||||
assign scrb_wctl_per_core = 32'(pipeline_perf_if.sfu_uses[`SFU_WCTL]);
|
||||
int scrb_csrs_per_core;
|
||||
@@ -423,50 +414,48 @@ module VX_core import VX_gpu_pkg::*; #(
|
||||
$display("Instructions: %d, Cycles: %d, IPC: %f", commit_csr_if.instret, sched_csr_if.cycles,
|
||||
$itor(instrs) / $itor(cycles));
|
||||
$display("scheduler idle: %d cycles (%.2f%%)", pipeline_perf_if.sched_idles,
|
||||
$itor(scheduler_idles) / $itor(cycles) * 100.0);
|
||||
$itor(pipeline_perf_if.sched_idles) / $itor(cycles) * 100.0);
|
||||
$display("scheduler stalls: %d cycles (%.2f%%)", pipeline_perf_if.sched_stalls,
|
||||
$itor(scheduler_stalls) / $itor(cycles) * 100.0);
|
||||
$itor(pipeline_perf_if.sched_stalls) / $itor(cycles) * 100.0);
|
||||
$display("scheduler barrier stalls: %d count across NUM_WARPS=%d (%.2f%%)",
|
||||
pipeline_perf_if.sched_barrier_stalls,
|
||||
`NUM_WARPS,
|
||||
$itor(scheduler_barrier_stalls) / $itor(cycles) * 100.0);
|
||||
$display("ibuffer stalls: %d cycles (%.2f%%)",pipeline_perf_if.ibf_stalls,
|
||||
$itor(ibuf_stalls) / $itor(cycles) * 100.0);
|
||||
$itor(pipeline_perf_if.sched_barrier_stalls) / $itor(cycles) * 100.0);
|
||||
$display("decode stalls: %d cycles (%.2f%%)",pipeline_perf_if.ibf_stalls,
|
||||
$itor(pipeline_perf_if.ibf_stalls) / $itor(cycles) * 100.0);
|
||||
// see VX_scoreboard.sv
|
||||
// scb_stalls: valid & ~ready (ready = stg_ready_in && operands_ready)
|
||||
// units_uses: valid & ~operands_ready
|
||||
// this will be a subset of scb_stalls
|
||||
$display("issue scoreboard: stalls total: %d (summed across ISSUE_WIDTH=%d)",
|
||||
$display("issue scoreboard: fires total:\t%d across ISSUE_WIDTH=%d",
|
||||
pipeline_perf_if.scb_fires, `ISSUE_WIDTH);
|
||||
$display("issue scoreboard: stalls total:\t%d across ISSUE_WIDTH=%d",
|
||||
pipeline_perf_if.scb_stalls, `ISSUE_WIDTH);
|
||||
$display("issue scoreboard: stalls by operand hazard: alu %d (%.2f%%) (%.2f cycles per issue)",
|
||||
$display("issue scoreboard: stalls by operand hazard: alu %d (%2.2f cycles per issue)",
|
||||
scrb_alu_per_core,
|
||||
$itor(scrb_alu_per_core) / $itor(scrb_tot) * 100.0,
|
||||
$itor(scrb_alu_per_core) / $itor(dispatch_fires_total));
|
||||
$display("issue scoreboard: stalls by operand hazard: fpu %d (%.2f%%) (%.2f cycles per issue)",
|
||||
$display("issue scoreboard: stalls by operand hazard: fpu %d (%2.2f cycles per issue)",
|
||||
scrb_fpu_per_core,
|
||||
$itor(scrb_fpu_per_core) / $itor(scrb_tot) * 100.0,
|
||||
$itor(scrb_fpu_per_core) / $itor(dispatch_fires_total));
|
||||
$display("issue scoreboard: stalls by operand hazard: lsu %d (%.2f%%) (%.2f cycles per issue)",
|
||||
$display("issue scoreboard: stalls by operand hazard: lsu %d (%2.2f cycles per issue)",
|
||||
scrb_lsu_per_core,
|
||||
$itor(scrb_lsu_per_core) / $itor(scrb_tot) * 100.0,
|
||||
$itor(scrb_lsu_per_core) / $itor(dispatch_fires_total));
|
||||
$display("issue scoreboard: stalls by operand hazard: sfu %d (%.2f%%) (%.2f cycles per issue)",
|
||||
$display("issue scoreboard: stalls by operand hazard: sfu %d (%2.2f cycles per issue)",
|
||||
scrb_sfu_per_core,
|
||||
$itor(scrb_sfu_per_core) / $itor(scrb_tot) * 100.0,
|
||||
$itor(scrb_sfu_per_core) / $itor(dispatch_fires_total));
|
||||
$display("issue scoreboard: sfu stalls: %d (scrs=%f, wctl=%f)",pipeline_perf_if.units_uses[`EX_SFU],
|
||||
$itor(scrb_csrs_per_core) / $itor(sfu_tot) * 100.0,
|
||||
$itor(scrb_wctl_per_core) / $itor(sfu_tot) * 100.0);
|
||||
$display("issue dispatch: stalls by FU busy: alu %d (%.2f cycles per issue)",
|
||||
$display("issue dispatch: stalls by FU busy: alu %d (%2.2f cycles per issue)",
|
||||
pipeline_perf_if.dispatch_stalls[`EX_ALU],
|
||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_ALU]) / $itor(dispatch_fires_total));
|
||||
$display("issue dispatch: stalls by FU busy: fpu %d (%.2f cycles per issue)",
|
||||
$display("issue dispatch: stalls by FU busy: fpu %d (%2.2f cycles per issue)",
|
||||
pipeline_perf_if.dispatch_stalls[`EX_FPU],
|
||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_FPU]) / $itor(dispatch_fires_total));
|
||||
$display("issue dispatch: stalls by FU busy: lsu %d (%.2f cycles per issue)",
|
||||
$display("issue dispatch: stalls by FU busy: lsu %d (%2.2f cycles per issue)",
|
||||
pipeline_perf_if.dispatch_stalls[`EX_LSU],
|
||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_LSU]) / $itor(dispatch_fires_total));
|
||||
$display("issue dispatch: stalls by FU busy: sfu %d (%.2f cycles per issue)",
|
||||
$display("issue dispatch: stalls by FU busy: sfu %d (%2.2f cycles per issue)",
|
||||
pipeline_perf_if.dispatch_stalls[`EX_SFU],
|
||||
$itor(pipeline_perf_if.dispatch_stalls[`EX_SFU]) / $itor(dispatch_fires_total));
|
||||
$display("issue dispatch: fires: total %d",
|
||||
|
||||
Reference in New Issue
Block a user