mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 21:39:10 -04:00
minor updates
This commit is contained in:
parent
5e241c153c
commit
005d480bb4
5 changed files with 49 additions and 46 deletions
|
@ -51,20 +51,20 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
localparam FPU_DIVSQRT = 1;
|
||||
localparam FPU_CVT = 2;
|
||||
localparam FPU_NCP = 3;
|
||||
localparam NUM_FPC = 4;
|
||||
localparam FPC_BITS = `LOG2UP(NUM_FPC);
|
||||
localparam NUM_FPCORES = 4;
|
||||
localparam FPCORES_BITS = `LOG2UP(NUM_FPCORES);
|
||||
|
||||
localparam RSP_DATAW = (NUM_LANES * 32) + 1 + $bits(fflags_t) + TAG_WIDTH;
|
||||
|
||||
`UNUSED_VAR (fmt)
|
||||
|
||||
wire [NUM_FPC-1:0] per_core_ready_in;
|
||||
wire [NUM_FPC-1:0][NUM_LANES-1:0][31:0] per_core_result;
|
||||
wire [NUM_FPC-1:0][TAG_WIDTH-1:0] per_core_tag_out;
|
||||
wire [NUM_FPC-1:0] per_core_ready_out;
|
||||
wire [NUM_FPC-1:0] per_core_valid_out;
|
||||
wire [NUM_FPC-1:0] per_core_has_fflags;
|
||||
fflags_t [NUM_FPC-1:0] per_core_fflags;
|
||||
wire [NUM_FPCORES-1:0] per_core_ready_in;
|
||||
wire [NUM_FPCORES-1:0][NUM_LANES-1:0][31:0] per_core_result;
|
||||
wire [NUM_FPCORES-1:0][TAG_WIDTH-1:0] per_core_tag_out;
|
||||
wire [NUM_FPCORES-1:0] per_core_ready_out;
|
||||
wire [NUM_FPCORES-1:0] per_core_valid_out;
|
||||
wire [NUM_FPCORES-1:0] per_core_has_fflags;
|
||||
fflags_t [NUM_FPCORES-1:0] per_core_fflags;
|
||||
|
||||
wire div_ready_in, sqrt_ready_in;
|
||||
wire [NUM_LANES-1:0][31:0] div_result, sqrt_result;
|
||||
|
@ -74,7 +74,7 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
wire div_has_fflags, sqrt_has_fflags;
|
||||
fflags_t div_fflags, sqrt_fflags;
|
||||
|
||||
reg [FPC_BITS-1:0] core_select;
|
||||
reg [FPCORES_BITS-1:0] core_select;
|
||||
reg is_madd, is_sub, is_neg, is_div, is_itof, is_signed;
|
||||
|
||||
always @(*) begin
|
||||
|
@ -122,6 +122,9 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
`UNUSED_VAR (datab)
|
||||
`UNUSED_VAR (datac)
|
||||
|
||||
// can accept new request?
|
||||
assign ready_in = per_core_ready_in[core_select];
|
||||
|
||||
VX_fpu_fma #(
|
||||
.NUM_LANES (NUM_LANES),
|
||||
.TAG_WIDTH (TAG_WIDTH)
|
||||
|
@ -272,10 +275,10 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
reg [NUM_FPC-1:0][RSP_DATAW+2-1:0] per_core_data_out;
|
||||
reg [NUM_FPCORES-1:0][RSP_DATAW+2-1:0] per_core_data_out;
|
||||
|
||||
always @(*) begin
|
||||
for (integer i = 0; i < NUM_FPC; ++i) begin
|
||||
for (integer i = 0; i < NUM_FPCORES; ++i) begin
|
||||
per_core_data_out[i][RSP_DATAW+1:2] = {
|
||||
per_core_result[i],
|
||||
per_core_has_fflags[i],
|
||||
|
@ -294,7 +297,7 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
`UNUSED_VAR (op_ret_int_out)
|
||||
|
||||
VX_stream_arb #(
|
||||
.NUM_INPUTS (NUM_FPC),
|
||||
.NUM_INPUTS (NUM_FPCORES),
|
||||
.DATAW (RSP_DATAW + 2),
|
||||
.ARBITER ("R"),
|
||||
.OUT_BUF (OUT_BUF)
|
||||
|
@ -326,9 +329,6 @@ module VX_fpu_dsp import VX_fpu_pkg::*; #(
|
|||
`endif
|
||||
end
|
||||
|
||||
// can accept new request?
|
||||
assign ready_in = per_core_ready_in[core_select];
|
||||
|
||||
endmodule
|
||||
|
||||
`endif
|
||||
|
|
|
@ -137,7 +137,7 @@ module VX_pe_serializer #(
|
|||
|
||||
assign pe_data_in_s = data_in;
|
||||
|
||||
assign enable = ready_out_u || ~valid_out_u;
|
||||
assign enable = ready_out_u || ~valid_out_s;
|
||||
assign ready_in = enable;
|
||||
assign pe_enable = enable;
|
||||
|
||||
|
|
|
@ -24,8 +24,9 @@
|
|||
|
||||
`TRACING_OFF
|
||||
module VX_pipe_buffer #(
|
||||
parameter DATAW = 1,
|
||||
parameter DEPTH = 1
|
||||
parameter DATAW = 1,
|
||||
parameter RESETW = 0,
|
||||
parameter DEPTH = 1
|
||||
) (
|
||||
input wire clk,
|
||||
input wire reset,
|
||||
|
@ -57,7 +58,7 @@ module VX_pipe_buffer #(
|
|||
assign ready[i] = (ready[i+1] || ~valid[i+1]);
|
||||
VX_pipe_register #(
|
||||
.DATAW (1 + DATAW),
|
||||
.RESETW (1)
|
||||
.RESETW (1 + RESETW)
|
||||
) pipe_register (
|
||||
.clk (clk),
|
||||
.reset (reset),
|
||||
|
|
|
@ -24,6 +24,7 @@ module VX_sp_ram #(
|
|||
parameter RW_ASSERT = 0,
|
||||
parameter LUTRAM = 0,
|
||||
parameter RESET_RAM = 0,
|
||||
parameter READ_ENABLE = 0,
|
||||
parameter INIT_ENABLE = 0,
|
||||
parameter INIT_FILE = "",
|
||||
parameter [DATAW-1:0] INIT_VALUE = 0,
|
||||
|
@ -48,6 +49,7 @@ module VX_sp_ram #(
|
|||
.RW_ASSERT (RW_ASSERT),
|
||||
.LUTRAM (LUTRAM),
|
||||
.RESET_RAM (RESET_RAM),
|
||||
.READ_ENABLE (READ_ENABLE),
|
||||
.INIT_ENABLE (INIT_ENABLE),
|
||||
.INIT_FILE (INIT_FILE),
|
||||
.INIT_VALUE (INIT_VALUE),
|
||||
|
|
|
@ -22,8 +22,8 @@ module VX_lmem_switch import VX_gpu_pkg::*; #(
|
|||
input wire clk,
|
||||
input wire reset,
|
||||
VX_lsu_mem_if.slave lsu_in_if,
|
||||
VX_lsu_mem_if.master cache_out_if,
|
||||
VX_lsu_mem_if.master lmem_out_if
|
||||
VX_lsu_mem_if.master global_out_if,
|
||||
VX_lsu_mem_if.master local_out_if
|
||||
);
|
||||
localparam REQ_DATAW = `NUM_LSU_LANES + 1 + `NUM_LSU_LANES * (LSU_WORD_SIZE + LSU_ADDR_WIDTH + `MEM_REQ_FLAGS_WIDTH + LSU_WORD_SIZE * 8) + LSU_TAG_WIDTH;
|
||||
localparam RSP_DATAW = `NUM_LSU_LANES + `NUM_LSU_LANES * (LSU_WORD_SIZE * 8) + LSU_TAG_WIDTH;
|
||||
|
@ -60,17 +60,17 @@ module VX_lmem_switch import VX_gpu_pkg::*; #(
|
|||
lsu_in_if.req_data.tag
|
||||
}),
|
||||
.ready_in (req_global_ready),
|
||||
.valid_out (cache_out_if.req_valid),
|
||||
.valid_out (global_out_if.req_valid),
|
||||
.data_out ({
|
||||
cache_out_if.req_data.mask,
|
||||
cache_out_if.req_data.rw,
|
||||
cache_out_if.req_data.addr,
|
||||
cache_out_if.req_data.data,
|
||||
cache_out_if.req_data.byteen,
|
||||
cache_out_if.req_data.flags,
|
||||
cache_out_if.req_data.tag
|
||||
global_out_if.req_data.mask,
|
||||
global_out_if.req_data.rw,
|
||||
global_out_if.req_data.addr,
|
||||
global_out_if.req_data.data,
|
||||
global_out_if.req_data.byteen,
|
||||
global_out_if.req_data.flags,
|
||||
global_out_if.req_data.tag
|
||||
}),
|
||||
.ready_out (cache_out_if.req_ready)
|
||||
.ready_out (global_out_if.req_ready)
|
||||
);
|
||||
|
||||
VX_elastic_buffer #(
|
||||
|
@ -91,17 +91,17 @@ module VX_lmem_switch import VX_gpu_pkg::*; #(
|
|||
lsu_in_if.req_data.tag
|
||||
}),
|
||||
.ready_in (req_local_ready),
|
||||
.valid_out (lmem_out_if.req_valid),
|
||||
.valid_out (local_out_if.req_valid),
|
||||
.data_out ({
|
||||
lmem_out_if.req_data.mask,
|
||||
lmem_out_if.req_data.rw,
|
||||
lmem_out_if.req_data.addr,
|
||||
lmem_out_if.req_data.data,
|
||||
lmem_out_if.req_data.byteen,
|
||||
lmem_out_if.req_data.flags,
|
||||
lmem_out_if.req_data.tag
|
||||
local_out_if.req_data.mask,
|
||||
local_out_if.req_data.rw,
|
||||
local_out_if.req_data.addr,
|
||||
local_out_if.req_data.data,
|
||||
local_out_if.req_data.byteen,
|
||||
local_out_if.req_data.flags,
|
||||
local_out_if.req_data.tag
|
||||
}),
|
||||
.ready_out (lmem_out_if.req_ready)
|
||||
.ready_out (local_out_if.req_ready)
|
||||
);
|
||||
|
||||
VX_stream_arb #(
|
||||
|
@ -113,16 +113,16 @@ module VX_lmem_switch import VX_gpu_pkg::*; #(
|
|||
.clk (clk),
|
||||
.reset (reset),
|
||||
.valid_in ({
|
||||
lmem_out_if.rsp_valid,
|
||||
cache_out_if.rsp_valid
|
||||
local_out_if.rsp_valid,
|
||||
global_out_if.rsp_valid
|
||||
}),
|
||||
.ready_in ({
|
||||
lmem_out_if.rsp_ready,
|
||||
cache_out_if.rsp_ready
|
||||
local_out_if.rsp_ready,
|
||||
global_out_if.rsp_ready
|
||||
}),
|
||||
.data_in ({
|
||||
lmem_out_if.rsp_data,
|
||||
cache_out_if.rsp_data
|
||||
local_out_if.rsp_data,
|
||||
global_out_if.rsp_data
|
||||
}),
|
||||
.data_out (lsu_in_if.rsp_data),
|
||||
.valid_out (lsu_in_if.rsp_valid),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue