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.
- data/.autotest +15 -0
- data/.gitignore +2 -0
- data/README.html +89 -0
- data/README.mdown +91 -0
- data/Rakefile +31 -0
- data/VERSION +1 -0
- data/autotest/discover.rb +17 -0
- data/lib/ipxact.rb +263 -0
- data/lib/ipxact/component.rb +235 -0
- data/lib/ipxact/parser.rb +27 -0
- data/lib/ipxact/parser/bus_data_parser.rb +229 -0
- data/lib/ipxact/parser/component_data_parser.rb +309 -0
- data/lib/ipxact/parser/platform_data_parser.rb +63 -0
- data/lib/ipxact/pathfinder/graph_pathfinder.rb +191 -0
- data/lib/ipxact/platform.rb +43 -0
- data/schemas/abstractionDefinition.xsd +332 -0
- data/schemas/abstractor.xsd +156 -0
- data/schemas/autoConfigure.xsd +226 -0
- data/schemas/busDefinition.xsd +99 -0
- data/schemas/busInterface.xsd +640 -0
- data/schemas/commonStructures.xsd +189 -0
- data/schemas/component.xsd +253 -0
- data/schemas/configurable.xsd +82 -0
- data/schemas/constraints.xsd +283 -0
- data/schemas/design.xsd +105 -0
- data/schemas/designConfig.xsd +144 -0
- data/schemas/file.xsd +560 -0
- data/schemas/fileType.xsd +86 -0
- data/schemas/generator.xsd +240 -0
- data/schemas/identifier.xsd +93 -0
- data/schemas/index.xsd +67 -0
- data/schemas/memoryMap.xsd +1007 -0
- data/schemas/model.xsd +291 -0
- data/schemas/port.xsd +441 -0
- data/schemas/signalDrivers.xsd +220 -0
- data/schemas/simpleTypes.xsd +90 -0
- data/schemas/subInstances.xsd +256 -0
- data/spec/integration/bus_data_extraction_spec.rb +105 -0
- data/spec/integration/data_calculation_spec.rb +133 -0
- data/spec/integration/data_construction_spec.rb +52 -0
- data/spec/integration/general_spec.rb +121 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.h +135 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port.tpp +247 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_initiator_port_base.h +189 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.h +205 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_router.tpp +278 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.h +115 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_slave_base.tpp +126 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port.h +168 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_target_port_base.h +133 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/pv_tlm_if.h +280 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/PV/user_types.h +38 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/Leon2Platform.xml +77 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/design_Leon2Platform.xml +156 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/Leon2Platform/tlmsrc/Leon2Platform.h +149 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/apbSubSystem.xml +406 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/design_apbSubSystem.xml +135 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM1/apbSubSystem/tlmsrc/apbSubSystem.h +133 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/Leon2Platform.xml +77 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/design_Leon2Platform.xml +157 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/Leon2Platform/tlmsrc/Leon2Platform.h +150 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/apbSubSystem.xml +422 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/designConfig_apbSubSystem.xml +79 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/design_apbSubSystem.xml +184 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM2/apbSubSystem/tlmsrc/apbSubSystem.h +164 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/Leon2Platform.xml +105 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/design_Leon2Platform.xml +157 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/Leon2Platform/tlmsrc/Leon2Platform.h +152 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/apbSubSystem.xml +429 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/designConfig_apbSubSystem.xml +64 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/design_apbSubSystem.xml +150 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/SystemTLM3/apbSubSystem/tlmsrc/apbSubSystem.h +167 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/ahbbus22.xml +236 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbbus/1.4/tlmsrc/ahbbus.h +52 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/ahbram.xml +184 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.cc +93 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/ahbram/1.4/tlmsrc/ahbram.h +77 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/apbbus8.xml +544 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbbus/1.4/tlmsrc/apbbus.h +55 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/apbmst.xml +209 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbmst/1.4/tlmsrc/apbmst.h +53 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/apbram.xml +395 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.cc +89 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.h +69 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.v +82 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/apbram/1.0/hdlsrc/apbram.vhd +132 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/cgu.xml +686 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.cc +121 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.4/tlmsrc/cgu.h +81 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/cgu.xml +707 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.cc +121 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/cgu/1.5/tlmsrc/cgu.h +81 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/dma.xml +272 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.cc +230 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/dma/1.4/tlmsrc/dma.h +116 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/irqctrl.xml +530 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.cc +211 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/irqctrl/1.4/tlmsrc/irqctrl.h +108 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/processor.xml +423 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.cc +331 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/processor/1.4/tlmsrc/processor.h +121 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/pv2apb.xml +240 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.cc +153 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2apb/1.0/tlmsrc/pv2apb.h +77 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/pv2tac.xml +154 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.cc +114 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/pv2tac/1.0/tlmsrc/pv2tac.h +67 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/rgu.xml +766 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.cc +126 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/rgu/1.4/tlmsrc/rgu.h +105 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/scmlAdaptor.xml +154 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.cc +100 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/scmlAdaptor/1.0/tlmsrc/scmladaptor.h +62 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/serial_device.xml +151 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/serial_device/1.0/tlmsrc/serial_device.h +85 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/timers.xml +460 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.cc +201 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/timers/1.4/tlmsrc/timers.h +102 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart.h +152 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_fifo.h +113 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_memory_map.h +96 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/inc/uart_types.h +60 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart.cc +125 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_interrupt_handler.cc +136 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_register_bank.cc +129 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/tlmsrc/src/uart_serial_tx_rx.cc +145 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_scml/1.0/uart_scml.xml +372 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/Leon2_uart.h +216 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/def_Leon2_uart.h +34 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_field.h +72 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlm_register.h +129 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/include/tlmreg_Leon2_uart.h +133 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/Leon2_uart.cc +316 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/tlmreg_Leon2_uart.cc +197 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/tlmsrc/src/user_specific_Leon2_uart.cc +146 -0
- data/spec/test_data/spiritconsortium.org/Leon2TLM/uart_tac/1.0/uart_tac.xml +222 -0
- data/spec/unit/component_spec.rb +98 -0
- data/spec/unit/graph_pathfinder_spec.rb +128 -0
- data/spec/unit/interconnect_spec.rb +177 -0
- data/spec/unit/ipxact_spec.rb +69 -0
- data/spec/unit/platform_spec.rb +34 -0
- 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>
|