diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-05-03 12:01:36 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-05-03 12:01:36 -0600 |
| commit | d6dcfc10f26056485cb260af93027047a6aa8d30 (patch) | |
| tree | 358a7e69c13fe51f7348bba893c2489db9b022fc /platform/wavelet3d/gfx_xbar_sched.sv | |
| parent | 405c0287c80c34b0e9dfb9d9326b86d12433b4c4 (diff) | |
platform/wavelet3d: implement sched domain crossbar
Diffstat (limited to '')
| -rw-r--r-- | platform/wavelet3d/gfx_xbar_sched.sv | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/platform/wavelet3d/gfx_xbar_sched.sv b/platform/wavelet3d/gfx_xbar_sched.sv new file mode 100644 index 0000000..f2bd9f9 --- /dev/null +++ b/platform/wavelet3d/gfx_xbar_sched.sv @@ -0,0 +1,127 @@ +module gfx_xbar_sched +import gfx::*; +( + input logic clk, + srst_n, + + gfx_axil.s sched, + gfx_axil.m bootrom, + gfx_axil.m shader_0 +); + + localparam word BOOTROM_BASE = 32'h0008_0000; + localparam word BOOTROM_MASK = 32'hfff8_0000; + localparam word SHADER_0_BASE = 32'h0010_0000; + localparam word SHADER_0_MASK = 32'hfff0_0000; + + defparam xbar.NM = 1; + defparam xbar.NS = 2; + defparam xbar.OPT_LOWPOWER = 0; + + defparam xbar.SLAVE_ADDR = { + SHADER_0_BASE, + BOOTROM_BASE + }; + + defparam xbar.SLAVE_MASK = { + SHADER_0_MASK, + BOOTROM_MASK + }; + + axilxbar xbar + ( + .S_AXI_ACLK(clk), + .S_AXI_ARESETN(srst_n), + + .S_AXI_AWVALID(sched.awvalid), + .S_AXI_AWREADY(sched.awready), + .S_AXI_AWADDR(sched.awaddr), + .S_AXI_AWPROT('0), + + .S_AXI_WVALID(sched.wvalid), + .S_AXI_WREADY(sched.wready), + .S_AXI_WDATA(sched.wdata), + .S_AXI_WSTRB('1), + + .S_AXI_BVALID(sched.bvalid), + .S_AXI_BREADY(sched.bready), + .S_AXI_BRESP(), + + .S_AXI_ARVALID(sched.arvalid), + .S_AXI_ARREADY(sched.arready), + .S_AXI_ARADDR(sched.araddr), + .S_AXI_ARPROT('0), + + .S_AXI_RVALID(sched.rvalid), + .S_AXI_RREADY(sched.rready), + .S_AXI_RDATA(sched.rdata), + .S_AXI_RRESP(), + + .M_AXI_AWADDR({ + shader_0.awaddr, + bootrom.awaddr + }), + .M_AXI_AWPROT(), + .M_AXI_AWVALID({ + shader_0.awvalid, + bootrom.awvalid + }), + .M_AXI_AWREADY({ + shader_0.awready, + bootrom.awready + }), + + .M_AXI_WDATA({ + shader_0.wdata, + bootrom.wdata + }), + .M_AXI_WSTRB(), + .M_AXI_WVALID({ + shader_0.wvalid, + bootrom.wvalid + }), + .M_AXI_WREADY({ + shader_0.wready, + bootrom.wready + }), + + .M_AXI_BRESP('0), + .M_AXI_BVALID({ + shader_0.bvalid, + bootrom.bvalid + }), + .M_AXI_BREADY({ + shader_0.bready, + bootrom.bready + }), + + .M_AXI_ARADDR({ + shader_0.araddr, + bootrom.araddr + }), + .M_AXI_ARPROT(), + .M_AXI_ARVALID({ + shader_0.arvalid, + bootrom.arvalid + }), + .M_AXI_ARREADY({ + shader_0.arready, + bootrom.arready + }), + + .M_AXI_RDATA({ + shader_0.rdata, + bootrom.rdata + }), + .M_AXI_RRESP('0), + .M_AXI_RVALID({ + shader_0.rvalid, + bootrom.rvalid + }), + .M_AXI_RREADY({ + shader_0.rready, + bootrom.rready + }) + ); + +endmodule |
