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