diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-05-02 21:03:05 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-05-02 21:03:17 -0600 |
| commit | 405c0287c80c34b0e9dfb9d9326b86d12433b4c4 (patch) | |
| tree | ef38368c911bae30ff9c528dcf4a8fbfbc227fa7 /platform/wavelet3d/gfx_regfile_io.sv | |
| parent | 50b71c7f0ea2574eb4802e1a12fe8b0920a4ca7f (diff) | |
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)
Diffstat (limited to 'platform/wavelet3d/gfx_regfile_io.sv')
| -rw-r--r-- | platform/wavelet3d/gfx_regfile_io.sv | 76 |
1 files changed, 76 insertions, 0 deletions
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 |
