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_top.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_top.sv')
| -rw-r--r-- | platform/wavelet3d/gfx_top.sv | 126 |
1 files changed, 87 insertions, 39 deletions
diff --git a/platform/wavelet3d/gfx_top.sv b/platform/wavelet3d/gfx_top.sv index 1a57b90..b6538d7 100644 --- a/platform/wavelet3d/gfx_top.sv +++ b/platform/wavelet3d/gfx_top.sv @@ -1,47 +1,56 @@ module gfx_top +import gfx::*; ( - input logic clk, - rst_n, - - input gfx::word a[gfx::SHADER_LANES], - b[gfx::SHADER_LANES], - input logic in_valid, - setup_mul_float, - setup_unit_b, - mnorm_put_hi, - mnorm_put_lo, - mnorm_put_mul, - mnorm_zero_b, - mnorm_zero_flags, - minmax_abs, - minmax_swap, - minmax_zero_min, - minmax_copy_flags, - shiftr_int_signed, - addsub_copy_flags, - addsub_int_operand, - clz_force_nop, - shiftl_copy_flags, - round_copy_flags, - round_enable, - encode_enable, - - output logic out_valid, - output gfx::word q[gfx::SHADER_LANES], - - input gfx::word geom_tdata, - input logic geom_tlast, - geom_tvalid, - output logic geom_tready, - - input logic raster_tready, - output logic raster_tlast, - raster_tvalid, - output gfx::word raster_tdata + input logic clk, + rst_n, + + input word a[SHADER_LANES], + b[SHADER_LANES], + input logic in_valid, + setup_mul_float, + setup_unit_b, + mnorm_put_hi, + mnorm_put_lo, + mnorm_put_mul, + mnorm_zero_b, + mnorm_zero_flags, + minmax_abs, + minmax_swap, + minmax_zero_min, + minmax_copy_flags, + shiftr_int_signed, + addsub_copy_flags, + addsub_int_operand, + clz_force_nop, + shiftl_copy_flags, + round_copy_flags, + round_enable, + encode_enable, + + output logic out_valid, + output word q[SHADER_LANES], + + input word geom_tdata, + input logic geom_tlast, + geom_tvalid, + output logic geom_tready, + + input logic raster_tready, + output logic raster_tlast, + raster_tvalid, + output word raster_tdata ); + gfx_wb fpint_wb(); + gfx_axib insn_mem(); gfx_axil sched_axi(); gfx_pkts geometry(), coverage(); + gfx_regfile_io fpint_io(); + + axi4lite_intf #(.ADDR_WIDTH(4)) core_sched(); + + assign q = fpint_wb.rx.lanes; + assign out_valid = fpint_wb.rx.valid; assign geometry.tx.tdata = geom_tdata; assign geometry.tx.tlast = geom_tlast; @@ -53,9 +62,40 @@ module gfx_top assign raster_tvalid = coverage.rx.tvalid; assign coverage.rx.tready = raster_tready; + fpint_op op; + assign op.writeback = 1; + assign op.setup_mul_float = setup_mul_float; + assign op.setup_unit_b = setup_unit_b; + assign op.mnorm_put_hi = mnorm_put_hi; + assign op.mnorm_put_lo = mnorm_put_lo; + assign op.mnorm_put_mul = mnorm_put_mul; + assign op.mnorm_zero_b = mnorm_zero_b; + assign op.mnorm_zero_flags = mnorm_zero_flags; + assign op.minmax_abs = minmax_abs; + assign op.minmax_swap = minmax_swap; + assign op.minmax_zero_min = minmax_zero_min; + assign op.minmax_copy_flags = minmax_copy_flags; + assign op.shiftr_int_signed = shiftr_int_signed; + assign op.addsub_copy_flags = addsub_copy_flags; + assign op.addsub_int_operand = addsub_int_operand; + assign op.clz_force_nop = clz_force_nop; + assign op.shiftl_copy_flags = shiftl_copy_flags; + assign op.round_copy_flags = round_copy_flags; + assign op.round_enable = round_enable; + assign op.encode_enable = encode_enable; + + assign fpint_io.regs.a = a; + assign fpint_io.regs.b = b; + gfx_fpint fpint ( - .* + .clk, + .rst_n, + .op, + .wb(fpint_wb.tx), + .abort(0), + .in_valid, + .read_data(fpint_io.ab) ); gfx_sched sched @@ -74,4 +114,12 @@ module gfx_top .coverage(coverage.tx) ); + gfx_shader shader + ( + .clk, + .rst_n, + .sched(core_sched.slave), + .insn_mem(insn_mem.m) + ); + endmodule |
