<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 rel. 3 (http://www.altova.com) by Greg Ehmann (Philips Electronics Nederland BV) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Michael Brouhard (Mentor Graphics) -->
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Mark Noll (Synopsys) -->
<!--
// Description : busDefinition.xsd
// Author : SPIRIT Schema Working Group
// Version:     $Revision: 748 $
// Date:        $Date: 2007-06-29 09:26:15 -0500 (Fri, 29 Jun 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:xs="http://www.w3.org/2001/XMLSchema" xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" targetNamespace="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" elementFormDefault="qualified" attributeFormDefault="qualified">
	<xs:include schemaLocation="identifier.xsd"/>
	<xs:include schemaLocation="commonStructures.xsd"/>
	<xs:include schemaLocation="port.xsd"/>
	<xs:include schemaLocation="generator.xsd"/>
	<xs:include schemaLocation="constraints.xsd"/>
	<xs:group name="strengthGroup">
		<xs:sequence>
			<xs:element name="strength" default="strong">
				<xs:annotation>
					<xs:documentation>The strength of the signal. "strong" (default) or "weak"</xs:documentation>
				</xs:annotation>
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="strong"/>
						<xs:enumeration value="weak"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<xs:group name="portProperties">
		<xs:sequence>
			<xs:choice minOccurs="0">
				<xs:element name="direction" type="spirit:componentPortDirectionType" default="out"/>
				<xs:element ref="spirit:initiative"/>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<xs:element name="busDefinition">
		<xs:annotation>
			<xs:documentation>Defines the structural information associated with a bus type, independent of the abstraction level.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="spirit:versionedIdentifier"/>
				<xs:element name="directConnection" type="xs:boolean">
					<xs:annotation>
						<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>
					</xs:annotation>
				</xs:element>
				<xs:element name="isAddressable" type="xs:boolean">
					<xs:annotation>
						<xs:documentation>If true, indicates that this is an addressable bus.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="extends" type="spirit:libraryRefType" minOccurs="0">
					<xs:annotation>
						<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>
					</xs:annotation>
				</xs:element>
				<xs:element name="maxMasters" type="xs:nonNegativeInteger" minOccurs="0">
					<xs:annotation>
						<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>
					</xs:annotation>
				</xs:element>
				<xs:element name="maxSlaves" type="xs:nonNegativeInteger" minOccurs="0">
					<xs:annotation>
						<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>
					</xs:annotation>
				</xs:element>
				<xs:element name="systemGroupNames" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Indicates the list of system group names that are defined for this bus definition.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="systemGroupName" type="xs:Name" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>Indicates the name of a system group defined for this bus definition.</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="description" type="xs:string" minOccurs="0">
					<xs:annotation>
						<xs:documentation>String for describing the bus definition to users; no semantic impact</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element ref="spirit:vendorExtensions" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
		<xs:key name="systemGroupNameKey">
			<xs:selector xpath="spirit:systemGroupNames/spirit:systemGroupName"/>
			<xs:field xpath="."/>
		</xs:key>
	</xs:element>
</xs:schema>
