scope refactoring
This commit is contained in:
@@ -178,7 +178,7 @@ logic [31:0] cmd_csr_wdata;
|
||||
t_ccip_c0_ReqMmioHdr mmio_hdr = t_ccip_c0_ReqMmioHdr'(cp2af_sRxPort.c0.hdr);
|
||||
`IGNORE_WARNINGS_END
|
||||
|
||||
`STATIC_ASSERT(($bits(t_ccip_c0_ReqMmioHdr)-$bits(mmio_hdr.address)) == 12, "Oops!")
|
||||
`STATIC_ASSERT(($bits(t_ccip_c0_ReqMmioHdr)-$bits(mmio_hdr.address)) == 12, ("Oops!"))
|
||||
|
||||
t_if_ccip_c2_Tx mmio_tx;
|
||||
assign af2cp_sTxPort.c2 = mmio_tx;
|
||||
@@ -221,54 +221,54 @@ begin
|
||||
MMIO_IO_ADDR: begin
|
||||
cmd_io_addr <= t_ccip_clAddr'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_IO_ADDR: 0x%0h", $time, t_ccip_clAddr'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_IO_ADDR: addr=%0h, data=0x%0h", $time, mmio_hdr.address, t_ccip_clAddr'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
MMIO_MEM_ADDR: begin
|
||||
cmd_mem_addr <= t_local_mem_addr'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_MEM_ADDR: 0x%0h", $time, t_local_mem_addr'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_MEM_ADDR: addr=%0h, data=0x%0h", $time, mmio_hdr.address, t_local_mem_addr'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
MMIO_DATA_SIZE: begin
|
||||
cmd_data_size <= $bits(cmd_data_size)'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_DATA_SIZE: %0d", $time, $bits(cmd_data_size)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_DATA_SIZE: addr=%0h, data=%0d", $time, mmio_hdr.address, $bits(cmd_data_size)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
MMIO_CMD_TYPE: begin
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_CMD_TYPE: %0d", $time, $bits(cmd_type)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_CMD_TYPE: addr=%0h, data=%0d", $time, mmio_hdr.address, $bits(cmd_type)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
`ifdef SCOPE
|
||||
MMIO_SCOPE_WRITE: begin
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_SCOPE_WRITE: %0h", $time, 64'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_SCOPE_WRITE: addr=%0h, data=%0h", $time, mmio_hdr.address, 64'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
`endif
|
||||
MMIO_CSR_CORE: begin
|
||||
cmd_csr_core <= $bits(cmd_csr_core)'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_CSR_CORE: %0h", $time, $bits(cmd_csr_core)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_CSR_CORE: addr=%0h, %0h", $time, mmio_hdr.address, $bits(cmd_csr_core)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
MMIO_CSR_ADDR: begin
|
||||
cmd_csr_addr <= $bits(cmd_csr_addr)'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_CSR_ADDR: %0h", $time, $bits(cmd_csr_addr)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_CSR_ADDR: addr=%0h, %0h", $time, mmio_hdr.address, $bits(cmd_csr_addr)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
MMIO_CSR_DATA: begin
|
||||
cmd_csr_wdata <= $bits(cmd_csr_wdata)'(cp2af_sRxPort.c0.data);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_CSR_DATA: %0h", $time, $bits(cmd_csr_wdata)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: MMIO_CSR_DATA: addr=%0h, %0h", $time, mmio_hdr.address, $bits(cmd_csr_wdata)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
default: begin
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_WR: addr=%0h, data=%0h", $time, mmio_hdr.address, $bits(cmd_csr_wdata)'(cp2af_sRxPort.c0.data));
|
||||
$display("%t: Unknown MMIO Wr: addr=%0h, data=%0h", $time, mmio_hdr.address, $bits(cmd_csr_wdata)'(cp2af_sRxPort.c0.data));
|
||||
`endif
|
||||
end
|
||||
endcase
|
||||
@@ -297,27 +297,27 @@ begin
|
||||
mmio_tx.data <= 64'(state);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
if (state != state_t'(mmio_tx.data)) begin
|
||||
$display("%t: MMIO_STATUS: state=%0d", $time, state);
|
||||
$display("%t: MMIO_STATUS: addr=%0h, state=%0d", $time, mmio_hdr.address, state);
|
||||
end
|
||||
`endif
|
||||
end
|
||||
MMIO_CSR_READ: begin
|
||||
mmio_tx.data <= 64'(cmd_csr_rdata);
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_CSR_READ: data=%0h", $time, cmd_csr_rdata);
|
||||
$display("%t: MMIO_CSR_READ: addr=%0h, data=%0h", $time, mmio_hdr.address, cmd_csr_rdata);
|
||||
`endif
|
||||
end
|
||||
`ifdef SCOPE
|
||||
MMIO_SCOPE_READ: begin
|
||||
mmio_tx.data <= cmd_scope_rdata;
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_SCOPE_READ: data=%0h", $time, cmd_scope_rdata);
|
||||
$display("%t: MMIO_SCOPE_READ: addr=%0h, data=%0h", $time, mmio_hdr.address, cmd_scope_rdata);
|
||||
`endif
|
||||
end
|
||||
`endif
|
||||
default: begin
|
||||
`ifdef DBG_PRINT_OPAE
|
||||
$display("%t: MMIO_RD: addr=%0h", $time, mmio_hdr.address);
|
||||
$display("%t: Unknown MMIO Rd: addr=%0h", $time, mmio_hdr.address);
|
||||
`endif
|
||||
end
|
||||
endcase
|
||||
@@ -946,11 +946,15 @@ end
|
||||
assign cmd_run_done = !vx_busy;
|
||||
|
||||
Vortex #() vortex (
|
||||
`SCOPE_SIGNALS_ISTAGE_BIND
|
||||
`SCOPE_SIGNALS_LSU_BIND
|
||||
`SCOPE_SIGNALS_CACHE_BIND
|
||||
`SCOPE_SIGNALS_ISSUE_BIND
|
||||
`SCOPE_SIGNALS_EXECUTE_BIND
|
||||
`SCOPE_SIGNALS_ISTAGE_TOP_BIND
|
||||
`SCOPE_SIGNALS_LSU_TOP_BIND
|
||||
`SCOPE_SIGNALS_BANK_L3_TOP_BIND
|
||||
`SCOPE_SIGNALS_BANK_L2_TOP_BIND
|
||||
`SCOPE_SIGNALS_BANK_L1D_TOP_BIND
|
||||
`SCOPE_SIGNALS_BANK_L1I_TOP_BIND
|
||||
`SCOPE_SIGNALS_BANK_L1S_TOP_BIND
|
||||
`SCOPE_SIGNALS_ISSUE_TOP_BIND
|
||||
`SCOPE_SIGNALS_EXECUTE_TOP_BIND
|
||||
|
||||
.clk (clk),
|
||||
.reset (reset | vx_reset),
|
||||
@@ -1026,10 +1030,7 @@ end
|
||||
|
||||
`ifdef SCOPE
|
||||
|
||||
localparam SCOPE_DATAW = $bits({`SCOPE_SIGNALS_DATA_LIST `SCOPE_SIGNALS_UPD_LIST});
|
||||
localparam SCOPE_SR_DEPTH = 2;
|
||||
|
||||
`STATIC_ASSERT(SCOPE_DATAW == 1766, "invalid size")
|
||||
localparam SCOPE_DATAW = $bits({`SCOPE_SIGNALS_DATA_LIST,`SCOPE_SIGNALS_UPD_LIST});
|
||||
|
||||
`SCOPE_ASSIGN (scope_dram_req_valid, vx_dram_req_valid);
|
||||
`SCOPE_ASSIGN (scope_dram_req_addr, {vx_dram_req_addr, 4'b0});
|
||||
@@ -1060,45 +1061,10 @@ localparam SCOPE_SR_DEPTH = 2;
|
||||
|
||||
`SCOPE_ASSIGN (scope_busy, vx_busy);
|
||||
|
||||
wire scope_changed = (scope_icache_req_valid && scope_icache_req_ready)
|
||||
|| (scope_icache_rsp_valid && scope_icache_rsp_ready)
|
||||
|| ((| scope_dcache_req_valid) && scope_dcache_req_ready)
|
||||
|| ((| scope_dcache_rsp_valid) && scope_dcache_rsp_ready)
|
||||
|| (scope_dram_req_valid && scope_dram_req_ready)
|
||||
|| (scope_dram_rsp_valid && scope_dram_rsp_ready)
|
||||
|| (scope_snp_req_valid && scope_snp_req_ready)
|
||||
|| (scope_snp_rsp_valid && scope_snp_rsp_ready)
|
||||
|| (scope_issue_valid && scope_issue_ready)
|
||||
|| scope_gpr_rsp_valid
|
||||
|| scope_bank_valid_st0
|
||||
|| scope_bank_valid_st1
|
||||
|| scope_bank_valid_st2
|
||||
|| scope_bank_stall_pipe
|
||||
|| scope_scoreboard_delay
|
||||
|| scope_gpr_delay
|
||||
|| scope_execute_delay
|
||||
|| scope_busy;
|
||||
wire scope_changed = `SCOPE_TRIGGERS;
|
||||
|
||||
wire scope_start = vx_reset;
|
||||
|
||||
wire [SCOPE_DATAW+1:0] scope_data_in_st[SCOPE_SR_DEPTH-1:0];
|
||||
wire [SCOPE_DATAW+1:0] scope_data_in_ste;
|
||||
assign scope_data_in_st[0] = {`SCOPE_SIGNALS_DATA_LIST `SCOPE_SIGNALS_UPD_LIST, scope_changed, scope_start};
|
||||
assign scope_data_in_ste = scope_data_in_st[SCOPE_SR_DEPTH-1];
|
||||
|
||||
for (genvar i = 1; i < SCOPE_SR_DEPTH; i++) begin
|
||||
VX_generic_register #(
|
||||
.N (SCOPE_DATAW+2)
|
||||
) scope_sr (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
.stall (0),
|
||||
.flush (0),
|
||||
.in (scope_data_in_st[i-1]),
|
||||
.out (scope_data_in_st[i])
|
||||
);
|
||||
end
|
||||
|
||||
VX_scope #(
|
||||
.DATAW (SCOPE_DATAW),
|
||||
.BUSW (64),
|
||||
@@ -1107,10 +1073,10 @@ VX_scope #(
|
||||
) scope (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
.start (scope_data_in_ste[0]),
|
||||
.start (scope_start),
|
||||
.stop (0),
|
||||
.changed (scope_data_in_ste[1]),
|
||||
.data_in (scope_data_in_ste[SCOPE_DATAW+1:2]),
|
||||
.changed (scope_changed),
|
||||
.data_in ({`SCOPE_SIGNALS_DATA_LIST,`SCOPE_SIGNALS_UPD_LIST}),
|
||||
.bus_in (cmd_scope_wdata),
|
||||
.bus_out (cmd_scope_rdata),
|
||||
.bus_read (cmd_scope_read),
|
||||
|
||||
Reference in New Issue
Block a user