ipxact-ruby 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. data/.autotest +15 -0
  2. data/.gitignore +2 -0
  3. data/README.html +89 -0
  4. data/README.mdown +91 -0
  5. data/Rakefile +31 -0
  6. data/VERSION +1 -0
  7. data/autotest/discover.rb +17 -0
  8. data/lib/ipxact.rb +263 -0
  9. data/lib/ipxact/component.rb +235 -0
  10. data/lib/ipxact/parser.rb +27 -0
  11. data/lib/ipxact/parser/bus_data_parser.rb +229 -0
  12. data/lib/ipxact/parser/component_data_parser.rb +309 -0
  13. data/lib/ipxact/parser/platform_data_parser.rb +63 -0
  14. data/lib/ipxact/pathfinder/graph_pathfinder.rb +191 -0
  15. data/lib/ipxact/platform.rb +43 -0
  16. data/schemas/abstractionDefinition.xsd +332 -0
  17. data/schemas/abstractor.xsd +156 -0
  18. data/schemas/autoConfigure.xsd +226 -0
  19. data/schemas/busDefinition.xsd +99 -0
  20. data/schemas/busInterface.xsd +640 -0
  21. data/schemas/commonStructures.xsd +189 -0
  22. data/schemas/component.xsd +253 -0
  23. data/schemas/configurable.xsd +82 -0
  24. data/schemas/constraints.xsd +283 -0
  25. data/schemas/design.xsd +105 -0
  26. data/schemas/designConfig.xsd +144 -0
  27. data/schemas/file.xsd +560 -0
  28. data/schemas/fileType.xsd +86 -0
  29. data/schemas/generator.xsd +240 -0
  30. data/schemas/identifier.xsd +93 -0
  31. data/schemas/index.xsd +67 -0
  32. data/schemas/memoryMap.xsd +1007 -0
  33. data/schemas/model.xsd +291 -0
  34. data/schemas/port.xsd +441 -0
  35. data/schemas/signalDrivers.xsd +220 -0
  36. data/schemas/simpleTypes.xsd +90 -0
  37. data/schemas/subInstances.xsd +256 -0
  38. data/spec/integration/bus_data_extraction_spec.rb +105 -0
  39. data/spec/integration/data_calculation_spec.rb +133 -0
  40. data/spec/integration/data_construction_spec.rb +52 -0
  41. data/spec/integration/general_spec.rb +121 -0
  42. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.h +135 -0
  43. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.tpp +247 -0
  44. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port_base.h +189 -0
  45. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.h +205 -0
  46. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.tpp +278 -0
  47. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.h +115 -0
  48. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.tpp +126 -0
  49. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port.h +168 -0
  50. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port_base.h +133 -0
  51. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_tlm_if.h +280 -0
  52. data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/user_types.h +38 -0
  53. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/Leon2Platform.xml +77 -0
  54. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/design_Leon2Platform.xml +156 -0
  55. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/tlmsrc/Leon2Platform.h +149 -0
  56. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/apbSubSystem.xml +406 -0
  57. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/design_apbSubSystem.xml +135 -0
  58. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/tlmsrc/apbSubSystem.h +133 -0
  59. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/Leon2Platform.xml +77 -0
  60. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/design_Leon2Platform.xml +157 -0
  61. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/tlmsrc/Leon2Platform.h +150 -0
  62. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/apbSubSystem.xml +422 -0
  63. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/designConfig_apbSubSystem.xml +79 -0
  64. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/design_apbSubSystem.xml +184 -0
  65. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/tlmsrc/apbSubSystem.h +164 -0
  66. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/Leon2Platform.xml +105 -0
  67. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/design_Leon2Platform.xml +157 -0
  68. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/tlmsrc/Leon2Platform.h +152 -0
  69. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/apbSubSystem.xml +429 -0
  70. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/designConfig_apbSubSystem.xml +64 -0
  71. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/design_apbSubSystem.xml +150 -0
  72. data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/tlmsrc/apbSubSystem.h +167 -0
  73. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/ahbbus22.xml +236 -0
  74. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/tlmsrc/ahbbus.h +52 -0
  75. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/ahbram.xml +184 -0
  76. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.cc +93 -0
  77. data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.h +77 -0
  78. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/apbbus8.xml +544 -0
  79. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/tlmsrc/apbbus.h +55 -0
  80. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/apbmst.xml +209 -0
  81. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/tlmsrc/apbmst.h +53 -0
  82. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/apbram.xml +395 -0
  83. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.cc +89 -0
  84. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.h +69 -0
  85. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.v +82 -0
  86. data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.vhd +132 -0
  87. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/cgu.xml +686 -0
  88. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.cc +121 -0
  89. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.h +81 -0
  90. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/cgu.xml +707 -0
  91. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.cc +121 -0
  92. data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.h +81 -0
  93. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/dma.xml +272 -0
  94. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.cc +230 -0
  95. data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.h +116 -0
  96. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/irqctrl.xml +530 -0
  97. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.cc +211 -0
  98. data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.h +108 -0
  99. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/processor.xml +423 -0
  100. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.cc +331 -0
  101. data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.h +121 -0
  102. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/pv2apb.xml +240 -0
  103. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.cc +153 -0
  104. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.h +77 -0
  105. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/pv2tac.xml +154 -0
  106. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.cc +114 -0
  107. data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.h +67 -0
  108. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/rgu.xml +766 -0
  109. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.cc +126 -0
  110. data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.h +105 -0
  111. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/scmlAdaptor.xml +154 -0
  112. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.cc +100 -0
  113. data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.h +62 -0
  114. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/serial_device.xml +151 -0
  115. data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/tlmsrc/serial_device.h +85 -0
  116. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/timers.xml +460 -0
  117. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.cc +201 -0
  118. data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.h +102 -0
  119. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart.h +152 -0
  120. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_fifo.h +113 -0
  121. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_memory_map.h +96 -0
  122. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_types.h +60 -0
  123. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart.cc +125 -0
  124. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_interrupt_handler.cc +136 -0
  125. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_register_bank.cc +129 -0
  126. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_serial_tx_rx.cc +145 -0
  127. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/uart_scml.xml +372 -0
  128. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/Leon2_uart.h +216 -0
  129. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/def_Leon2_uart.h +34 -0
  130. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_field.h +72 -0
  131. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_register.h +129 -0
  132. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlmreg_Leon2_uart.h +133 -0
  133. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/Leon2_uart.cc +316 -0
  134. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/tlmreg_Leon2_uart.cc +197 -0
  135. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/user_specific_Leon2_uart.cc +146 -0
  136. data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/uart_tac.xml +222 -0
  137. data/spec/unit/component_spec.rb +98 -0
  138. data/spec/unit/graph_pathfinder_spec.rb +128 -0
  139. data/spec/unit/interconnect_spec.rb +177 -0
  140. data/spec/unit/ipxact_spec.rb +69 -0
  141. data/spec/unit/platform_spec.rb +34 -0
  142. metadata +225 -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>