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,230 @@
1
+ /*------------------------------------------------------------------------------
2
+ * Simple TLM DMA
3
+ *
4
+ * Revision: $Revision: 1506 $
5
+ * Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
6
+ *
7
+ * Copyright (c) 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
+ * The following code is derived, directly or indirectly, from the SystemC
29
+ * source code Copyright (c) 1996-2006 by all Contributors.
30
+ * All Rights reserved.
31
+ *
32
+ * The contents of this file are subject to the restrictions and limitations
33
+ * set forth in the SystemC Open Source License Version 2.4 (the "License");
34
+ * You may not use this file except in compliance with such restrictions and
35
+ * limitations. You may obtain instructions on how to receive a copy of the
36
+ * License at http://www.systemc.org/. Software distributed by Contributors
37
+ * under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
38
+ * ANY KIND, either express or implied. See the License for the specific
39
+ * language governing rights and limitations under the License.
40
+ *
41
+ *------------------------------------------------------------------------------*/
42
+
43
+
44
+ /*------------------------------------------------------------------------------
45
+ * Includes
46
+ *----------------------------------------------------------------------------*/
47
+ #include "dma.h"
48
+
49
+
50
+ /*------------------------------------------------------------------------------
51
+ * Constants
52
+ *----------------------------------------------------------------------------*/
53
+ // Register relative addresses
54
+ const int dma::SRC_ADDR;
55
+ const int dma::DST_ADDR;
56
+ const int dma::LENGTH;
57
+ const int dma::CONTROL;
58
+
59
+ // Control register bit
60
+ const int dma::START;
61
+ const int dma::IRQ;
62
+
63
+ //----------------
64
+ // Constructor
65
+ //----------------
66
+ dma::dma(sc_module_name module_name,
67
+ tlm::tlm_endianness endian) :
68
+ sc_module(module_name),
69
+ pv_slave_base<ADDRESS_TYPE,DATA_TYPE>(name()),
70
+ apb_slave_port("apb_slave_port"),
71
+ ahb_master_port("ahb_master_port"),
72
+ m_endian(endian),
73
+ m_dma_src_addr(0),
74
+ m_dma_dst_addr(0),
75
+ m_dma_control(0) {
76
+
77
+ apb_slave_port(*this);
78
+
79
+ SC_METHOD(transfer);
80
+ sensitive << m_start_transfer;
81
+ dont_initialize();
82
+
83
+ SC_METHOD(irq);
84
+ sensitive << m_irq_to_change;
85
+ dont_initialize();
86
+
87
+ int_master_port.initialize(false);
88
+
89
+ std::cout << name() << " module created - "<< ((m_endian == tlm::TLM_BIG_ENDIAN) ? "big": "little") << " endian\n";
90
+
91
+ }
92
+
93
+
94
+ //----------------------------------------
95
+ // pv_if virtual method implementation
96
+ //----------------------------------------
97
+
98
+ //------------------------------------------------------------------------------
99
+ // DMA read access
100
+
101
+ tlm::tlm_status dma::read(const ADDRESS_TYPE &addr , DATA_TYPE &data,
102
+ const unsigned int byte_enable,
103
+ const tlm::tlm_mode mode,
104
+ const unsigned int export_id
105
+ ) {
106
+ tlm::tlm_status status;
107
+
108
+ switch (addr)
109
+ {
110
+ case SRC_ADDR:
111
+ data = m_dma_src_addr; // Read dma source address register
112
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": read dma source address register, returns " << m_dma_src_addr << std::endl;
113
+ break;
114
+
115
+ case DST_ADDR:
116
+ data = m_dma_dst_addr; // Read dma destination address register
117
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": read dma destination address register, returns " << m_dma_dst_addr << std::endl;
118
+ break;
119
+
120
+ case CONTROL:
121
+ data= m_dma_control;
122
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": read dma control register, returns " << (int)m_dma_control << std::endl;
123
+ wait(SC_ZERO_TIME); // control register is a system synchronization point
124
+ break;
125
+
126
+ default:
127
+ std::cout << "ERROR\t" << name() << std::showbase << std::hex;
128
+ std::cout << ": DMA has received a request with input address out of range: " << addr << std::endl;
129
+ return(status);
130
+ }
131
+
132
+ status.set_ok();
133
+
134
+ return(status);
135
+ }
136
+
137
+
138
+ //------------------------------------------------------------------------------
139
+ // Write access
140
+ tlm::tlm_status dma::write(const ADDRESS_TYPE &addr , const DATA_TYPE &data,
141
+ const unsigned int byte_enable,
142
+ const tlm::tlm_mode mode,
143
+ const unsigned int export_id
144
+ ) {
145
+ tlm::tlm_status status;
146
+
147
+ switch (addr)
148
+ {
149
+ case SRC_ADDR:
150
+ m_dma_src_addr = data; // Write dma source address register
151
+ break;
152
+
153
+ case DST_ADDR:
154
+ m_dma_dst_addr = data; // Write dma destination address register
155
+ break;
156
+
157
+ case CONTROL:
158
+ {
159
+ if (data==0x1a08 ){
160
+ //&& (!( m_dma_control & START))) {
161
+ m_start_transfer.notify();
162
+ m_dma_control |= START;
163
+ }
164
+ if ((!(data & IRQ)) && (m_dma_control & IRQ)) {
165
+ m_dma_control &= ~IRQ;
166
+ m_irq_to_change.notify();
167
+ }
168
+ }
169
+ break;
170
+
171
+ default:
172
+ std::cout << "ERROR\t[" << name() << "]: received a request with input address out of range: "
173
+ << std::showbase << std::hex << addr << std::endl;
174
+ return(status);
175
+ }
176
+ status.set_ok();
177
+ return(status);
178
+ }
179
+
180
+
181
+ //------------------------------------------------------------------------------
182
+ // Transfer end IRQ signal management
183
+ void dma::irq() {
184
+ if (m_dma_control & IRQ) {
185
+ int_master_port.write(true);
186
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": rise transfer end IRQ \n";
187
+ } else {
188
+ int_master_port.write(false);
189
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": clear transfer end IRQ \n";
190
+ }
191
+ }
192
+
193
+
194
+ //------------------------------------------------------------------------------
195
+ // dma transfer management
196
+ void dma::transfer() {
197
+ tlm::tlm_status status;
198
+ // if (m_dma_control & START) {
199
+ std::cout << "DEBUG\t" << name() << std::showbase << std::hex << ": dma transfer started. Source address: "
200
+ << m_dma_src_addr << " - destination address: " << m_dma_dst_addr << std::endl;
201
+
202
+ // starts the memory transfer
203
+ // copy data from memory start address (SRC_ADDR) to memory destination address (DST_ADDR)
204
+ DATA_TYPE tmp;
205
+ for(int i = 0;i<LENGTH;i++) {
206
+ status = ahb_master_port.read(m_dma_src_addr + i,tmp);
207
+ if (status.is_error())
208
+ std::cout << "ERROR\t" << name() << ": read memory failure at " << (m_dma_src_addr +i) << std::endl;
209
+ else {
210
+ status = ahb_master_port.write(m_dma_dst_addr + i,tmp);
211
+ if (status.is_error())
212
+ std::cout << "ERROR\t" << name() << ": write memory failure at " << (m_dma_dst_addr +i) << std::endl;
213
+ }
214
+ }
215
+
216
+ // Clear the START bit of the control register
217
+ m_dma_control &= ~START;
218
+
219
+ // Interrupt generation
220
+ if (!(m_dma_control&IRQ)) {
221
+ m_dma_control |= IRQ;
222
+ m_irq_to_change.notify();
223
+ }
224
+ }
225
+
226
+
227
+
228
+
229
+
230
+ /* END of dma.cc */
@@ -0,0 +1,116 @@
1
+ /*------------------------------------------------------------------------------
2
+ * Simple TLM DMA
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
+ * The following code is derived, directly or indirectly, from the SystemC
29
+ * source code Copyright (c) 1996-2006 by all Contributors.
30
+ * All Rights reserved.
31
+ *
32
+ * The contents of this file are subject to the restrictions and limitations
33
+ * set forth in the SystemC Open Source License Version 2.4 (the "License");
34
+ * You may not use this file except in compliance with such restrictions and
35
+ * limitations. You may obtain instructions on how to receive a copy of the
36
+ * License at http://www.systemc.org/. Software distributed by Contributors
37
+ * under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
38
+ * ANY KIND, either express or implied. See the License for the specific
39
+ * language governing rights and limitations under the License.
40
+ *------------------------------------------------------------------------------*/
41
+
42
+ #ifndef _DMA_H_
43
+ #define _DMA_H_
44
+
45
+ /*------------------------------------------------------------------------------
46
+ * Includes
47
+ *----------------------------------------------------------------------------*/
48
+ #include "systemc.h"
49
+ #include "pv_slave_base.h"
50
+ #include "pv_target_port.h"
51
+ #include "pv_initiator_port.h"
52
+ #include "user_types.h"
53
+
54
+ //------------------------------------------------------------------------------
55
+ class dma :
56
+ public sc_module,
57
+ public pv_slave_base< ADDRESS_TYPE , DATA_TYPE >
58
+ {
59
+ public :
60
+
61
+ // Registers relative addresses
62
+ static const int SRC_ADDR = 0x0000;
63
+ static const int DST_ADDR = 0x0004;
64
+ static const int CONTROL = 0x0008;
65
+ // hardcoded lenght of the block transfer
66
+ static const int LENGTH = 0x001F;
67
+
68
+ // Control register bits
69
+ static const int START = 0x1000;
70
+ static const int IRQ = 0x0010;
71
+
72
+
73
+ //---------------
74
+ // Module ports
75
+ //---------------
76
+ pv_target_port<ADDRESS_TYPE , DATA_TYPE> apb_slave_port;
77
+ pv_initiator_port<ADDRESS_TYPE , DATA_TYPE> ahb_master_port;
78
+ sc_out<int> int_master_port;
79
+
80
+ //----------------
81
+ // Constructor
82
+ //----------------
83
+ SC_HAS_PROCESS(dma);
84
+ dma(sc_module_name module_name,
85
+ tlm::tlm_endianness endian = PV_HOST_ENDIAN);
86
+
87
+ //--------------------------------------------------------------------------------------------
88
+ //Abstract class pv_if methods implementation (overides pv_slave_base default implementation)
89
+ //--------------------------------------------------------------------------------------------
90
+
91
+ tlm::tlm_status write( const ADDRESS_TYPE &addr , const DATA_TYPE &data,
92
+ const unsigned int byte_enable = tlm::NO_BE,
93
+ const tlm::tlm_mode mode = tlm::REGULAR,
94
+ const unsigned int export_id = 0 );
95
+ tlm::tlm_status read( const ADDRESS_TYPE &addr , DATA_TYPE &data,
96
+ const unsigned int byte_enable = tlm::NO_BE,
97
+ const tlm::tlm_mode mode = tlm::REGULAR,
98
+ const unsigned int export_id = 0 );
99
+
100
+
101
+ protected:
102
+
103
+ tlm::tlm_endianness m_endian; // dma endianness
104
+ sc_event m_start_transfer; // dma process related event (start)
105
+ sc_event m_irq_to_change; // rise/clear interrupt signal related event
106
+ ADDRESS_TYPE m_dma_src_addr; // Source address register
107
+ ADDRESS_TYPE m_dma_dst_addr; // Destination address register
108
+ tlm::tlm_uint8_t m_dma_control; // control register (8 bits register)
109
+
110
+ void transfer(); // dma transfer management process
111
+ void irq(); // dma transfer end IRQ signal management process
112
+ };
113
+
114
+ #endif /* _DMA_H_ */
115
+
116
+
@@ -0,0 +1,530 @@
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>irqctrl</spirit:name>
32
+ <spirit:version>1.4</spirit:version>
33
+ <spirit:busInterfaces>
34
+ <spirit:busInterface>
35
+ <spirit:name>APB_Slave</spirit:name>
36
+ <spirit:busType spirit:library="AMBA2" spirit:name="APB" spirit:vendor="amba.com" spirit:version="r2p0_4"/>
37
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="apb_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
38
+ <spirit:slave>
39
+ <spirit:memoryMapRef spirit:memoryMapRef="APB_MM"/>
40
+ </spirit:slave>
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>apb_slave_port</spirit:name>
49
+ </spirit:physicalPort>
50
+ </spirit:portMap>
51
+ </spirit:portMaps>
52
+ </spirit:busInterface>
53
+ <spirit:busInterface>
54
+ <spirit:name>INT_Master</spirit:name>
55
+ <spirit:busType spirit:library="busdef.leon2" spirit:name="IntProc" spirit:vendor="spiritconsortium.org" spirit:version="v1.0"/>
56
+ <spirit:abstractionType spirit:library="abstractiondef.tlm" spirit:name="IntProc_pv" spirit:vendor="spiritconsortium.org" spirit:version="1.4"/>
57
+ <spirit:master/>
58
+ <spirit:portMaps>
59
+ <spirit:portMap>
60
+ <spirit:logicalPort>
61
+ <spirit:name>IRL</spirit:name>
62
+ </spirit:logicalPort>
63
+ <spirit:physicalPort>
64
+ <spirit:name>irlout</spirit:name>
65
+ </spirit:physicalPort>
66
+ </spirit:portMap>
67
+ <spirit:portMap>
68
+ <spirit:logicalPort>
69
+ <spirit:name>IRQVEC</spirit:name>
70
+ </spirit:logicalPort>
71
+ <spirit:physicalPort>
72
+ <spirit:name>irlin</spirit:name>
73
+ </spirit:physicalPort>
74
+ </spirit:portMap>
75
+ <spirit:portMap>
76
+ <spirit:logicalPort>
77
+ <spirit:name>INTack</spirit:name>
78
+ </spirit:logicalPort>
79
+ <spirit:physicalPort>
80
+ <spirit:name>intack</spirit:name>
81
+ </spirit:physicalPort>
82
+ </spirit:portMap>
83
+ </spirit:portMaps>
84
+ </spirit:busInterface>
85
+ <spirit:busInterface>
86
+ <spirit:name>INT_Slave4</spirit:name>
87
+ <spirit:busType spirit:library="busdef.interrupt" spirit:name="interrupt" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
88
+ <spirit:abstractionType spirit:library="busdef.interrupt" spirit:name="interrupt_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
89
+ <spirit:slave/>
90
+ <spirit:portMaps>
91
+ <spirit:portMap>
92
+ <spirit:logicalPort>
93
+ <spirit:name>IRQ</spirit:name>
94
+ </spirit:logicalPort>
95
+ <spirit:physicalPort>
96
+ <spirit:name>int4</spirit:name>
97
+ </spirit:physicalPort>
98
+ </spirit:portMap>
99
+ </spirit:portMaps>
100
+ </spirit:busInterface>
101
+ <spirit:busInterface>
102
+ <spirit:name>INT_Slave3</spirit:name>
103
+ <spirit:busType spirit:library="busdef.interrupt" spirit:name="interrupt" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
104
+ <spirit:abstractionType spirit:library="busdef.interrupt" spirit:name="interrupt_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
105
+ <spirit:slave/>
106
+ <spirit:portMaps>
107
+ <spirit:portMap>
108
+ <spirit:logicalPort>
109
+ <spirit:name>IRQ</spirit:name>
110
+ </spirit:logicalPort>
111
+ <spirit:physicalPort>
112
+ <spirit:name>int3</spirit:name>
113
+ </spirit:physicalPort>
114
+ </spirit:portMap>
115
+ </spirit:portMaps>
116
+ </spirit:busInterface>
117
+ <spirit:busInterface>
118
+ <spirit:name>INT_Slave2</spirit:name>
119
+ <spirit:busType spirit:library="busdef.interrupt" spirit:name="interrupt" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
120
+ <spirit:abstractionType spirit:library="busdef.interrupt" spirit:name="interrupt_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
121
+ <spirit:slave/>
122
+ <spirit:portMaps>
123
+ <spirit:portMap>
124
+ <spirit:logicalPort>
125
+ <spirit:name>IRQ</spirit:name>
126
+ </spirit:logicalPort>
127
+ <spirit:physicalPort>
128
+ <spirit:name>int2</spirit:name>
129
+ </spirit:physicalPort>
130
+ </spirit:portMap>
131
+ </spirit:portMaps>
132
+ </spirit:busInterface>
133
+ <spirit:busInterface>
134
+ <spirit:name>INT_Slave1</spirit:name>
135
+ <spirit:busType spirit:library="busdef.interrupt" spirit:name="interrupt" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
136
+ <spirit:abstractionType spirit:library="busdef.interrupt" spirit:name="interrupt_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
137
+ <spirit:slave/>
138
+ <spirit:portMaps>
139
+ <spirit:portMap>
140
+ <spirit:logicalPort>
141
+ <spirit:name>IRQ</spirit:name>
142
+ </spirit:logicalPort>
143
+ <spirit:physicalPort>
144
+ <spirit:name>int1</spirit:name>
145
+ </spirit:physicalPort>
146
+ </spirit:portMap>
147
+ </spirit:portMaps>
148
+ </spirit:busInterface>
149
+ <spirit:busInterface>
150
+ <spirit:name>INT_Slave0</spirit:name>
151
+ <spirit:busType spirit:library="busdef.interrupt" spirit:name="interrupt" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
152
+ <spirit:abstractionType spirit:library="busdef.interrupt" spirit:name="interrupt_rtl" spirit:vendor="spiritconsortium.org" spirit:version="1.0"/>
153
+ <spirit:slave/>
154
+ <spirit:portMaps>
155
+ <spirit:portMap>
156
+ <spirit:logicalPort>
157
+ <spirit:name>IRQ</spirit:name>
158
+ </spirit:logicalPort>
159
+ <spirit:physicalPort>
160
+ <spirit:name>int0</spirit:name>
161
+ </spirit:physicalPort>
162
+ </spirit:portMap>
163
+ </spirit:portMaps>
164
+ </spirit:busInterface>
165
+ </spirit:busInterfaces>
166
+ <spirit:memoryMaps>
167
+ <spirit:memoryMap>
168
+ <spirit:name>APB_MM</spirit:name>
169
+ <spirit:addressBlock>
170
+ <spirit:name>apbMemoryMap</spirit:name>
171
+ <spirit:baseAddress>0</spirit:baseAddress>
172
+ <spirit:range spirit:format="long">64</spirit:range>
173
+ <spirit:width spirit:id="width" spirit:format="long">32</spirit:width>
174
+ <spirit:register>
175
+ <spirit:name>interrupMaskandPriorityLevel</spirit:name>
176
+ <spirit:description>Interrupt Mask and Priority</spirit:description>
177
+ <spirit:addressOffset>0x0</spirit:addressOffset>
178
+ <spirit:size>32</spirit:size>
179
+ <spirit:access>read-write</spirit:access>
180
+ <spirit:reset>
181
+ <spirit:value>0x0</spirit:value>
182
+ <spirit:mask>0xFFFE</spirit:mask>
183
+ </spirit:reset>
184
+ <spirit:field>
185
+ <spirit:name>Reserved1</spirit:name>
186
+ <spirit:description>Reserved</spirit:description>
187
+ <spirit:bitOffset>0</spirit:bitOffset>
188
+ <spirit:bitWidth>1</spirit:bitWidth>
189
+ <spirit:volatile>true</spirit:volatile>
190
+ <spirit:access>read-write</spirit:access>
191
+ <spirit:testable>false</spirit:testable>
192
+ </spirit:field>
193
+ <spirit:field>
194
+ <spirit:name>imask</spirit:name>
195
+ <spirit:description>Indicates if an interrupt is masked (bit=0) or enabled (bit=1)</spirit:description>
196
+ <spirit:bitOffset>1</spirit:bitOffset>
197
+ <spirit:bitWidth>15</spirit:bitWidth>
198
+ <spirit:volatile>true</spirit:volatile>
199
+ <spirit:access>read-write</spirit:access>
200
+ <spirit:testable>false</spirit:testable>
201
+ </spirit:field>
202
+ <spirit:field>
203
+ <spirit:name>Reserved2</spirit:name>
204
+ <spirit:description>Reserved</spirit:description>
205
+ <spirit:bitOffset>16</spirit:bitOffset>
206
+ <spirit:bitWidth>1</spirit:bitWidth>
207
+ <spirit:volatile>true</spirit:volatile>
208
+ <spirit:access>read-write</spirit:access>
209
+ <spirit:testable>false</spirit:testable>
210
+ </spirit:field>
211
+ <spirit:field>
212
+ <spirit:name>ilevel</spirit:name>
213
+ <spirit:description>Indicates if an interrupt belongs to priority level 1 (bit=1) or 0 (bit=0)</spirit:description>
214
+ <spirit:bitOffset>17</spirit:bitOffset>
215
+ <spirit:bitWidth>15</spirit:bitWidth>
216
+ <spirit:volatile>true</spirit:volatile>
217
+ <spirit:access>read-write</spirit:access>
218
+ <spirit:testable>false</spirit:testable>
219
+ </spirit:field>
220
+ </spirit:register>
221
+ <spirit:register>
222
+ <spirit:name>interruptPendingRegister</spirit:name>
223
+ <spirit:description>Indicates if an interrupt is pending</spirit:description>
224
+ <spirit:addressOffset>0x4</spirit:addressOffset>
225
+ <spirit:size>32</spirit:size>
226
+ <spirit:access>read-write</spirit:access>
227
+ <spirit:field>
228
+ <spirit:name>Reserved1</spirit:name>
229
+ <spirit:description>Reserved</spirit:description>
230
+ <spirit:bitOffset>0</spirit:bitOffset>
231
+ <spirit:bitWidth>1</spirit:bitWidth>
232
+ <spirit:volatile>true</spirit:volatile>
233
+ <spirit:access>read-write</spirit:access>
234
+ <spirit:testable>false</spirit:testable>
235
+ </spirit:field>
236
+ <spirit:field>
237
+ <spirit:name>ipend</spirit:name>
238
+ <spirit:description>Indicates if an interrupt is pending (bit=1)</spirit:description>
239
+ <spirit:bitOffset>1</spirit:bitOffset>
240
+ <spirit:bitWidth>15</spirit:bitWidth>
241
+ <spirit:volatile>true</spirit:volatile>
242
+ <spirit:access>read-write</spirit:access>
243
+ <spirit:testable>false</spirit:testable>
244
+ </spirit:field>
245
+ <spirit:field>
246
+ <spirit:name>Reserved2</spirit:name>
247
+ <spirit:description>Reserved</spirit:description>
248
+ <spirit:bitOffset>16</spirit:bitOffset>
249
+ <spirit:bitWidth>16</spirit:bitWidth>
250
+ <spirit:volatile>true</spirit:volatile>
251
+ <spirit:access>read-write</spirit:access>
252
+ <spirit:testable>false</spirit:testable>
253
+ </spirit:field>
254
+ </spirit:register>
255
+ <spirit:register>
256
+ <spirit:name>interruptForceRegister</spirit:name>
257
+ <spirit:description>Indicates if an interrupt is being forced</spirit:description>
258
+ <spirit:addressOffset>0x8</spirit:addressOffset>
259
+ <spirit:size>32</spirit:size>
260
+ <spirit:access>read-write</spirit:access>
261
+ <spirit:field>
262
+ <spirit:name>Reserved1</spirit:name>
263
+ <spirit:description>Reserved</spirit:description>
264
+ <spirit:bitOffset>0</spirit:bitOffset>
265
+ <spirit:bitWidth>1</spirit:bitWidth>
266
+ <spirit:volatile>true</spirit:volatile>
267
+ <spirit:access>read-write</spirit:access>
268
+ <spirit:testable>false</spirit:testable>
269
+ </spirit:field>
270
+ <spirit:field>
271
+ <spirit:name>iforce</spirit:name>
272
+ <spirit:description>Indicates if an interrupt is being forced (bit=1)</spirit:description>
273
+ <spirit:bitOffset>1</spirit:bitOffset>
274
+ <spirit:bitWidth>15</spirit:bitWidth>
275
+ <spirit:volatile>true</spirit:volatile>
276
+ <spirit:access>read-write</spirit:access>
277
+ <spirit:testable>false</spirit:testable>
278
+ </spirit:field>
279
+ <spirit:field>
280
+ <spirit:name>Reserved2</spirit:name>
281
+ <spirit:description>Reserved</spirit:description>
282
+ <spirit:bitOffset>16</spirit:bitOffset>
283
+ <spirit:bitWidth>16</spirit:bitWidth>
284
+ <spirit:volatile>true</spirit:volatile>
285
+ <spirit:access>read-write</spirit:access>
286
+ <spirit:testable>false</spirit:testable>
287
+ </spirit:field>
288
+ </spirit:register>
289
+ <spirit:register>
290
+ <spirit:name>interruptClearRegister</spirit:name>
291
+ <spirit:description>If written with a '1', will clear corresponding bit(s) in interrupt pending register. A read returns 0.</spirit:description>
292
+ <spirit:addressOffset>0xc</spirit:addressOffset>
293
+ <spirit:size>32</spirit:size>
294
+ <spirit:access>read-write</spirit:access>
295
+ <spirit:field>
296
+ <spirit:name>Reserved1</spirit:name>
297
+ <spirit:description>Reserved</spirit:description>
298
+ <spirit:bitOffset>0</spirit:bitOffset>
299
+ <spirit:bitWidth>1</spirit:bitWidth>
300
+ <spirit:volatile>true</spirit:volatile>
301
+ <spirit:access>read-write</spirit:access>
302
+ <spirit:testable>false</spirit:testable>
303
+ </spirit:field>
304
+ <spirit:field>
305
+ <spirit:name>iforce</spirit:name>
306
+ <spirit:description>If written with a '1', will clear corresponding bit(s) in interrupt pending register. A read returns 0.</spirit:description>
307
+ <spirit:bitOffset>1</spirit:bitOffset>
308
+ <spirit:bitWidth>15</spirit:bitWidth>
309
+ <spirit:volatile>true</spirit:volatile>
310
+ <spirit:access>read-write</spirit:access>
311
+ <spirit:testable>false</spirit:testable>
312
+ </spirit:field>
313
+ <spirit:field>
314
+ <spirit:name>Reserved2</spirit:name>
315
+ <spirit:description>Reserved</spirit:description>
316
+ <spirit:bitOffset>16</spirit:bitOffset>
317
+ <spirit:bitWidth>16</spirit:bitWidth>
318
+ <spirit:volatile>true</spirit:volatile>
319
+ <spirit:access>read-write</spirit:access>
320
+ <spirit:testable>false</spirit:testable>
321
+ </spirit:field>
322
+ </spirit:register>
323
+ <spirit:register>
324
+ <spirit:name>interruptReadClearPendingRegister</spirit:name>
325
+ <spirit:description>interruptReadClearPendingRegister</spirit:description>
326
+ <spirit:addressOffset>0x10</spirit:addressOffset>
327
+ <spirit:size>32</spirit:size>
328
+ <spirit:volatile>true</spirit:volatile>
329
+ <spirit:access>read-write</spirit:access>
330
+ </spirit:register>
331
+ </spirit:addressBlock>
332
+ </spirit:memoryMap>
333
+ </spirit:memoryMaps>
334
+ <spirit:model>
335
+ <spirit:views>
336
+ <spirit:view>
337
+ <spirit:name>TLM_PV</spirit:name>
338
+ <spirit:envIdentifier>:*Simulation:</spirit:envIdentifier>
339
+ <spirit:language>systemc</spirit:language>
340
+ <spirit:modelName>irqctrl</spirit:modelName>
341
+ <spirit:fileSetRef>
342
+ <spirit:localName>sourceCode</spirit:localName>
343
+ </spirit:fileSetRef>
344
+ </spirit:view>
345
+ </spirit:views>
346
+ <spirit:ports>
347
+ <spirit:port>
348
+ <spirit:name>apb_slave_port</spirit:name>
349
+ <spirit:transactional>
350
+ <spirit:transTypeDef>
351
+ <spirit:typeName>pv_target_port</spirit:typeName>
352
+ <spirit:typeDefinition>pv_target_port.h</spirit:typeDefinition>
353
+ </spirit:transTypeDef>
354
+ <spirit:service>
355
+ <spirit:initiative>provides</spirit:initiative>
356
+ <spirit:serviceTypeDefs>
357
+ <spirit:serviceTypeDef>
358
+ <spirit:typeName spirit:implicit="true">OSCI_TLM_PV</spirit:typeName>
359
+ <spirit:parameters>
360
+ <spirit:parameter>
361
+ <spirit:name>typedef1</spirit:name>
362
+ <spirit:value>ADDRESS_TYPE</spirit:value>
363
+ </spirit:parameter>
364
+ <spirit:parameter>
365
+ <spirit:name>typedef2</spirit:name>
366
+ <spirit:value>DATA_TYPE</spirit:value>
367
+ </spirit:parameter>
368
+ </spirit:parameters>
369
+ </spirit:serviceTypeDef>
370
+ </spirit:serviceTypeDefs>
371
+ </spirit:service>
372
+ </spirit:transactional>
373
+ </spirit:port>
374
+ <spirit:port>
375
+ <spirit:name>int0</spirit:name>
376
+ <spirit:wire>
377
+ <spirit:direction>in</spirit:direction>
378
+ <spirit:wireTypeDefs>
379
+ <spirit:wireTypeDef>
380
+ <spirit:typeName>int</spirit:typeName>
381
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
382
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
383
+ </spirit:wireTypeDef>
384
+ </spirit:wireTypeDefs>
385
+ <spirit:driver>
386
+ <spirit:defaultValue>0</spirit:defaultValue>
387
+ </spirit:driver>
388
+ </spirit:wire>
389
+ </spirit:port>
390
+ <spirit:port>
391
+ <spirit:name>int1</spirit:name>
392
+ <spirit:wire>
393
+ <spirit:direction>in</spirit:direction>
394
+ <spirit:wireTypeDefs>
395
+ <spirit:wireTypeDef>
396
+ <spirit:typeName>int</spirit:typeName>
397
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
398
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
399
+ </spirit:wireTypeDef>
400
+ </spirit:wireTypeDefs>
401
+ <spirit:driver>
402
+ <spirit:defaultValue>0</spirit:defaultValue>
403
+ </spirit:driver>
404
+ </spirit:wire>
405
+ </spirit:port>
406
+ <spirit:port>
407
+ <spirit:name>int2</spirit:name>
408
+ <spirit:wire>
409
+ <spirit:direction>in</spirit:direction>
410
+ <spirit:wireTypeDefs>
411
+ <spirit:wireTypeDef>
412
+ <spirit:typeName>int</spirit:typeName>
413
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
414
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
415
+ </spirit:wireTypeDef>
416
+ </spirit:wireTypeDefs>
417
+ <spirit:driver>
418
+ <spirit:defaultValue>0</spirit:defaultValue>
419
+ </spirit:driver>
420
+ </spirit:wire>
421
+ </spirit:port>
422
+ <spirit:port>
423
+ <spirit:name>int3</spirit:name>
424
+ <spirit:wire>
425
+ <spirit:direction>in</spirit:direction>
426
+ <spirit:wireTypeDefs>
427
+ <spirit:wireTypeDef>
428
+ <spirit:typeName>int</spirit:typeName>
429
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
430
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
431
+ </spirit:wireTypeDef>
432
+ </spirit:wireTypeDefs>
433
+ <spirit:driver>
434
+ <spirit:defaultValue>0</spirit:defaultValue>
435
+ </spirit:driver>
436
+ </spirit:wire>
437
+ </spirit:port>
438
+ <spirit:port>
439
+ <spirit:name>int4</spirit:name>
440
+ <spirit:wire>
441
+ <spirit:direction>in</spirit:direction>
442
+ <spirit:wireTypeDefs>
443
+ <spirit:wireTypeDef>
444
+ <spirit:typeName>int</spirit:typeName>
445
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
446
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
447
+ </spirit:wireTypeDef>
448
+ </spirit:wireTypeDefs>
449
+ <spirit:driver>
450
+ <spirit:defaultValue>0</spirit:defaultValue>
451
+ </spirit:driver>
452
+ </spirit:wire>
453
+ </spirit:port>
454
+ <spirit:port>
455
+ <spirit:name>irlout</spirit:name>
456
+ <spirit:wire>
457
+ <spirit:direction>out</spirit:direction>
458
+ <spirit:wireTypeDefs>
459
+ <spirit:wireTypeDef>
460
+ <spirit:typeName>int</spirit:typeName>
461
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
462
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
463
+ </spirit:wireTypeDef>
464
+ </spirit:wireTypeDefs>
465
+ </spirit:wire>
466
+ </spirit:port>
467
+ <spirit:port>
468
+ <spirit:name>irlin</spirit:name>
469
+ <spirit:wire>
470
+ <spirit:direction>in</spirit:direction>
471
+ <spirit:wireTypeDefs>
472
+ <spirit:wireTypeDef>
473
+ <spirit:typeName>int</spirit:typeName>
474
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
475
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
476
+ </spirit:wireTypeDef>
477
+ </spirit:wireTypeDefs>
478
+ </spirit:wire>
479
+ </spirit:port>
480
+ <spirit:port>
481
+ <spirit:name>intack</spirit:name>
482
+ <spirit:wire>
483
+ <spirit:direction>in</spirit:direction>
484
+ <spirit:wireTypeDefs>
485
+ <spirit:wireTypeDef>
486
+ <spirit:typeName>bool</spirit:typeName>
487
+ <spirit:typeDefinition>systemc.h</spirit:typeDefinition>
488
+ <spirit:viewNameRef>TLM_PV</spirit:viewNameRef>
489
+ </spirit:wireTypeDef>
490
+ </spirit:wireTypeDefs>
491
+ <spirit:driver>
492
+ <spirit:defaultValue>0</spirit:defaultValue>
493
+ </spirit:driver>
494
+ </spirit:wire>
495
+ </spirit:port>
496
+ </spirit:ports>
497
+ </spirit:model>
498
+ <spirit:fileSets>
499
+ <spirit:fileSet>
500
+ <spirit:name>sourceCode</spirit:name>
501
+ <spirit:file>
502
+ <spirit:name>tlmsrc/irqctrl.cc</spirit:name>
503
+ <spirit:fileType>systemCSource</spirit:fileType>
504
+ <spirit:dependency>tlmsrc</spirit:dependency>
505
+ </spirit:file>
506
+ <spirit:file>
507
+ <spirit:name>tlmsrc/irqctrl.h</spirit:name>
508
+ <spirit:fileType>systemCSource</spirit:fileType>
509
+ <spirit:isIncludeFile spirit:externalDeclarations="true">true</spirit:isIncludeFile>
510
+ <spirit:logicalName>timers</spirit:logicalName>
511
+ <spirit:dependency>../../PV</spirit:dependency>
512
+ </spirit:file>
513
+ <spirit:file>
514
+ <spirit:name>../../PV/pv_slave_base.h</spirit:name>
515
+ <spirit:fileType>unknown</spirit:fileType>
516
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
517
+ </spirit:file>
518
+ <spirit:file>
519
+ <spirit:name>../../PV/pv_target_port.h</spirit:name>
520
+ <spirit:fileType>unknown</spirit:fileType>
521
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
522
+ </spirit:file>
523
+ <spirit:file>
524
+ <spirit:name>../../PV/user_types.h</spirit:name>
525
+ <spirit:fileType>unknown</spirit:fileType>
526
+ <spirit:isIncludeFile>true</spirit:isIncludeFile>
527
+ </spirit:file>
528
+ </spirit:fileSet>
529
+ </spirit:fileSets>
530
+ </spirit:component>