23 package require -exact sopc 10.0
30 set_module_property DESCRIPTION "Nios II Avalon monitor module"
31 set_module_property NAME nios_avalon_monitor
32 set_module_property VERSION 13.0
33 set_module_property GROUP gRTOS
34 set_module_property INTERNAL false
35 set_module_property AUTHOR "Ricardo Cayssials"
36 set_module_property DISPLAY_NAME "Nios II Avalon monitor module"
37 set_module_property TOP_LEVEL_HDL_FILE avalon_monitor.vhd
38 set_module_property TOP_LEVEL_HDL_MODULE avalon_monitor
39 set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
40 set_module_property EDITABLE true
41 set_module_property ELABORATION_CALLBACK elaborate
42 set_module_property ANALYZE_HDL FALSE
43 set_module_property SIMULATION_MODEL_IN_VHDL true
44 set_module_property HIDE_FROM_SOPC true
54 add_file avalon_monitor.vhd {SYNTHESIS SIMULATION}
55 add_file STD_FIFO.vhd {SYNTHESIS SIMULATION}
64 add_parameter NProcessors INTEGER 1 "Number of System Processors"
65 set_parameter_property NProcessors DEFAULT_VALUE 1
66 set_parameter_property NProcessors DISPLAY_NAME "Number of Processors"
67 set_parameter_property NProcessors TYPE INTEGER
68 set_parameter_property NProcessors UNITS None
69 set_parameter_property NProcessors ALLOWED_RANGES {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}
70 set_parameter_property NProcessors DESCRIPTION "Number of System Processors"
71 set_parameter_property NProcessors HDL_PARAMETER true
74 add_parameter DATA_WIDTH INTEGER 32
75 set_parameter_property DATA_WIDTH DEFAULT_VALUE 32
76 set_parameter_property DATA_WIDTH DISPLAY_NAME {Data width}
77 set_parameter_property DATA_WIDTH TYPE INTEGER
78 set_parameter_property DATA_WIDTH UNITS None
79 set_parameter_property DATA_WIDTH DISPLAY_HINT ""
80 set_parameter_property DATA_WIDTH AFFECTS_GENERATION false
81 set_parameter_property DATA_WIDTH HDL_PARAMETER true
82 set_parameter_property DATA_WIDTH DESCRIPTION {Bridge data width}
84 add_parameter SYMBOL_WIDTH INTEGER 8
85 set_parameter_property SYMBOL_WIDTH DEFAULT_VALUE 8
86 set_parameter_property SYMBOL_WIDTH DISPLAY_NAME {Symbol width}
87 set_parameter_property SYMBOL_WIDTH TYPE INTEGER
88 set_parameter_property SYMBOL_WIDTH UNITS None
89 set_parameter_property SYMBOL_WIDTH DISPLAY_HINT ""
90 set_parameter_property SYMBOL_WIDTH AFFECTS_GENERATION false
91 set_parameter_property SYMBOL_WIDTH HDL_PARAMETER true
92 set_parameter_property SYMBOL_WIDTH DESCRIPTION {Symbol (byte) width}
94 add_parameter ADDRESS_WIDTH INTEGER 32
95 set_parameter_property ADDRESS_WIDTH DEFAULT_VALUE 32
96 set_parameter_property ADDRESS_WIDTH DISPLAY_NAME {Address width}
97 set_parameter_property ADDRESS_WIDTH TYPE INTEGER
98 set_parameter_property ADDRESS_WIDTH UNITS None
99 set_parameter_property ADDRESS_WIDTH DISPLAY_HINT ""
100 set_parameter_property ADDRESS_WIDTH AFFECTS_GENERATION false
101 set_parameter_property ADDRESS_WIDTH HDL_PARAMETER true
102 set_parameter_property ADDRESS_WIDTH DESCRIPTION {Bridge address width}
104 add_parameter BURSTCOUNT_WIDTH INTEGER 1
105 set_parameter_property BURSTCOUNT_WIDTH DEFAULT_VALUE 1
106 set_parameter_property BURSTCOUNT_WIDTH DISPLAY_NAME {Burstcount width}
107 set_parameter_property BURSTCOUNT_WIDTH VISIBLE false
108 set_parameter_property BURSTCOUNT_WIDTH DERIVED true
109 set_parameter_property BURSTCOUNT_WIDTH TYPE INTEGER
110 set_parameter_property BURSTCOUNT_WIDTH UNITS None
111 set_parameter_property BURSTCOUNT_WIDTH DISPLAY_HINT ""
112 set_parameter_property BURSTCOUNT_WIDTH AFFECTS_GENERATION false
113 set_parameter_property BURSTCOUNT_WIDTH HDL_PARAMETER true
114 set_parameter_property BURSTCOUNT_WIDTH DESCRIPTION {Bridge burstcount width}
116 add_parameter AVALON_DATA_FIFO_DEPTH INTEGER 5 AVALON_DATA_FIFO_DEPTH
117 set_parameter_property AVALON_DATA_FIFO_DEPTH DEFAULT_VALUE 4
118 set_parameter_property AVALON_DATA_FIFO_DEPTH DISPLAY_NAME {Depth of the DATA FIFO}
119 set_parameter_property AVALON_DATA_FIFO_DEPTH TYPE INTEGER
120 set_parameter_property AVALON_DATA_FIFO_DEPTH UNITS None
121 set_parameter_property AVALON_DATA_FIFO_DEPTH DISPLAY_UNITS "Words"
122 set_parameter_property AVALON_DATA_FIFO_DEPTH ALLOWED_RANGES {2 4 8 16 32 64 128 256 512}
123 set_parameter_property AVALON_DATA_FIFO_DEPTH DESCRIPTION {Depth of the DATA FIFO}
124 set_parameter_property AVALON_DATA_FIFO_DEPTH HDL_PARAMETER true
133 add_parameter LINEWRAPBURSTS INTEGER 0
134 set_parameter_property LINEWRAPBURSTS DISPLAY_NAME "Line wrap bursts"
135 set_parameter_property LINEWRAPBURSTS TYPE INTEGER
136 set_parameter_property LINEWRAPBURSTS AFFECTS_ELABORATION true
137 set_parameter_property LINEWRAPBURSTS HDL_PARAMETER false
138 set_parameter_property LINEWRAPBURSTS DISPLAY_HINT BOOLEAN
139 set_parameter_property LINEWRAPBURSTS AFFECTS_GENERATION false
140 set_parameter_property LINEWRAPBURSTS DESCRIPTION "This parameter allows you to match the behavior of some memory devices that implement a wrapping burst instead of an incrementing burst. The difference between the two is that with a wrapping burst, when the address reaches a burst boundary, the address wraps back to the previous burst boundary so that only the low-order bits are required for address counting"
142 add_parameter DEVICE_FAMILY STRING
143 set_parameter_property DEVICE_FAMILY SYSTEM_INFO {DEVICE_FAMILY}
144 set_parameter_property DEVICE_FAMILY DESCRIPTION DEVICE_FAMILY
145 set_parameter_property DEVICE_FAMILY HDL_PARAMETER true
146 add_display_item "" DEVICE_FAMILY PARAMETER
148 add_parameter BYTEEN_WIDTH INTEGER
149 set_parameter_property BYTEEN_WIDTH DERIVED true
150 set_parameter_property BYTEEN_WIDTH TYPE INTEGER
151 set_parameter_property BYTEEN_WIDTH UNITS None
152 set_parameter_property BYTEEN_WIDTH HDL_PARAMETER true
153 add_display_item "" BYTEEN_WIDTH PARAMETER
155 add_parameter MAX_BURST_SIZE INTEGER 1
156 set_parameter_property MAX_BURST_SIZE DISPLAY_NAME {Maximum burst size (words)}
157 set_parameter_property MAX_BURST_SIZE AFFECTS_GENERATION true
158 set_parameter_property MAX_BURST_SIZE HDL_PARAMETER false
159 set_parameter_property MAX_BURST_SIZE DESCRIPTION {Specifies the maximum burst size}
160 set_parameter_property MAX_BURST_SIZE ALLOWED_RANGES "1,2,4,8,16,32,64,128,256,512,1024"
162 add_parameter ADDRESS_UNITS STRING "SYMBOLS"
163 set_parameter_property ADDRESS_UNITS DISPLAY_NAME {Address units}
164 set_parameter_property ADDRESS_UNITS UNITS None
165 set_parameter_property ADDRESS_UNITS DISPLAY_HINT ""
166 set_parameter_property ADDRESS_UNITS AFFECTS_GENERATION false
167 set_parameter_property ADDRESS_UNITS HDL_PARAMETER false
168 set_parameter_property ADDRESS_UNITS ALLOWED_RANGES "SYMBOLS,WORDS"
169 set_parameter_property ADDRESS_UNITS DESCRIPTION {Address units (Symbols[bytes]/Words)}
171 add_parameter MAX_PENDING_RESPONSES INTEGER 32
172 set_parameter_property MAX_PENDING_RESPONSES DISPLAY_NAME {Maximum pending read transactions}
173 set_parameter_property MAX_PENDING_RESPONSES TYPE INTEGER
174 set_parameter_property MAX_PENDING_RESPONSES UNITS None
175 set_parameter_property MAX_PENDING_RESPONSES DISPLAY_HINT ""
176 set_parameter_property MAX_PENDING_RESPONSES AFFECTS_GENERATION false
177 set_parameter_property MAX_PENDING_RESPONSES DESCRIPTION {Controls the Avalon-MM maximum pending read transactions interface property of the bridge}
186 add_interface clk clock end
187 add_interface reset reset end
189 set_interface_property clk ENABLED true
190 set_interface_property reset ENABLED true
191 set_interface_property reset ASSOCIATED_CLOCK clk
193 add_interface_port clk clk clk Input 1
194 add_interface_port reset reset reset Input 1
201 add_interface s_Global avalon end
202 set_interface_property s_Global addressUnits WORDS
203 set_interface_property s_Global associatedClock clk
204 set_interface_property s_Global associatedReset reset
205 set_interface_property s_Global bitsPerSymbol 8
206 set_interface_property s_Global burstOnBurstBoundariesOnly false
207 set_interface_property s_Global burstcountUnits WORDS
208 set_interface_property s_Global explicitAddressSpan 0
209 set_interface_property s_Global holdTime 0
210 set_interface_property s_Global linewrapBursts false
211 set_interface_property s_Global maximumPendingReadTransactions 0
212 set_interface_property s_Global readLatency 0
213 set_interface_property s_Global readWaitStates 0
214 set_interface_property s_Global readWaitTime 0
215 set_interface_property s_Global setupTime 0
216 set_interface_property s_Global timingUnits Cycles
217 set_interface_property s_Global writeWaitTime 0
218 set_interface_property s_Global ENABLED true
220 add_interface_port s_Global slave_AvalonMonitor_address address Input 6
221 add_interface_port s_Global slave_AvalonMonitor_read read Input 1
222 add_interface_port s_Global slave_AvalonMonitor_write write Input 1
223 add_interface_port s_Global slave_AvalonMonitor_readdata readdata Output 32
224 add_interface_port s_Global slave_AvalonMonitor_writedata writedata Input 32
225 add_interface_port s_Global slave_AvalonMonitor_chipselect chipselect Input 1
226 set_interface_assignment s_Global embeddedsw.configuration.isFlash 0
227 set_interface_assignment s_Global embeddedsw.configuration.isMemoryDevice 0
228 set_interface_assignment s_Global embeddedsw.configuration.isNonVolatileStorage 0
229 set_interface_assignment s_Global embeddedsw.configuration.isPrintableDevice 0
235 add_interface bus_internal conduit end
236 set_interface_property bus_internal associatedClock clk
237 set_interface_property bus_internal associatedReset reset
238 set_interface_property bus_internal ENABLED true
239 set_interface_property bus_internal EXPORT_OF ""
240 set_interface_property bus_internal PORT_NAME_MAP ""
241 set_interface_property bus_internal SVD_ADDRESS_GROUP ""
244 add_interface_port bus_internal frozen_avalon_monitor export Output 1
254 set data_width [ get_parameter_value DATA_WIDTH]
255 set sym_width [ get_parameter_value SYMBOL_WIDTH]
256 set byteen_width [
expr $data_width / $sym_width]
257 set mprt [ get_parameter_value MAX_PENDING_RESPONSES]
258 set aunits [ get_parameter_value ADDRESS_UNITS]
259 set burst_size [ get_parameter_value MAX_BURST_SIZE]
260 set linewrap [ get_parameter_value LINEWRAPBURSTS]
261 set address_width [ get_parameter_value ADDRESS_WIDTH]
264 set burstcount_width [
expr int (ceil (log($burst_size) / log(2))) + 1]
265 set_parameter_value BURSTCOUNT_WIDTH $burstcount_width
268 set rx_fifo_data_depth [ get_parameter_value AVALON_DATA_FIFO_DEPTH]
272 set data_width [ get_parameter_value DATA_WIDTH]
273 set symbol_width [ get_parameter_value SYMBOL_WIDTH]
274 set byteen_width [
expr int (ceil ($data_width / $symbol_width ))]
275 set_parameter_value BYTEEN_WIDTH $byteen_width
277 set Processors [get_parameter_value NProcessors]
278 for {
set i 1} {$i <= $Processors} {
incr i} {
283 add_interface s$i avalon end
284 set_interface_property s$i addressAlignment DYNAMIC
285 set_interface_property s$i associatedClock clk
286 set_interface_property s$i bridgesToMaster m$i
287 set_interface_property s$i burstOnBurstBoundariesOnly false
288 set_interface_property s$i explicitAddressSpan 0
289 set_interface_property s$i holdTime 0
290 set_interface_property s$i isMemoryDevice false
291 set_interface_property s$i isNonVolatileStorage false
292 set_interface_property s$i linewrapBursts false
293 set_interface_property s$i maximumPendingReadTransactions 4
294 set_interface_property s$i printableDevice false
295 set_interface_property s$i readLatency 0
296 set_interface_property s$i readWaitTime 0
297 set_interface_property s$i setupTime 0
298 set_interface_property s$i timingUnits Cycles
299 set_interface_property s$i writeWaitTime 0
301 set_interface_property s$i ASSOCIATED_CLOCK clk
302 set_interface_property s$i associatedReset reset
303 set_interface_property s$i ENABLED true
305 add_interface_port s$i s${i}_waitrequest waitrequest Output 1
306 add_interface_port s$i s${i}_readdata readdata Output DATA_WIDTH
307 add_interface_port s$i s${i}_readdatavalid readdatavalid Output 1
308 add_interface_port s$i s${i}_burstcount burstcount Input BURSTCOUNT_WIDTH
309 add_interface_port s$i s${i}_writedata writedata Input DATA_WIDTH
310 add_interface_port s$i s${i}_address address Input address_width
311 add_interface_port s$i s${i}_write write Input 1
312 add_interface_port s$i s${i}_read read Input 1
313 add_interface_port s$i s${i}_byteenable byteenable Input 4
314 add_interface_port s$i s${i}_debugaccess debugaccess Input 1
319 add_interface m$i avalon start
320 set_interface_property m$i associatedClock clk
321 set_interface_property m$i burstOnBurstBoundariesOnly false
322 set_interface_property m$i doStreamReads false
323 set_interface_property m$i doStreamWrites false
324 set_interface_property m$i linewrapBursts false
326 set_interface_property m$i ASSOCIATED_CLOCK clk
327 set_interface_property m$i associatedReset reset
328 set_interface_property m$i ENABLED true
330 add_interface_port m$i m${i}_waitrequest waitrequest Input 1
331 add_interface_port m$i m${i}_readdata readdata Input DATA_WIDTH
332 add_interface_port m$i m${i}_readdatavalid readdatavalid Input 1
333 add_interface_port m$i m${i}_burstcount burstcount Output BURSTCOUNT_WIDTH
334 add_interface_port m$i m${i}_writedata writedata Output DATA_WIDTH
335 add_interface_port m$i m${i}_address address Output ADDRESS_WIDTH
336 add_interface_port m$i m${i}_write write Output 1
337 add_interface_port m$i m${i}_read read Output 1
338 add_interface_port m$i m${i}_byteenable byteenable Output 4
339 add_interface_port m$i m${i}_debugaccess debugaccess Output 1
346 set_port_property m${i}_byteenable WIDTH $byteen_width
347 set_port_property s${i}_byteenable WIDTH $byteen_width
349 set_interface_property m${i} bitsPerSymbol $sym_width
350 set_interface_property s${i} bitsPerSymbol $sym_width
352 set_interface_property m$i addressUnits $aunits
353 set_interface_property s$i addressUnits $aunits
355 set_interface_property s$i maximumPendingReadTransactions $mprt
357 set_interface_property m$i linewrapBursts $linewrap
358 set_interface_property s$i linewrapBursts $linewrap