<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Haytham Salah (Mentor Graphics) -->
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Mark Noll (Synopsys) -->
<!-- edited with XMLSpy v2007 rel. 3 (http://www.altova.com) by Greg Ehmann (Philips Electronics Nederland BV) -->
<!--
// Description : subInstances.xsd
// Author : SPIRIT Schema Working Group
// Version:     $Revision: 773 $
// Date:        $Date: 2007-07-17 09:14:06 -0700 (Tue, 17 Jul 2007) $
// 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 xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" elementFormDefault="qualified" attributeFormDefault="qualified">
	<xs:include schemaLocation="commonStructures.xsd"/>
	<xs:include schemaLocation="identifier.xsd"/>
	<xs:include schemaLocation="autoConfigure.xsd"/>
	<xs:element name="configuration">
		<xs:annotation>
			<xs:documentation>All configuration information for a contained component, or channel instance.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="spirit:configurableElement" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="configurableElement">
		<xs:annotation>
			<xs:documentation>Describes the content of a configurable element.

The required referenceId attribute refers to the ID attribute of the configurable element.</xs:documentation>
		</xs:annotation>
		<xs:complexType mixed="true">
			<xs:sequence>
				<xs:element name="configurableElementValue" type="xs:string">
					<xs:annotation>
						<xs:documentation>The value to be applied to the configurable element.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="referenceId" type="xs:Name" use="required"/>
			<xs:attributeGroup ref="spirit:autoConfig"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="instanceName" type="xs:Name">
		<xs:annotation>
			<xs:documentation>An instance name assigned to subcomponent instances and contained channels, that is unique within the parent component.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="componentInstance">
		<xs:annotation>
			<xs:documentation>Component instance element.  The instance name is contained in the unique-value instanceName attribute.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="spirit:instanceName"/>
				<xs:element name="displayName" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Display name for the subcomponent instance.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="description" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>String for describing this component instance to users</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="componentRef" type="spirit:libraryRefType">
					<xs:annotation>
						<xs:documentation>References a component to be found in an external library.  The four attributes define the VLNV of the referenced element.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="spirit:configuration" minOccurs="0"/>
				<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="componentInstances">
		<xs:annotation>
			<xs:documentation>Sub instances of internal components.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="spirit:componentInstance" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="adHocConnection">
		<xs:annotation>
			<xs:documentation>Represents an ad-hoc connection between component ports.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="spirit:nameGroup"/>
				<xs:element name="internalPortReference" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Defines a reference to a port on a component contained within the design.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="componentRef" type="xs:Name" use="required">
							<xs:annotation>
								<xs:documentation>If the componentRef is not specified, the portRef must refer to one of the design's ports.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="portRef" type="xs:Name" use="required">
							<xs:annotation>
								<xs:documentation>A port on the on the referenced component from componentRef.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="left" type="xs:nonNegativeInteger">
							<xs:annotation>
								<xs:documentation>Left index of a vector.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="right" type="xs:nonNegativeInteger">
							<xs:annotation>
								<xs:documentation>Right index of a vector.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="externalPortReference" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Defines a reference to a port on the component containing this design. The portRef attribute indicates the name of the port in the containing component.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="portRef" type="xs:Name" use="required">
							<xs:annotation>
								<xs:documentation>A port on the top level component.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="left" type="xs:nonNegativeInteger">
							<xs:annotation>
								<xs:documentation>Left index of a vector.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
						<xs:attribute name="right" type="xs:nonNegativeInteger">
							<xs:annotation>
								<xs:documentation>Right index of a vector.</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="adHocConnections">
		<xs:annotation>
			<xs:documentation>Defines the set of ad-hoc connections in a design. An ad-hoc connection represents a connection between two component pins which were not connected as a result of interface connections (i.e.the pin to pin connection was made explicitly and is represented explicitly).</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="spirit:adHocConnection" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="interconnection">
		<xs:annotation>
			<xs:documentation>Describes a connection from the interface of one component to the interface of another component.

The interconnection element connects two active interfaces and doesn't connect monitor interfaces. </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="spirit:nameGroup"/>
				<xs:element name="activeInterface" type="spirit:interface" minOccurs="2" maxOccurs="2">
					<xs:annotation>
						<xs:documentation>Describes one interface of the interconnection.

The componentRef and busInterfaceRef attributes indicate the instance name and bus interface name of one end of the connection.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="interconnections">
		<xs:annotation>
			<xs:documentation>Connections between internal sub components.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="spirit:interconnection" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="spirit:monitorInterconnection" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="interface">
		<xs:annotation>
			<xs:documentation>A representation of a component/bus interface relation; i.e. a bus interface belonging to a certain component.</xs:documentation>
		</xs:annotation>
		<xs:attribute name="componentRef" type="xs:Name" use="required">
			<xs:annotation>
				<xs:documentation>Reference to a component instance name.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="busRef" type="xs:Name" use="required">
			<xs:annotation>
				<xs:documentation>Reference to the components  bus interface</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:element name="monitorInterconnection">
		<xs:annotation>
			<xs:documentation>Describes a connection from the interface of one component to any number of monitor interfaces in the design.

An active interface can be connected to unlimited number of monitor interfaces.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="spirit:nameGroup"/>
				<xs:element name="activeInterface" type="spirit:interface">
					<xs:annotation>
						<xs:documentation>Describes an active interface of the design that all the monitors will be connected to.

The componentRef and busInterfaceRef attributes indicate the instance name and bus interface name.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="monitorInterface" type="spirit:interface" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>Describes a list of monitor interfaces that are connected to the single active interface.

The componentRef and busInterfaceRef attributes indicate the instance name and bus interface name.</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
