<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Mark Noll (Synopsys) -->
<!--
// Description : memoryMap.xsd
// Author : SPIRIT Schema Working Group
// Version:     $Revision: 127 $
// Date:        $Date: 2005-05-05 16:46:51 -0500 (Thu, 05 May 2005) $
// Tag:         $Name$
//
// Copyright (c) 2005 SPIRIT.  All rights reserved.
// www.spiritconsortium.com
//
// THIS WORK FORMS PART OF A SPIRIT CONSORTIUM SPECIFICATION.
// THIS WORK CONTAINS TRADE SECRETS AND PROPRIETARY INFORMATION
// WHICH IS THE EXCLUSIVE PROPERTY OF INDIVIDUAL MEMBERS OF THE
// SPIRIT CONSORTIUM. USE OF THESE MATERIALS ARE GOVERNED BY
// THE LEGAL TERMS AND CONDITIONS OUTLINED IN THE SPIRIT
// SPECIFICATION DISCLAIMER AVAILABLE FROM
// www.spiritconsortium.org
-->
<xs:schema targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.1" elementFormDefault="qualified" attributeFormDefault="qualified">
	<xs:include schemaLocation="file.xsd"/>
	<xs:include schemaLocation="simpleTypes.xsd"/>
	<xs:simpleType name="accessType">
		<xs:annotation>
			<xs:documentation>The read/write accessability of an addess block.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="read-only"/>
			<xs:enumeration value="write-only"/>
			<xs:enumeration value="read-write"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bankAlignmentType">
		<xs:annotation>
			<xs:documentation>'serial' or 'parallel' bank alignment.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="serial"/>
			<xs:enumeration value="parallel"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="usageType">
		<xs:annotation>
			<xs:documentation>Describes the usage of an address block.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:token">
			<xs:enumeration value="memory">
				<xs:annotation>
					<xs:documentation>Denotes an address range that can be used for read-write or read-only data storage.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="register">
				<xs:annotation>
					<xs:documentation>Denotes an address block that is used to communicate with hardware.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="reserved">
				<xs:annotation>
					<xs:documentation>Denotes an address range that must remain unoccupied.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:attribute name="addressSpaceRef" type="xs:Name">
		<xs:annotation>
			<xs:documentation>A reference to a unique address space.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:attribute name="memoryMapRef" type="xs:Name">
		<xs:annotation>
			<xs:documentation>A reference to a unique memory map.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:attribute name="bankAlignment" type="spirit:bankAlignmentType">
		<xs:annotation>
			<xs:documentation>Describes whether this bank's blocks are aligned in 'parallel' or 'serial'.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:attribute name="masterRef" type="xs:Name">
		<xs:annotation>
			<xs:documentation>For subspaceMap elements, this attribute identifies the master that contains the address space to be mapped.</xs:documentation>
		</xs:annotation>
	</xs:attribute>
	<xs:complexType name="addressBankType">
		<xs:sequence>
			<xs:group ref="spirit:addressSpecifier"/>
			<xs:group ref="spirit:bankBase"/>
		</xs:sequence>
		<xs:attribute ref="spirit:bankAlignment" use="required"/>
	</xs:complexType>
	<xs:complexType name="addressBlockType">
		<xs:sequence>
			<xs:group ref="spirit:addressSpecifier"/>
			<xs:group ref="spirit:blockSize"/>
			<xs:group ref="spirit:addressBlockExtensions"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:Name"/>
	</xs:complexType>
	<xs:complexType name="addrSpaceRefType">
		<xs:annotation>
			<xs:documentation>Base type for an element which references an address space.  Reference is kept in an attribute rather than the text value, so that the type may be extended with child elements if necessary.</xs:documentation>
		</xs:annotation>
		<xs:attribute ref="spirit:addressSpaceRef" use="required"/>
	</xs:complexType>
	<xs:complexType name="memoryMapRefType">
		<xs:annotation>
			<xs:documentation>Base type for an element which references an memory map.  Reference is kept in an attribute rather than the text value, so that the type may be extended with child elements if necessary.</xs:documentation>
		</xs:annotation>
		<xs:attribute ref="spirit:memoryMapRef" use="required"/>
	</xs:complexType>
	<xs:complexType name="bankedBankType">
		<xs:annotation>
			<xs:documentation>Banks nested inside a bank do not specify address.</xs:documentation>
		</xs:annotation>
		<xs:group ref="spirit:bankBase"/>
		<xs:attribute ref="spirit:bankAlignment" use="required"/>
	</xs:complexType>
	<xs:complexType name="bankedBlockType">
		<xs:annotation>
			<xs:documentation>Address blocks inside a bank do not specify address.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:group ref="spirit:blockSize"/>
			<xs:group ref="spirit:addressBlockExtensions"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="bankedSubspaceType">
		<xs:annotation>
			<xs:documentation>Subspace references inside banks do not specify an address.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="parameter" type="spirit:nameValuePairType" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Any parameters that may apply to the subspace reference.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="spirit:masterRef" use="required"/>
	</xs:complexType>
	<xs:complexType name="fieldType">
		<xs:sequence>
			<xs:element name="name" type="xs:Name">
				<xs:annotation>
					<xs:documentation>Field name.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="bitOffset" type="xs:nonNegativeInteger">
				<xs:annotation>
					<xs:documentation>Offset of this field's lsb from bit 0 of the register.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="bitWidth">
				<xs:annotation>
					<xs:documentation>Width of the field in bits.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:positiveInteger">
							<xs:attributeGroup ref="spirit:long.att"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element ref="spirit:access"/>
			<xs:element name="description" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Bit field description.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="values" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Enumerates specific values that can be assigned to the bit field.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="value" type="spirit:spiritNumberType">
							<xs:annotation>
								<xs:documentation>Enumerated bit field value.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="description" type="xs:string">
							<xs:annotation>
								<xs:documentation>Description of a bit field value.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="name" type="xs:token">
							<xs:annotation>
								<xs:documentation>The name of this enumerated value. This may be used as a token in generating code.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element ref="spirit:parameter" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:group name="memoryMap">
		<xs:choice>
			<xs:element ref="spirit:addressBlock"/>
			<xs:element ref="spirit:bank"/>
			<xs:element name="subspaceMap" type="spirit:subspaceRefType">
				<xs:annotation>
					<xs:documentation>Maps in an address subspace from accross a bus bridge.  Its masterRef attribute refers by name to the master bus interface on the other side of the bridge.  It must match the masterRef attribute of a bridge element on the slave interface, and that bridge element must be designated as opaque.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:choice>
	</xs:group>
	<xs:complexType name="memoryMapType">
		<xs:annotation>
			<xs:documentation>Map of address space blocks on slave slave bus interface.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="name" type="xs:Name">
				<xs:annotation>
					<xs:documentation>Memory map name, unique within the component. Put into a group to avoid making it a top level element</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:group ref="spirit:memoryMap" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="memoryRemap" type="spirit:memoryRemapType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="memoryRemapType">
		<xs:annotation>
			<xs:documentation>Map of address space blocks on a slave bus interface in a specific remap state.</xs:documentation>
		</xs:annotation>
		<xs:group ref="spirit:memoryMap" minOccurs="0" maxOccurs="unbounded"/>
		<xs:attribute name="state" type="xs:string" use="required">
			<xs:annotation>
				<xs:documentation>State of the component in which the memory map is active.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="localMemoryMapType">
		<xs:annotation>
			<xs:documentation>Map of address space blocks on the local memory map of a master bus interface.</xs:documentation>
		</xs:annotation>
		<xs:group ref="spirit:memoryMap" minOccurs="0" maxOccurs="unbounded"/>
	</xs:complexType>
	<xs:complexType name="subspaceRefType">
		<xs:annotation>
			<xs:documentation>Address subspace type.  Its subspaceReference attribute references the subspace from which the dimensions are taken.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:group ref="spirit:addressSpecifier"/>
			<xs:element name="parameter" type="spirit:nameValuePairType" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Any parameters that may apply to the subspace reference.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="spirit:masterRef" use="required"/>
	</xs:complexType>
	<xs:element name="volatile" type="xs:boolean" default="false">
		<xs:annotation>
			<xs:documentation>Indicates whether the data is volatile, default to false when not present.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="access" type="spirit:accessType">
		<xs:annotation>
			<xs:documentation>Indicates the accessibility of the data in the address block.  Possible values are 'read-write', 'read-only' and 'write-only'.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="addressBlock" type="spirit:addressBlockType">
		<xs:annotation>
			<xs:documentation>This is a single contiguous block of memory inside a memory map.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="addressSpaceRef" type="spirit:addrSpaceRefType">
		<xs:annotation>
			<xs:documentation>References the address space.  The name of the address space is kept in its addressSpaceRef attribute.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="addressSpaces">
		<xs:annotation>
			<xs:documentation>If this component is a bus master, this lists all the address spaces
defined by the component.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="addressSpace" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>This defines a logical space, referenced by a bus master.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="name" type="xs:Name">
								<xs:annotation>
									<xs:documentation>The name of the address space.  Unique within the model.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:group ref="spirit:blockSize"/>
							<xs:element ref="spirit:bitsInLau" minOccurs="0"/>
							<xs:element name="endianness" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Specifies the data storage as "big" or "little" endian.</xs:documentation>
								</xs:annotation>
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="big"/>
										<xs:enumeration value="little"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:element>
							<xs:element ref="spirit:executableImage" minOccurs="0" maxOccurs="unbounded"/>
							<xs:element name="localMemoryMap" type="spirit:localMemoryMapType" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Provides the local memory map of an address space.  Blocks in this memory map are accessable to master interfaces on this component that reference this address space.   They are not accessable to any external master interface.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="parameter" type="spirit:nameValuePairType" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Data specific to this address space.</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="memoryMapRef" type="spirit:memoryMapRefType">
		<xs:annotation>
			<xs:documentation>References the memory map. The name of the memory map is kept in its memoryMapRef attribute.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="memoryMaps">
		<xs:annotation>
			<xs:documentation>Lists all the slave memory maps defined by the component.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="memoryMap" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>The set of address blocks a bus slave contributes to the bus' address space.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="spirit:memoryMapType">
								<xs:sequence>
									<xs:element ref="spirit:bitsInLau" minOccurs="0"/>
								</xs:sequence>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="bank" type="spirit:addressBankType">
		<xs:annotation>
			<xs:documentation>Represents a bank of memory made up of address blocks or other banks.  It has a bankAlignment attibute indicating whether its blocks are aligned in 'parallel' (occupying adjacent bit fields) or 'serial' (occupying contiguous addresses). Its child blocks do not contain addresses or bit offsets.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="baseAddress">
		<xs:annotation>
			<xs:documentation>Base of an address block.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="spirit:spiritNumberType">
					<xs:attributeGroup ref="spirit:long.att"/>
					<xs:attribute ref="spirit:prompt" default="Base Address:"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="bitOffset">
		<xs:annotation>
			<xs:documentation>Base bit offset of an address block.  If not included, it is assumed to be 0.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:integer">
					<xs:attributeGroup ref="spirit:long.prompt.att"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="bitsInLau" type="xs:positiveInteger">
		<xs:annotation>
			<xs:documentation>The number of bits in the least addressable unit. The default is byte addressable (8 bits).</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:group name="addressBlockExtensions">
		<xs:annotation>
			<xs:documentation>This is a group of optional elements commonly added to various types of address blocks in a memory map.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:group ref="spirit:memoryBlockData"/>
			<xs:group ref="spirit:registerData"/>
			<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="addressSpecifier">
		<xs:annotation>
			<xs:documentation>This group of elements describes an absolute or relative address of an address block in a memory map.

Note that this is a group, not an element.  It does not appear in the XML, but its contents may.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="spirit:baseAddress"/>
			<xs:element ref="spirit:bitOffset" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="bankBase">
		<xs:annotation>
			<xs:documentation>This group of elements is common to top level banks and banked banks.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="addressBlock" type="spirit:bankedBlockType">
					<xs:annotation>
						<xs:documentation>An address block within the bank.  No address information is supplied.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="bank" type="spirit:bankedBankType">
					<xs:annotation>
						<xs:documentation>A nested bank of blocks within a bank.  No address information is supplied.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="subspaceMap" type="spirit:bankedSubspaceType"/>
			</xs:choice>
			<xs:group ref="spirit:memoryBlockData"/>
			<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="blockSize">
		<xs:annotation>
			<xs:documentation>This group of elements describes width and length of an address block in a memory map.

Note that this is a group, not an element.  It does not appear in the XML, but its contents may.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="range">
				<xs:annotation>
					<xs:documentation>The address range of an address block.  Expressed as the number of addressable units accessable to the block.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="spirit:spiritNumberType">
							<xs:attributeGroup ref="spirit:long.prompt.att"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="width" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Bit width of an address block.  If zero or absent and this is part of a slave memory map, the width is assumed to be the data width of the slave interface.  It this is part of a local memory map, a missing width is assumed to be the effective width of the address space.  If this is part of an address space definition, a missing width is assumed to be the widest data signal of all bus interfaces that reference this address space.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:nonNegativeInteger">
							<xs:attributeGroup ref="spirit:long.prompt.att"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<xs:group name="memoryBlockData">
		<xs:annotation>
			<xs:documentation>This group of optional elements can be used to provide additional descriptions to an address block or bank.

Note that this is a group, not an element.  It does not appear in the XML, but its contents may.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="usage" type="spirit:usageType" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Indicates the usage of this block.  Possible values are 'memory', 'register' and 'reserved'.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element ref="spirit:volatile" minOccurs="0"/>
			<xs:element ref="spirit:access" minOccurs="0"/>
			<xs:element name="parameter" type="spirit:nameValuePairType" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Any additional parameters needed to describe this address block to the generators.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<xs:group name="registerData">
		<xs:annotation>
			<xs:documentation>This group of optional elements describes the memory mapped registers of an address block</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="register" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="name" type="xs:Name">
							<xs:annotation>
								<xs:documentation>Register name.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="dim" type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Dimensions a register array.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="addressOffset" type="spirit:spiritNumberType">
							<xs:annotation>
								<xs:documentation>Offset from baseAddress.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="size">
							<xs:annotation>
								<xs:documentation>Size in bits.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:positiveInteger">
										<xs:attributeGroup ref="spirit:long.att"/>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element ref="spirit:volatile" minOccurs="0"/>
						<xs:element ref="spirit:access" minOccurs="0"/>
						<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Indicates that this register has a dependency on the setting of another register.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="registerRef" type="xs:Name">
										<xs:annotation>
											<xs:documentation>The name of the register that enables this register.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="fieldRef" type="xs:Name" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Name of the field within the register that enables this register.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="value" type="spirit:spiritNumberType">
										<xs:annotation>
											<xs:documentation>Value that the enabling field must be set to to enable this register.</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="mask" type="spirit:spiritNumberType" minOccurs="0">
										<xs:annotation>
											<xs:documentation>Mask to be anded with the value of the enabling field or register before comparing to the dependency value.</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="resetValue" type="spirit:spiritNumberType" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Register value at reset.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="field" type="spirit:fieldType" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Describes individual bit fields within the register.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="description" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Register description</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element ref="spirit:parameter" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:group>
</xs:schema>
