diff --git a/hw/dpi/float_dpi.cpp b/hw/dpi/float_dpi.cpp index 806b0e8cc..7c50d2b06 100644 --- a/hw/dpi/float_dpi.cpp +++ b/hw/dpi/float_dpi.cpp @@ -81,7 +81,7 @@ inline bool is_nan_boxed(uint64_t value) { inline bool is_nan_boxed16(uint64_t value) { #ifdef XLEN_64 - return (uint32_t(value >> 16) == 0xffffffffffff); + return (uint64_t(value >> 16) == 0xffffffffffff); #else return true; #endif diff --git a/hw/rtl/core/VX_ibuffer.sv b/hw/rtl/core/VX_ibuffer.sv index 6a7760e94..793c393d6 100644 --- a/hw/rtl/core/VX_ibuffer.sv +++ b/hw/rtl/core/VX_ibuffer.sv @@ -70,7 +70,7 @@ module VX_ibuffer import VX_gpu_pkg::*; #( .ready_out(uop_sequencer_if.ready) ); `ifndef L1_ENABLE - assign decode_if.ibuf_pop[w] = uop_sequencer_if[w].valid && uop_sequencer_if[w].ready; + assign decode_if.ibuf_pop[w] = uop_sequencer_if.valid && uop_sequencer_if.ready; `endif VX_uop_sequencer uop_sequencer ( diff --git a/hw/rtl/tcu/VX_tcu_fedp_fp.sv b/hw/rtl/tcu/VX_tcu_fedp_fp.sv index f1e98e306..f0706b830 100644 --- a/hw/rtl/tcu/VX_tcu_fedp_fp.sv +++ b/hw/rtl/tcu/VX_tcu_fedp_fp.sv @@ -24,10 +24,10 @@ module VX_tcu_fedp_fp #( input wire[2:0] fmt_s, input wire[2:0] fmt_d, - input wire [N-1:0][DATAW-1:0] a_row, - input wire [N-1:0][DATAW-1:0] b_col, - input wire [DATAW-1:0] c_val, - output wire [DATAW-1:0] d_val + input wire [N-1:0][`XLEN-1:0] a_row, + input wire [N-1:0][`XLEN-1:0] b_col, + input wire [`XLEN-1:0] c_val, + output wire [`XLEN-1:0] d_val ); wire [DATAW-1:0] a_row_p [0:N-1]; wire [DATAW-1:0] b_col_p [0:N-1]; @@ -35,6 +35,8 @@ module VX_tcu_fedp_fp #( wire [2:0] fmt_s_p [0:N-1]; wire [2:0] fmt_d_p [0:N-1]; + `UNUSED_VAR ({a_row, b_col, c_val}); + for (genvar i = 0; i < N; i++) begin: g_pipe VX_pipe_register #( .DATAW (DATAW), @@ -43,7 +45,7 @@ module VX_tcu_fedp_fp #( .clk (clk), .reset (reset), .enable (enable), - .data_in (a_row[i]), + .data_in (a_row[i][DATAW-1:0]), .data_out (a_row_p[i]) ); VX_pipe_register #( @@ -53,7 +55,7 @@ module VX_tcu_fedp_fp #( .clk (clk), .reset (reset), .enable (enable), - .data_in (b_col[i]), + .data_in (b_col[i][DATAW-1:0]), .data_out (b_col_p[i]) ); @@ -71,7 +73,7 @@ module VX_tcu_fedp_fp #( wire [DATAW-1:0] fma_out [0:N]; - assign fma_out[0] = c_val; + assign fma_out[0] = c_val[DATAW-1:0]; for (genvar i = 0; i < N; i++) begin : g_fmas `ifdef TCU_DPI @@ -106,6 +108,6 @@ module VX_tcu_fedp_fp #( end - assign d_val = fma_out[N]; + assign d_val = `XLEN'(fma_out[N]); endmodule diff --git a/hw/rtl/tcu/VX_tcu_fedp_int.sv b/hw/rtl/tcu/VX_tcu_fedp_int.sv index 69f2e2d9d..96a016843 100644 --- a/hw/rtl/tcu/VX_tcu_fedp_int.sv +++ b/hw/rtl/tcu/VX_tcu_fedp_int.sv @@ -24,10 +24,10 @@ module VX_tcu_fedp_int #( input wire[2:0] fmt_s, input wire[2:0] fmt_d, - input wire [N-1:0][DATAW-1:0] a_row, - input wire [N-1:0][DATAW-1:0] b_col, - input wire [DATAW-1:0] c_val, - output wire [DATAW-1:0] d_val + input wire [N-1:0][`XLEN-1:0] a_row, + input wire [N-1:0][`XLEN-1:0] b_col, + input wire [`XLEN-1:0] c_val, + output wire [`XLEN-1:0] d_val ); wire [DATAW-1:0] a_row_p [0:N-1]; wire [DATAW-1:0] b_col_p [0:N-1]; @@ -35,6 +35,8 @@ module VX_tcu_fedp_int #( wire [2:0] fmt_s_p [0:N-1]; wire [2:0] fmt_d_p [0:N-1]; + `UNUSED_VAR ({a_row, b_col, c_val}); + for (genvar i = 0; i < N; i++) begin: g_pipe VX_pipe_register #( .DATAW (DATAW), @@ -43,7 +45,7 @@ module VX_tcu_fedp_int #( .clk (clk), .reset (reset), .enable (enable), - .data_in (a_row[i]), + .data_in (a_row[i][DATAW-1:0]), .data_out (a_row_p[i]) ); VX_pipe_register #( @@ -53,7 +55,7 @@ module VX_tcu_fedp_int #( .clk (clk), .reset (reset), .enable (enable), - .data_in (b_col[i]), + .data_in (b_col[i][DATAW-1:0]), .data_out (b_col_p[i]) ); @@ -71,7 +73,7 @@ module VX_tcu_fedp_int #( wire [DATAW-1:0] fma_out [0:N]; - assign fma_out[0] = c_val; + assign fma_out[0] = c_val[DATAW-1:0]; for (genvar i = 0; i < N; i++) begin : g_fmas VX_tcu_fma_int #( @@ -89,6 +91,6 @@ module VX_tcu_fedp_int #( ); end - assign d_val = fma_out[N]; + assign d_val = `XLEN'(fma_out[N]); endmodule diff --git a/hw/rtl/tcu/VX_tcu_fp.sv b/hw/rtl/tcu/VX_tcu_fp.sv index cbc99ebbd..4cc7eb9e6 100644 --- a/hw/rtl/tcu/VX_tcu_fp.sv +++ b/hw/rtl/tcu/VX_tcu_fp.sv @@ -110,7 +110,7 @@ module VX_tcu_fp import VX_gpu_pkg::*, VX_tcu_pkg::*; #( wire [`XLEN-1:0] c_val = execute_if.data.rs3_data[i * TCU_TC_N + j]; VX_tcu_fedp_fp #( - .DATAW (`XLEN), + .DATAW (32), .N (TCU_TC_K) ) fedp ( .clk (clk), diff --git a/hw/rtl/tcu/VX_tcu_int.sv b/hw/rtl/tcu/VX_tcu_int.sv index 4f00259ec..a097516c4 100644 --- a/hw/rtl/tcu/VX_tcu_int.sv +++ b/hw/rtl/tcu/VX_tcu_int.sv @@ -110,7 +110,7 @@ module VX_tcu_int import VX_gpu_pkg::*, VX_tcu_pkg::*; #( wire [`XLEN-1:0] c_val = execute_if.data.rs3_data[i * TCU_TC_N + j]; VX_tcu_fedp_int #( - .DATAW (`XLEN), + .DATAW (32), .N (TCU_TC_K) ) fedp ( .clk (clk),