From 405c0287c80c34b0e9dfb9d9326b86d12433b4c4 Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Thu, 2 May 2024 21:03:05 -0600 Subject: platform/wavelet3d: implement shader cores This commit contains over a month of intermittent work (I don't have enough free time to do this the right way) --- platform/wavelet3d/gfx_regfile_io.sv | 76 ++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 platform/wavelet3d/gfx_regfile_io.sv (limited to 'platform/wavelet3d/gfx_regfile_io.sv') diff --git a/platform/wavelet3d/gfx_regfile_io.sv b/platform/wavelet3d/gfx_regfile_io.sv new file mode 100644 index 0000000..49dcd5c --- /dev/null +++ b/platform/wavelet3d/gfx_regfile_io.sv @@ -0,0 +1,76 @@ +interface gfx_regfile_io; + + import gfx::*; + + struct + { + group_id group; + sgpr_num a_sgpr, + b_sgpr; + vgpr_num a_vgpr, + b_vgpr; + logic[12:0] b_imm; + logic a_scalar, + b_scalar, + b_is_imm, + b_is_const, + scalar_rev; + } op; + + struct + { + logic write; + group_id group; + sgpr_num sgpr; + word data; + } sgpr_write; + + struct + { + lane_mask mask; + group_id group; + vgpr_num vgpr; + word data[SHADER_LANES]; + } vgpr_write; + + word a[SHADER_LANES], b[SHADER_LANES], sgpr_write_data, vgpr_write_data[SHADER_LANES]; + word_ptr pc_front; + group_id pc_front_group; + + modport ab + ( + input a, + b + ); + + modport read + ( + output op + ); + + modport bind_ + ( + input pc_front, + + output pc_front_group + ); + + modport wb + ( + output sgpr_write, + vgpr_write + ); + + modport regs + ( + input op, + sgpr_write, + vgpr_write, + pc_front_group, + + output a, + b, + pc_front + ); + +endinterface -- cgit v1.2.3