forked from pulp-platform/axi
-
Notifications
You must be signed in to change notification settings - Fork 1
/
axi.core
189 lines (179 loc) · 6.97 KB
/
axi.core
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
CAPI=2:
name : pulp-platform.org::axi:0.39.1
filesets:
rtl:
files:
- include/axi/assign.svh : {is_include_file : true, include_path : include}
- include/axi/typedef.svh : {is_include_file : true, include_path : include}
# Source files grouped in levels. Files in level 0 have no dependencies on files in this
# package. Files in level 1 only depend on files in level 0, files in level 2 on files in
# levels 1 and 0, etc. Files within a level are ordered alphabetically.
# Level 0
- src/axi_pkg.sv
# Level 1
- src/axi_intf.sv
# Level 2
- src/axi_atop_filter.sv
- src/axi_burst_splitter.sv
- src/axi_bus_compare.sv
- src/axi_cdc_dst.sv
- src/axi_cdc_src.sv
- src/axi_cut.sv
- src/axi_delayer.sv
- src/axi_demux_simple.sv
- src/axi_dw_downsizer.sv
- src/axi_dw_upsizer.sv
- src/axi_fifo.sv
- src/axi_id_remap.sv
- src/axi_id_prepend.sv
- src/axi_isolate.sv
- src/axi_join.sv
- src/axi_lite_demux.sv
- src/axi_lite_dw_converter.sv
- src/axi_lite_from_mem.sv
- src/axi_lite_join.sv
- src/axi_lite_lfsr.sv
- src/axi_lite_mailbox.sv
- src/axi_lite_mux.sv
- src/axi_lite_regs.sv
- src/axi_lite_to_apb.sv
- src/axi_lite_to_axi.sv
- src/axi_modify_address.sv
- src/axi_mux.sv
- src/axi_rw_join.sv
- src/axi_rw_split.sv
- src/axi_serializer.sv
- src/axi_slave_compare.sv
- src/axi_throttle.sv
- src/axi_to_detailed_mem.sv
# Level 3
- src/axi_cdc.sv
- src/axi_demux.sv
- src/axi_err_slv.sv
- src/axi_dw_converter.sv
- src/axi_from_mem.sv
- src/axi_id_serialize.sv
- src/axi_lfsr.sv
- src/axi_multicut.sv
- src/axi_to_axi_lite.sv
- src/axi_to_mem.sv
# Level 4
- src/axi_iw_converter.sv
- src/axi_lite_xbar.sv
- src/axi_xbar.sv
- src/axi_to_mem_banked.sv
- src/axi_to_mem_interleaved.sv
- src/axi_to_mem_split.sv
- src/axi_chan_compare.sv
- src/axi_dumper.sv
- src/axi_sim_mem.sv
#- src/axi_test.sv # this is not synthesizable
# Level 5
- src/axi_xp.sv
file_type : systemVerilogSource
depend :
- ">=pulp-platform.org::common_cells:1.31.1"
benchs:
files:
- test/tb_axi_dw_pkg.sv
- test/tb_axi_xbar_pkg.sv
- test/axi_synth_bench.sv
- test/tb_axi_addr_test.sv
- test/tb_axi_atop_filter.sv
- test/tb_axi_bus_compare.sv
- test/tb_axi_cdc.sv
- test/tb_axi_delayer.sv
- test/tb_axi_dw_downsizer.sv
- test/tb_axi_dw_upsizer.sv
- test/tb_axi_fifo.sv
- test/tb_axi_isolate.sv
- test/tb_axi_iw_converter.sv
- test/tb_axi_lite_dw_converter.sv
- test/tb_axi_lite_mailbox.sv
- test/tb_axi_lite_regs.sv
- test/tb_axi_lite_to_apb.sv
- test/tb_axi_lite_to_axi.sv
- test/tb_axi_lite_xbar.sv
- test/tb_axi_modify_address.sv
- test/tb_axi_serializer.sv
- test/tb_axi_sim_mem.sv
- test/tb_axi_slave_compare.sv
- test/tb_axi_to_axi_lite.sv
- test/tb_axi_to_mem_banked.sv
- test/tb_axi_xbar.sv
file_type : systemVerilogSource
depend :
- ">=pulp-platform.org::common_verification:0.2.3"
generators:
axi_intercon_gen:
interpreter: python3
command: scripts/axi_intercon_gen.py
description: Generate a wrapper around PULP AXI xbar interconnect
usage: |
axi_intercon_gen wraps axi_xbar by expanding arrays of signals into
human-readable buses. Memory map can be set with generator parameters.
It will also generate a verilog include file containing the wire
definitions and module instantiation which can be `included in the
module where the interconnect wrapper is intended to be used.
Parameters:
masters: A dictionary where each key names a master interface connecting
to the interconnect and the associated value contains
configuration for that interface.
id_width (int): Width of the id signals for the master
slaves: A dictionary where each key names a slave interface connecting
to the interconnect and the associated value contains
configuration for that interface. The following configuration
keys are defined
offset (int): Base address for the slave
size (int): Size of the allocated memory map for the slave
Example usage:
The following config will generate an interconnect wrapper to which two
AXI4 master interfaces (dma and ibus) with different id widths are
connected, and connects downstream to three AXI4 slaves (rom, gpio, ram)
soc_intercon:
generator: axi_intercon_gen
parameters:
masters:
dma:
id_width : 1
ibus:
id_width : 2
slaves:
ram:
offset : 0
size: 0x10000000
gpio:
offset: 0x91000000
size: 0x1000
rom:
offset : 0xffff0000
size : 32768
targets:
default:
filesets : [rtl]
sim: &sim
filesets : [rtl,benchs]
description: Simulate the design
toplevel: tb_axi_delayer
sim_dw_downsizer:
<<: *sim
toplevel: tb_axi_dw_downsizer
sim_addr_test : { filesets : [rtl,benchs] , toplevel: tb_axi_addr_test }
sim_atop_filter : { filesets : [rtl,benchs] , toplevel: tb_axi_atop_filter }
sim_cdc : { filesets : [rtl,benchs] , toplevel: tb_axi_cdc }
sim_delayer : { filesets : [rtl,benchs] , toplevel: tb_axi_delayer }
sim_dw_pkg : { filesets : [rtl,benchs] , toplevel: tb_axi_dw_pkg }
sim_dw_upsizer : { filesets : [rtl,benchs] , toplevel: tb_axi_dw_upsizer }
sim_isolate : { filesets : [rtl,benchs] , toplevel: tb_axi_isolate }
sim_iw_converter : { filesets : [rtl,benchs] , toplevel: tb_axi_iw_converter }
sim_lite_mailbox : { filesets : [rtl,benchs] , toplevel: tb_axi_lite_mailbox }
sim_lite_regs : { filesets : [rtl,benchs] , toplevel: tb_axi_lite_regs }
sim_lite_to_apb : { filesets : [rtl,benchs] , toplevel: tb_axi_lite_to_apb }
sim_lite_to_axi : { filesets : [rtl,benchs] , toplevel: tb_axi_lite_to_axi }
sim_lite_xbar : { filesets : [rtl,benchs] , toplevel: tb_axi_lite_xbar }
sim_modify_address: { filesets : [rtl,benchs] , toplevel: tb_axi_modify_address }
sim_serializer : { filesets : [rtl,benchs] , toplevel: tb_axi_serializer }
sim_sim_mem : { filesets : [rtl,benchs] , toplevel: tb_axi_sim_mem }
sim_to_axi_lite : { filesets : [rtl,benchs] , toplevel: tb_axi_to_axi_lite }
sim_xbar : { filesets : [rtl,benchs] , toplevel: tb_axi_xbar }
sim_xbar_pkg : { filesets : [rtl,benchs] , toplevel: tb_axi_xbar_pkg }