opae build fixes
This commit is contained in:
@@ -13,7 +13,7 @@ module VX_alu_unit #(
|
||||
VX_branch_ctl_if branch_ctl_if,
|
||||
VX_commit_if alu_commit_if
|
||||
);
|
||||
wire [`NUM_THREADS-1:0][31:0] alu_result;
|
||||
reg [`NUM_THREADS-1:0][31:0] alu_result;
|
||||
wire [`NUM_THREADS-1:0][32:0] sub_result;
|
||||
wire [`NUM_THREADS-1:0][32:0] shift_result;
|
||||
|
||||
@@ -99,7 +99,7 @@ module VX_alu_unit #(
|
||||
);
|
||||
|
||||
VX_generic_register #(
|
||||
.N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)),
|
||||
.N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32))
|
||||
) alu_reg (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
|
||||
`define CSR_WIDTH 12
|
||||
|
||||
`define DIV_LATENCY 2
|
||||
`define DIV_LATENCY 21
|
||||
|
||||
`define MUL_LATENCY 2
|
||||
|
||||
@@ -390,6 +390,8 @@
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
task print_ex_type;
|
||||
input [`EX_BITS-1:0] ex;
|
||||
begin
|
||||
|
||||
@@ -30,6 +30,7 @@ module VX_lsu_unit #(
|
||||
wire [`NW_BITS-1:0] use_warp_num;
|
||||
wire [`WB_BITS-1:0] use_wb;
|
||||
wire [31:0] use_pc;
|
||||
wire mrq_full;
|
||||
|
||||
genvar i;
|
||||
|
||||
@@ -83,8 +84,7 @@ module VX_lsu_unit #(
|
||||
wire [`LOG2UP(`DCREQ_SIZE)-1:0] mrq_write_addr, dbg_mrq_write_addr;
|
||||
wire [`NUM_THREADS-1:0][1:0] mem_rsp_offset;
|
||||
wire [`BYTEEN_BITS-1:0] core_rsp_mem_read;
|
||||
wire mrq_full;
|
||||
|
||||
|
||||
wire mrq_push = (| dcache_req_if.valid) && dcache_req_if.ready
|
||||
&& (0 == use_req_rw); // only push read requests
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ module VX_mul_unit #(
|
||||
// Outputs
|
||||
VX_commit_if mul_commit_if
|
||||
);
|
||||
wire [`NUM_THREADS-1:0][31:0] alu_result;
|
||||
reg [`NUM_THREADS-1:0][31:0] alu_result;
|
||||
wire [`NUM_THREADS-1:0][63:0] mul_result;
|
||||
wire [`NUM_THREADS-1:0][31:0] div_result;
|
||||
wire [`NUM_THREADS-1:0][31:0] rem_result;
|
||||
@@ -77,6 +77,8 @@ module VX_mul_unit #(
|
||||
end
|
||||
end
|
||||
|
||||
wire stall;
|
||||
|
||||
reg result_avail;
|
||||
reg [4:0] pending_ctr;
|
||||
wire [4:0] instr_delay = `IS_DIV_OP(alu_op) ? `DIV_LATENCY : `MUL_LATENCY;
|
||||
@@ -104,13 +106,13 @@ module VX_mul_unit #(
|
||||
|
||||
wire pipeline_stall = ~result_avail && (| mul_req_if.valid);
|
||||
|
||||
wire stall = (~mul_commit_if.ready && (| mul_commit_if.valid))
|
||||
|| pipeline_stall;
|
||||
assign stall = (~mul_commit_if.ready && (| mul_commit_if.valid))
|
||||
|| pipeline_stall;
|
||||
|
||||
wire flush = mul_commit_if.ready && pipeline_stall;
|
||||
|
||||
VX_generic_register #(
|
||||
.N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32)),
|
||||
.N(`NUM_THREADS + `NW_BITS + 32 + `NR_BITS + `WB_BITS + (`NUM_THREADS * 32))
|
||||
) mul_reg (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
|
||||
@@ -18,7 +18,6 @@ module VX_warp_sched #(
|
||||
);
|
||||
wire update_use_wspawn;
|
||||
wire update_visible_active;
|
||||
wire scheduled_warp;
|
||||
|
||||
wire [(1+32+`NUM_THREADS-1):0] ipdom[`NUM_WARPS-1:0];
|
||||
|
||||
|
||||
116
hw/rtl/Vortex.v
116
hw/rtl/Vortex.v
@@ -139,54 +139,54 @@ module Vortex (
|
||||
|
||||
end else begin
|
||||
|
||||
wire per_cluster_dram_req_valid [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_dram_req_rw [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_BYTEEN_WIDTH-1:0] per_cluster_dram_req_byteen [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_ADDR_WIDTH-1:0] per_cluster_dram_req_addr [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_req_data [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_req_tag [`NUM_CLUSTERS-1:0];
|
||||
wire l3_core_req_ready;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_dram_req_valid;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_dram_req_rw;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_BYTEEN_WIDTH-1:0] per_cluster_dram_req_byteen;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] per_cluster_dram_req_addr;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_req_data;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_req_tag;
|
||||
wire l3_core_req_ready;
|
||||
|
||||
wire per_cluster_dram_rsp_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_rsp_data [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_rsp_tag [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_dram_rsp_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_dram_rsp_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_LINE_WIDTH-1:0] per_cluster_dram_rsp_data;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_TAG_WIDTH-1:0] per_cluster_dram_rsp_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_dram_rsp_ready;
|
||||
|
||||
wire per_cluster_snp_req_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_ADDR_WIDTH-1:0] per_cluster_snp_req_addr [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_snp_req_invalidate [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_req_tag [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_snp_req_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] per_cluster_snp_req_addr;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_invalidate;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_req_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_snp_req_ready;
|
||||
|
||||
wire per_cluster_snp_rsp_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_rsp_tag [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_snp_rsp_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_snp_rsp_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] per_cluster_snp_rsp_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_snp_rsp_ready;
|
||||
|
||||
wire per_cluster_io_req_valid [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_io_req_rw [`NUM_CLUSTERS-1:0];
|
||||
wire [3:0] per_cluster_io_req_byteen [`NUM_CLUSTERS-1:0];
|
||||
wire [29:0] per_cluster_io_req_addr [`NUM_CLUSTERS-1:0];
|
||||
wire [31:0] per_cluster_io_req_data [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2CORE_TAG_WIDTH-1:0] per_cluster_io_req_tag [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_io_req_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_valid;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_rw;
|
||||
wire [`NUM_CLUSTERS-1:0][3:0] per_cluster_io_req_byteen;
|
||||
wire [`NUM_CLUSTERS-1:0][29:0] per_cluster_io_req_addr;
|
||||
wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_io_req_data;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2CORE_TAG_WIDTH-1:0] per_cluster_io_req_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_io_req_ready;
|
||||
|
||||
wire per_cluster_io_rsp_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2CORE_TAG_WIDTH-1:0] per_cluster_io_rsp_tag [`NUM_CLUSTERS-1:0];
|
||||
wire [31:0] per_cluster_io_rsp_data [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_io_rsp_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_io_rsp_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2CORE_TAG_WIDTH-1:0] per_cluster_io_rsp_tag;
|
||||
wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_io_rsp_data;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_io_rsp_ready;
|
||||
|
||||
wire per_cluster_csr_io_req_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [11:0] per_cluster_csr_io_req_addr [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_csr_io_req_rw [`NUM_CLUSTERS-1:0];
|
||||
wire [31:0] per_cluster_csr_io_req_data [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_csr_io_req_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][11:0] per_cluster_csr_io_req_addr;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_rw;
|
||||
wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_csr_io_req_data;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_req_ready;
|
||||
|
||||
wire per_cluster_csr_io_rsp_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [31:0] per_cluster_csr_io_rsp_data [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_csr_io_rsp_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_rsp_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][31:0] per_cluster_csr_io_rsp_data;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_csr_io_rsp_ready;
|
||||
|
||||
wire per_cluster_busy [`NUM_CLUSTERS-1:0];
|
||||
wire per_cluster_ebreak [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_busy;
|
||||
wire [`NUM_CLUSTERS-1:0] per_cluster_ebreak;
|
||||
|
||||
wire [`CLOG2(`NUM_CLUSTERS)-1:0] csr_io_request_id = `CLOG2(`NUM_CLUSTERS)'(csr_io_req_coreid >> `CLOG2(`NUM_CLUSTERS));
|
||||
wire [`NC_BITS-1:0] per_cluster_csr_io_req_coreid = `NC_BITS'(csr_io_req_coreid);
|
||||
@@ -336,27 +336,27 @@ module Vortex (
|
||||
|
||||
// L3 Cache ///////////////////////////////////////////////////////////
|
||||
|
||||
wire l3_core_req_valid [`L3NUM_REQUESTS-1:0];
|
||||
wire l3_core_req_rw [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_BYTEEN_WIDTH-1:0] l3_core_req_byteen [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_ADDR_WIDTH-1:0] l3_core_req_addr [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_LINE_WIDTH-1:0] l3_core_req_data [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_TAG_WIDTH-1:0] l3_core_req_tag [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L3NUM_REQUESTS-1:0] l3_core_req_valid;
|
||||
wire [`L3NUM_REQUESTS-1:0] l3_core_req_rw;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_BYTEEN_WIDTH-1:0] l3_core_req_byteen;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_ADDR_WIDTH-1:0] l3_core_req_addr;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_LINE_WIDTH-1:0] l3_core_req_data;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_TAG_WIDTH-1:0] l3_core_req_tag;
|
||||
|
||||
wire l3_core_rsp_valid [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_LINE_WIDTH-1:0] l3_core_rsp_data [`L3NUM_REQUESTS-1:0];
|
||||
wire [`L2DRAM_TAG_WIDTH-1:0] l3_core_rsp_tag [`L3NUM_REQUESTS-1:0];
|
||||
wire l3_core_rsp_ready;
|
||||
wire [`L3NUM_REQUESTS-1:0] l3_core_rsp_valid;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_LINE_WIDTH-1:0] l3_core_rsp_data;
|
||||
wire [`L3NUM_REQUESTS-1:0][`L2DRAM_TAG_WIDTH-1:0] l3_core_rsp_tag;
|
||||
wire l3_core_rsp_ready;
|
||||
|
||||
wire l3_snp_fwdout_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2DRAM_ADDR_WIDTH-1:0] l3_snp_fwdout_addr [`NUM_CLUSTERS-1:0];
|
||||
wire l3_snp_fwdout_invalidate [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdout_tag [`NUM_CLUSTERS-1:0];
|
||||
wire l3_snp_fwdout_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2DRAM_ADDR_WIDTH-1:0] l3_snp_fwdout_addr;
|
||||
wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_invalidate;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdout_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] l3_snp_fwdout_ready;
|
||||
|
||||
wire l3_snp_fwdin_valid [`NUM_CLUSTERS-1:0];
|
||||
wire [`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdin_tag [`NUM_CLUSTERS-1:0];
|
||||
wire l3_snp_fwdin_ready [`NUM_CLUSTERS-1:0];
|
||||
wire [`NUM_CLUSTERS-1:0] l3_snp_fwdin_valid;
|
||||
wire [`NUM_CLUSTERS-1:0][`L2SNP_TAG_WIDTH-1:0] l3_snp_fwdin_tag;
|
||||
wire [`NUM_CLUSTERS-1:0] l3_snp_fwdin_ready;
|
||||
|
||||
for (i = 0; i < `L3NUM_REQUESTS; i++) begin
|
||||
// Core Request
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
module VX_tex_mgr (
|
||||
input wire clk,
|
||||
input wire reset,
|
||||
input wire reset
|
||||
);
|
||||
|
||||
//--
|
||||
|
||||
@@ -11,7 +11,7 @@ module VX_tex_unit #(
|
||||
parameter MAXAMW = 2,
|
||||
parameter TAGW = 16,
|
||||
|
||||
parameter NUMCRQS = 32,
|
||||
parameter NUMCRQS = 32
|
||||
) (
|
||||
input wire clk,
|
||||
input wire reset,
|
||||
|
||||
Reference in New Issue
Block a user