summaryrefslogtreecommitdiff
path: root/platform/wavelet3d/gfx_shader.sv
diff options
context:
space:
mode:
Diffstat (limited to 'platform/wavelet3d/gfx_shader.sv')
-rw-r--r--platform/wavelet3d/gfx_shader.sv54
1 files changed, 54 insertions, 0 deletions
diff --git a/platform/wavelet3d/gfx_shader.sv b/platform/wavelet3d/gfx_shader.sv
new file mode 100644
index 0000000..3be6ed4
--- /dev/null
+++ b/platform/wavelet3d/gfx_shader.sv
@@ -0,0 +1,54 @@
+module gfx_shader
+import gfx::*;
+import gfx_shader_schedif_pkg::*;
+(
+ input logic clk,
+ rst_n,
+
+ gfx_axib.m insn_mem,
+
+ axi4lite_intf.slave sched
+);
+
+ gfx_shader_schedif__in_t schedif_in;
+ gfx_shader_schedif__out_t schedif_out;
+
+ gfx_front_back front_back();
+ gfx_regfile_io regfile();
+
+ gfx_shader_front frontend
+ (
+ .clk,
+ .rst_n,
+ .front(front_back.front),
+ .reg_bind(regfile.bind_),
+ .reg_read(regfile.read),
+ .fetch_mem(insn_mem),
+ .icache_flush(schedif_out.CORE.IFLUSH.value)
+ );
+
+ gfx_shader_back backend
+ (
+ .clk,
+ .rst_n,
+ .back(front_back.back),
+ .reg_wb(regfile.wb),
+ .read_data(regfile.ab)
+ );
+
+ gfx_shader_regs regs
+ (
+ .clk,
+ .io(regfile)
+ );
+
+ gfx_shader_schedif schedif
+ (
+ .clk,
+ .arst_n(rst_n),
+ .s_axil(sched),
+ .hwif_in(schedif_in),
+ .hwif_out(schedif_out)
+ );
+
+endmodule