diff options
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 |
