mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-22 21:09:15 -04:00
tcache disable fix
This commit is contained in:
parent
a82ae7df59
commit
c13efc9d10
9 changed files with 73 additions and 70 deletions
|
@ -316,17 +316,23 @@
|
|||
assign dst.tag = src.tag; \
|
||||
assign src.ready = dst.ready
|
||||
|
||||
`define ASSIGN_VX_MEM_REQ_IF_XTAG(dst, src) \
|
||||
`define ASSIGN_VX_MEM_REQ_IF_X(dst, src, TD, TS) \
|
||||
assign dst.valid = src.valid; \
|
||||
assign dst.rw = src.rw; \
|
||||
assign dst.byteen = src.byteen; \
|
||||
assign dst.addr = src.addr; \
|
||||
assign dst.data = src.data; \
|
||||
if (TD != TS) \
|
||||
assign dst.tag = {src.tag, {(TD-TS){1'b0}}}; \
|
||||
else \
|
||||
assign dst.tag = src.tag; \
|
||||
assign src.ready = dst.ready
|
||||
|
||||
`define ASSIGN_VX_MEM_RSP_IF_XTAG(dst, src) \
|
||||
|
||||
`define ASSIGN_VX_MEM_RSP_IF_X(dst, src, TD, TS) \
|
||||
assign dst.valid = src.valid; \
|
||||
assign dst.data = src.data; \
|
||||
assign dst.tag = src.tag[TS-1 -: TD]; \
|
||||
assign src.ready = dst.ready
|
||||
|
||||
`define ASSIGN_VX_CACHE_REQ_IF(dst, src) \
|
||||
|
|
|
@ -60,7 +60,7 @@ localparam ICACHE_NUM_REQS = 1;
|
|||
localparam ICACHE_NUM_BANKS = 1;
|
||||
|
||||
// Memory request data bits
|
||||
localparam ICACHE_MEM_DATA_WIDTH= (ICACHE_LINE_SIZE * 8);
|
||||
localparam ICACHE_MEM_DATA_WIDTH = (ICACHE_LINE_SIZE * 8);
|
||||
|
||||
// Memory request tag bits
|
||||
`ifdef ICACHE_ENABLE
|
||||
|
@ -86,7 +86,7 @@ localparam LSU_MEM_REQS = `NUM_THREADS;
|
|||
|
||||
// Batch select bits
|
||||
localparam DCACHE_NUM_BATCHES = ((LSU_MEM_REQS + DCACHE_NUM_REQS - 1) / DCACHE_NUM_REQS);
|
||||
localparam DCACHE_BATCH_SEL_BITS= `CLOG2(DCACHE_NUM_BATCHES);
|
||||
localparam DCACHE_BATCH_SEL_BITS = `CLOG2(DCACHE_NUM_BATCHES);
|
||||
|
||||
// Core request tag Id bits
|
||||
localparam LSUQ_TAG_BITS = (`CLOG2(`LSUQ_SIZE) + DCACHE_BATCH_SEL_BITS);
|
||||
|
@ -97,10 +97,10 @@ localparam DCACHE_TAG_WIDTH = (`UP(`UUID_BITS) + DCACHE_TAG_ID_BITS);
|
|||
localparam DCACHE_ARB_TAG_WIDTH = (DCACHE_TAG_WIDTH + `CLOG2(`SOCKET_SIZE));
|
||||
|
||||
// Memory request data bits
|
||||
localparam DCACHE_MEM_DATA_WIDTH= (DCACHE_LINE_SIZE * 8);
|
||||
localparam DCACHE_MEM_DATA_WIDTH = (DCACHE_LINE_SIZE * 8);
|
||||
|
||||
// Memory request tag bits
|
||||
localparam DCACHE_NOSM_TAG_WIDTH= (DCACHE_ARB_TAG_WIDTH - `SM_ENABLED);
|
||||
localparam DCACHE_NOSM_TAG_WIDTH = (DCACHE_ARB_TAG_WIDTH - `SM_ENABLED);
|
||||
`ifdef DCACHE_ENABLE
|
||||
localparam DCACHE_MEM_TAG_WIDTH = `CACHE_CLUSTER_NC_MEM_TAG_WIDTH(`DCACHE_MSHR_SIZE, `DCACHE_NUM_BANKS, DCACHE_NUM_REQS, DCACHE_LINE_SIZE, DCACHE_WORD_SIZE, DCACHE_NOSM_TAG_WIDTH, `NUM_SOCKETS, `NUM_DCACHES);
|
||||
`else
|
||||
|
@ -123,7 +123,7 @@ localparam TCACHE_NUM_REQS = `TCACHE_NUM_BANKS;
|
|||
localparam TEX_MEM_REQS = (4 * `NUM_THREADS);
|
||||
|
||||
// Batch select bits
|
||||
localparam TCACHE_BATCH_SEL_BITS=`ARB_SEL_BITS(TEX_MEM_REQS, TCACHE_NUM_REQS);
|
||||
localparam TCACHE_BATCH_SEL_BITS =`ARB_SEL_BITS(TEX_MEM_REQS, TCACHE_NUM_REQS);
|
||||
|
||||
// Core request tag Id bits
|
||||
localparam TCACHE_TAG_ID_BITS = (`CLOG2(`TEX_MEM_QUEUE_SIZE) + TCACHE_BATCH_SEL_BITS);
|
||||
|
@ -132,7 +132,7 @@ localparam TCACHE_TAG_ID_BITS = (`CLOG2(`TEX_MEM_QUEUE_SIZE) + TCACHE_BATCH_SEL_
|
|||
localparam TCACHE_TAG_WIDTH = (`UP(`UUID_BITS) + TCACHE_TAG_ID_BITS);
|
||||
|
||||
// Memory request data bits
|
||||
localparam TCACHE_MEM_DATA_WIDTH= (TCACHE_LINE_SIZE * 8);
|
||||
localparam TCACHE_MEM_DATA_WIDTH = (TCACHE_LINE_SIZE * 8);
|
||||
|
||||
// Memory request tag bits
|
||||
`ifdef TCACHE_ENABLE
|
||||
|
@ -157,7 +157,7 @@ localparam RCACHE_NUM_REQS = `RCACHE_NUM_BANKS;
|
|||
localparam RASTER_MEM_REQS = 9;
|
||||
|
||||
// Batch select bits
|
||||
localparam RCACHE_BATCH_SEL_BITS= `ARB_SEL_BITS(RASTER_MEM_REQS, RCACHE_NUM_REQS);
|
||||
localparam RCACHE_BATCH_SEL_BITS = `ARB_SEL_BITS(RASTER_MEM_REQS, RCACHE_NUM_REQS);
|
||||
|
||||
// Core request tag Id bits
|
||||
localparam RCACHE_TAG_ID_BITS = (`CLOG2(`RASTER_MEM_QUEUE_SIZE) + RCACHE_BATCH_SEL_BITS);
|
||||
|
@ -191,7 +191,7 @@ localparam OCACHE_NUM_REQS = `OCACHE_NUM_BANKS;
|
|||
localparam ROP_MEM_REQS = (2 * `NUM_THREADS);
|
||||
|
||||
// Batch select bits
|
||||
localparam OCACHE_BATCH_SEL_BITS= `ARB_SEL_BITS(ROP_MEM_REQS, OCACHE_NUM_REQS);
|
||||
localparam OCACHE_BATCH_SEL_BITS = `ARB_SEL_BITS(ROP_MEM_REQS, OCACHE_NUM_REQS);
|
||||
|
||||
// Core request tag Id bits
|
||||
localparam OCACHE_TAG_ID_BITS = (`CLOG2(`ROP_MEM_QUEUE_SIZE) + OCACHE_BATCH_SEL_BITS);
|
||||
|
@ -200,11 +200,11 @@ localparam OCACHE_TAG_ID_BITS = (`CLOG2(`ROP_MEM_QUEUE_SIZE) + OCACHE_BATCH_SEL_
|
|||
localparam OCACHE_TAG_WIDTH = (`UP(`UUID_BITS) + OCACHE_TAG_ID_BITS);
|
||||
|
||||
// Memory request data bits
|
||||
localparam OCACHE_MEM_DATA_WIDTH= (OCACHE_LINE_SIZE * 8);
|
||||
localparam OCACHE_MEM_DATA_WIDTH = (OCACHE_LINE_SIZE * 8);
|
||||
|
||||
// Memory request tag bits
|
||||
`ifdef OCACHE_ENABLE
|
||||
localparam OCACHE_MEM_TAG_WIDTH= `CACHE_CLUSTER_MEM_TAG_WIDTH(`OCACHE_MSHR_SIZE, `OCACHE_NUM_BANKS, `NUM_OCACHES);
|
||||
localparam OCACHE_MEM_TAG_WIDTH = `CACHE_CLUSTER_MEM_TAG_WIDTH(`OCACHE_MSHR_SIZE, `OCACHE_NUM_BANKS, `NUM_OCACHES);
|
||||
`else
|
||||
localparam OCACHE_MEM_TAG_WIDTH = `CACHE_CLUSTER_BYPASS_TAG_WIDTH(OCACHE_NUM_REQS, OCACHE_LINE_SIZE, OCACHE_WORD_SIZE, OCACHE_TAG_WIDTH, `NUM_ROP_UNITS, `NUM_OCACHES);
|
||||
`endif
|
||||
|
@ -212,9 +212,9 @@ localparam OCACHE_MEM_TAG_WIDTH = `CACHE_CLUSTER_BYPASS_TAG_WIDTH(OCACHE_NUM_REQ
|
|||
/////////////////////////////// L1 Parameters /////////////////////////////////
|
||||
|
||||
localparam L1_MEM_TAG_WIDTH = `MAX(`MAX(`MAX(`MAX(ICACHE_MEM_TAG_WIDTH, DCACHE_MEM_TAG_WIDTH),
|
||||
(`TCACHE_ENABLED ? TCACHE_MEM_TAG_WIDTH : 0)),
|
||||
(`RCACHE_ENABLED ? RCACHE_MEM_TAG_WIDTH : 0)),
|
||||
(`OCACHE_ENABLED ? OCACHE_MEM_TAG_WIDTH : 0));
|
||||
(`EXT_TEX_ENABLED ? TCACHE_MEM_TAG_WIDTH : 0)),
|
||||
(`EXT_RASTER_ENABLED ? RCACHE_MEM_TAG_WIDTH : 0)),
|
||||
(`EXT_ROP_ENABLED ? OCACHE_MEM_TAG_WIDTH : 0));
|
||||
|
||||
localparam NUM_L1_OUTPUTS = (2 + `EXT_TEX_ENABLED + `EXT_RASTER_ENABLED + `EXT_ROP_ENABLED);
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ module VX_mem_unit # (
|
|||
VX_perf_cache_if perf_l2cache_if();
|
||||
`endif
|
||||
|
||||
/////////////////////////////// I-Cache ///////////////////////////////////
|
||||
/////////////////////////////// I-Cache ///////////////////////////////////
|
||||
|
||||
VX_mem_req_if #(
|
||||
.DATA_WIDTH (ICACHE_MEM_DATA_WIDTH),
|
||||
|
@ -103,7 +103,7 @@ module VX_mem_unit # (
|
|||
.mem_rsp_if (icache_mem_rsp_if)
|
||||
);
|
||||
|
||||
/////////////////////////////// D-Cache ///////////////////////////////////
|
||||
/////////////////////////////// D-Cache ///////////////////////////////////
|
||||
|
||||
VX_mem_req_if #(
|
||||
.DATA_WIDTH (DCACHE_MEM_DATA_WIDTH),
|
||||
|
@ -165,7 +165,7 @@ module VX_mem_unit # (
|
|||
.mem_rsp_if (dcache_mem_rsp_if)
|
||||
);
|
||||
|
||||
////////////////////////////// Shared Memory //////////////////////////////
|
||||
////////////////////////////// Shared Memory //////////////////////////////
|
||||
|
||||
`ifdef SM_ENABLE
|
||||
|
||||
|
@ -274,7 +274,7 @@ module VX_mem_unit # (
|
|||
|
||||
`endif
|
||||
|
||||
/////////////////////////////// T-Cache ///////////////////////////////////
|
||||
/////////////////////////////// T-Cache ///////////////////////////////////
|
||||
|
||||
`ifdef EXT_TEX_ENABLE
|
||||
|
||||
|
@ -327,7 +327,7 @@ module VX_mem_unit # (
|
|||
|
||||
`endif
|
||||
|
||||
/////////////////////////////// O-Cache ///////////////////////////////////
|
||||
/////////////////////////////// O-Cache ///////////////////////////////////
|
||||
|
||||
`ifdef EXT_ROP_ENABLE
|
||||
|
||||
|
@ -381,7 +381,7 @@ module VX_mem_unit # (
|
|||
|
||||
`endif
|
||||
|
||||
/////////////////////////////// R-Cache ///////////////////////////////////
|
||||
/////////////////////////////// R-Cache ///////////////////////////////////
|
||||
|
||||
`ifdef EXT_RASTER_ENABLE
|
||||
|
||||
|
@ -434,7 +434,7 @@ module VX_mem_unit # (
|
|||
|
||||
`endif
|
||||
|
||||
/////////////////////////////// L2-Cache //////////////////////////////////
|
||||
/////////////////////////////// L2-Cache //////////////////////////////////
|
||||
|
||||
VX_mem_req_if #(
|
||||
.DATA_WIDTH (L2_WORD_SIZE * 8),
|
||||
|
@ -455,40 +455,25 @@ module VX_mem_unit # (
|
|||
`UNUSED_PARAM (R_MEM_ARB_IDX)
|
||||
`UNUSED_PARAM (O_MEM_ARB_IDX)
|
||||
|
||||
`ASSIGN_VX_MEM_REQ_IF_XTAG (l2_mem_req_if[I_MEM_ARB_IDX], icache_mem_req_if);
|
||||
assign l2_mem_req_if[I_MEM_ARB_IDX].tag = L1_MEM_TAG_WIDTH'(icache_mem_req_if.tag);
|
||||
`ASSIGN_VX_MEM_REQ_IF_X (l2_mem_req_if[I_MEM_ARB_IDX], icache_mem_req_if, L1_MEM_TAG_WIDTH, ICACHE_MEM_TAG_WIDTH);
|
||||
`ASSIGN_VX_MEM_RSP_IF_X (icache_mem_rsp_if, l2_mem_rsp_if[I_MEM_ARB_IDX], ICACHE_MEM_TAG_WIDTH, L1_MEM_TAG_WIDTH);
|
||||
|
||||
`ASSIGN_VX_MEM_RSP_IF_XTAG (icache_mem_rsp_if, l2_mem_rsp_if[I_MEM_ARB_IDX]);
|
||||
assign icache_mem_rsp_if.tag = ICACHE_MEM_TAG_WIDTH'(l2_mem_rsp_if[I_MEM_ARB_IDX].tag);
|
||||
|
||||
`ASSIGN_VX_MEM_REQ_IF_XTAG (l2_mem_req_if[D_MEM_ARB_IDX], dcache_mem_req_if);
|
||||
assign l2_mem_req_if[D_MEM_ARB_IDX].tag = L1_MEM_TAG_WIDTH'(dcache_mem_req_if.tag);
|
||||
|
||||
`ASSIGN_VX_MEM_RSP_IF_XTAG (dcache_mem_rsp_if, l2_mem_rsp_if[D_MEM_ARB_IDX]);
|
||||
assign dcache_mem_rsp_if.tag = DCACHE_MEM_TAG_WIDTH'(l2_mem_rsp_if[D_MEM_ARB_IDX].tag);
|
||||
`ASSIGN_VX_MEM_REQ_IF_X (l2_mem_req_if[D_MEM_ARB_IDX], dcache_mem_req_if, L1_MEM_TAG_WIDTH, DCACHE_MEM_TAG_WIDTH);
|
||||
`ASSIGN_VX_MEM_RSP_IF_X (dcache_mem_rsp_if, l2_mem_rsp_if[D_MEM_ARB_IDX], DCACHE_MEM_TAG_WIDTH, L1_MEM_TAG_WIDTH);
|
||||
|
||||
`ifdef EXT_TEX_ENABLE
|
||||
`ASSIGN_VX_MEM_REQ_IF_XTAG (l2_mem_req_if[T_MEM_ARB_IDX], tcache_mem_req_if);
|
||||
assign l2_mem_req_if[T_MEM_ARB_IDX].tag = L1_MEM_TAG_WIDTH'(tcache_mem_req_if.tag);
|
||||
|
||||
`ASSIGN_VX_MEM_RSP_IF_XTAG (tcache_mem_rsp_if, l2_mem_rsp_if[T_MEM_ARB_IDX]);
|
||||
assign tcache_mem_rsp_if.tag = TCACHE_MEM_TAG_WIDTH'(l2_mem_rsp_if[T_MEM_ARB_IDX].tag);
|
||||
`ASSIGN_VX_MEM_REQ_IF_X (l2_mem_req_if[T_MEM_ARB_IDX], tcache_mem_req_if, L1_MEM_TAG_WIDTH, TCACHE_MEM_TAG_WIDTH);
|
||||
`ASSIGN_VX_MEM_RSP_IF_X (tcache_mem_rsp_if, l2_mem_rsp_if[T_MEM_ARB_IDX], TCACHE_MEM_TAG_WIDTH, L1_MEM_TAG_WIDTH);
|
||||
`endif
|
||||
|
||||
`ifdef EXT_RASTER_ENABLE
|
||||
`ASSIGN_VX_MEM_REQ_IF_XTAG (l2_mem_req_if[R_MEM_ARB_IDX], rcache_mem_req_if);
|
||||
assign l2_mem_req_if[R_MEM_ARB_IDX].tag = L1_MEM_TAG_WIDTH'(rcache_mem_req_if.tag);
|
||||
|
||||
`ASSIGN_VX_MEM_RSP_IF_XTAG (rcache_mem_rsp_if, l2_mem_rsp_if[R_MEM_ARB_IDX]);
|
||||
assign rcache_mem_rsp_if.tag = RCACHE_MEM_TAG_WIDTH'(l2_mem_rsp_if[R_MEM_ARB_IDX].tag);
|
||||
`ASSIGN_VX_MEM_REQ_IF_X (l2_mem_req_if[R_MEM_ARB_IDX], rcache_mem_req_if, L1_MEM_TAG_WIDTH, RCACHE_MEM_TAG_WIDTH);
|
||||
`ASSIGN_VX_MEM_RSP_IF_X (rcache_mem_rsp_if, l2_mem_rsp_if[R_MEM_ARB_IDX], RCACHE_MEM_TAG_WIDTH, L1_MEM_TAG_WIDTH);
|
||||
`endif
|
||||
|
||||
`ifdef EXT_ROP_ENABLE
|
||||
`ASSIGN_VX_MEM_REQ_IF_XTAG (l2_mem_req_if[O_MEM_ARB_IDX], ocache_mem_req_if);
|
||||
assign l2_mem_req_if[O_MEM_ARB_IDX].tag = L1_MEM_TAG_WIDTH'(ocache_mem_req_if.tag);
|
||||
|
||||
`ASSIGN_VX_MEM_RSP_IF_XTAG (ocache_mem_rsp_if, l2_mem_rsp_if[O_MEM_ARB_IDX]);
|
||||
assign ocache_mem_rsp_if.tag = OCACHE_MEM_TAG_WIDTH'(l2_mem_rsp_if[O_MEM_ARB_IDX].tag);
|
||||
`ASSIGN_VX_MEM_REQ_IF_X (l2_mem_req_if[O_MEM_ARB_IDX], ocache_mem_req_if, L1_MEM_TAG_WIDTH, OCACHE_MEM_TAG_WIDTH);
|
||||
`ASSIGN_VX_MEM_RSP_IF_X (ocache_mem_rsp_if, l2_mem_rsp_if[O_MEM_ARB_IDX], OCACHE_MEM_TAG_WIDTH, L1_MEM_TAG_WIDTH);
|
||||
`endif
|
||||
|
||||
`RESET_RELAY (l2_reset, reset);
|
||||
|
|
20
hw/rtl/cache/VX_cache_bank.sv
vendored
20
hw/rtl/cache/VX_cache_bank.sv
vendored
|
@ -195,7 +195,13 @@ module VX_cache_bank #(
|
|||
wire creq_fire = creq_valid && creq_ready;
|
||||
|
||||
wire [TAG_WIDTH-1:0] mshr_creq_tag = mshr_enable ? mshr_tag[0] : creq_tag[0];
|
||||
`ASSIGN_REQ_UUID (req_uuid_sel, mshr_creq_tag)
|
||||
|
||||
if (UUID_WIDTH != 0) begin
|
||||
assign req_uuid_sel = mshr_creq_tag[TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
end else begin
|
||||
assign req_uuid_sel = 0;
|
||||
end
|
||||
|
||||
`UNUSED_VAR (mshr_creq_tag)
|
||||
|
||||
wire [`LINE_WIDTH-1:0] wdata_sel;
|
||||
|
@ -230,7 +236,11 @@ module VX_cache_bank #(
|
|||
.data_out ({valid_st0, is_init_st0, is_mshr_st0, is_fill_st0, is_read_st0, is_write_st0, addr_st0, wdata_st0, wsel_st0, byteen_st0, req_idx_st0, pmask_st0, tag_st0, mshr_id_st0})
|
||||
);
|
||||
|
||||
`ASSIGN_REQ_UUID (req_uuid_st0, tag_st0[0])
|
||||
if (UUID_WIDTH != 0) begin
|
||||
assign req_uuid_st0 = tag_st0[0][TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
end else begin
|
||||
assign req_uuid_st0 = 0;
|
||||
end
|
||||
|
||||
wire do_read_st0 = valid_st0 && is_read_st0;
|
||||
wire do_mshr_st0 = valid_st0 && is_mshr_st0;
|
||||
|
@ -289,7 +299,11 @@ module VX_cache_bank #(
|
|||
.data_out ({valid_st1, is_mshr_st1, is_fill_st1, is_read_st1, is_write_st1, is_hit_st1, way_sel_st1, addr_st1, wdata_st1, wsel_st1, byteen_st1, req_idx_st1, pmask_st1, tag_st1, mshr_id_st1, mshr_pending_st1})
|
||||
);
|
||||
|
||||
`ASSIGN_REQ_UUID (req_uuid_st1, tag_st1[0])
|
||||
if (UUID_WIDTH != 0) begin
|
||||
assign req_uuid_st1 = tag_st1[0][TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
end else begin
|
||||
assign req_uuid_st1 = 0;
|
||||
end
|
||||
|
||||
wire do_read_st1 = valid_st1 && is_read_st1;
|
||||
wire do_write_st1 = valid_st1 && is_write_st1;
|
||||
|
|
7
hw/rtl/cache/VX_cache_define.vh
vendored
7
hw/rtl/cache/VX_cache_define.vh
vendored
|
@ -45,13 +45,6 @@
|
|||
|
||||
`define LINE_TAG_ADDR(x) x[`LINE_ADDR_WIDTH-1 : `LINE_SEL_BITS]
|
||||
|
||||
`define ASSIGN_REQ_UUID(dst, tag) \
|
||||
if (UUID_WIDTH != 0) begin \
|
||||
assign dst = tag[TAG_WIDTH-1 -: UUID_WIDTH]; \
|
||||
end else begin \
|
||||
assign dst = 0; \
|
||||
end
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
`define LINE_TO_MEM_ADDR(x, i) {x, `BANK_SEL_BITS'(i)}
|
||||
|
|
11
hw/rtl/cache/VX_cache_wrap.sv
vendored
11
hw/rtl/cache/VX_cache_wrap.sv
vendored
|
@ -459,8 +459,13 @@ module VX_cache_wrap #(
|
|||
wire [`UP(UUID_WIDTH)-1:0] core_req_uuid;
|
||||
wire [`UP(UUID_WIDTH)-1:0] core_rsp_uuid;
|
||||
|
||||
`ASSIGN_REQ_UUID (core_req_uuid, core_req_if[i].tag)
|
||||
`ASSIGN_REQ_UUID (core_rsp_uuid, core_rsp_if[i].tag)
|
||||
if (UUID_WIDTH != 0) begin
|
||||
assign core_req_uuid = core_req_if[i].tag[TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
assign core_rsp_uuid = core_rsp_if[i].tag[TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
end else begin
|
||||
assign core_req_uuid = 0;
|
||||
assign core_rsp_uuid = 0;
|
||||
end
|
||||
|
||||
wire core_req_fire = core_req_if[i].valid && core_req_if[i].ready;
|
||||
wire core_rsp_fire = core_rsp_if[i].valid && core_rsp_if[i].ready;
|
||||
|
@ -481,7 +486,7 @@ module VX_cache_wrap #(
|
|||
wire [`UP(UUID_WIDTH)-1:0] mem_req_uuid;
|
||||
wire [`UP(UUID_WIDTH)-1:0] mem_rsp_uuid;
|
||||
|
||||
if ((UUID_WIDTH != 0) && (NC_ENABLE || PASSTHRU)) begin
|
||||
if ((UUID_WIDTH != 0) && (NC_BYPASS != 0)) begin
|
||||
assign mem_req_uuid = mem_req_if.tag[MEM_TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
assign mem_rsp_uuid = mem_rsp_if.tag[MEM_TAG_WIDTH-1 -: UUID_WIDTH];
|
||||
end else begin
|
||||
|
|
|
@ -252,7 +252,7 @@ module VX_warp_sched #(
|
|||
assign {schedule_tmask, schedule_pc} = schedule_data[schedule_wid];
|
||||
|
||||
`ifndef NDEBUG
|
||||
assign instr_uuid = (issued_instrs[schedule_wid] * `NUM_WARPS * `NUM_CORES * `NUM_CLUSTERS)
|
||||
assign instr_uuid = UUID_WIDTH'(issued_instrs[schedule_wid] * `NUM_WARPS * `NUM_CORES * `NUM_CLUSTERS)
|
||||
+ UUID_WIDTH'(`NUM_WARPS * CORE_ID)
|
||||
+ UUID_WIDTH'(schedule_wid);
|
||||
`else
|
||||
|
|
|
@ -8,8 +8,8 @@ module VX_mem_scheduler #(
|
|||
parameter ADDR_WIDTH = 32,
|
||||
parameter DATA_WIDTH = 32,
|
||||
parameter TAG_WIDTH = 32,
|
||||
parameter MEM_TAG_ID = 0,
|
||||
parameter UUID_WIDTH = 0,
|
||||
parameter MEM_TAG_ID = 0, // upper section of the tag sent to the memory interface
|
||||
parameter UUID_WIDTH = 0, // upper section of the mem_tag_id containing the UUID
|
||||
parameter QUEUE_SIZE = 16,
|
||||
parameter RSP_PARTIAL = 0,
|
||||
parameter CORE_OUT_REG = 0,
|
||||
|
|
|
@ -59,7 +59,7 @@ module VX_tex_unit #(
|
|||
wire req_ready;
|
||||
|
||||
for (genvar i = 0; i < NUM_LANES; ++i) begin
|
||||
assign sel_miplevel[i] = tex_req_if.lod[i][`TEX_LOD_BITS-1:0];
|
||||
assign sel_miplevel[i] = tex_req_if.lod[i][`TEX_LOD_BITS-1:0];
|
||||
assign sel_mipoff[i] = tex_dcrs.mipoff[sel_miplevel[i]];
|
||||
end
|
||||
|
||||
|
@ -279,7 +279,7 @@ endmodule
|
|||
module VX_tex_unit_top #(
|
||||
parameter `STRING_TYPE INSTANCE_ID = "",
|
||||
parameter NUM_LANES = `NUM_THREADS,
|
||||
parameter TAG_WIDTH = 8
|
||||
parameter TAG_WIDTH = `TEX_REQ_TAG_WIDTH
|
||||
) (
|
||||
input wire clk,
|
||||
input wire reset,
|
||||
|
@ -290,15 +290,15 @@ module VX_tex_unit_top #(
|
|||
|
||||
input wire tex_req_valid,
|
||||
input wire [NUM_LANES-1:0] tex_req_mask,
|
||||
input wire [1:0][NUM_LANES-1:0][31:0] tex_req_coords,
|
||||
input wire [1:0][NUM_LANES-1:0][31:0] tex_req_coords,
|
||||
input wire [NUM_LANES-1:0][`TEX_LOD_BITS-1:0] tex_req_lod,
|
||||
input wire [`TEX_STAGE_BITS-1:0] tex_req_stage,
|
||||
input wire [`TEX_REQ_TAG_WIDTH-1:0] tex_req_tag,
|
||||
input wire [TAG_WIDTH-1:0] tex_req_tag,
|
||||
output wire tex_req_ready,
|
||||
|
||||
output wire tex_rsp_valid,
|
||||
output wire [NUM_LANES-1:0][31:0] tex_rsp_texels,
|
||||
output wire [`TEX_REQ_TAG_WIDTH-1:0] tex_rsp_tag,
|
||||
output wire [TAG_WIDTH-1:0] tex_rsp_tag,
|
||||
input wire tex_rsp_ready,
|
||||
|
||||
output wire [TCACHE_NUM_REQS-1:0] cache_req_valid,
|
||||
|
@ -325,12 +325,12 @@ module VX_tex_unit_top #(
|
|||
|
||||
VX_tex_req_if #(
|
||||
.NUM_LANES (NUM_LANES),
|
||||
.TAG_WIDTH (`TEX_REQ_TAG_WIDTH)
|
||||
.TAG_WIDTH (TAG_WIDTH)
|
||||
) tex_req_if();
|
||||
|
||||
VX_tex_rsp_if #(
|
||||
.NUM_LANES (NUM_LANES),
|
||||
.TAG_WIDTH (`TEX_REQ_TAG_WIDTH)
|
||||
.TAG_WIDTH (TAG_WIDTH)
|
||||
) tex_rsp_if();
|
||||
|
||||
assign tex_req_if.valid = tex_req_valid;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue