ipxact-ruby 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
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,226 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ // Description: autoConfigure.xsd
4
+ // Author: The SPIRIT Consortium Schema Working Group
5
+ //
6
+ // Revision: $Revision: 1506 $
7
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
8
+ //
9
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
10
+ //
11
+ // This work forms part of a deliverable of The SPIRIT Consortium.
12
+ //
13
+ // Use of these materials are governed by the legal terms and conditions
14
+ // outlined in the disclaimer available from www.spiritconsortium.org.
15
+ //
16
+ // This source file is provided on an AS IS basis. The SPIRIT
17
+ // Consortium disclaims any warranty express or implied including
18
+ // any warranty of merchantability and fitness for use for a
19
+ // particular purpose.
20
+ //
21
+ // The user of the source file shall indemnify and hold The SPIRIT
22
+ // Consortium and its members harmless from any damages or liability.
23
+ // Users are requested to provide feedback to The SPIRIT Consortium
24
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
25
+ // http://www.spiritconsortium.org/about/contact_us/
26
+ //
27
+ // This file may be copied, and distributed, WITHOUT
28
+ // modifications; this notice must be included on any copy.
29
+ -->
30
+ <xs:schema xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" elementFormDefault="qualified" attributeFormDefault="qualified">
31
+ <xs:include schemaLocation="configurable.xsd"/>
32
+ <xs:simpleType name="formatType">
33
+ <xs:annotation>
34
+ <xs:documentation>This is an indication on the formatof the value for user defined properties. bitString means either a double quoted string of 1's an 0's or a scaledInteger number. bool means a boolean (true, false) is expected. float means a decimal floating point number is expected. long means an value of scaledInteger is expected. String means any text is acceptable.</xs:documentation>
35
+ </xs:annotation>
36
+ <xs:restriction base="xs:token">
37
+ <xs:enumeration value="bitString"/>
38
+ <xs:enumeration value="bool"/>
39
+ <xs:enumeration value="float"/>
40
+ <xs:enumeration value="long"/>
41
+ <xs:enumeration value="string"/>
42
+ </xs:restriction>
43
+ </xs:simpleType>
44
+ <xs:attribute name="format" type="spirit:formatType">
45
+ <xs:annotation>
46
+ <xs:documentation>This is an indication on the format of the value for user defined properties. bitString means a double quoted string of 1's an 0's, the input maybe in this format or a scaledInteger number. A bitStringLength attribute is required for bitString formats. bool means a boolean (true, false) is expected. float means a decimal floating point number is expected. long means an value of scaledInteger is expected. String means any text is acceptable.</xs:documentation>
47
+ </xs:annotation>
48
+ </xs:attribute>
49
+ <xs:attribute name="bitStringLength" type="xs:nonNegativeInteger">
50
+ <xs:annotation>
51
+ <xs:documentation>Length of the bit string, required if the format is bitString</xs:documentation>
52
+ </xs:annotation>
53
+ </xs:attribute>
54
+ <xs:attribute name="prompt" type="xs:string">
55
+ <xs:annotation>
56
+ <xs:documentation>Provides a string used to prompt the user for user-resolved property values.</xs:documentation>
57
+ </xs:annotation>
58
+ </xs:attribute>
59
+ <xs:attribute name="minimum" type="xs:string">
60
+ <xs:annotation>
61
+ <xs:documentation>For user-resolved properties with numeric values, this indicates the minimum value allowed. Only valid for formats long and float.</xs:documentation>
62
+ </xs:annotation>
63
+ </xs:attribute>
64
+ <xs:attribute name="maximum" type="xs:string">
65
+ <xs:annotation>
66
+ <xs:documentation>For user-resolved properties with numeric values, this indicates the maximum value allowed. Only valid for formats long and float</xs:documentation>
67
+ </xs:annotation>
68
+ </xs:attribute>
69
+ <xs:simpleType name="rangeTypeType">
70
+ <xs:annotation>
71
+ <xs:documentation>This type is used to indicate how the minimum and maximum attributes values should be interpreted. For purposes of this attribute, an int is 4 bytes and a long is 8 bytes.</xs:documentation>
72
+ </xs:annotation>
73
+ <xs:restriction base="xs:token">
74
+ <xs:enumeration value="float"/>
75
+ <xs:enumeration value="int"/>
76
+ <xs:enumeration value="unsigned int"/>
77
+ <xs:enumeration value="long"/>
78
+ <xs:enumeration value="unsigned long"/>
79
+ </xs:restriction>
80
+ </xs:simpleType>
81
+ <xs:attribute name="rangeType" type="spirit:rangeTypeType" default="float">
82
+ <xs:annotation>
83
+ <xs:documentation>Indicates the data type of the range attributes (minimum and maximum). For reasons of backward compatibility, this attribute is assumed to have the value 'float' if not present.</xs:documentation>
84
+ </xs:annotation>
85
+ </xs:attribute>
86
+ <xs:simpleType name="delayValueUnitType">
87
+ <xs:annotation>
88
+ <xs:documentation>Indicates legal units for delay values.</xs:documentation>
89
+ </xs:annotation>
90
+ <xs:restriction base="xs:token">
91
+ <xs:enumeration value="ps"/>
92
+ <xs:enumeration value="ns"/>
93
+ </xs:restriction>
94
+ </xs:simpleType>
95
+ <xs:attribute name="order" type="xs:float">
96
+ <xs:annotation>
97
+ <xs:documentation>For components with auto-generated configuration forms, the user-resolved properties with order attibutes will be presented in ascending order.</xs:documentation>
98
+ </xs:annotation>
99
+ </xs:attribute>
100
+ <xs:attribute name="choiceRef" type="xs:Name">
101
+ <xs:annotation>
102
+ <xs:documentation>For user defined properties, refers the choice element enumerating the values to choose from.</xs:documentation>
103
+ </xs:annotation>
104
+ </xs:attribute>
105
+ <xs:attribute name="configGroups" type="xs:NMTOKENS">
106
+ <xs:annotation>
107
+ <xs:documentation>Tags configurable properties so that they may be grouped together. Configurable properties with matching values for this attribute are contained in the same group. The format of this attribute is a string. There is no semantic meaning to this attribute.</xs:documentation>
108
+ </xs:annotation>
109
+ </xs:attribute>
110
+ <xs:attributeGroup name="bool.att">
111
+ <xs:annotation>
112
+ <xs:documentation>Use this attribute group on boolean elements for which the schema supplies a default prompt attribute.</xs:documentation>
113
+ </xs:annotation>
114
+ <xs:attribute ref="spirit:format" default="bool"/>
115
+ <xs:attributeGroup ref="spirit:common.att"/>
116
+ <xs:attribute ref="spirit:rangeType" default="int"/>
117
+ </xs:attributeGroup>
118
+ <xs:attributeGroup name="bool.prompt.att">
119
+ <xs:annotation>
120
+ <xs:documentation>Use this attribute group on boolean elements.</xs:documentation>
121
+ </xs:annotation>
122
+ <xs:attributeGroup ref="spirit:bool.att"/>
123
+ <xs:attribute ref="spirit:prompt"/>
124
+ </xs:attributeGroup>
125
+ <xs:attributeGroup name="float.att">
126
+ <xs:annotation>
127
+ <xs:documentation>Use this attribute group on float elements for which the schema supplies a default prompt attribute.</xs:documentation>
128
+ </xs:annotation>
129
+ <xs:attribute ref="spirit:format" default="float"/>
130
+ <xs:attributeGroup ref="spirit:common.att"/>
131
+ <xs:attribute ref="spirit:rangeType" default="float"/>
132
+ </xs:attributeGroup>
133
+ <xs:attributeGroup name="float.prompt.att">
134
+ <xs:annotation>
135
+ <xs:documentation>Use this attribute group on float elements.</xs:documentation>
136
+ </xs:annotation>
137
+ <xs:attributeGroup ref="spirit:float.att"/>
138
+ <xs:attribute ref="spirit:prompt"/>
139
+ </xs:attributeGroup>
140
+ <xs:attributeGroup name="long.att">
141
+ <xs:annotation>
142
+ <xs:documentation>Use this attribute group on long integer elements for which the schema supplies a default prompt attribute.</xs:documentation>
143
+ </xs:annotation>
144
+ <xs:attribute ref="spirit:format" default="long"/>
145
+ <xs:attributeGroup ref="spirit:common.att"/>
146
+ <xs:attribute ref="spirit:rangeType" default="float"/>
147
+ </xs:attributeGroup>
148
+ <xs:attributeGroup name="long.prompt.att">
149
+ <xs:annotation>
150
+ <xs:documentation>Use this attribute group on long integer elements.</xs:documentation>
151
+ </xs:annotation>
152
+ <xs:attributeGroup ref="spirit:long.att"/>
153
+ <xs:attribute ref="spirit:prompt"/>
154
+ </xs:attributeGroup>
155
+ <xs:attributeGroup name="string.att">
156
+ <xs:annotation>
157
+ <xs:documentation>Use this attribute group on string elements for which the schema supplies a default prompt attribute.</xs:documentation>
158
+ </xs:annotation>
159
+ <xs:attribute ref="spirit:format" default="string"/>
160
+ <xs:attributeGroup ref="spirit:common.att"/>
161
+ <xs:attribute ref="spirit:rangeType"/>
162
+ </xs:attributeGroup>
163
+ <xs:attributeGroup name="string.prompt.att">
164
+ <xs:annotation>
165
+ <xs:documentation>Use this attribute group on string elements.</xs:documentation>
166
+ </xs:annotation>
167
+ <xs:attributeGroup ref="spirit:string.att"/>
168
+ <xs:attribute ref="spirit:prompt"/>
169
+ </xs:attributeGroup>
170
+ <xs:attributeGroup name="common.att">
171
+ <xs:annotation>
172
+ <xs:documentation>For internal use only.</xs:documentation>
173
+ </xs:annotation>
174
+ <xs:attributeGroup ref="spirit:configurable"/>
175
+ <xs:attribute ref="spirit:choiceRef"/>
176
+ <xs:attribute ref="spirit:order"/>
177
+ <xs:attribute ref="spirit:configGroups"/>
178
+ <xs:attribute ref="spirit:bitStringLength"/>
179
+ <xs:attribute ref="spirit:minimum"/>
180
+ <xs:attribute ref="spirit:maximum"/>
181
+ </xs:attributeGroup>
182
+ <xs:element name="choices">
183
+ <xs:annotation>
184
+ <xs:documentation>Choices used by elements with an attribute spirit:choiceRef.</xs:documentation>
185
+ </xs:annotation>
186
+ <xs:complexType>
187
+ <xs:sequence>
188
+ <xs:element name="choice" maxOccurs="unbounded">
189
+ <xs:annotation>
190
+ <xs:documentation>Non-empty set of legal values for a elements with an attribute spirit:choiceRef.</xs:documentation>
191
+ </xs:annotation>
192
+ <xs:complexType>
193
+ <xs:sequence>
194
+ <xs:element name="name" type="xs:Name">
195
+ <xs:annotation>
196
+ <xs:documentation>Choice key, available for reference by the spirit:choiceRef attribute.</xs:documentation>
197
+ </xs:annotation>
198
+ </xs:element>
199
+ <xs:element name="enumeration" maxOccurs="unbounded">
200
+ <xs:annotation>
201
+ <xs:documentation>One possible value of spirit:choice</xs:documentation>
202
+ </xs:annotation>
203
+ <xs:complexType>
204
+ <xs:simpleContent>
205
+ <xs:extension base="xs:string">
206
+ <xs:attribute name="text" type="xs:string">
207
+ <xs:annotation>
208
+ <xs:documentation>When specified, displayed in place of the spirit:enumeration value </xs:documentation>
209
+ </xs:annotation>
210
+ </xs:attribute>
211
+ <xs:attribute name="help" type="xs:string">
212
+ <xs:annotation>
213
+ <xs:documentation>Text that may be displayed if the user requests help about the meaning of an element</xs:documentation>
214
+ </xs:annotation>
215
+ </xs:attribute>
216
+ </xs:extension>
217
+ </xs:simpleContent>
218
+ </xs:complexType>
219
+ </xs:element>
220
+ </xs:sequence>
221
+ </xs:complexType>
222
+ </xs:element>
223
+ </xs:sequence>
224
+ </xs:complexType>
225
+ </xs:element>
226
+ </xs:schema>
@@ -0,0 +1,99 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ // Description : busDefinition.xsd
4
+ // Author: The SPIRIT Consortium Schema Working Group
5
+ //
6
+ // Revision: $Revision: 1506 $
7
+ // Date: $Date: 2009-04-26 01:51:56 -0500 (Sun, 26 Apr 2009) $
8
+ //
9
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
10
+ //
11
+ // This work forms part of a deliverable of The SPIRIT Consortium.
12
+ //
13
+ // Use of these materials are governed by the legal terms and conditions
14
+ // outlined in the disclaimer available from www.spiritconsortium.org.
15
+ //
16
+ // This source file is provided on an AS IS basis. The SPIRIT
17
+ // Consortium disclaims any warranty express or implied including
18
+ // any warranty of merchantability and fitness for use for a
19
+ // particular purpose.
20
+ //
21
+ // The user of the source file shall indemnify and hold The SPIRIT
22
+ // Consortium and its members harmless from any damages or liability.
23
+ // Users are requested to provide feedback to The SPIRIT Consortium
24
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
25
+ // http://www.spiritconsortium.org/about/contact_us/
26
+ //
27
+ // This file may be copied, and distributed, WITHOUT
28
+ // modifications; this notice must be included on any copy.
29
+ -->
30
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" elementFormDefault="qualified" attributeFormDefault="qualified">
31
+ <xs:include schemaLocation="identifier.xsd"/>
32
+ <xs:include schemaLocation="commonStructures.xsd"/>
33
+ <xs:include schemaLocation="port.xsd"/>
34
+ <xs:include schemaLocation="generator.xsd"/>
35
+ <xs:include schemaLocation="constraints.xsd"/>
36
+ <xs:group name="portProperties">
37
+ <xs:sequence>
38
+ <xs:choice minOccurs="0">
39
+ <xs:element name="direction" type="spirit:componentPortDirectionType" default="out"/>
40
+ <xs:element ref="spirit:initiative"/>
41
+ </xs:choice>
42
+ </xs:sequence>
43
+ </xs:group>
44
+ <xs:element name="busDefinition">
45
+ <xs:annotation>
46
+ <xs:documentation>Defines the structural information associated with a bus type, independent of the abstraction level.</xs:documentation>
47
+ </xs:annotation>
48
+ <xs:complexType>
49
+ <xs:sequence>
50
+ <xs:group ref="spirit:versionedIdentifier"/>
51
+ <xs:element name="directConnection" type="xs:boolean">
52
+ <xs:annotation>
53
+ <xs:documentation>This element indicates that a master interface may be directly connected to a slave interface (under certain conditions) for busses of this type.</xs:documentation>
54
+ </xs:annotation>
55
+ </xs:element>
56
+ <xs:element name="isAddressable" type="xs:boolean">
57
+ <xs:annotation>
58
+ <xs:documentation>If true, indicates that this is an addressable bus.</xs:documentation>
59
+ </xs:annotation>
60
+ </xs:element>
61
+ <xs:element name="extends" type="spirit:libraryRefType" minOccurs="0">
62
+ <xs:annotation>
63
+ <xs:documentation>Optional name of bus type that this bus definition is compatible with. This bus definition may change the definitions in the existing bus definition</xs:documentation>
64
+ </xs:annotation>
65
+ </xs:element>
66
+ <xs:element name="maxMasters" type="xs:nonNegativeInteger" minOccurs="0">
67
+ <xs:annotation>
68
+ <xs:documentation>Indicates the maximum number of masters this bus supports. If this element is not present, the number of masters allowed is unbounded. </xs:documentation>
69
+ </xs:annotation>
70
+ </xs:element>
71
+ <xs:element name="maxSlaves" type="xs:nonNegativeInteger" minOccurs="0">
72
+ <xs:annotation>
73
+ <xs:documentation>Indicates the maximum number of slaves this bus supports. If the element is not present, the number of slaves allowed is unbounded.</xs:documentation>
74
+ </xs:annotation>
75
+ </xs:element>
76
+ <xs:element name="systemGroupNames" minOccurs="0">
77
+ <xs:annotation>
78
+ <xs:documentation>Indicates the list of system group names that are defined for this bus definition.</xs:documentation>
79
+ </xs:annotation>
80
+ <xs:complexType>
81
+ <xs:sequence>
82
+ <xs:element name="systemGroupName" type="xs:Name" maxOccurs="unbounded">
83
+ <xs:annotation>
84
+ <xs:documentation>Indicates the name of a system group defined for this bus definition.</xs:documentation>
85
+ </xs:annotation>
86
+ </xs:element>
87
+ </xs:sequence>
88
+ </xs:complexType>
89
+ </xs:element>
90
+ <xs:element ref="spirit:description" minOccurs="0"/>
91
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
92
+ </xs:sequence>
93
+ </xs:complexType>
94
+ <xs:key name="systemGroupNameKey">
95
+ <xs:selector xpath="spirit:systemGroupNames/spirit:systemGroupName"/>
96
+ <xs:field xpath="."/>
97
+ </xs:key>
98
+ </xs:element>
99
+ </xs:schema>
@@ -0,0 +1,640 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!-- edited with XMLSpy v2008 rel. 2 sp2 (http://www.altova.com) by Mark Noll (private) -->
3
+ <!--
4
+ // Description : busInterface.xsd
5
+ // Author: The SPIRIT Consortium Schema Working Group
6
+ //
7
+ // Revision: $Revision: 1522 $
8
+ // Date: $Date: 2009-05-26 13:03:12 -0500 (Tue, 26 May 2009) $
9
+ //
10
+ // Copyright (c) 2005, 2006, 2007, 2008, 2009 The SPIRIT Consortium.
11
+ //
12
+ // This work forms part of a deliverable of The SPIRIT Consortium.
13
+ //
14
+ // Use of these materials are governed by the legal terms and conditions
15
+ // outlined in the disclaimer available from www.spiritconsortium.org.
16
+ //
17
+ // This source file is provided on an AS IS basis. The SPIRIT
18
+ // Consortium disclaims any warranty express or implied including
19
+ // any warranty of merchantability and fitness for use for a
20
+ // particular purpose.
21
+ //
22
+ // The user of the source file shall indemnify and hold The SPIRIT
23
+ // Consortium and its members harmless from any damages or liability.
24
+ // Users are requested to provide feedback to The SPIRIT Consortium
25
+ // using either mailto:feedback@lists.spiritconsortium.org or the forms at
26
+ // http://www.spiritconsortium.org/about/contact_us/
27
+ //
28
+ // This file may be copied, and distributed, WITHOUT
29
+ // modifications; this notice must be included on any copy.
30
+ -->
31
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.5" elementFormDefault="qualified" attributeFormDefault="qualified">
32
+ <xs:include schemaLocation="identifier.xsd"/>
33
+ <xs:include schemaLocation="memoryMap.xsd"/>
34
+ <xs:include schemaLocation="port.xsd"/>
35
+ <xs:simpleType name="bitSteeringType">
36
+ <xs:annotation>
37
+ <xs:documentation>Indicates whether bit steering should be used to map this interface onto a bus of different data width.
38
+
39
+ Values are "on", "off" (defaults to "off").</xs:documentation>
40
+ </xs:annotation>
41
+ <xs:restriction base="xs:string">
42
+ <xs:enumeration value="on"/>
43
+ <xs:enumeration value="off"/>
44
+ </xs:restriction>
45
+ </xs:simpleType>
46
+ <xs:simpleType name="endianessType">
47
+ <xs:annotation>
48
+ <xs:documentation>'big': means the most significant element of any multi-element data field is stored at the lowest memory address. 'little' means the least significant element of any multi-element data field is stored at the lowest memory address. If this element is not present the default is 'little' endian.</xs:documentation>
49
+ </xs:annotation>
50
+ <xs:restriction base="xs:string">
51
+ <xs:enumeration value="big"/>
52
+ <xs:enumeration value="little"/>
53
+ </xs:restriction>
54
+ </xs:simpleType>
55
+ <xs:element name="bitsInLau" type="xs:positiveInteger">
56
+ <xs:annotation>
57
+ <xs:documentation>The number of bits in the least addressable unit. The default is byte addressable (8 bits).</xs:documentation>
58
+ </xs:annotation>
59
+ </xs:element>
60
+ <xs:element name="busInterface" type="spirit:busInterfaceType">
61
+ <xs:annotation>
62
+ <xs:documentation>Describes one of the bus interfaces supported by this component.</xs:documentation>
63
+ </xs:annotation>
64
+ </xs:element>
65
+ <xs:element name="busInterfaces">
66
+ <xs:annotation>
67
+ <xs:documentation>A list of bus interfaces supported by this component.</xs:documentation>
68
+ </xs:annotation>
69
+ <xs:complexType>
70
+ <xs:sequence>
71
+ <xs:element ref="spirit:busInterface" maxOccurs="unbounded"/>
72
+ </xs:sequence>
73
+ </xs:complexType>
74
+ </xs:element>
75
+ <xs:complexType name="busInterfaceType">
76
+ <xs:annotation>
77
+ <xs:documentation>Type definition for a busInterface in a component</xs:documentation>
78
+ </xs:annotation>
79
+ <xs:sequence>
80
+ <xs:group ref="spirit:nameGroup"/>
81
+ <xs:element name="busType" type="spirit:libraryRefType">
82
+ <xs:annotation>
83
+ <xs:documentation>The bus type of this interface. Refers to bus definition using vendor, library, name, version attributes.</xs:documentation>
84
+ </xs:annotation>
85
+ </xs:element>
86
+ <xs:element name="abstractionType" type="spirit:libraryRefType" minOccurs="0">
87
+ <xs:annotation>
88
+ <xs:documentation>The abstraction type/level of this interface. Refers to abstraction definition using vendor, library, name, version attributes. Bus definition can be found through a reference in this file.</xs:documentation>
89
+ </xs:annotation>
90
+ </xs:element>
91
+ <xs:group ref="spirit:interfaceMode">
92
+ <xs:annotation>
93
+ <xs:documentation>Indicates the usage mode of this instance of the bus interface.</xs:documentation>
94
+ </xs:annotation>
95
+ </xs:group>
96
+ <xs:element name="connectionRequired" type="xs:boolean" default="false" minOccurs="0">
97
+ <xs:annotation>
98
+ <xs:documentation>Indicates whether a connection to this interface is required for proper component functionality.</xs:documentation>
99
+ </xs:annotation>
100
+ </xs:element>
101
+ <xs:element name="portMaps" minOccurs="0">
102
+ <xs:annotation>
103
+ <xs:documentation>Listing of maps between component ports and bus ports.</xs:documentation>
104
+ </xs:annotation>
105
+ <xs:complexType>
106
+ <xs:sequence>
107
+ <xs:element name="portMap" maxOccurs="unbounded">
108
+ <xs:annotation>
109
+ <xs:documentation>Maps a component's port to a port in a bus description. This is the logical to physical mapping. The logical pin comes from the bus interface and the physical pin from the component.</xs:documentation>
110
+ </xs:annotation>
111
+ <xs:complexType>
112
+ <xs:sequence>
113
+ <xs:element name="logicalPort">
114
+ <xs:annotation>
115
+ <xs:documentation>Logical port from abstraction definition</xs:documentation>
116
+ </xs:annotation>
117
+ <xs:complexType>
118
+ <xs:sequence>
119
+ <xs:element name="name" type="xs:Name">
120
+ <xs:annotation>
121
+ <xs:documentation>Bus port name as specified inside the abstraction definition</xs:documentation>
122
+ </xs:annotation>
123
+ </xs:element>
124
+ <xs:element name="vector" minOccurs="0">
125
+ <xs:annotation>
126
+ <xs:documentation>Definition of the logical indecies for a vectored port.</xs:documentation>
127
+ </xs:annotation>
128
+ <xs:complexType>
129
+ <xs:sequence>
130
+ <xs:element name="left">
131
+ <xs:annotation>
132
+ <xs:documentation>Defines which logical bit maps to the physical left bit below</xs:documentation>
133
+ </xs:annotation>
134
+ <xs:complexType>
135
+ <xs:simpleContent>
136
+ <xs:extension base="xs:nonNegativeInteger">
137
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
138
+ </xs:extension>
139
+ </xs:simpleContent>
140
+ </xs:complexType>
141
+ </xs:element>
142
+ <xs:element name="right">
143
+ <xs:annotation>
144
+ <xs:documentation>Defines which logical bit maps to the physical right bit below</xs:documentation>
145
+ </xs:annotation>
146
+ <xs:complexType>
147
+ <xs:simpleContent>
148
+ <xs:extension base="xs:nonNegativeInteger">
149
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
150
+ </xs:extension>
151
+ </xs:simpleContent>
152
+ </xs:complexType>
153
+ </xs:element>
154
+ </xs:sequence>
155
+ </xs:complexType>
156
+ </xs:element>
157
+ </xs:sequence>
158
+ </xs:complexType>
159
+ </xs:element>
160
+ <xs:element name="physicalPort">
161
+ <xs:annotation>
162
+ <xs:documentation>Physical port from this component</xs:documentation>
163
+ </xs:annotation>
164
+ <xs:complexType>
165
+ <xs:sequence>
166
+ <xs:element name="name" type="spirit:portName">
167
+ <xs:annotation>
168
+ <xs:documentation>Component port name as specified inside the model port section</xs:documentation>
169
+ </xs:annotation>
170
+ </xs:element>
171
+ <xs:element ref="spirit:vector" minOccurs="0"/>
172
+ </xs:sequence>
173
+ </xs:complexType>
174
+ </xs:element>
175
+ </xs:sequence>
176
+ <!-- <xs:simpleContent>
177
+ <xs:extension base="xs:token">
178
+ <xs:attribute name="busSignal" type="xs:Name" use="required"/>
179
+ <xs:attribute name="left" type="xs:nonNegativeInteger"/>
180
+ <xs:attribute name="right" type="xs:nonNegativeInteger"/>
181
+ </xs:extension>
182
+ </xs:simpleContent> -->
183
+ </xs:complexType>
184
+ </xs:element>
185
+ </xs:sequence>
186
+ </xs:complexType>
187
+ </xs:element>
188
+ <xs:element ref="spirit:bitsInLau" minOccurs="0"/>
189
+ <xs:element name="bitSteering" default="off" minOccurs="0">
190
+ <xs:annotation>
191
+ <xs:documentation>Indicates whether bit steering should be used to map this interface onto a bus of different data width.
192
+
193
+ Values are "on", "off" (defaults to "off").</xs:documentation>
194
+ </xs:annotation>
195
+ <xs:complexType>
196
+ <xs:simpleContent>
197
+ <xs:extension base="spirit:bitSteeringType">
198
+ <xs:attributeGroup ref="spirit:string.prompt.att"/>
199
+ </xs:extension>
200
+ </xs:simpleContent>
201
+ </xs:complexType>
202
+ </xs:element>
203
+ <xs:element name="endianness" type="spirit:endianessType" minOccurs="0">
204
+ <xs:annotation>
205
+ <xs:documentation>'big': means the most significant element of any multi-element data field is stored at the lowest memory address. 'little' means the least significant element of any multi-element data field is stored at the lowest memory address. If this element is not present the default is 'little' endian.</xs:documentation>
206
+ </xs:annotation>
207
+ </xs:element>
208
+ <xs:element ref="spirit:parameters" minOccurs="0"/>
209
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
210
+ </xs:sequence>
211
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
212
+ </xs:complexType>
213
+ <xs:element name="group" type="xs:Name">
214
+ <xs:annotation>
215
+ <xs:documentation>Indicates which system interface is being mirrored. Name must match a group name present on one or more ports in the corresonding bus definition.</xs:documentation>
216
+ </xs:annotation>
217
+ </xs:element>
218
+ <xs:element name="channels">
219
+ <xs:annotation>
220
+ <xs:documentation>Lists all channel connections between mirror interfaces of this component.</xs:documentation>
221
+ </xs:annotation>
222
+ <xs:complexType>
223
+ <xs:sequence>
224
+ <xs:element name="channel" maxOccurs="unbounded">
225
+ <xs:annotation>
226
+ <xs:documentation>Defines a set of mirrored interfaces of this component that are connected to one another.</xs:documentation>
227
+ </xs:annotation>
228
+ <xs:complexType>
229
+ <xs:sequence>
230
+ <xs:group ref="spirit:nameGroup"/>
231
+ <xs:element name="busInterfaceRef" type="xs:Name" minOccurs="2" maxOccurs="unbounded">
232
+ <xs:annotation>
233
+ <xs:documentation>Contains the name of one of the bus interfaces that is part of this channel. The ordering of the references may be important to the design environment.</xs:documentation>
234
+ </xs:annotation>
235
+ </xs:element>
236
+ </xs:sequence>
237
+ </xs:complexType>
238
+ </xs:element>
239
+ </xs:sequence>
240
+ </xs:complexType>
241
+ <xs:unique name="channelConnections">
242
+ <xs:selector xpath="spirit:channel/spirit:busInterfaceRef"/>
243
+ <xs:field xpath="."/>
244
+ </xs:unique>
245
+ </xs:element>
246
+ <xs:element name="remapStates">
247
+ <xs:annotation>
248
+ <xs:documentation>Contains a list of remap state names and associated port values</xs:documentation>
249
+ </xs:annotation>
250
+ <xs:complexType>
251
+ <xs:sequence>
252
+ <xs:element name="remapState" maxOccurs="unbounded">
253
+ <xs:annotation>
254
+ <xs:documentation>Contains a list of ports and values in remapPort and a list of registers and values that when all evaluate to true which tell the decoder to enter this remap state. The name attribute identifies the name of the state. If a list of remapPorts and/or remapRegisters is not defined then the condition for that state cannot be defined.</xs:documentation>
255
+ </xs:annotation>
256
+ <xs:complexType>
257
+ <xs:sequence>
258
+ <xs:group ref="spirit:nameGroup"/>
259
+ <xs:element name="remapPorts" minOccurs="0">
260
+ <xs:annotation>
261
+ <xs:documentation>List of ports and their values that shall invoke this remap state.</xs:documentation>
262
+ </xs:annotation>
263
+ <xs:complexType>
264
+ <xs:sequence>
265
+ <xs:element name="remapPort" maxOccurs="unbounded">
266
+ <xs:annotation>
267
+ <xs:documentation>Contains the name and value of a port on the component, the value indicates the logic value which this port must take to effect the remapping. The portMapRef attribute stores the name of the port which takes that value.</xs:documentation>
268
+ </xs:annotation>
269
+ <xs:complexType>
270
+ <xs:simpleContent>
271
+ <xs:extension base="spirit:scaledNonNegativeInteger">
272
+ <xs:attribute name="portNameRef" type="spirit:portName" use="required">
273
+ <xs:annotation>
274
+ <xs:documentation>This attribute identifies a signal on the component which affects the component's memory layout </xs:documentation>
275
+ </xs:annotation>
276
+ </xs:attribute>
277
+ <xs:attribute name="portIndex" type="xs:nonNegativeInteger">
278
+ <xs:annotation>
279
+ <xs:documentation>Index for a vectored type port. Must be a number between left and right for the port.</xs:documentation>
280
+ </xs:annotation>
281
+ </xs:attribute>
282
+ </xs:extension>
283
+ </xs:simpleContent>
284
+ </xs:complexType>
285
+ </xs:element>
286
+ </xs:sequence>
287
+ </xs:complexType>
288
+ </xs:element>
289
+ </xs:sequence>
290
+ </xs:complexType>
291
+ </xs:element>
292
+ </xs:sequence>
293
+ </xs:complexType>
294
+ </xs:element>
295
+ <xs:group name="interfaceMode">
296
+ <xs:annotation>
297
+ <xs:documentation>Group of the different modes a busInterface can take on in a component</xs:documentation>
298
+ </xs:annotation>
299
+ <xs:choice>
300
+ <xs:element name="master">
301
+ <xs:annotation>
302
+ <xs:documentation>If this element is present, the bus interface can serve as a master. This element encapsulates additional information related to its role as master.</xs:documentation>
303
+ </xs:annotation>
304
+ <xs:complexType>
305
+ <xs:sequence>
306
+ <xs:element name="addressSpaceRef" minOccurs="0">
307
+ <xs:annotation>
308
+ <xs:documentation>If this master connects to an addressable bus, this element references the address space it maps to.</xs:documentation>
309
+ </xs:annotation>
310
+ <xs:complexType>
311
+ <xs:complexContent>
312
+ <xs:extension base="spirit:addrSpaceRefType">
313
+ <xs:sequence>
314
+ <xs:annotation>
315
+ <xs:documentation>If the master's mapping to the physical address space is not zero based, the baseAddress element may be used to indicate the offset. If not specified the offset is 0. The baseAddress is in units of the addressSpace addressUnitBits</xs:documentation>
316
+ </xs:annotation>
317
+ <xs:element name="baseAddress" minOccurs="0">
318
+ <xs:annotation>
319
+ <xs:documentation>Base of an address space.</xs:documentation>
320
+ </xs:annotation>
321
+ <xs:complexType>
322
+ <xs:simpleContent>
323
+ <xs:extension base="spirit:scaledInteger">
324
+ <xs:attributeGroup ref="spirit:long.att"/>
325
+ <xs:attribute ref="spirit:prompt" default="Base Address:"/>
326
+ </xs:extension>
327
+ </xs:simpleContent>
328
+ </xs:complexType>
329
+ </xs:element>
330
+ </xs:sequence>
331
+ </xs:extension>
332
+ </xs:complexContent>
333
+ </xs:complexType>
334
+ </xs:element>
335
+ </xs:sequence>
336
+ </xs:complexType>
337
+ </xs:element>
338
+ <xs:element name="slave">
339
+ <xs:annotation>
340
+ <xs:documentation>If this element is present, the bus interface can serve as a slave.</xs:documentation>
341
+ </xs:annotation>
342
+ <xs:complexType>
343
+ <xs:sequence>
344
+ <xs:element ref="spirit:memoryMapRef" minOccurs="0"/>
345
+ <xs:element name="bridge" minOccurs="0" maxOccurs="unbounded">
346
+ <xs:annotation>
347
+ <xs:documentation>If this element is present, it indicates that the bus interface provides a bridge to another master bus interface on the same component. It has a masterRef attribute which contains the name of the other bus interface. It also has an opaque attribute to indicate that the bus bridge is opaque.
348
+
349
+ Any slave interface can bridge to multiple master interfaces, and multiple slave interfaces can bridge to the same master interface.</xs:documentation>
350
+ </xs:annotation>
351
+ <xs:complexType>
352
+ <xs:attribute name="masterRef" type="xs:Name" use="required">
353
+ <xs:annotation>
354
+ <xs:documentation>The name of the master bus interface to which this interface bridges.</xs:documentation>
355
+ </xs:annotation>
356
+ </xs:attribute>
357
+ <xs:attribute name="opaque" type="xs:boolean" use="required">
358
+ <xs:annotation>
359
+ <xs:documentation>If true, then this bridge is opaque; the whole of the address range is mappeed by the bridge and there are no gaps.</xs:documentation>
360
+ </xs:annotation>
361
+ </xs:attribute>
362
+ </xs:complexType>
363
+ </xs:element>
364
+ <xs:element name="fileSetRefGroup" minOccurs="0" maxOccurs="unbounded">
365
+ <xs:annotation>
366
+ <xs:documentation>This reference is used to point the filesets that are associated with this slave port.
367
+
368
+ Depending on the slave port function, there may be completely different software drivers associated with the different ports. </xs:documentation>
369
+ </xs:annotation>
370
+ <xs:complexType>
371
+ <xs:sequence>
372
+ <xs:element name="group" type="xs:Name" minOccurs="0">
373
+ <xs:annotation>
374
+ <xs:documentation>Abritray name assigned to the collections of fileSets.</xs:documentation>
375
+ </xs:annotation>
376
+ </xs:element>
377
+ <xs:element ref="spirit:fileSetRef" minOccurs="0" maxOccurs="unbounded"/>
378
+ </xs:sequence>
379
+ </xs:complexType>
380
+ </xs:element>
381
+ </xs:sequence>
382
+ </xs:complexType>
383
+ </xs:element>
384
+ <xs:element name="system">
385
+ <xs:annotation>
386
+ <xs:documentation>If this element is present, the bus interface is a system interface, neither master nor slave, with a specific function on the bus.</xs:documentation>
387
+ </xs:annotation>
388
+ <xs:complexType>
389
+ <xs:sequence>
390
+ <xs:element ref="spirit:group"/>
391
+ </xs:sequence>
392
+ </xs:complexType>
393
+ </xs:element>
394
+ <xs:element name="mirroredSlave">
395
+ <xs:annotation>
396
+ <xs:documentation>If this element is present, the bus interface represents a mirrored slave interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
397
+ </xs:annotation>
398
+ <xs:complexType>
399
+ <xs:sequence minOccurs="0">
400
+ <xs:element name="baseAddresses" minOccurs="0">
401
+ <xs:annotation>
402
+ <xs:documentation>Represents a set of remap base addresses.</xs:documentation>
403
+ </xs:annotation>
404
+ <xs:complexType>
405
+ <xs:sequence>
406
+ <xs:element name="remapAddress" maxOccurs="unbounded">
407
+ <xs:annotation>
408
+ <xs:documentation>Base of an address block, expressed as the number of bitsInLAU from the containing busInterface. The state attribute indicates the name of the remap state for which this address is valid.</xs:documentation>
409
+ </xs:annotation>
410
+ <xs:complexType>
411
+ <xs:simpleContent>
412
+ <xs:extension base="spirit:scaledNonNegativeInteger">
413
+ <xs:attributeGroup ref="spirit:long.att"/>
414
+ <xs:attribute ref="spirit:prompt" default="Base Address:"/>
415
+ <xs:attribute name="state" type="xs:string">
416
+ <xs:annotation>
417
+ <xs:documentation>Name of the state in which this remapped address range is valid</xs:documentation>
418
+ </xs:annotation>
419
+ </xs:attribute>
420
+ </xs:extension>
421
+ </xs:simpleContent>
422
+ </xs:complexType>
423
+ </xs:element>
424
+ <xs:element name="range">
425
+ <xs:annotation>
426
+ <xs:documentation>The address range of mirrored slave, expressed as the number of bitsInLAU from the containing busInterface. </xs:documentation>
427
+ </xs:annotation>
428
+ <xs:complexType>
429
+ <xs:simpleContent>
430
+ <xs:extension base="spirit:scaledPositiveInteger">
431
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
432
+ </xs:extension>
433
+ </xs:simpleContent>
434
+ </xs:complexType>
435
+ </xs:element>
436
+ </xs:sequence>
437
+ </xs:complexType>
438
+ </xs:element>
439
+ </xs:sequence>
440
+ </xs:complexType>
441
+ </xs:element>
442
+ <xs:element name="mirroredMaster">
443
+ <xs:annotation>
444
+ <xs:documentation>If this element is present, the bus interface represents a mirrored master interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
445
+ </xs:annotation>
446
+ <xs:complexType/>
447
+ </xs:element>
448
+ <xs:element name="mirroredSystem">
449
+ <xs:annotation>
450
+ <xs:documentation>If this element is present, the bus interface represents a mirrored system interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
451
+ </xs:annotation>
452
+ <xs:complexType>
453
+ <xs:sequence>
454
+ <xs:element ref="spirit:group"/>
455
+ </xs:sequence>
456
+ </xs:complexType>
457
+ </xs:element>
458
+ <xs:element name="monitor">
459
+ <xs:annotation>
460
+ <xs:documentation>Indicates that this is a (passive) monitor interface. All of the ports in the interface must be inputs. The type of interface to be monitored is specified with the required interfaceType attribute. The spirit:group element must be specified if monitoring a system interface.</xs:documentation>
461
+ </xs:annotation>
462
+ <xs:complexType>
463
+ <xs:sequence>
464
+ <xs:element ref="spirit:group" minOccurs="0">
465
+ <xs:annotation>
466
+ <xs:documentation>Indicates which system interface is being monitored. Name must match a group name present on one or more ports in the corresonding bus definition.</xs:documentation>
467
+ </xs:annotation>
468
+ </xs:element>
469
+ </xs:sequence>
470
+ <xs:attribute name="interfaceMode" use="required">
471
+ <xs:simpleType>
472
+ <xs:restriction base="xs:token">
473
+ <xs:enumeration value="master"/>
474
+ <xs:enumeration value="slave"/>
475
+ <xs:enumeration value="system"/>
476
+ <xs:enumeration value="mirroredMaster"/>
477
+ <xs:enumeration value="mirroredSlave"/>
478
+ <xs:enumeration value="mirroredSystem"/>
479
+ </xs:restriction>
480
+ </xs:simpleType>
481
+ </xs:attribute>
482
+ </xs:complexType>
483
+ </xs:element>
484
+ </xs:choice>
485
+ </xs:group>
486
+ <xs:group name="abstractorInterfaceMode">
487
+ <xs:annotation>
488
+ <xs:documentation>Group of the different modes a busInterface can take on in an abstractor</xs:documentation>
489
+ </xs:annotation>
490
+ <xs:choice>
491
+ <xs:element name="master">
492
+ <xs:annotation>
493
+ <xs:documentation>If this element is present, the bus interface can serve as a master. This element encapsulates additional information related to its role as master.</xs:documentation>
494
+ </xs:annotation>
495
+ <xs:complexType/>
496
+ </xs:element>
497
+ <xs:element name="slave">
498
+ <xs:annotation>
499
+ <xs:documentation>If this element is present, the bus interface can serve as a slave.</xs:documentation>
500
+ </xs:annotation>
501
+ <xs:complexType/>
502
+ </xs:element>
503
+ <xs:element name="system">
504
+ <xs:annotation>
505
+ <xs:documentation>If this element is present, the bus interface is a system interface, neither master nor slave, with a specific function on the bus.</xs:documentation>
506
+ </xs:annotation>
507
+ <xs:complexType>
508
+ <xs:sequence>
509
+ <xs:element ref="spirit:group"/>
510
+ </xs:sequence>
511
+ </xs:complexType>
512
+ </xs:element>
513
+ <xs:element name="mirroredSlave">
514
+ <xs:annotation>
515
+ <xs:documentation>If this element is present, the bus interface represents a mirrored slave interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
516
+ </xs:annotation>
517
+ <xs:complexType/>
518
+ </xs:element>
519
+ <xs:element name="mirroredMaster">
520
+ <xs:annotation>
521
+ <xs:documentation>If this element is present, the bus interface represents a mirrored master interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
522
+ </xs:annotation>
523
+ <xs:complexType/>
524
+ </xs:element>
525
+ <xs:element name="mirroredSystem">
526
+ <xs:annotation>
527
+ <xs:documentation>If this element is present, the bus interface represents a mirrored system interface. All directional constraints on ports are reversed relative to the specification in the bus definition.</xs:documentation>
528
+ </xs:annotation>
529
+ <xs:complexType>
530
+ <xs:sequence>
531
+ <xs:element ref="spirit:group"/>
532
+ </xs:sequence>
533
+ </xs:complexType>
534
+ </xs:element>
535
+ </xs:choice>
536
+ </xs:group>
537
+ <xs:complexType name="abstractorBusInterfaceType">
538
+ <xs:annotation>
539
+ <xs:documentation>Type definition for a busInterface in a component</xs:documentation>
540
+ </xs:annotation>
541
+ <xs:sequence>
542
+ <xs:group ref="spirit:nameGroup"/>
543
+ <xs:element name="abstractionType" type="spirit:libraryRefType">
544
+ <xs:annotation>
545
+ <xs:documentation>The abstraction type/level of this interface. Refers to abstraction definition using vendor, library, name, version attributes. Bus definition can be found through a reference in this file.</xs:documentation>
546
+ </xs:annotation>
547
+ </xs:element>
548
+ <xs:element name="portMaps" minOccurs="0">
549
+ <xs:annotation>
550
+ <xs:documentation>Listing of maps between logical ports and physical ports.</xs:documentation>
551
+ </xs:annotation>
552
+ <xs:complexType>
553
+ <xs:sequence>
554
+ <xs:element name="portMap" maxOccurs="unbounded">
555
+ <xs:annotation>
556
+ <xs:documentation>Maps a component's port to a port in a bus description. This is the logical to physical mapping. The logical pin comes from the bus interface and the physical pin from the component.</xs:documentation>
557
+ </xs:annotation>
558
+ <xs:complexType>
559
+ <xs:sequence>
560
+ <xs:element name="logicalPort">
561
+ <xs:annotation>
562
+ <xs:documentation>Logical port from abstraction definition</xs:documentation>
563
+ </xs:annotation>
564
+ <xs:complexType>
565
+ <xs:sequence>
566
+ <xs:element name="name" type="xs:Name">
567
+ <xs:annotation>
568
+ <xs:documentation>Bus port name as specified inside the abstraction definition</xs:documentation>
569
+ </xs:annotation>
570
+ </xs:element>
571
+ <xs:element name="vector" minOccurs="0">
572
+ <xs:annotation>
573
+ <xs:documentation>Definition of the logical indecies for a vectored port.</xs:documentation>
574
+ </xs:annotation>
575
+ <xs:complexType>
576
+ <xs:sequence>
577
+ <xs:element name="left">
578
+ <xs:annotation>
579
+ <xs:documentation>Defines which logical bit maps to the physical left bit below</xs:documentation>
580
+ </xs:annotation>
581
+ <xs:complexType>
582
+ <xs:simpleContent>
583
+ <xs:extension base="xs:nonNegativeInteger">
584
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
585
+ </xs:extension>
586
+ </xs:simpleContent>
587
+ </xs:complexType>
588
+ </xs:element>
589
+ <xs:element name="right">
590
+ <xs:annotation>
591
+ <xs:documentation>Defines which logical bit maps to the physical right bit below</xs:documentation>
592
+ </xs:annotation>
593
+ <xs:complexType>
594
+ <xs:simpleContent>
595
+ <xs:extension base="xs:nonNegativeInteger">
596
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
597
+ </xs:extension>
598
+ </xs:simpleContent>
599
+ </xs:complexType>
600
+ </xs:element>
601
+ </xs:sequence>
602
+ </xs:complexType>
603
+ </xs:element>
604
+ </xs:sequence>
605
+ </xs:complexType>
606
+ </xs:element>
607
+ <xs:element name="physicalPort">
608
+ <xs:annotation>
609
+ <xs:documentation>Physical port from this component</xs:documentation>
610
+ </xs:annotation>
611
+ <xs:complexType>
612
+ <xs:sequence>
613
+ <xs:element name="name" type="spirit:portName">
614
+ <xs:annotation>
615
+ <xs:documentation>Component port name as specified inside the model port section</xs:documentation>
616
+ </xs:annotation>
617
+ </xs:element>
618
+ <xs:element ref="spirit:vector" minOccurs="0"/>
619
+ </xs:sequence>
620
+ </xs:complexType>
621
+ </xs:element>
622
+ </xs:sequence>
623
+ <!-- <xs:simpleContent>
624
+ <xs:extension base="xs:token">
625
+ <xs:attribute name="busSignal" type="xs:Name" use="required"/>
626
+ <xs:attribute name="left" type="xs:nonNegativeInteger"/>
627
+ <xs:attribute name="right" type="xs:nonNegativeInteger"/>
628
+ </xs:extension>
629
+ </xs:simpleContent> -->
630
+ </xs:complexType>
631
+ </xs:element>
632
+ </xs:sequence>
633
+ </xs:complexType>
634
+ </xs:element>
635
+ <xs:element ref="spirit:parameters" minOccurs="0"/>
636
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
637
+ </xs:sequence>
638
+ <xs:anyAttribute namespace="##any" processContents="lax"/>
639
+ </xs:complexType>
640
+ </xs:schema>