-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaurora.yml
More file actions
302 lines (293 loc) · 6.78 KB
/
Copy pathaurora.yml
File metadata and controls
302 lines (293 loc) · 6.78 KB
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
schema: rfnoc_modtool_args
module_name: aurora
version: "1.0"
rfnoc_version: "1.0"
chdr_width: 64
noc_id: 0xA404A000
name: Aurora Interface Block
description: |
This block allows direct connection to another FPGA board using 100 Gigabit
Aurora instead of Ethernet.
parameters:
NUM_PORTS: 4
QSFP_NUM: 0
clocks:
- name: rfnoc_chdr
freq: "[]"
- name: rfnoc_ctrl
freq: "[]"
control:
fpga_iface: ctrlport
interface_direction: slave
fifo_depth: 32
clk_domain: rfnoc_chdr
ctrlport:
byte_mode: False
timed: False
has_status: False
data:
fpga_iface: axis_chdr
clk_domain: rfnoc_chdr
inputs:
in:
num_ports: NUM_PORTS
outputs:
out:
num_ports: NUM_PORTS
io_ports:
# The actual connections for the QSFP are listed as IO ports.
qsfp:
# This is the actual connection to the QSFP pins.
type: x4xx_qsfp
drive: master
make_defs:
# These are appended as backtick-defines in the FPGA make process
- |
QSFP${parameters['QSFP_NUM']}_0=3 \
QSFP${parameters['QSFP_NUM']}_1=3 \
QSFP${parameters['QSFP_NUM']}_2=3 \
QSFP${parameters['QSFP_NUM']}_3=3
constraints:
- fpga/oot-blocks/rfnoc_block_aurora/constraints/qsfp${parameters['QSFP_NUM']}_aurora.xdc
# the following files are taken from the usrp/top/x400 directory inside the UHD_FPGA_DIR folder
- constraints/pins/qsfp${parameters['QSFP_NUM']}_0.xdc
- constraints/pins/qsfp${parameters['QSFP_NUM']}_1.xdc
- constraints/pins/qsfp${parameters['QSFP_NUM']}_2.xdc
- constraints/pins/qsfp${parameters['QSFP_NUM']}_3.xdc
io_signature:
io_signatures:
x4xx_qsfp:
# X4xx Transport Adapter QSFP Interface: Connects the QSFP pins to the x4xx_eth
# transport adapter.
type: master-slave
ports:
- name: refclk_p
type: to-master
width: 1
- name: refclk_n
type: to-master
width: 1
- name: dclk
type: to-master
width: 1
- name: tx_p
type: from-master
width: 4
- name: tx_n
type: from-master
width: 4
- name: rx_p
type: to-master
width: 4
- name: rx_n
type: to-master
width: 4
# Transport adapter status
- name: recovered_clk
type: from-master
width: 1
- name: device_id
type: to-master
width: 16
- name: rx_irq
type: from-master
width: 4
- name: tx_irq
type: from-master
width: 4
- name: port_info
type: from-master
width: 128
- name: link_up
type: from-master
width: 4
- name: activity
type: from-master
width: 4
# AXI-Lite Register Interface
- name: axil_rst
type: to-master
width: 1
- name: axil_clk
type: to-master
width: 1
- name: axil_awaddr
type: to-master
width: 40
- name: axil_awvalid
type: to-master
width: 1
- name: axil_awready
type: from-master
width: 1
safe: "1'h1"
- name: axil_wdata
type: to-master
width: 32
- name: axil_wstrb
type: to-master
width: 4
- name: axil_wvalid
type: to-master
width: 1
- name: axil_wready
type: from-master
width: 1
safe: "1'h1"
- name: axil_bresp
type: from-master
width: 2
- name: axil_bvalid
type: from-master
width: 1
- name: axil_bready
type: to-master
width: 1
safe: "1'h1"
- name: axil_araddr
type: to-master
width: 40
- name: axil_arvalid
type: to-master
width: 1
- name: axil_arready
type: from-master
width: 1
safe: "1'h1"
- name: axil_rdata
type: from-master
width: 32
- name: axil_rresp
type: from-master
width: 2
- name: axil_rvalid
type: from-master
width: 1
- name: axil_rready
type: to-master
width: 1
safe: "1'h1"
- name: axi_rst
type: to-master
width: 1
- name: axi_clk
type: to-master
width: 1
- name: axi_araddr
type: from-master
width: 49
- name: axi_arburst
type: from-master
width: 2
- name: axi_arcache
type: from-master
width: 4
- name: axi_arlen
type: from-master
width: 8
- name: axi_arlock
type: from-master
width: 1
- name: axi_arprot
type: from-master
width: 3
- name: axi_arqos
type: from-master
width: 4
- name: axi_arready
type: to-master
width: 1
safe: "1'h1"
- name: axi_arsize
type: from-master
width: 3
- name: axi_arvalid
type: from-master
width: 1
- name: axi_awaddr
type: from-master
width: 49
- name: axi_awburst
type: from-master
width: 2
- name: axi_awcache
type: from-master
width: 4
- name: axi_awlen
type: from-master
width: 8
- name: axi_awlock
type: from-master
width: 1
- name: axi_awprot
type: from-master
width: 3
- name: axi_awqos
type: from-master
width: 4
- name: axi_awready
type: to-master
width: 1
safe: "1'h1"
- name: axi_awsize
type: from-master
width: 3
- name: axi_awvalid
type: from-master
width: 1
- name: axi_bready
type: from-master
width: 1
safe: "1'h1"
- name: axi_bresp
type: to-master
width: 2
- name: axi_bvalid
type: to-master
width: 1
safe: "1'h1"
- name: axi_rdata
type: to-master
width: 128
- name: axi_rlast
type: to-master
width: 1
- name: axi_rready
type: from-master
width: 1
safe: "1'h1"
- name: axi_rresp
type: to-master
width: 2
- name: axi_rvalid
type: to-master
width: 1
- name: axi_wdata
type: from-master
width: 128
- name: axi_wlast
type: from-master
width: 1
- name: axi_wready
type: to-master
width: 1
safe: "1'h1"
- name: axi_wstrb
type: from-master
width: 16
- name: axi_wvalid
type: from-master
width: 1
fpga_includes:
# This path is the exact path to the relevant Makefile.srcs in this repository.
# After installation, the whole directory will become available under a
# similar path, also in the include directories of the image builder, e.g.
# under /usr/share/uhd/rfnoc/fpga/aurora/rfnoc_block_aurora/Makefile.srcs.
- include: "fpga/oot-blocks/rfnoc_block_aurora/Makefile.srcs"
# This make variable has to match the one in the file referenced above.
make_var: "$(RFNOC_BLOCK_AURORA_SRCS)"
# Because this block requires external IP, we also list that here.
- include: "fpga/oot-blocks/ip/aurora_100g/Makefile.inc"
# Like above, this is the Make variable that lists the sources for the IP
# we require here.
make_var: "$(IP_AURORA_100G_SRCS)"