summaryrefslogtreecommitdiff
path: root/platform/wavelet3d/gfx_xbar_sched.sv
blob: f2bd9f988a394940988374386d23aaa5a0abb26c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
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