From 081a8a3ba8bfe036f31da53f9c041a2caa30fce2 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Sun, 5 May 2024 17:34:22 -0600 Subject: rtl/legacy_gfx: rename gfx -> legacy_gfx --- rtl/legacy_gfx/gfx_sp_writeback.sv | 65 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 rtl/legacy_gfx/gfx_sp_writeback.sv (limited to 'rtl/legacy_gfx/gfx_sp_writeback.sv') diff --git a/rtl/legacy_gfx/gfx_sp_writeback.sv b/rtl/legacy_gfx/gfx_sp_writeback.sv new file mode 100644 index 0000000..1195910 --- /dev/null +++ b/rtl/legacy_gfx/gfx_sp_writeback.sv @@ -0,0 +1,65 @@ +`include "gfx/gfx_defs.sv" + +module gfx_sp_writeback +( + input logic clk, + rst_n, + + input wb_op stream_wb, + input logic stream_wb_valid, + output logic stream_wb_ready, + + input wb_op combiner_wb, + input logic combiner_wb_valid, + output logic combiner_wb_ready, + + input wb_op shuffler_wb, + input logic shuffler_wb_valid, + output logic shuffler_wb_ready, + + output logic wr, + output vreg_num wr_reg, + output mat4 wr_data +); + + wb_op wb_in, wb_out; + + assign wr_reg = wb_out.dst; + assign wr_data = wb_out.data; + + gfx_pipeline_flow #(.STAGES(`GFX_SP_WB_STAGES)) flow + ( + .stall(), + .in_ready(), + .in_valid(stream_wb_valid || combiner_wb_valid || shuffler_wb_valid), + .out_ready(1), + .out_valid(wr), + .* + ); + + gfx_pipes #(.WIDTH($bits(wb_out)), .DEPTH(`GFX_SP_WB_STAGES)) pipes + ( + .in(wb_in), + .out(wb_out), + .stall(0), + .* + ); + + always_comb begin + stream_wb_ready = 0; + combiner_wb_ready = 0; + shuffler_wb_ready = 0; + + if (stream_wb_valid) begin + wb_in = stream_wb; + stream_wb_ready = 1; + end else if (shuffler_wb_valid) begin + wb_in = shuffler_wb; + shuffler_wb_ready = 1; + end else begin + wb_in = combiner_wb; + combiner_wb_ready = 1; + end + end + +endmodule -- cgit v1.2.3