GeMRTOS
grtos_hw.tcl
Go to the documentation of this file.
1 # TCL File Generated by Component Editor 12.1
2 # Tue Nov 12 11:07:55 GFT 2013
3 # DO NOT MODIFY
4 
5 # PONER PARAMETRO CLOCK_RATE de SYSTEM_INFO
6 #Ej: set_parameter_property <my_parameter> SYSTEM_INFO {CLOCK_RATE <my_clk>}
7 
8 #
9 # grtos "gRTOS" v1.0
10 # Ricardo_Cayssials 2013.11.12.11:07:55
11 # gRTOS Qsys Component
12 #
13 
14 #
15 # request TCL package from ACDS 12.1
16 #
17 package require -exact qsys 13.0
18 
19 
20 #
21 # module grtos
22 #
23 set_module_property DESCRIPTION "gRTOS Qsys Component"
24 set_module_property NAME grtos
25 set_module_property VERSION 1.0
26 set_module_property INTERNAL false
27 set_module_property OPAQUE_ADDRESS_MAP true
28 set_module_property GROUP gRTOS
29 set_module_property AUTHOR "Ricardo Cayssials"
30 set_module_property DISPLAY_NAME gRTOS
31 set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
32 set_module_property EDITABLE true
33 set_module_property ANALYZE_HDL AUTO
34 set_module_property REPORT_TO_TALKBACK false
35 set_module_property ALLOW_GREYBOX_GENERATION false
36 
37 # from https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/solutions/rd06242008_7.html
38 # from https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/qts/qsys_components.pdf
39 # add_fileset_file my_custom_component.qxp QXP PATH "my_custom_component.qxp"
40 
41 #
42 # file sets
43 #
44 add_fileset quartus_synth QUARTUS_SYNTH "" "Quartus Synthesis"
45 set_fileset_property quartus_synth TOP_LEVEL grtos
46 set_fileset_property quartus_synth ENABLE_RELATIVE_INCLUDE_PATHS false
47 add_fileset_file grtos.qxp QXP PATH grtos.qxp
48 # add_fileset_file STD_FIFO.vhd VHDL PATH STD_FIFO.vhd
49 
50 
51 add_fileset sim_verilog SIM_VERILOG "" "Verilog Simulation"
52 set_fileset_property sim_verilog TOP_LEVEL grtos
53 set_fileset_property sim_verilog ENABLE_RELATIVE_INCLUDE_PATHS false
54 add_fileset_file grtos.qxp QXP PATH grtos.qxp
55 # add_fileset_file STD_FIFO.vhd VHDL PATH STD_FIFO.vhd
56 
57 add_fileset sim_vhdl SIM_VHDL "" "VHDL Simulation"
58 set_fileset_property sim_vhdl TOP_LEVEL grtos
59 set_fileset_property sim_vhdl ENABLE_RELATIVE_INCLUDE_PATHS false
60 add_fileset_file grtos.qxp QXP PATH grtos.qxp
61 # add_fileset_file STD_FIFO.vhd VHDL PATH STD_FIFO.vhd
62 
63 #
64 # parameters
65 #
66 # Number of Processors
67 add_parameter NProcessors INTEGER 1 "Number of System Processors"
68 set_parameter_property NProcessors DEFAULT_VALUE 1
69 set_parameter_property NProcessors DISPLAY_NAME "Number of Processors"
70 set_parameter_property NProcessors TYPE INTEGER
71 set_parameter_property NProcessors UNITS None
72 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}
73 set_parameter_property NProcessors DESCRIPTION "Number of System Processors"
74 set_parameter_property NProcessors HDL_PARAMETER false
75 
76 # Prescaler
77 add_parameter PreScale INTEGER 31 "Time Prescaler"
78 set_parameter_property PreScale DEFAULT_VALUE 31
79 set_parameter_property PreScale DISPLAY_NAME "Time Prescaler"
80 set_parameter_property PreScale TYPE INTEGER
81 set_parameter_property PreScale UNITS None
82 set_parameter_property PreScale ALLOWED_RANGES {1:1073741824}
83 set_parameter_property PreScale DESCRIPTION "Time Scale division"
84 set_parameter_property PreScale HDL_PARAMETER false
85 
86 add_parameter PROCESSOR_TYPE STRING "" "Processor type"
87 set_parameter_property PROCESSOR_TYPE HDL_PARAMETER false
88 
89 add_parameter INSTRUCTION_CACHE_SIZE STRING "None" "Instruction cache size"
90 set_parameter_property INSTRUCTION_CACHE_SIZE HDL_PARAMETER false
91 
92 add_parameter INSTRUCTION_CACHE_BURST STRING "Disable" "Add burstcount signal to instruction_master"
93 set_parameter_property INSTRUCTION_CACHE_BURST HDL_PARAMETER false
94 
95 add_parameter ENABLE_HPS_MAP_ACCESS BOOLEAN false
96 set_parameter_property ENABLE_HPS_MAP_ACCESS HDL_PARAMETER false
97 
98 add_parameter NIOS_CLOCK_FREQUENCY INTEGER
99 set_parameter_property NIOS_CLOCK_FREQUENCY HDL_PARAMETER false
100 
101 add_parameter BUS_CLOCK_FREQUENCY INTEGER
102 set_parameter_property BUS_CLOCK_FREQUENCY HDL_PARAMETER false
103 
104 add_parameter BUS_WIDTH INTEGER
105 set_parameter_property BUS_WIDTH HDL_PARAMETER false
106 
107 add_parameter EXTERNAL_MEMORY_SPAN INTEGER 4
108 set_parameter_property EXTERNAL_MEMORY_SPAN HDL_PARAMETER false
109 
110 add_parameter EXTERNAL_MEMORY_UNIT STRING ""
111 set_parameter_property EXTERNAL_MEMORY_UNIT HDL_PARAMETER false
112 
113 #
114 # display items
115 #
116 add_display_item "" "System Properties" GROUP ""
117 add_display_item "" Interrupt GROUP ""
118 
119 #
120 # connection point clock_reset
121 #
122 add_interface clock_reset clock end
123 set_interface_property clock_reset clockRate 0
124 set_interface_property clock_reset ENABLED true
125 
126 add_interface_port clock_reset clk clk Input 1
127 
128 # SYSTEM_INFO de https://www.intel.com/content/dam/altera-www/global/zh_CN/pdfs/literature/hb/qts/qsys_tcl.pdf
129 add_parameter GRTOS_CLOCK_FREQUENCY INTEGER
130 set_parameter_property GRTOS_CLOCK_FREQUENCY SYSTEM_INFO {CLOCK_RATE clock_reset}
131 add_display_item "" GRTOS_CLOCK_FREQUENCY PARAMETER
132 set_parameter_property GRTOS_CLOCK_FREQUENCY HDL_PARAMETER false
133 
134 add_parameter GRTOS_CLOCK_RESET_INFO STRING
135 set_parameter_property GRTOS_CLOCK_RESET_INFO SYSTEM_INFO {CLOCK_RESET_INFO clock_reset}
136 add_display_item "" GRTOS_CLOCK_RESET_INFO PARAMETER
137 set_parameter_property GRTOS_CLOCK_RESET_INFO HDL_PARAMETER false
138 
139 add_parameter GRTOS_GENERATION_ID INTEGER
140 set_parameter_property GRTOS_GENERATION_ID SYSTEM_INFO {GENERATION_ID}
141 add_display_item "" GRTOS_GENERATION_ID PARAMETER
142 set_parameter_property GRTOS_GENERATION_ID HDL_PARAMETER false
143 #
144 # connection point clock_reset_reset
145 #
146 add_interface clock_reset_reset reset end
147 set_interface_property clock_reset_reset associatedClock clock_reset
148 set_interface_property clock_reset_reset synchronousEdges DEASSERT
149 set_interface_property clock_reset_reset ENABLED true
150 
151 add_interface_port clock_reset_reset reset reset Input 1
152 
153 # *************************************************************
154 # *************************************************************
155 #
156 # connection point clk_out
157 #
158 add_interface clk_out clock start
159 set_interface_property clk_out associatedDirectClock ""
160 set_interface_property clk_out clockRate 0
161 # set_interface_property clk_out clockRateKnown false
162 set_interface_property clk_out ENABLED true
163 set_interface_property clk_out EXPORT_OF ""
164 set_interface_property clk_out PORT_NAME_MAP ""
165 set_interface_property clk_out SVD_ADDRESS_GROUP ""
166 
167 add_interface_port clk_out clk_out clk Output 1
168 
169 #
170 # connection point s_Global
171 #
172 add_interface s_Global avalon end
173 set_interface_property s_Global addressUnits WORDS
174 set_interface_property s_Global associatedClock clock_reset
175 set_interface_property s_Global associatedReset clock_reset_reset
176 set_interface_property s_Global bitsPerSymbol 8
177 set_interface_property s_Global burstOnBurstBoundariesOnly false
178 set_interface_property s_Global burstcountUnits WORDS
179 set_interface_property s_Global explicitAddressSpan 0
180 set_interface_property s_Global holdTime 0
181 set_interface_property s_Global linewrapBursts false
182 set_interface_property s_Global maximumPendingReadTransactions 0
183 set_interface_property s_Global readLatency 0
184 set_interface_property s_Global readWaitStates 0
185 set_interface_property s_Global readWaitTime 0
186 set_interface_property s_Global setupTime 0
187 set_interface_property s_Global timingUnits Cycles
188 set_interface_property s_Global writeWaitTime 0
189 set_interface_property s_Global ENABLED true
190 
191 add_interface_port s_Global slave_gRTOS_address address Input 7
192 add_interface_port s_Global slave_gRTOS_read read Input 1
193 add_interface_port s_Global slave_gRTOS_write write Input 1
194 add_interface_port s_Global slave_gRTOS_readdata readdata Output 32
195 add_interface_port s_Global slave_gRTOS_writedata writedata Input 32
196 add_interface_port s_Global slave_gRTOS_waitrequest waitrequest Output 1
197 # add_interface_port s_Global slave_gRTOS_chipselect chipselect Input 1
198 set_interface_assignment s_Global embeddedsw.configuration.isFlash 0
199 set_interface_assignment s_Global embeddedsw.configuration.isMemoryDevice 0
200 set_interface_assignment s_Global embeddedsw.configuration.isNonVolatileStorage 0
201 set_interface_assignment s_Global embeddedsw.configuration.isPrintableDevice 0
202 
203 set i 1
204 
205 
206 
207 #
208 # connection point interrupt receiver
209 #
210 
211 # Dummy master port
212  add_interface dummy_master avalon start
213  set_interface_property dummy_master burstOnBurstBoundariesOnly false
214  set_interface_property dummy_master doStreamReads false
215  set_interface_property dummy_master doStreamWrites false
216  set_interface_property dummy_master linewrapBursts false
217  set_interface_property dummy_master ASSOCIATED_CLOCK clock_reset
218  set_interface_property dummy_master ENABLED true
219 
220  add_interface_port dummy_master avm_m1_address address Output 32
221  add_interface_port dummy_master avm_m1_writedata writedata Output 32
222  add_interface_port dummy_master avm_m1_readdata readdata Input 32
223 
224  add_interface_port dummy_master avm_m1_read read Output 1
225  add_interface_port dummy_master avm_m1_write write Output 1
226  add_interface_port dummy_master avm_m1_waitrequest waitrequest Input 1
227 
228 # Interrupt input port
229  add_interface interrupt_receiver interrupt start
230  set_interface_property interrupt_receiver irqScheme INDIVIDUAL_REQUESTS
231  set_interface_property interrupt_receiver ASSOCIATED_CLOCK clock_reset
232  set_interface_property interrupt_receiver associatedAddressablePoint dummy_master
233  set_interface_property interrupt_receiver ENABLED true
234 
235  add_interface_port interrupt_receiver DIRQI irq Input 32
236 
237  # Get the interrupts connected to the GRTOS
238  add_parameter GRTOS_INTERRUPTS LONG
239  set_parameter_property GRTOS_INTERRUPTS SYSTEM_INFO {INTERRUPTS_USED interrupt_receiver}
240  add_display_item "" GRTOS_INTERRUPTS PARAMETER
241 
242 
243 set_module_property VALIDATION_CALLBACK validate
244 set_module_property ELABORATION_CALLBACK elaborate
245 
246 proc validate {} {
247  set_module_assignment embeddedsw.CMacro.NPROCESSORS [get_parameter_value NProcessors]
248  set_module_assignment embeddedsw.CMacro.PRESCALE [get_parameter_value PreScale]
249  set_module_assignment embeddedsw.CMacro.GRTOSFREQUENCY [get_parameter_value GRTOS_CLOCK_FREQUENCY]
250  set_module_assignment embeddedsw.CMacro.GRTOSINTERRUPTS [get_parameter_value GRTOS_INTERRUPTS]
251  set_module_assignment embeddedsw.CMacro.GRTOSCLOCKRESETINFO [get_parameter_value GRTOS_CLOCK_RESET_INFO]
252  set_module_assignment embeddedsw.CMacro.GRTOSGENERATIONID [get_parameter_value GRTOS_GENERATION_ID]
253 
254  # #########################
255  set_module_assignment embeddedsw.CMacro.PROCESSOR_TYPE [get_parameter_value PROCESSOR_TYPE]
256  set_module_assignment embeddedsw.CMacro.INSTRUCTION_CACHE_SIZE [get_parameter_value INSTRUCTION_CACHE_SIZE]
257  set_module_assignment embeddedsw.CMacro.INSTRUCTION_CACHE_BURST [get_parameter_value INSTRUCTION_CACHE_BURST]
258  set_module_assignment embeddedsw.CMacro.ENABLE_HPS_MAP_ACCESS [get_parameter_value ENABLE_HPS_MAP_ACCESS]
259  set_module_assignment embeddedsw.CMacro.NIOS_CLOCK_FREQUENCY [get_parameter_value NIOS_CLOCK_FREQUENCY]
260  set_module_assignment embeddedsw.CMacro.BUS_CLOCK_FREQUENCY [get_parameter_value BUS_CLOCK_FREQUENCY]
261  set_module_assignment embeddedsw.CMacro.BUS_WIDTH [get_parameter_value BUS_WIDTH]
262  set_module_assignment embeddedsw.CMacro.EXTERNAL_MEMORY_SPAN [get_parameter_value EXTERNAL_MEMORY_SPAN]
263  set_module_assignment embeddedsw.CMacro.EXTERNAL_MEMORY_UNIT [get_parameter_value EXTERNAL_MEMORY_UNIT]
264  # #########################
265 
266 
267 
268 
269  set j 2
270  #set_module_assignment embeddedsw.CMacro.PROPIERTIES [get_interface_properties slv_irq4]
271 
272  # EIC port identification for BSP tools
273  set_interface_assignment s_Global embeddedsw.configuration.isInterruptControllerReceiver 1
274  set_interface_assignment s_Global embeddedsw.configuration.transportsInterruptsFromReceivers s_Global
275 }
276 
277 proc elaborate {} {
278 
279 #
280 # connection point bus_internal
281 #
282 add_interface bus_internal conduit end
283 set_interface_property bus_internal associatedClock clock_reset
284 set_interface_property bus_internal associatedReset clock_reset_reset
285 set_interface_property bus_internal ENABLED true
286 set_interface_property bus_internal EXPORT_OF ""
287 set_interface_property bus_internal PORT_NAME_MAP ""
288 set_interface_property bus_internal SVD_ADDRESS_GROUP ""
289 
290 #LEDS interface
291 add_interface_port bus_internal frozen_avalon_monitor export Input 1
292 
293 
294 #
295 # connection point phy
296 #
297 add_interface phy conduit end
298 set_interface_property phy associatedClock clock_reset
299 set_interface_property phy associatedReset clock_reset_reset
300 set_interface_property phy ENABLED true
301 set_interface_property phy EXPORT_OF ""
302 set_interface_property phy PORT_NAME_MAP ""
303 set_interface_property phy SVD_ADDRESS_GROUP ""
304 
305 #LEDS interface
306 add_interface_port phy F_LED0 export Output 1
307 add_interface_port phy F_LED1 export Output 1
308 add_interface_port phy F_LED2 export Output 1
309 add_interface_port phy F_LED3 export Output 1
310 add_interface_port phy F_LED4 export Output 1
311 add_interface_port phy F_LED5 export Output 1
312 add_interface_port phy F_LED6 export Output 1
313 add_interface_port phy F_LED7 export Output 1
314 
315 set Processors [get_parameter_value NProcessors]
316  for {set i 1} {$i <= $Processors} {incr i} {
317  #
318  # connection point s_processor$i for each processor defined
319  #
320  add_interface s_processor$i avalon end
321  set_interface_property s_processor$i addressUnits WORDS
322  set_interface_property s_processor$i associatedClock clock_reset
323  set_interface_property s_processor$i associatedReset clock_reset_reset
324  set_interface_property s_processor$i bitsPerSymbol 8
325  set_interface_property s_processor$i burstOnBurstBoundariesOnly false
326  set_interface_property s_processor$i burstcountUnits WORDS
327  set_interface_property s_processor$i explicitAddressSpan 0
328  set_interface_property s_processor$i holdTime 0
329  set_interface_property s_processor$i linewrapBursts false
330  set_interface_property s_processor$i maximumPendingReadTransactions 0
331  set_interface_property s_processor$i readLatency 0
332  set_interface_property s_processor$i readWaitStates 0
333  set_interface_property s_processor$i readWaitTime 0
334  set_interface_property s_processor$i setupTime 0
335  set_interface_property s_processor$i timingUnits Cycles
336  set_interface_property s_processor$i writeWaitTime 0
337  set_interface_property s_processor$i ENABLED true
338 
339  add_interface_port s_processor$i slave_processor_address$i address Input 1
340  add_interface_port s_processor$i slave_processor_read$i read Input 1
341  add_interface_port s_processor$i slave_processor_write$i write Input 1
342  add_interface_port s_processor$i slave_processor_readdata$i readdata Output 32
343  add_interface_port s_processor$i slave_processor_writedata$i writedata Input 32
344  # add_interface_port s_processor$i slave_processor_chipselect$i chipselect Input 1
345  add_interface_port s_processor$i slave_processor_waitrequest$i waitrequest Output 1
346  set_interface_assignment s_processor$i embeddedsw.configuration.isFlash 0
347  set_interface_assignment s_processor$i embeddedsw.configuration.isMemoryDevice 0
348  set_interface_assignment s_processor$i embeddedsw.configuration.isNonVolatileStorage 0
349  set_interface_assignment s_processor$i embeddedsw.configuration.isPrintableDevice 0
350 
351  # ########################################## 01/09/2022
352  #
353  # connection point monitor for processors in grtos
354  #
355  add_interface s_processor_monitor$i avalon end
356  set_interface_property s_processor_monitor$i addressUnits WORDS
357  set_interface_property s_processor_monitor$i associatedClock clock_reset
358  set_interface_property s_processor_monitor$i associatedReset clock_reset_reset
359  set_interface_property s_processor_monitor$i bitsPerSymbol 8
360  set_interface_property s_processor_monitor$i burstOnBurstBoundariesOnly false
361  set_interface_property s_processor_monitor$i burstcountUnits WORDS
362  set_interface_property s_processor_monitor$i explicitAddressSpan 0
363  set_interface_property s_processor_monitor$i holdTime 0
364  set_interface_property s_processor_monitor$i linewrapBursts false
365  set_interface_property s_processor_monitor$i maximumPendingReadTransactions 0
366  set_interface_property s_processor_monitor$i readLatency 0
367  set_interface_property s_processor_monitor$i readWaitStates 0
368  set_interface_property s_processor_monitor$i readWaitTime 0
369  set_interface_property s_processor_monitor$i setupTime 0
370  set_interface_property s_processor_monitor$i timingUnits Cycles
371  set_interface_property s_processor_monitor$i writeWaitTime 0
372  set_interface_property s_processor_monitor$i ENABLED true
373 
374  add_interface_port s_processor_monitor$i slave_processor_monitor_address$i address Input 3
375  add_interface_port s_processor_monitor$i slave_processor_monitor_read$i read Input 1
376  add_interface_port s_processor_monitor$i slave_processor_monitor_write$i write Input 1
377  add_interface_port s_processor_monitor$i slave_processor_monitor_readdata$i readdata Output 32
378  add_interface_port s_processor_monitor$i slave_processor_monitor_writedata$i writedata Input 32
379  # add_interface_port s_processor_monitor$i slave_processor_chipselect$i chipselect Input 1
380  add_interface_port s_processor_monitor$i slave_processor_monitor_waitrequest$i waitrequest Output 1
381  set_interface_assignment s_processor_monitor$i embeddedsw.configuration.isFlash 0
382  set_interface_assignment s_processor_monitor$i embeddedsw.configuration.isMemoryDevice 0
383  set_interface_assignment s_processor_monitor$i embeddedsw.configuration.isNonVolatileStorage 0
384  set_interface_assignment s_processor_monitor$i embeddedsw.configuration.isPrintableDevice 0
385 
386  # ########################################## 01/09/2022
387 
388  # ##########################################
389  #
390  # connection point slv_rst(1)
391  #
392  add_interface slv_rst$i reset start
393  set_interface_property slv_rst$i associatedClock clock_reset
394  # set_interface_property slv_rst$i associatedClock clk_out
395  set_interface_property slv_rst$i associatedResetSinks clock_reset_reset
396  set_interface_property slv_rst$i synchronousEdges DEASSERT
397  # set_interface_property slv_rst$i synchronousEdges NONE
398  # set_interface_property slv_rst$i synchronousEdges BOTH
399  set_interface_property slv_rst$i ENABLED true
400 
401  add_interface_port slv_rst$i slave_rst$i reset Output 1
402  # ##########################################
403  #
404  # connection point slv_irq(1)
405  #
406  add_interface slv_irq$i interrupt end
407  set_interface_property slv_irq$i associatedAddressablePoint s_processor$i
408  set_interface_property slv_irq$i associatedClock clock_reset
409  set_interface_property slv_irq$i associatedReset clock_reset_reset
410  set_interface_property slv_irq$i ENABLED true
411 
412  add_interface_port slv_irq$i slave_irq$i irq Output 1
413 
414  }
415 
416 # #############################################
417  #
418  # connection point s_processor_monitor
419  #
420  add_interface s_processor_monitor avalon end
421  set_interface_property s_processor_monitor addressUnits WORDS
422  set_interface_property s_processor_monitor associatedClock clock_reset
423  set_interface_property s_processor_monitor associatedReset clock_reset_reset
424  set_interface_property s_processor_monitor bitsPerSymbol 8
425  set_interface_property s_processor_monitor burstOnBurstBoundariesOnly false
426  set_interface_property s_processor_monitor burstcountUnits WORDS
427  set_interface_property s_processor_monitor explicitAddressSpan 0
428  set_interface_property s_processor_monitor holdTime 0
429  set_interface_property s_processor_monitor linewrapBursts false
430  set_interface_property s_processor_monitor maximumPendingReadTransactions 0
431  set_interface_property s_processor_monitor readLatency 0
432  set_interface_property s_processor_monitor readWaitStates 0
433  set_interface_property s_processor_monitor readWaitTime 0
434  set_interface_property s_processor_monitor setupTime 0
435  set_interface_property s_processor_monitor timingUnits Cycles
436  set_interface_property s_processor_monitor writeWaitTime 0
437  set_interface_property s_processor_monitor ENABLED true
438 
439  add_interface_port s_processor_monitor slave_processor_address_monitor address Input 8
440  add_interface_port s_processor_monitor slave_processor_read_monitor read Input 1
441  add_interface_port s_processor_monitor slave_processor_write_monitor write Input 1
442  add_interface_port s_processor_monitor slave_processor_readdata_monitor readdata Output 32
443  add_interface_port s_processor_monitor slave_processor_writedata_monitor writedata Input 32
444  # add_interface_port s_processor_monitor slave_processor_chipselect_monitor chipselect Input 1
445  add_interface_port s_processor_monitor slave_processor_waitrequest_monitor waitrequest Output 1
446  set_interface_assignment s_processor_monitor embeddedsw.configuration.isFlash 0
447  set_interface_assignment s_processor_monitor embeddedsw.configuration.isMemoryDevice 0
448  set_interface_assignment s_processor_monitor embeddedsw.configuration.isNonVolatileStorage 0
449  set_interface_assignment s_processor_monitor embeddedsw.configuration.isPrintableDevice 0
450 # #############################################
451 
452 
453 }