minor updates

This commit is contained in:
Blaise Tine 2024-08-20 23:30:44 -07:00
parent 5e241c153c
commit 005d480bb4
5 changed files with 49 additions and 46 deletions

View file

@ -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

View file

@ -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;

View file

@ -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),

View file

@ -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),

View file

@ -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),