diff options
Diffstat (limited to 'platform/wavelet3d/gfx_pkg.sv')
| -rw-r--r-- | platform/wavelet3d/gfx_pkg.sv | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/platform/wavelet3d/gfx_pkg.sv b/platform/wavelet3d/gfx_pkg.sv index 3c4b747..42d3f05 100644 --- a/platform/wavelet3d/gfx_pkg.sv +++ b/platform/wavelet3d/gfx_pkg.sv @@ -2,15 +2,22 @@ package gfx; typedef logic[31:0] word; - localparam int SUBWORD_BITS = $clog2($bits(word)) - $clog2($bits(byte)); - localparam int BYTES_PER_WORD = 1 << SUBWORD_BITS; - typedef word uword; typedef logic signed[$bits(word) - 1:0] sword; typedef logic[$bits(word) / 2 - 1:0] uhword; typedef logic signed[$bits(word) / 2 - 1:0] shword; typedef logic[2 * $bits(word) - 1:0] udword; typedef logic signed[2 * $bits(word) - 1:0] sdword; + typedef logic signed[4 * $bits(word) - 1:0] qword; + typedef logic signed[8 * $bits(word) - 1:0] oword; + + localparam int SUBWORD_BITS = $clog2($bits(word)) - $clog2($bits(byte)); + localparam int BYTES_PER_WORD = 1 << SUBWORD_BITS; + + typedef logic[$bits(word) - SUBWORD_BITS - 1:0] word_ptr; + typedef logic[$bits(word_ptr) - 1 - 1:0] dword_ptr; + typedef logic[$bits(word_ptr) - 2 - 1:0] qword_ptr; + typedef logic[$bits(word_ptr) - 3 - 1:0] oword_ptr; typedef logic[7:0] float_exp; typedef logic[$bits(word) - $bits(float_exp) - 2:0] float_mant; @@ -99,7 +106,8 @@ package gfx; shiftl_copy_flags, round_copy_flags, round_enable, - encode_enable; + encode_enable, + writeback; } fpint_op; typedef struct packed @@ -228,6 +236,21 @@ package gfx; overflow; } fpint_rnorm_encode; + typedef struct packed + { + logic todo; + } mem_op; + + typedef struct packed + { + logic todo; + } sfu_op; + + typedef struct packed + { + logic todo; + } group_op; + // Q22.10 typedef logic[9:0] fixed_frac; typedef logic[$bits(word) - $bits(fixed_frac) - 1:0] fixed_int; @@ -345,6 +368,24 @@ package gfx; typedef logic[RASTER_SIZE - 1:0] lane_no; typedef logic[SHADER_LANES - 1:0] lane_mask; + typedef logic[5:0] group_id; + + localparam int REGFILE_STAGES = 3; + localparam int REG_READ_STAGES = 2 + REGFILE_STAGES + 1; + + typedef gfx_isa::sgpr_num sgpr_num; + typedef gfx_isa::vgpr_num vgpr_num; + typedef gfx_isa::xgpr_num xgpr_num; + + typedef struct packed + { + // No incluye p0 porque p0 no tiene seƱal ready + logic p1, + p2, + p3, + valid; + } shader_dispatch; + localparam int FIXED_MULADD_DEPTH = 5; localparam int FIXED_DOTADD_DEPTH = 2 * FIXED_MULADD_DEPTH; |
