ipxact-tools 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. data/config/detector.yml +63 -0
  2. data/lib/ipxact_tools.rb +287 -0
  3. data/lib/ipxact_tools/graph_pathfinder.rb +191 -0
  4. data/lib/ipxact_tools/interrupt_line_detector.rb +98 -0
  5. data/spec/integration/integration_spec.rb +254 -0
  6. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.h +135 -0
  7. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.tpp +247 -0
  8. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port_base.h +189 -0
  9. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.h +205 -0
  10. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.tpp +278 -0
  11. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.h +115 -0
  12. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.tpp +126 -0
  13. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port.h +168 -0
  14. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port_base.h +133 -0
  15. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_tlm_if.h +280 -0
  16. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/user_types.h +38 -0
  17. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/Leon2Platform.xml +77 -0
  18. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/design_Leon2Platform.xml +156 -0
  19. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/tlmsrc/Leon2Platform.h +149 -0
  20. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/apbSubSystem.xml +406 -0
  21. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/design_apbSubSystem.xml +135 -0
  22. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/tlmsrc/apbSubSystem.h +133 -0
  23. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/Leon2Platform.xml +77 -0
  24. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/design_Leon2Platform.xml +157 -0
  25. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/tlmsrc/Leon2Platform.h +150 -0
  26. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/apbSubSystem.xml +422 -0
  27. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/designConfig_apbSubSystem.xml +79 -0
  28. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/design_apbSubSystem.xml +184 -0
  29. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/tlmsrc/apbSubSystem.h +164 -0
  30. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/Leon2Platform.xml +105 -0
  31. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/design_Leon2Platform.xml +157 -0
  32. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/tlmsrc/Leon2Platform.h +152 -0
  33. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/apbSubSystem.xml +429 -0
  34. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/designConfig_apbSubSystem.xml +64 -0
  35. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/design_apbSubSystem.xml +150 -0
  36. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/tlmsrc/apbSubSystem.h +167 -0
  37. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/ahbbus22.xml +236 -0
  38. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/tlmsrc/ahbbus.h +52 -0
  39. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/ahbram.xml +184 -0
  40. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.cc +93 -0
  41. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.h +77 -0
  42. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/apbbus8.xml +544 -0
  43. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/tlmsrc/apbbus.h +55 -0
  44. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/apbmst.xml +209 -0
  45. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/tlmsrc/apbmst.h +53 -0
  46. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/apbram.xml +395 -0
  47. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.cc +89 -0
  48. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.h +69 -0
  49. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.v +82 -0
  50. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.vhd +132 -0
  51. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/cgu.xml +686 -0
  52. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.cc +121 -0
  53. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.h +81 -0
  54. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/cgu.xml +707 -0
  55. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.cc +121 -0
  56. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.h +81 -0
  57. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/dma.xml +272 -0
  58. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.cc +230 -0
  59. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.h +116 -0
  60. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/irqctrl.xml +530 -0
  61. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.cc +211 -0
  62. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.h +108 -0
  63. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/processor.xml +423 -0
  64. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.cc +331 -0
  65. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.h +121 -0
  66. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/pv2apb.xml +240 -0
  67. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.cc +153 -0
  68. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.h +77 -0
  69. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/pv2tac.xml +154 -0
  70. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.cc +114 -0
  71. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.h +67 -0
  72. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/rgu.xml +766 -0
  73. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.cc +126 -0
  74. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.h +105 -0
  75. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/scmlAdaptor.xml +154 -0
  76. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.cc +100 -0
  77. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.h +62 -0
  78. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/serial_device.xml +151 -0
  79. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/tlmsrc/serial_device.h +85 -0
  80. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/timers.xml +460 -0
  81. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.cc +201 -0
  82. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.h +102 -0
  83. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart.h +152 -0
  84. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_fifo.h +113 -0
  85. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_memory_map.h +96 -0
  86. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_types.h +60 -0
  87. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart.cc +125 -0
  88. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_interrupt_handler.cc +136 -0
  89. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_register_bank.cc +129 -0
  90. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_serial_tx_rx.cc +145 -0
  91. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/uart_scml.xml +372 -0
  92. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/Leon2_uart.h +216 -0
  93. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/def_Leon2_uart.h +34 -0
  94. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_field.h +72 -0
  95. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_register.h +129 -0
  96. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlmreg_Leon2_uart.h +133 -0
  97. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/Leon2_uart.cc +316 -0
  98. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/tlmreg_Leon2_uart.cc +197 -0
  99. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/user_specific_Leon2_uart.cc +146 -0
  100. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/uart_tac.xml +222 -0
  101. data/spec/unit/graph_pathfinder_spec.rb +128 -0
  102. metadata +272 -0
@@ -0,0 +1,211 @@
1
+ //
2
+ // Revision: $Revision: 1506 $
3
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ //
5
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ //
7
+ // This work forms part of a deliverable of The SPIRIT Consortium.
8
+ //
9
+ // Use of these materials are governed by the legal terms and conditions
10
+ // outlined in the disclaimer available from www.spiritconsortium.org.
11
+ //
12
+ // This source file is provided on an AS IS basis. The SPIRIT
13
+ // Consortium disclaims any warranty express or implied including
14
+ // any warranty of merchantability and fitness for use for a
15
+ // particular purpose.
16
+ //
17
+ // The user of the source file shall indemnify and hold The SPIRIT
18
+ // Consortium and its members harmless from any damages or liability.
19
+ // Users are requested to provide feedback to The SPIRIT Consortium
20
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ // http://www.spiritconsortium.org/about/contact_us/
22
+ //
23
+ // This file may be copied, and distributed, with or without
24
+ // modifications; but this notice must be included on any copy.
25
+
26
+ /*------------------------------------------------------------------------------
27
+ * Simple Leon2 TLM interrupt controller
28
+ * Note: in this (dummy) implementation we only use a single register
29
+ * to enable or disable the interrupts.
30
+ *------------------------------------------------------------------------------*/
31
+
32
+ /*------------------------------------------------------------------------------
33
+ * Includes
34
+ *----------------------------------------------------------------------------*/
35
+ #include "irqctrl.h"
36
+
37
+ /*------------------------------------------------------------------------------
38
+ * Methods
39
+ *----------------------------------------------------------------------------*/
40
+ irqctrl::irqctrl( sc_module_name module_name) :
41
+ sc_module( module_name ),
42
+ pv_slave_base<ADDRESS_TYPE,DATA_TYPE>(name()),
43
+ irlout("irlout"),
44
+ irlin("irlin"),
45
+ intack("intack"),
46
+ int0("int0"),
47
+ int1("int1"),
48
+ int2("int2"),
49
+ int3("int3"),
50
+ apb_slave_port("apb_slave_port")
51
+ {
52
+ apb_slave_port( *this );
53
+ init_register();
54
+ SC_METHOD(run);
55
+ dont_initialize();
56
+ sensitive << int0;
57
+ sensitive << int1;
58
+ sensitive << int2;
59
+ sensitive << int3;
60
+ sensitive << int4;
61
+ SC_METHOD(run2);
62
+ dont_initialize();
63
+ sensitive << force_change;
64
+ SC_METHOD(ack);
65
+ dont_initialize();
66
+ sensitive << intack;
67
+ irlout.initialize(0);
68
+ }
69
+
70
+ irqctrl::~irqctrl() {
71
+ }
72
+
73
+ tlm::tlm_status irqctrl::write( const ADDRESS_TYPE &addr , const DATA_TYPE &data,
74
+ const unsigned int byte_enable,
75
+ const tlm::tlm_mode mode,
76
+ const unsigned int export_id)
77
+ {
78
+ tlm::tlm_status status;
79
+
80
+ if ((addr < IRQ_BASE_ADDR) || (addr >= IRQ_BASE_ADDR+IRQ_SIZE)) {
81
+ cout << "ERROR\t" << name() << " : trying to write out of bounds at address " << addr << endl;
82
+ status.set_error();
83
+ return status;
84
+ }
85
+ if (addr==IRQ_MASK) {
86
+ irq_mask = (data >> 1) & 0x7FFF;
87
+ irq_level = (data >> 17) & 0x7FFF;
88
+ if (irq_mask > 0) {
89
+ int i;
90
+ for (i=1;i<=15;i++) {
91
+ if ((irq_mask >> i-1) & 0x01) {
92
+ cout << name() << " Interrupt " << i << " enabled: " << endl;
93
+ }
94
+ }
95
+ }
96
+ force_change.notify();
97
+ }
98
+
99
+ if (addr==IRQ_FORCE) {
100
+ irq_force = (data >> 1) & 0x7FFF;
101
+ force_change.notify();
102
+ }
103
+
104
+ // clear the pending bit
105
+ if (addr==IRQ_CLEAR) irq_pending = irq_pending & ~(data >> 1) & 0x7FFF;
106
+
107
+ status.set_ok();
108
+ return status;
109
+ }
110
+
111
+ tlm::tlm_status irqctrl::read( const ADDRESS_TYPE &addr , DATA_TYPE &data,
112
+ const unsigned int byte_enable,
113
+ const tlm::tlm_mode mode,
114
+ const unsigned int export_id)
115
+ {
116
+ tlm::tlm_status status;
117
+ if ((addr < IRQ_BASE_ADDR) || (addr >= IRQ_BASE_ADDR+IRQ_SIZE)) {
118
+ cout << "ERROR\t" << name() << " : trying to read out of bounds at address " << addr << endl;
119
+ status.set_error();
120
+ return status;
121
+ }
122
+ if (addr==IRQ_MASK) data = ((irq_mask << 1) & 0xFFFE) | ((irq_level << 17) & 0xFFFE0000);
123
+ if (addr==IRQ_PENDING) data = ((irq_pending << 1) & 0xFFFE);
124
+ if (addr==IRQ_FORCE) data = 0;
125
+ if (addr==IRQ_CLEAR) data = 0;
126
+ if (addr==IRQ_READCLEARPENDING) {
127
+ data = irl;
128
+ force_change.notify();
129
+ }
130
+ cout << name() << " Read IRQ register value: " << data << endl;
131
+ status.set_ok();
132
+ return status;
133
+ }
134
+
135
+ void irqctrl::end_of_elaboration() {
136
+ cout << name() << " constructed." << endl;
137
+ }
138
+
139
+ void irqctrl::init_register()
140
+ {
141
+ irq_mask=0;
142
+ irq_level=0;
143
+ irq_pending=0;
144
+ irq_force=0;
145
+ irl = 0;
146
+ irq_last=0;
147
+ }
148
+
149
+ void irqctrl::run()
150
+ {
151
+ int pending;
152
+ int last_pending = irq_pending;
153
+
154
+ // just catch the rising edge of the interrupt
155
+ pending = (~irq_last & ( int0.read()*1 + int1.read()*2 +int2.read()*4 +int3.read()*8 +int4.read()*16));
156
+ irq_pending = irq_pending | pending;
157
+
158
+ irq_last = ( int0.read()*1 + int1.read()*2 +int2.read()*4 +int3.read()*8 +int4.read()*16);
159
+
160
+ // just call if things changed
161
+ if (irq_pending != last_pending)
162
+ force_change.notify();
163
+ }
164
+
165
+ void irqctrl::run2()
166
+ {
167
+ int hilevel = (irq_force | irq_pending ) & irq_mask & irq_level;
168
+ int lolevel = (irq_force | irq_pending ) & irq_mask & (~irq_level & 0x7FFF);
169
+
170
+ // reset the force register after processing.
171
+ irq_force = 0;
172
+
173
+ if (hilevel > 0 && hilevel >= lolevel) {
174
+ int i;
175
+ for (i=15;i>=1;i--) {
176
+ if (hilevel & (0x1 << i-1)) {
177
+ irlout.write(i);
178
+ cout << name() << " interrupt set to level " << i << " At time " << sc_time_stamp() << endl;
179
+ irl = i;
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ else {
185
+ if (lolevel > 0 && lolevel > hilevel) {
186
+ int i;
187
+ for (i=15;i>=1;i--) {
188
+ if (lolevel & (0x1 << i-1)) {
189
+ irlout.write(i);
190
+ cout << name() << " interrupt set to level " << i <<" At time " << sc_time_stamp() << endl;
191
+ irl = i;
192
+ break;
193
+ }
194
+ }
195
+ }
196
+ else {
197
+ irlout.write(0);
198
+ cout << name() << " interrupt set to level " << 0 << " At time " << sc_time_stamp() << endl;
199
+ irl = 0;
200
+ }
201
+ }
202
+ }
203
+
204
+ void irqctrl::ack()
205
+ {
206
+ if (intack.read() == 1) {
207
+ cout << name() << " got interrupt ack" << endl;
208
+ irq_pending = irq_pending & (~(0x1 << (irlin-1)) & 0x7FFF);
209
+ force_change.notify();
210
+ }
211
+ }
@@ -0,0 +1,108 @@
1
+ //
2
+ // Revision: $Revision: 1506 $
3
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
4
+ //
5
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
6
+ //
7
+ // This work forms part of a deliverable of The SPIRIT Consortium.
8
+ //
9
+ // Use of these materials are governed by the legal terms and conditions
10
+ // outlined in the disclaimer available from www.spiritconsortium.org.
11
+ //
12
+ // This source file is provided on an AS IS basis. The SPIRIT
13
+ // Consortium disclaims any warranty express or implied including
14
+ // any warranty of merchantability and fitness for use for a
15
+ // particular purpose.
16
+ //
17
+ // The user of the source file shall indemnify and hold The SPIRIT
18
+ // Consortium and its members harmless from any damages or liability.
19
+ // Users are requested to provide feedback to The SPIRIT Consortium
20
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
21
+ // http://www.spiritconsortium.org/about/contact_us/
22
+ //
23
+ // This file may be copied, and distributed, with or without
24
+ // modifications; but this notice must be included on any copy.
25
+
26
+ #ifndef _IRQCTRL_H_
27
+ #define _IRQCTRL_H_
28
+
29
+ /*------------------------------------------------------------------------------
30
+ * Includes
31
+ *----------------------------------------------------------------------------*/
32
+ #include <systemc.h>
33
+
34
+ #include "pv_slave_base.h"
35
+ #include "pv_target_port.h"
36
+ #include "user_types.h"
37
+
38
+ /*------------------------------------------------------------------------------
39
+ * Define device parameters
40
+ *----------------------------------------------------------------------------*/
41
+ #define IRQ_BASE_ADDR 0x0000 // in global systems, start at: 0x30000000
42
+ #define IRQ_SIZE 0x1000 // 4Kb
43
+
44
+ /*------------------------------------------------------------------------------
45
+ * Define IRQ Registers
46
+ * Note : here static, but could be read from external description
47
+ *----------------------------------------------------------------------------*/
48
+ #define IRQ_MASK 0x0000
49
+ #define IRQ_PENDING 0x0004
50
+ #define IRQ_FORCE 0x0008
51
+ #define IRQ_CLEAR 0x000c
52
+ #define IRQ_READCLEARPENDING 0x0010
53
+
54
+ /*------------------------------------------------------------------------------
55
+ * Define IRQ Register
56
+ * Note : here static, but could be read from external description
57
+ *----------------------------------------------------------------------------*/
58
+ #define IRQ_DISABLED 0
59
+ #define IRQ_ENABLED 1
60
+
61
+ /*------------------------------------------------------------------------------
62
+ * leon2 irqctrl
63
+ *----------------------------------------------------------------------------*/
64
+
65
+ class irqctrl :
66
+ public sc_module ,
67
+ public pv_slave_base< ADDRESS_TYPE , DATA_TYPE >
68
+ {
69
+ public:
70
+ SC_HAS_PROCESS(irqctrl);
71
+ irqctrl( sc_module_name module_name);
72
+ ~irqctrl();
73
+
74
+ pv_target_port<ADDRESS_TYPE,DATA_TYPE> apb_slave_port;
75
+ sc_in<int> int0;
76
+ sc_in<int> int1;
77
+ sc_in<int> int2;
78
+ sc_in<int> int3;
79
+ sc_in<int> int4;
80
+ sc_out<int> irlout;
81
+ sc_in<int> irlin;
82
+ sc_in<bool> intack;
83
+
84
+ tlm::tlm_status write( const ADDRESS_TYPE &addr , const DATA_TYPE &data,
85
+ const unsigned int byte_enable = tlm::NO_BE,
86
+ const tlm::tlm_mode mode = tlm::REGULAR,
87
+ const unsigned int export_id = 0 );
88
+ tlm::tlm_status read( const ADDRESS_TYPE &addr , DATA_TYPE &data,
89
+ const unsigned int byte_enable = tlm::NO_BE,
90
+ const tlm::tlm_mode mode = tlm::REGULAR,
91
+ const unsigned int export_id = 0 );
92
+
93
+ private:
94
+ int irq_mask;
95
+ int irq_level;
96
+ int irq_pending;
97
+ int irq_force;
98
+ int irq_last;
99
+ int irl;
100
+ sc_event force_change;
101
+ void init_register();
102
+ void run();
103
+ void run2();
104
+ void ack();
105
+ void end_of_elaboration();
106
+ };
107
+
108
+ #endif /* _IRQCTRL_H_ */
@@ -0,0 +1,423 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ //
4
+ // Revision: $Revision: 1506 $
5
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
6
+ //
7
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
8
+ //
9
+ // This work forms part of a deliverable of The SPIRIT Consortium.
10
+ //
11
+ // Use of these materials are governed by the legal terms and conditions
12
+ // outlined in the disclaimer available from www.spiritconsortium.org.
13
+ //
14
+ // This source file is provided on an AS IS basis. The SPIRIT
15
+ // Consortium disclaims any warranty express or implied including
16
+ // any warranty of merchantability and fitness for use for a
17
+ // particular purpose.
18
+ //
19
+ // The user of the source file shall indemnify and hold The SPIRIT
20
+ // Consortium and its members harmless from any damages or liability.
21
+ // Users are requested to provide feedback to The SPIRIT Consortium
22
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
23
+ // http://www.spiritconsortium.org/about/contact_us/
24
+ //
25
+ // This file may be copied, and distributed, with or without
26
+ // modifications; but this notice must be included on any copy.
27
+ -->
28
+ <spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5 http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5/index.xsd">
29
+ <spirit:vendor>spiritconsortium.org</spirit:vendor>
30
+ <spirit:library>Leon2TLM</spirit:library>
31
+ <spirit:name>processor</spirit:name>
32
+ <spirit:version>1.4</spirit:version>
33
+ <spirit:busInterfaces>
34
+ <spirit:busInterface>
35
+ <spirit:name>AHB_Master</spirit:name>
36
+ <spirit:busType spirit:library="AMBA2" spirit:name="AHB" spirit:vendor="amba.com" spirit:version="r2p0_6"/>
37
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="ahb_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
38
+ <spirit:master>
39
+ <spirit:addressSpaceRef spirit:addressSpaceRef="main_AS"/>
40
+ </spirit:master>
41
+ <spirit:connectionRequired>true</spirit:connectionRequired>
42
+ <spirit:portMaps>
43
+ <spirit:portMap>
44
+ <spirit:logicalPort>
45
+ <spirit:name>PV_TRANS</spirit:name>
46
+ </spirit:logicalPort>
47
+ <spirit:physicalPort>
48
+ <spirit:name>ahb_master_port</spirit:name>
49
+ </spirit:physicalPort>
50
+ </spirit:portMap>
51
+ </spirit:portMaps>
52
+ </spirit:busInterface>
53
+ <spirit:busInterface>
54
+ <spirit:name>APB_Slave</spirit:name>
55
+ <spirit:busType spirit:library="AMBA2" spirit:name="APB" spirit:vendor="amba.com" spirit:version="r2p0_4"/>
56
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="apb_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
57
+ <spirit:slave>
58
+ <spirit:memoryMapRef spirit:memoryMapRef="APB_MM"/>
59
+ </spirit:slave>
60
+ <spirit:portMaps>
61
+ <spirit:portMap>
62
+ <spirit:logicalPort>
63
+ <spirit:name>PV_TRANS</spirit:name>
64
+ </spirit:logicalPort>
65
+ <spirit:physicalPort>
66
+ <spirit:name>apb_slave_port</spirit:name>
67
+ </spirit:physicalPort>
68
+ </spirit:portMap>
69
+ </spirit:portMaps>
70
+ </spirit:busInterface>
71
+ <spirit:busInterface>
72
+ <spirit:name>INT_Slave</spirit:name>
73
+ <spirit:busType spirit:library="busdef.leon2" spirit:name="IntProc" spirit:vendor="spiritconsortium.org" spirit:version="v1.0"/>
74
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="IntProc_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
75
+ <spirit:slave/>
76
+ <spirit:portMaps>
77
+ <spirit:portMap>
78
+ <spirit:logicalPort>
79
+ <spirit:name>IRL</spirit:name>
80
+ </spirit:logicalPort>
81
+ <spirit:physicalPort>
82
+ <spirit:name>irl_port</spirit:name>
83
+ </spirit:physicalPort>
84
+ </spirit:portMap>
85
+ <spirit:portMap>
86
+ <spirit:logicalPort>
87
+ <spirit:name>IRQVEC</spirit:name>
88
+ </spirit:logicalPort>
89
+ <spirit:physicalPort>
90
+ <spirit:name>irqvec_port</spirit:name>
91
+ </spirit:physicalPort>
92
+ </spirit:portMap>
93
+ <spirit:portMap>
94
+ <spirit:logicalPort>
95
+ <spirit:name>INTack</spirit:name>
96
+ </spirit:logicalPort>
97
+ <spirit:physicalPort>
98
+ <spirit:name>intack_port</spirit:name>
99
+ </spirit:physicalPort>
100
+ </spirit:portMap>
101
+ </spirit:portMaps>
102
+ </spirit:busInterface>
103
+ </spirit:busInterfaces>
104
+ <spirit:addressSpaces>
105
+ <spirit:addressSpace>
106
+ <spirit:name>main_AS</spirit:name>
107
+ <spirit:range>4G</spirit:range>
108
+ <spirit:width>32</spirit:width>
109
+ <spirit:localMemoryMap>
110
+ <spirit:name>ahbLocalMemoryMap</spirit:name>
111
+ <spirit:addressBlock>
112
+ <spirit:name>defaultid4490218</spirit:name>
113
+ <spirit:baseAddress spirit:id="start_addr_local" spirit:resolve="immediate" spirit:choiceRef="BaseAddressChoices" spirit:configGroups="requiredConfig" spirit:prompt="Local Memory Map Starting Address:">0x10000000</spirit:baseAddress>
114
+ <spirit:range spirit:id="range_local" spirit:resolve="immediate" spirit:choiceRef="RangeChoice" spirit:configGroups="requiredConfig" spirit:prompt="Local Memory Map Range (bytes):">4096</spirit:range>
115
+ <spirit:width spirit:id="width">32</spirit:width>
116
+ <spirit:usage>memory</spirit:usage>
117
+ </spirit:addressBlock>
118
+ </spirit:localMemoryMap>
119
+ </spirit:addressSpace>
120
+ </spirit:addressSpaces>
121
+ <spirit:memoryMaps>
122
+ <spirit:memoryMap>
123
+ <spirit:name>APB_MM</spirit:name>
124
+ <spirit:bank spirit:bankAlignment="serial">
125
+ <spirit:name>defaultid4490282</spirit:name>
126
+ <spirit:baseAddress>0</spirit:baseAddress>
127
+ <spirit:addressBlock>
128
+ <spirit:name>registers</spirit:name>
129
+ <spirit:range>4</spirit:range>
130
+ <spirit:width>32</spirit:width>
131
+ <spirit:usage>register</spirit:usage>
132
+ <spirit:access>read-only</spirit:access>
133
+ <spirit:register>
134
+ <spirit:name>Failures</spirit:name>
135
+ <spirit:addressOffset>0x0</spirit:addressOffset>
136
+ <spirit:size>32</spirit:size>
137
+ <spirit:access>read-only</spirit:access>
138
+ <spirit:field>
139
+ <spirit:name>NumFailures</spirit:name>
140
+ <spirit:description>Number of failures from the AHB BFM</spirit:description>
141
+ <spirit:bitOffset>0</spirit:bitOffset>
142
+ <spirit:bitWidth>32</spirit:bitWidth>
143
+ <spirit:access>read-only</spirit:access>
144
+ </spirit:field>
145
+ </spirit:register>
146
+ </spirit:addressBlock>
147
+ <spirit:addressBlock>
148
+ <spirit:name>lowest1k</spirit:name>
149
+ <spirit:range>1020</spirit:range>
150
+ <spirit:width>32</spirit:width>
151
+ <spirit:usage>memory</spirit:usage>
152
+ <spirit:access>read-write</spirit:access>
153
+ </spirit:addressBlock>
154
+ <spirit:addressBlock>
155
+ <spirit:name>midlow1k</spirit:name>
156
+ <spirit:range>1k</spirit:range>
157
+ <spirit:width>32</spirit:width>
158
+ <spirit:usage>memory</spirit:usage>
159
+ <spirit:access>read-write</spirit:access>
160
+ </spirit:addressBlock>
161
+ <spirit:addressBlock>
162
+ <spirit:name>midhigh1k</spirit:name>
163
+ <spirit:range>1k</spirit:range>
164
+ <spirit:width>32</spirit:width>
165
+ <spirit:usage>memory</spirit:usage>
166
+ <spirit:access>read-write</spirit:access>
167
+ </spirit:addressBlock>
168
+ <spirit:bank spirit:bankAlignment="parallel">
169
+ <spirit:name>defaultid4490406</spirit:name>
170
+ <spirit:addressBlock>
171
+ <spirit:name>highest1kx7_0</spirit:name>
172
+ <spirit:range>1k</spirit:range>
173
+ <spirit:width>8</spirit:width>
174
+ <spirit:usage>memory</spirit:usage>
175
+ <spirit:access>read-write</spirit:access>
176
+ </spirit:addressBlock>
177
+ <spirit:addressBlock>
178
+ <spirit:name>highest1kx15_8</spirit:name>
179
+ <spirit:range>1k</spirit:range>
180
+ <spirit:width>8</spirit:width>
181
+ <spirit:usage>memory</spirit:usage>
182
+ <spirit:access>read-write</spirit:access>
183
+ </spirit:addressBlock>
184
+ <spirit:addressBlock>
185
+ <spirit:name>highest1kx23_16</spirit:name>
186
+ <spirit:range>1k</spirit:range>
187
+ <spirit:width>8</spirit:width>
188
+ <spirit:usage>memory</spirit:usage>
189
+ <spirit:access>read-write</spirit:access>
190
+ </spirit:addressBlock>
191
+ <spirit:addressBlock>
192
+ <spirit:name>highest1kx31_24</spirit:name>
193
+ <spirit:range>1k</spirit:range>
194
+ <spirit:width>8</spirit:width>
195
+ <spirit:usage>memory</spirit:usage>
196
+ <spirit:access>read-write</spirit:access>
197
+ </spirit:addressBlock>
198
+ <spirit:usage>memory</spirit:usage>
199
+ <spirit:access>read-write</spirit:access>
200
+ </spirit:bank>
201
+ <spirit:usage>memory</spirit:usage>
202
+ <spirit:access>read-write</spirit:access>
203
+ </spirit:bank>
204
+ </spirit:memoryMap>
205
+ </spirit:memoryMaps>
206
+ <spirit:model>
207
+ <spirit:views>
208
+ <spirit:view>
209
+ <spirit:name>TLM_PV</spirit:name>
210
+ <spirit:envIdentifier>:*Simulation:</spirit:envIdentifier>
211
+ <spirit:language>systemc</spirit:language>
212
+ <spirit:modelName>processor</spirit:modelName>
213
+ <spirit:fileSetRef>
214
+ <spirit:localName>sourceCode</spirit:localName>
215
+ </spirit:fileSetRef>
216
+ </spirit:view>
217
+ </spirit:views>
218
+ <spirit:ports>
219
+ <spirit:port>
220
+ <spirit:name>ahb_master_port</spirit:name>
221
+ <spirit:transactional>
222
+ <spirit:transTypeDef>
223
+ <spirit:typeName>pv_target_port</spirit:typeName>
224
+ <spirit:typeDefinition>pv_target_port.h</spirit:typeDefinition>
225
+ </spirit:transTypeDef>
226
+ <spirit:service>
227
+ <spirit:initiative>requires</spirit:initiative>
228
+ <spirit:serviceTypeDefs>
229
+ <spirit:serviceTypeDef>
230
+ <spirit:typeName spirit:implicit="true">OSCI_TLM_PV</spirit:typeName>
231
+ <spirit:parameters>
232
+ <spirit:parameter>
233
+ <spirit:name>typedef1</spirit:name>
234
+ <spirit:value>ADDRESS_TYPE</spirit:value>
235
+ </spirit:parameter>
236
+ <spirit:parameter>
237
+ <spirit:name>typedef2</spirit:name>
238
+ <spirit:value>DATA_TYPE</spirit:value>
239
+ </spirit:parameter>
240
+ </spirit:parameters>
241
+ </spirit:serviceTypeDef>
242
+ </spirit:serviceTypeDefs>
243
+ </spirit:service>
244
+ </spirit:transactional>
245
+ </spirit:port>
246
+ <spirit:port>
247
+ <spirit:name>apb_slave_port</spirit:name>
248
+ <spirit:transactional>
249
+ <spirit:transTypeDef>
250
+ <spirit:typeName>pv_initiator_port</spirit:typeName>
251
+ <spirit:typeDefinition>pv_initiator_port.h</spirit:typeDefinition>
252
+ </spirit:transTypeDef>
253
+ <spirit:service>
254
+ <spirit:initiative>provides</spirit:initiative>
255
+ <spirit:serviceTypeDefs>
256
+ <spirit:serviceTypeDef>
257
+ <spirit:typeName spirit:implicit="true">OSCI_TLM_PV</spirit:typeName>
258
+ <spirit:parameters>
259
+ <spirit:parameter>
260
+ <spirit:name>typedef1</spirit:name>
261
+ <spirit:value>ADDRESS_TYPE</spirit:value>
262
+ </spirit:parameter>
263
+ <spirit:parameter>
264
+ <spirit:name>typedef2</spirit:name>
265
+ <spirit:value>DATA_TYPE</spirit:value>
266
+ </spirit:parameter>
267
+ </spirit:parameters>
268
+ </spirit:serviceTypeDef>
269
+ </spirit:serviceTypeDefs>
270
+ </spirit:service>
271
+ </spirit:transactional>
272
+ </spirit:port>
273
+ <spirit:port>
274
+ <spirit:name>irl_port</spirit:name>
275
+ <spirit:wire>
276
+ <spirit:direction>in</spirit:direction>
277
+ <spirit:wireTypeDefs>
278
+ <spirit:wireTypeDef>
279
+ <spirit:typeName>int</spirit:typeName>
280
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
281
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
282
+ </spirit:wireTypeDef>
283
+ </spirit:wireTypeDefs>
284
+ <spirit:driver>
285
+ <spirit:defaultValue>0x0</spirit:defaultValue>
286
+ </spirit:driver>
287
+ </spirit:wire>
288
+ </spirit:port>
289
+ <spirit:port>
290
+ <spirit:name>irqvec_port</spirit:name>
291
+ <spirit:wire>
292
+ <spirit:direction>out</spirit:direction>
293
+ <spirit:wireTypeDefs>
294
+ <spirit:wireTypeDef>
295
+ <spirit:typeName>int</spirit:typeName>
296
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
297
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
298
+ </spirit:wireTypeDef>
299
+ </spirit:wireTypeDefs>
300
+ </spirit:wire>
301
+ </spirit:port>
302
+ <spirit:port>
303
+ <spirit:name>intack_port</spirit:name>
304
+ <spirit:wire>
305
+ <spirit:direction>out</spirit:direction>
306
+ <spirit:wireTypeDefs>
307
+ <spirit:wireTypeDef>
308
+ <spirit:typeName>bool</spirit:typeName>
309
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
310
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
311
+ </spirit:wireTypeDef>
312
+ </spirit:wireTypeDefs>
313
+ </spirit:wire>
314
+ </spirit:port>
315
+ <spirit:port>
316
+ <spirit:name>clk</spirit:name>
317
+ <spirit:wire>
318
+ <spirit:direction>in</spirit:direction>
319
+ <spirit:wireTypeDefs>
320
+ <spirit:wireTypeDef>
321
+ <spirit:typeName>sc_logic</spirit:typeName>
322
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
323
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
324
+ </spirit:wireTypeDef>
325
+ </spirit:wireTypeDefs>
326
+ </spirit:wire>
327
+ </spirit:port>
328
+ <spirit:port>
329
+ <spirit:name>rst_an</spirit:name>
330
+ <spirit:wire>
331
+ <spirit:direction>in</spirit:direction>
332
+ <spirit:wireTypeDefs>
333
+ <spirit:wireTypeDef>
334
+ <spirit:typeName>bool</spirit:typeName>
335
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
336
+ </spirit:wireTypeDef>
337
+ </spirit:wireTypeDefs>
338
+ </spirit:wire>
339
+ </spirit:port>
340
+ </spirit:ports>
341
+ <spirit:modelParameters>
342
+ <spirit:modelParameter spirit:dataType="string">
343
+ <spirit:name>code_file</spirit:name>
344
+ <spirit:value spirit:id="code_file" spirit:resolve="user" spirit:configGroups="requiredConfig" spirit:prompt="File to read commands from:">master.tbl</spirit:value>
345
+ </spirit:modelParameter>
346
+ </spirit:modelParameters>
347
+ </spirit:model>
348
+ <spirit:choices>
349
+ <spirit:choice>
350
+ <spirit:name>BaseAddressChoices</spirit:name>
351
+ <spirit:enumeration spirit:text="0x00000000">0x00000000</spirit:enumeration>
352
+ <spirit:enumeration spirit:text="0x10000000">0x10000000</spirit:enumeration>
353
+ <spirit:enumeration spirit:text="0x20000000">0x20000000</spirit:enumeration>
354
+ <spirit:enumeration spirit:text="0x30000000">0x30000000</spirit:enumeration>
355
+ <spirit:enumeration spirit:text="0x40000000">0x40000000</spirit:enumeration>
356
+ <spirit:enumeration spirit:text="0x50000000">0x50000000</spirit:enumeration>
357
+ <spirit:enumeration spirit:text="0x60000000">0x60000000</spirit:enumeration>
358
+ <spirit:enumeration spirit:text="0x70000000">0x70000000</spirit:enumeration>
359
+ <spirit:enumeration spirit:text="0x80000000">0x80000000</spirit:enumeration>
360
+ <spirit:enumeration spirit:text="0x90000000">0x90000000</spirit:enumeration>
361
+ <spirit:enumeration spirit:text="0xa0000000">0xa0000000</spirit:enumeration>
362
+ <spirit:enumeration spirit:text="0xb0000000">0xb0000000</spirit:enumeration>
363
+ <spirit:enumeration spirit:text="0xc0000000">0xc0000000</spirit:enumeration>
364
+ <spirit:enumeration spirit:text="0xd0000000">0xd0000000</spirit:enumeration>
365
+ <spirit:enumeration spirit:text="0xe0000000">0xe0000000</spirit:enumeration>
366
+ <spirit:enumeration spirit:text="0xf0000000">0xf0000000</spirit:enumeration>
367
+ </spirit:choice>
368
+ <spirit:choice>
369
+ <spirit:name>RangeChoice</spirit:name>
370
+ <spirit:enumeration spirit:text="0">0</spirit:enumeration>
371
+ <spirit:enumeration spirit:text="128">128</spirit:enumeration>
372
+ <spirit:enumeration spirit:text="256">256</spirit:enumeration>
373
+ <spirit:enumeration spirit:text="1k">1024</spirit:enumeration>
374
+ <spirit:enumeration spirit:text="2k">2048</spirit:enumeration>
375
+ <spirit:enumeration spirit:text="4k">4096</spirit:enumeration>
376
+ <spirit:enumeration spirit:text="8k">8192</spirit:enumeration>
377
+ <spirit:enumeration spirit:text="16k">16384</spirit:enumeration>
378
+ </spirit:choice>
379
+ </spirit:choices>
380
+ <spirit:fileSets>
381
+ <spirit:fileSet>
382
+ <spirit:name>sourceCode</spirit:name>
383
+ <spirit:file>
384
+ <spirit:name>tlmsrc/processor.cc</spirit:name>
385
+ <spirit:fileType>systemCSource</spirit:fileType>
386
+ <spirit:dependency>tlmsrc</spirit:dependency>
387
+ </spirit:file>
388
+ <spirit:file>
389
+ <spirit:name>tlmsrc/processor.h</spirit:name>
390
+ <spirit:fileType>systemCSource</spirit:fileType>
391
+ <spirit:isIncludeFile spirit:externalDeclarations="true">true</spirit:isIncludeFile>
392
+ <spirit:logicalName>processor</spirit:logicalName>
393
+ <spirit:dependency>../../PV</spirit:dependency>
394
+ </spirit:file>
395
+ <spirit:file>
396
+ <spirit:name>../../PV/pv_slave_base.h</spirit:name>
397
+ <spirit:fileType>unknown</spirit:fileType>
398
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
399
+ </spirit:file>
400
+ <spirit:file>
401
+ <spirit:name>../../PV/pv_target_port.h</spirit:name>
402
+ <spirit:fileType>unknown</spirit:fileType>
403
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
404
+ </spirit:file>
405
+ <spirit:file>
406
+ <spirit:name>../../PV/pv_initiator_port.h</spirit:name>
407
+ <spirit:fileType>unknown</spirit:fileType>
408
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
409
+ </spirit:file>
410
+ <spirit:file>
411
+ <spirit:name>../../PV/user_types.h</spirit:name>
412
+ <spirit:fileType>unknown</spirit:fileType>
413
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
414
+ </spirit:file>
415
+ </spirit:fileSet>
416
+ </spirit:fileSets>
417
+ <spirit:cpus>
418
+ <spirit:cpu>
419
+ <spirit:name>processor</spirit:name>
420
+ <spirit:addressSpaceRef spirit:addressSpaceRef="main_AS"/>
421
+ </spirit:cpu>
422
+ </spirit:cpus>
423
+ </spirit:component>