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
data/schemas/model.xsd ADDED
@@ -0,0 +1,291 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ // Description : model.xsd
4
+ // Author: The SPIRIT Consortium Schema Working Group
5
+ //
6
+ // Revision: $Revision: 1526 $
7
+ // Date: $Date: 2009-05-27 16:31:29 -0500 (Wed, 27 May 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="commonStructures.xsd"/>
32
+ <xs:include schemaLocation="file.xsd"/>
33
+ <xs:include schemaLocation="port.xsd"/>
34
+ <xs:complexType name="viewType">
35
+ <xs:annotation>
36
+ <xs:documentation>Component view type</xs:documentation>
37
+ </xs:annotation>
38
+ <xs:sequence>
39
+ <xs:group ref="spirit:nameGroupNMTOKEN"/>
40
+ <xs:element name="envIdentifier" maxOccurs="unbounded">
41
+ <xs:annotation>
42
+ <xs:documentation> Defines the hardware environment in which this view applies. The format of the string is language:tool:vendor_extension, with each piece being optional. The language must be one of the types from spirit:fileType. The tool values are defined by the SPIRIT Consortium, and include generic values "*Simulation" and "*Synthesis" to imply any tool of the indicated type. Having more than one envIdentifier indicates that the view applies to multiple environments. </xs:documentation>
43
+ </xs:annotation>
44
+ <xs:simpleType>
45
+ <xs:restriction base="xs:string">
46
+ <xs:pattern value="[a-zA-Z0-9_+\*\.]*:[a-zA-Z0-9_+\*\.]*:[a-zA-Z0-9_+\*\.]*"/>
47
+ </xs:restriction>
48
+ </xs:simpleType>
49
+ </xs:element>
50
+ <xs:choice>
51
+ <xs:element name="hierarchyRef" type="spirit:libraryRefType">
52
+ <xs:annotation>
53
+ <xs:documentation> References an IP-XACT design or configuration document (by VLNV) that provides a design for the component </xs:documentation>
54
+ </xs:annotation>
55
+ </xs:element>
56
+ <xs:sequence>
57
+ <xs:element name="language" minOccurs="0">
58
+ <xs:annotation>
59
+ <xs:documentation> The hardware description language used such as "verilog" or "vhdl". If the attribute "strict" is "true", this value must match the language being generated for the design. </xs:documentation>
60
+ </xs:annotation>
61
+ <xs:complexType>
62
+ <xs:simpleContent>
63
+ <xs:extension base="xs:token">
64
+ <xs:attribute name="strict" type="xs:boolean" default="false">
65
+ <xs:annotation>
66
+ <xs:documentation>A value of 'true' indicates that this value must match the language being generated for the design.</xs:documentation>
67
+ </xs:annotation>
68
+ </xs:attribute>
69
+ </xs:extension>
70
+ </xs:simpleContent>
71
+ </xs:complexType>
72
+ </xs:element>
73
+ <xs:element name="modelName" type="xs:string" minOccurs="0">
74
+ <xs:annotation>
75
+ <xs:documentation>Language specific name to identity the model. Verilog or SystemVerilog this is the module name. For VHDL this is, with ()’s, the entity(architecture) name pair or without, a single configuration name. For SystemC this is the class name.</xs:documentation>
76
+ </xs:annotation>
77
+ </xs:element>
78
+ <xs:element name="defaultFileBuilder" type="spirit:fileBuilderType" minOccurs="0" maxOccurs="unbounded">
79
+ <xs:annotation>
80
+ <xs:documentation>Default command and flags used to build derived files from the sourceName files in the referenced file sets.</xs:documentation>
81
+ </xs:annotation>
82
+ </xs:element>
83
+ <xs:element ref="spirit:fileSetRef" minOccurs="0" maxOccurs="unbounded"/>
84
+ <xs:element ref="spirit:constraintSetRef" minOccurs="0" maxOccurs="unbounded"/>
85
+ <xs:element name="whiteboxElementRefs" minOccurs="0">
86
+ <xs:annotation>
87
+ <xs:documentation> Container for white box element references. </xs:documentation>
88
+ </xs:annotation>
89
+ <xs:complexType>
90
+ <xs:sequence>
91
+ <xs:element name="whiteboxElementRef" type="spirit:whiteboxElementRefType" minOccurs="0" maxOccurs="unbounded">
92
+ <xs:annotation>
93
+ <xs:documentation> Reference to a white box element which is visible within this view. </xs:documentation>
94
+ </xs:annotation>
95
+ </xs:element>
96
+ </xs:sequence>
97
+ </xs:complexType>
98
+ </xs:element>
99
+ <xs:element ref="spirit:parameters" minOccurs="0"/>
100
+ </xs:sequence>
101
+ </xs:choice>
102
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
103
+ </xs:sequence>
104
+ </xs:complexType>
105
+ <xs:complexType name="abstractorViewType">
106
+ <xs:annotation>
107
+ <xs:documentation>Abstraction view type</xs:documentation>
108
+ </xs:annotation>
109
+ <xs:sequence>
110
+ <xs:group ref="spirit:nameGroupNMTOKEN"/>
111
+ <xs:element name="envIdentifier" maxOccurs="unbounded">
112
+ <xs:annotation>
113
+ <xs:documentation> Defines the hardware environment in which this view applies. The format of the string is language:tool:vendor_extension, with each piece being optional. The language must be one of the types from spirit:fileType. The tool values are defined by the SPIRIT Consortium, and include generic values "*Simulation" and "*Synthesis" to imply any tool of the indicated type. Having more than one envIdentifier indicates that the view applies to multiple environments. </xs:documentation>
114
+ </xs:annotation>
115
+ <xs:simpleType>
116
+ <xs:restriction base="xs:string">
117
+ <xs:pattern value="[a-zA-Z0-9_+\*\.]*:[a-zA-Z0-9_+\*\.]*:[a-zA-Z0-9_+\*\.]*"/>
118
+ </xs:restriction>
119
+ </xs:simpleType>
120
+ </xs:element>
121
+ <xs:element name="language" minOccurs="0">
122
+ <xs:annotation>
123
+ <xs:documentation> The hardware description language used such as "verilog" or "vhdl". If the attribute "strict" is "true", this value must match the language being generated for the design. </xs:documentation>
124
+ </xs:annotation>
125
+ <xs:complexType>
126
+ <xs:simpleContent>
127
+ <xs:extension base="xs:token">
128
+ <xs:attribute name="strict" type="xs:boolean">
129
+ <xs:annotation>
130
+ <xs:documentation>A value of 'true' indicates that this value must match the language being generated for the design.</xs:documentation>
131
+ </xs:annotation>
132
+ </xs:attribute>
133
+ </xs:extension>
134
+ </xs:simpleContent>
135
+ </xs:complexType>
136
+ </xs:element>
137
+ <xs:element name="modelName" type="xs:string" minOccurs="0">
138
+ <xs:annotation>
139
+ <xs:documentation>Language specific name to identity the model. Verilog or SystemVerilog this is the module name. For VHDL this is, with ()’s, the entity(architecture) name pair or without a single configuration name. For SystemC this is the class name.</xs:documentation>
140
+ </xs:annotation>
141
+ </xs:element>
142
+ <xs:element name="defaultFileBuilder" type="spirit:fileBuilderType" minOccurs="0" maxOccurs="unbounded">
143
+ <xs:annotation>
144
+ <xs:documentation>Default command and flags used to build derived files from the sourceName files in the referenced file sets.</xs:documentation>
145
+ </xs:annotation>
146
+ </xs:element>
147
+ <xs:element ref="spirit:fileSetRef" minOccurs="0" maxOccurs="unbounded"/>
148
+ <xs:element ref="spirit:parameters" minOccurs="0"/>
149
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
150
+ </xs:sequence>
151
+ </xs:complexType>
152
+ <xs:complexType name="modelType">
153
+ <xs:annotation>
154
+ <xs:documentation>Model information.
155
+ </xs:documentation>
156
+ </xs:annotation>
157
+ <xs:sequence>
158
+ <xs:element name="views" minOccurs="0">
159
+ <xs:annotation>
160
+ <xs:documentation>View container</xs:documentation>
161
+ </xs:annotation>
162
+ <xs:complexType>
163
+ <xs:sequence>
164
+ <xs:element name="view" type="spirit:viewType" maxOccurs="unbounded">
165
+ <xs:annotation>
166
+ <xs:documentation>Single view of a component</xs:documentation>
167
+ </xs:annotation>
168
+ </xs:element>
169
+ </xs:sequence>
170
+ </xs:complexType>
171
+ </xs:element>
172
+ <xs:element name="ports" minOccurs="0">
173
+ <xs:annotation>
174
+ <xs:documentation>Port container</xs:documentation>
175
+ </xs:annotation>
176
+ <xs:complexType>
177
+ <xs:sequence>
178
+ <xs:element ref="spirit:port" maxOccurs="unbounded"/>
179
+ </xs:sequence>
180
+ </xs:complexType>
181
+ </xs:element>
182
+ <xs:element name="modelParameters" minOccurs="0">
183
+ <xs:annotation>
184
+ <xs:documentation>Model parameter name value pairs container</xs:documentation>
185
+ </xs:annotation>
186
+ <xs:complexType>
187
+ <xs:sequence>
188
+ <xs:element name="modelParameter" type="spirit:nameValueTypeType" maxOccurs="unbounded">
189
+ <xs:annotation>
190
+ <xs:documentation>A model parameter name value pair. The name is given in an attribute. The value is the element value. The dataType (applicable to high level modeling) is given in the dataType attribute. For hardware based models, the name should be identical to the RTL (VHDL generic or Verilog parameter). The usageType attribute indicates how the model parameter is to be used.
191
+ </xs:documentation>
192
+ </xs:annotation>
193
+ </xs:element>
194
+ </xs:sequence>
195
+ </xs:complexType>
196
+ </xs:element>
197
+ </xs:sequence>
198
+ </xs:complexType>
199
+ <xs:complexType name="abstractorModelType">
200
+ <xs:annotation>
201
+ <xs:documentation>Model information for an abstractor.</xs:documentation>
202
+ </xs:annotation>
203
+ <xs:sequence>
204
+ <xs:element name="views" minOccurs="0">
205
+ <xs:annotation>
206
+ <xs:documentation>View container</xs:documentation>
207
+ </xs:annotation>
208
+ <xs:complexType>
209
+ <xs:sequence>
210
+ <xs:element name="view" type="spirit:abstractorViewType" minOccurs="0" maxOccurs="unbounded">
211
+ <xs:annotation>
212
+ <xs:documentation>Single view of an abstractor</xs:documentation>
213
+ </xs:annotation>
214
+ </xs:element>
215
+ </xs:sequence>
216
+ </xs:complexType>
217
+ </xs:element>
218
+ <xs:element name="ports" minOccurs="0">
219
+ <xs:annotation>
220
+ <xs:documentation>Port container</xs:documentation>
221
+ </xs:annotation>
222
+ <xs:complexType>
223
+ <xs:sequence>
224
+ <xs:element name="port" type="spirit:abstractorPortType" minOccurs="0" maxOccurs="unbounded"/>
225
+ </xs:sequence>
226
+ </xs:complexType>
227
+ </xs:element>
228
+ <xs:element name="modelParameters" minOccurs="0">
229
+ <xs:annotation>
230
+ <xs:documentation>Model parameter name value pairs container</xs:documentation>
231
+ </xs:annotation>
232
+ <xs:complexType>
233
+ <xs:sequence>
234
+ <xs:element name="modelParameter" type="spirit:nameValueTypeType" minOccurs="0" maxOccurs="unbounded">
235
+ <xs:annotation>
236
+ <xs:documentation>A model parameter name value pair. The name is given in an attribute. The value is the element value. The dataType (applicable to high level modeling) is given in the dataType attribute. For hardware based models, the name should be identical to the RTL (VHDL generic or Verilog parameter). The usageType attribute indicate how the model parameter is to be used.
237
+ </xs:documentation>
238
+ </xs:annotation>
239
+ </xs:element>
240
+ </xs:sequence>
241
+ </xs:complexType>
242
+ </xs:element>
243
+ </xs:sequence>
244
+ </xs:complexType>
245
+ <xs:element name="model" type="spirit:modelType">
246
+ <xs:annotation>
247
+ <xs:documentation>Model information.</xs:documentation>
248
+ </xs:annotation>
249
+ </xs:element>
250
+ <xs:complexType name="whiteboxElementRefType">
251
+ <xs:annotation>
252
+ <xs:documentation> Reference to a whiteboxElement within a view. The 'name' attribute must refer to a whiteboxElement defined within this component. </xs:documentation>
253
+ </xs:annotation>
254
+ <xs:sequence>
255
+ <xs:element name="whiteboxPath" maxOccurs="unbounded">
256
+ <xs:annotation>
257
+ <xs:documentation> The whiteboxPath elements (as a set) define the name(s) needed to define the entire white box element in this view. </xs:documentation>
258
+ </xs:annotation>
259
+ <xs:complexType>
260
+ <xs:sequence>
261
+ <xs:element name="pathName" type="xs:string">
262
+ <xs:annotation>
263
+ <xs:documentation> The view specific name for a portion of the white box element. </xs:documentation>
264
+ </xs:annotation>
265
+ </xs:element>
266
+ <xs:sequence minOccurs="0">
267
+ <xs:annotation>
268
+ <xs:documentation> Optional bound on the path name. If not specified, the size of the element referred to by pathName must be determined from the referenced element. </xs:documentation>
269
+ </xs:annotation>
270
+ <xs:element name="left" type="xs:nonNegativeInteger">
271
+ <xs:annotation>
272
+ <xs:documentation> Indicates the left bound value for the associated path name. </xs:documentation>
273
+ </xs:annotation>
274
+ </xs:element>
275
+ <xs:element name="right" type="xs:nonNegativeInteger">
276
+ <xs:annotation>
277
+ <xs:documentation> Indicates the right bound values for the associated path name. </xs:documentation>
278
+ </xs:annotation>
279
+ </xs:element>
280
+ </xs:sequence>
281
+ </xs:sequence>
282
+ </xs:complexType>
283
+ </xs:element>
284
+ </xs:sequence>
285
+ <xs:attribute name="name" type="xs:Name" use="required">
286
+ <xs:annotation>
287
+ <xs:documentation>Reference to a whiteboxElement defined within this component. </xs:documentation>
288
+ </xs:annotation>
289
+ </xs:attribute>
290
+ </xs:complexType>
291
+ </xs:schema>
data/schemas/port.xsd ADDED
@@ -0,0 +1,441 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ // Description : port.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="commonStructures.xsd"/>
32
+ <xs:include schemaLocation="constraints.xsd"/>
33
+ <xs:include schemaLocation="file.xsd"/>
34
+ <xs:simpleType name="componentPortDirectionType">
35
+ <xs:annotation>
36
+ <xs:documentation>The direction of a component port.</xs:documentation>
37
+ </xs:annotation>
38
+ <xs:restriction base="xs:token">
39
+ <xs:enumeration value="in"/>
40
+ <xs:enumeration value="out"/>
41
+ <xs:enumeration value="inout"/>
42
+ <xs:enumeration value="phantom"/>
43
+ </xs:restriction>
44
+ </xs:simpleType>
45
+ <xs:element name="vector">
46
+ <xs:annotation>
47
+ <xs:documentation>Definition of the indecies for a vectored port.</xs:documentation>
48
+ </xs:annotation>
49
+ <xs:complexType>
50
+ <xs:sequence>
51
+ <xs:element name="left">
52
+ <xs:annotation>
53
+ <xs:documentation>The optional elements left and right can be used to select a bit-slice of a port vector to map to the bus interface. </xs:documentation>
54
+ </xs:annotation>
55
+ <xs:complexType>
56
+ <xs:simpleContent>
57
+ <xs:extension base="xs:nonNegativeInteger">
58
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
59
+ </xs:extension>
60
+ </xs:simpleContent>
61
+ </xs:complexType>
62
+ </xs:element>
63
+ <xs:element name="right">
64
+ <xs:annotation>
65
+ <xs:documentation>The optional elements left and right can be used to select a bit-slice of a port vector to map to the bus interface. </xs:documentation>
66
+ </xs:annotation>
67
+ <xs:complexType>
68
+ <xs:simpleContent>
69
+ <xs:extension base="xs:nonNegativeInteger">
70
+ <xs:attributeGroup ref="spirit:long.prompt.att"/>
71
+ </xs:extension>
72
+ </xs:simpleContent>
73
+ </xs:complexType>
74
+ </xs:element>
75
+ </xs:sequence>
76
+ </xs:complexType>
77
+ </xs:element>
78
+ <xs:complexType name="portDeclarationType">
79
+ <xs:annotation>
80
+ <xs:documentation>Basic port declarations.</xs:documentation>
81
+ </xs:annotation>
82
+ <xs:sequence>
83
+ <xs:group ref="spirit:nameGroupPort"/>
84
+ <xs:choice>
85
+ <xs:annotation>
86
+ <xs:documentation>Port style</xs:documentation>
87
+ </xs:annotation>
88
+ <xs:element name="wire" type="spirit:portWireType">
89
+ <xs:annotation>
90
+ <xs:documentation>Defines a port whose type resolves to simple bits.</xs:documentation>
91
+ </xs:annotation>
92
+ </xs:element>
93
+ <xs:element name="transactional" type="spirit:portTransactionalType">
94
+ <xs:annotation>
95
+ <xs:documentation>Defines a port that implements or uses a service that can be implemented with functions or methods.</xs:documentation>
96
+ </xs:annotation>
97
+ </xs:element>
98
+ </xs:choice>
99
+ <xs:sequence>
100
+ <xs:element name="access" type="spirit:portAccessType" minOccurs="0">
101
+ <xs:annotation>
102
+ <xs:documentation>Port access characteristics.</xs:documentation>
103
+ </xs:annotation>
104
+ </xs:element>
105
+ </xs:sequence>
106
+ </xs:sequence>
107
+ </xs:complexType>
108
+ <xs:complexType name="portType">
109
+ <xs:annotation>
110
+ <xs:documentation>A port description, giving a name and an access type for high level ports. </xs:documentation>
111
+ </xs:annotation>
112
+ <xs:complexContent>
113
+ <xs:extension base="spirit:portDeclarationType">
114
+ <xs:sequence>
115
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
116
+ </xs:sequence>
117
+ </xs:extension>
118
+ </xs:complexContent>
119
+ </xs:complexType>
120
+ <xs:complexType name="abstractorPortType">
121
+ <xs:annotation>
122
+ <xs:documentation>A port description, giving a name and an access type for high level ports. </xs:documentation>
123
+ </xs:annotation>
124
+ <xs:complexContent>
125
+ <xs:restriction base="spirit:portType">
126
+ <xs:sequence>
127
+ <xs:sequence>
128
+ <xs:group ref="spirit:nameGroupPort"/>
129
+ <xs:choice>
130
+ <xs:annotation>
131
+ <xs:documentation>Port style</xs:documentation>
132
+ </xs:annotation>
133
+ <xs:element name="wire" type="spirit:abstractorPortWireType">
134
+ <xs:annotation>
135
+ <xs:documentation>Defines a port whose type resolves to simple bits.</xs:documentation>
136
+ </xs:annotation>
137
+ </xs:element>
138
+ <xs:element name="transactional" type="spirit:portTransactionalType">
139
+ <xs:annotation>
140
+ <xs:documentation>Defines a port that implements or uses a service that can be implemented with functions or methods.</xs:documentation>
141
+ </xs:annotation>
142
+ </xs:element>
143
+ </xs:choice>
144
+ <xs:sequence>
145
+ <xs:element name="access" type="spirit:portAccessType" minOccurs="0">
146
+ <xs:annotation>
147
+ <xs:documentation>Port access characteristics.</xs:documentation>
148
+ </xs:annotation>
149
+ </xs:element>
150
+ </xs:sequence>
151
+ </xs:sequence>
152
+ <xs:sequence>
153
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
154
+ </xs:sequence>
155
+ </xs:sequence>
156
+ </xs:restriction>
157
+ </xs:complexContent>
158
+ </xs:complexType>
159
+ <xs:element name="initiative">
160
+ <xs:annotation>
161
+ <xs:documentation>If this element is present, the type of access is restricted to the specified value.</xs:documentation>
162
+ </xs:annotation>
163
+ <xs:simpleType>
164
+ <xs:restriction base="xs:string">
165
+ <xs:enumeration value="requires"/>
166
+ <xs:enumeration value="provides"/>
167
+ <xs:enumeration value="both"/>
168
+ <xs:enumeration value="phantom"/>
169
+ </xs:restriction>
170
+ </xs:simpleType>
171
+ </xs:element>
172
+ <xs:element name="portAccessType">
173
+ <xs:annotation>
174
+ <xs:documentation>Indicates how a netlister accesses a port. 'ref' means accessed by reference (default) and 'ptr' means accessed by pointer.</xs:documentation>
175
+ </xs:annotation>
176
+ <xs:simpleType>
177
+ <xs:restriction base="xs:string">
178
+ <xs:enumeration value="ref"/>
179
+ <xs:enumeration value="ptr"/>
180
+ </xs:restriction>
181
+ </xs:simpleType>
182
+ </xs:element>
183
+ <xs:element name="transTypeDef">
184
+ <xs:annotation>
185
+ <xs:documentation>Definition of a single transactional type defintion</xs:documentation>
186
+ </xs:annotation>
187
+ <xs:complexType>
188
+ <xs:sequence>
189
+ <xs:element name="typeName">
190
+ <xs:annotation>
191
+ <xs:documentation>The name of the port type. Can be any predefined type such sc_port or sc_export in SystemC or any user-defined type such as tlm_port.</xs:documentation>
192
+ </xs:annotation>
193
+ <xs:complexType>
194
+ <xs:simpleContent>
195
+ <xs:extension base="xs:string">
196
+ <xs:attribute name="constrained" type="xs:boolean" default="false">
197
+ <xs:annotation>
198
+ <xs:documentation>Defines that the type for the port has constrainted the number of bits in the vector</xs:documentation>
199
+ </xs:annotation>
200
+ </xs:attribute>
201
+ </xs:extension>
202
+ </xs:simpleContent>
203
+ </xs:complexType>
204
+ </xs:element>
205
+ <xs:element name="typeDefinition" type="xs:string" minOccurs="0" maxOccurs="unbounded">
206
+ <xs:annotation>
207
+ <xs:documentation>Where the definition of the type is contained. For SystemC and SystemVerilog it is the include file containing the type definition.</xs:documentation>
208
+ </xs:annotation>
209
+ </xs:element>
210
+ </xs:sequence>
211
+ </xs:complexType>
212
+ </xs:element>
213
+ <xs:element name="serviceTypeDef">
214
+ <xs:annotation>
215
+ <xs:documentation>Definition of a single service type defintion</xs:documentation>
216
+ </xs:annotation>
217
+ <xs:complexType>
218
+ <xs:sequence>
219
+ <xs:element name="typeName">
220
+ <xs:annotation>
221
+ <xs:documentation>The name of the service type. Can be any predefined type such as booean or integer or any user-defined type such as addr_type or data_type.</xs:documentation>
222
+ </xs:annotation>
223
+ <xs:complexType>
224
+ <xs:simpleContent>
225
+ <xs:extension base="xs:string">
226
+ <xs:attribute name="constrained" type="xs:boolean" default="false">
227
+ <xs:annotation>
228
+ <xs:documentation>Defines that the type for the port has constrainted the number of bits in the vector</xs:documentation>
229
+ </xs:annotation>
230
+ </xs:attribute>
231
+ <xs:attribute name="implicit" type="xs:boolean" default="false">
232
+ <xs:annotation>
233
+ <xs:documentation>Defines that the typeName supplied for this service is implicit and a netlister should not declare this service in
234
+ a language specific top-level netlist </xs:documentation>
235
+ </xs:annotation>
236
+ </xs:attribute>
237
+ </xs:extension>
238
+ </xs:simpleContent>
239
+ </xs:complexType>
240
+ </xs:element>
241
+ <xs:element name="typeDefinition" type="xs:string" minOccurs="0" maxOccurs="unbounded">
242
+ <xs:annotation>
243
+ <xs:documentation>Where the definition of the type is contained if the type if not part of the language. For SystemC and SystemVerilog it is the include file containing the type definition.</xs:documentation>
244
+ </xs:annotation>
245
+ </xs:element>
246
+ <xs:element name="parameters" minOccurs="0">
247
+ <xs:annotation>
248
+ <xs:documentation>list service parameters (e.g. parameters for a systemVerilog interface)</xs:documentation>
249
+ </xs:annotation>
250
+ <xs:complexType>
251
+ <xs:sequence>
252
+ <xs:element ref="spirit:parameter" maxOccurs="unbounded"/>
253
+ </xs:sequence>
254
+ </xs:complexType>
255
+ </xs:element>
256
+ </xs:sequence>
257
+ </xs:complexType>
258
+ </xs:element>
259
+ <xs:element name="wireTypeDef">
260
+ <xs:annotation>
261
+ <xs:documentation>Definition of a single wire type defintion that can relate to multiple views.</xs:documentation>
262
+ </xs:annotation>
263
+ <xs:complexType>
264
+ <xs:sequence>
265
+ <xs:element name="typeName">
266
+ <xs:annotation>
267
+ <xs:documentation>The name of the logic type. Examples could be std_logic, std_ulogic, std_logic_vector, sc_logic, ...</xs:documentation>
268
+ </xs:annotation>
269
+ <xs:complexType>
270
+ <xs:simpleContent>
271
+ <xs:extension base="xs:string">
272
+ <xs:attribute name="constrained" type="xs:boolean" default="false">
273
+ <xs:annotation>
274
+ <xs:documentation>Defines that the type for the port has constrainted the number of bits in the vector</xs:documentation>
275
+ </xs:annotation>
276
+ </xs:attribute>
277
+ </xs:extension>
278
+ </xs:simpleContent>
279
+ </xs:complexType>
280
+ </xs:element>
281
+ <xs:element name="typeDefinition" type="xs:string" minOccurs="0" maxOccurs="unbounded">
282
+ <xs:annotation>
283
+ <xs:documentation>Where the definition of the type is contained. For std_logic, this is contained in IEEE.std_logic_1164.all. For sc_logic, this is contained in systemc.h. For VHDL this is the library and package as defined by the "used" statement. For SystemC and SystemVerilog it is the include file required. For verilog this is not needed.</xs:documentation>
284
+ </xs:annotation>
285
+ </xs:element>
286
+ <xs:element name="viewNameRef" type="xs:NMTOKEN" maxOccurs="unbounded">
287
+ <xs:annotation>
288
+ <xs:documentation>A reference to a view name in the file for which this type applies.</xs:documentation>
289
+ </xs:annotation>
290
+ </xs:element>
291
+ </xs:sequence>
292
+ </xs:complexType>
293
+ </xs:element>
294
+ <xs:element name="serviceTypeDefs">
295
+ <xs:annotation>
296
+ <xs:documentation>The group of type definitions. If no match to a viewName is found then the default language types are to be used. See the User Guide for these default types.</xs:documentation>
297
+ </xs:annotation>
298
+ <xs:complexType>
299
+ <xs:sequence>
300
+ <xs:element ref="spirit:serviceTypeDef" maxOccurs="unbounded"/>
301
+ </xs:sequence>
302
+ </xs:complexType>
303
+ </xs:element>
304
+ <xs:element name="wireTypeDefs">
305
+ <xs:annotation>
306
+ <xs:documentation>The group of wire type definitions. If no match to a viewName is found then the default language types are to be used. See the User Guide for these default types.</xs:documentation>
307
+ </xs:annotation>
308
+ <xs:complexType>
309
+ <xs:sequence>
310
+ <xs:element ref="spirit:wireTypeDef" maxOccurs="unbounded"/>
311
+ </xs:sequence>
312
+ </xs:complexType>
313
+ <xs:key name="wireTypeDefsKey">
314
+ <xs:selector xpath="spirit:wireTypeDef/spirit:viewNameRef"/>
315
+ <xs:field xpath="."/>
316
+ </xs:key>
317
+ </xs:element>
318
+ <xs:element name="portAccessHandle" type="xs:string">
319
+ <xs:annotation>
320
+ <xs:documentation>If present, is a method to be used to get hold of the object representing the port. This is typically a function call or array element reference in systemC.</xs:documentation>
321
+ </xs:annotation>
322
+ </xs:element>
323
+ <xs:element name="port" type="spirit:portType">
324
+ <xs:annotation>
325
+ <xs:documentation>Describes port characteristics.</xs:documentation>
326
+ </xs:annotation>
327
+ </xs:element>
328
+ <xs:complexType name="portWireType">
329
+ <xs:annotation>
330
+ <xs:documentation>Wire port type for a component.</xs:documentation>
331
+ </xs:annotation>
332
+ <xs:sequence>
333
+ <xs:element name="direction" type="spirit:componentPortDirectionType">
334
+ <xs:annotation>
335
+ <xs:documentation>The direction of a wire style port. The basic directions for a port are 'in' for input ports, 'out' for output port and 'inout' for bidirectional and tristate ports.
336
+ A value of 'phantom' is also allowed and define a port that exist on the IP-XACT component but not on the HDL model.</xs:documentation>
337
+ </xs:annotation>
338
+ </xs:element>
339
+ <xs:element ref="spirit:vector" minOccurs="0">
340
+ <xs:annotation>
341
+ <xs:documentation>Specific left and right vector bounds. Signal width is
342
+ max(left,right)-min(left,right)+1 When the bounds are not present, a scalar port is assumed.</xs:documentation>
343
+ </xs:annotation>
344
+ </xs:element>
345
+ <xs:element ref="spirit:wireTypeDefs" minOccurs="0"/>
346
+ <xs:element ref="spirit:driver" minOccurs="0"/>
347
+ <xs:element ref="spirit:constraintSets" minOccurs="0"/>
348
+ </xs:sequence>
349
+ <xs:attribute name="allLogicalDirectionsAllowed" type="xs:boolean" use="optional" default="false">
350
+ <xs:annotation>
351
+ <xs:documentation>True if logical ports with different directions from the physical port direction may be mapped onto this port. Forbidden for phantom ports, which always allow logical ports with all direction value to be mapped onto the physical port. Also ignored for inout ports, since any logical port maybe mapped to a physical inout port. </xs:documentation>
352
+ </xs:annotation>
353
+ </xs:attribute>
354
+ </xs:complexType>
355
+ <xs:complexType name="portTransactionalType">
356
+ <xs:annotation>
357
+ <xs:documentation>Transactional port type.</xs:documentation>
358
+ </xs:annotation>
359
+ <xs:sequence>
360
+ <xs:element ref="spirit:transTypeDef" minOccurs="0">
361
+ <xs:annotation>
362
+ <xs:documentation>Definition of the port type expressed in the default language for this port (i.e. SystemC or SystemV).</xs:documentation>
363
+ </xs:annotation>
364
+ </xs:element>
365
+ <xs:element name="service">
366
+ <xs:annotation>
367
+ <xs:documentation>Describes the interface protocol.</xs:documentation>
368
+ </xs:annotation>
369
+ <xs:complexType>
370
+ <xs:sequence>
371
+ <xs:element ref="spirit:initiative">
372
+ <xs:annotation>
373
+ <xs:documentation>Defines how the port accesses this service.</xs:documentation>
374
+ </xs:annotation>
375
+ </xs:element>
376
+ <xs:element ref="spirit:serviceTypeDefs" minOccurs="0">
377
+ <xs:annotation>
378
+ <xs:documentation>The group of service type definitions. </xs:documentation>
379
+ </xs:annotation>
380
+ </xs:element>
381
+ <xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
382
+ </xs:sequence>
383
+ </xs:complexType>
384
+ </xs:element>
385
+ <xs:element name="connection" minOccurs="0">
386
+ <xs:annotation>
387
+ <xs:documentation>Bounds number of legal connections.</xs:documentation>
388
+ </xs:annotation>
389
+ <xs:complexType>
390
+ <xs:sequence>
391
+ <xs:element name="maxConnections" type="xs:nonNegativeInteger" default="0" minOccurs="0">
392
+ <xs:annotation>
393
+ <xs:documentation>Indicates the maximum number of connections this port supports. If this element is not present or set to 0 it implies an unbounded number of allowed connections.</xs:documentation>
394
+ </xs:annotation>
395
+ </xs:element>
396
+ <xs:element name="minConnections" type="xs:nonNegativeInteger" default="1" minOccurs="0">
397
+ <xs:annotation>
398
+ <xs:documentation>Indicates the minimum number of connections this port supports. If this element is not present, the minimum number of allowed connections is 1.</xs:documentation>
399
+ </xs:annotation>
400
+ </xs:element>
401
+ </xs:sequence>
402
+ </xs:complexType>
403
+ </xs:element>
404
+ </xs:sequence>
405
+ <xs:attribute name="allLogicalInitiativesAllowed" type="xs:boolean" use="optional" default="false">
406
+ <xs:annotation>
407
+ <xs:documentation>True if logical ports with different initiatives from the physical port initiative may be mapped onto this port. Forbidden for phantom ports, which always allow logical ports with all initiatives value to be mapped onto the physical port. Also ignored for "both" ports, since any logical port may be mapped to a physical "both" port. </xs:documentation>
408
+ </xs:annotation>
409
+ </xs:attribute>
410
+ </xs:complexType>
411
+ <xs:complexType name="abstractorPortWireType">
412
+ <xs:annotation>
413
+ <xs:documentation>Wire port type for an abstractor.</xs:documentation>
414
+ </xs:annotation>
415
+ <xs:complexContent>
416
+ <xs:restriction base="spirit:portWireType">
417
+ <xs:sequence>
418
+ <xs:element name="direction" type="spirit:componentPortDirectionType"/>
419
+ <xs:element ref="spirit:vector" minOccurs="0">
420
+ <xs:annotation>
421
+ <xs:documentation>Specific left and right vector bounds. Signal width is
422
+ max(left,right)-min(left,right)+1 When the bounds are not present, a scalar port is assumed.</xs:documentation>
423
+ </xs:annotation>
424
+ </xs:element>
425
+ <xs:element ref="spirit:wireTypeDefs" minOccurs="0"/>
426
+ <xs:element ref="spirit:driver" minOccurs="0"/>
427
+ </xs:sequence>
428
+ </xs:restriction>
429
+ </xs:complexContent>
430
+ </xs:complexType>
431
+ <xs:complexType name="portAccessType">
432
+ <xs:sequence>
433
+ <xs:element ref="spirit:portAccessType" minOccurs="0">
434
+ <xs:annotation>
435
+ <xs:documentation>Indicates how a netlister accesses a port. 'ref' means accessed by reference (default) and 'ptr' means accessed through a pointer.</xs:documentation>
436
+ </xs:annotation>
437
+ </xs:element>
438
+ <xs:element ref="spirit:portAccessHandle" minOccurs="0"/>
439
+ </xs:sequence>
440
+ </xs:complexType>
441
+ </xs:schema>