<?xml version="1.0" encoding="utf-8"?>
<!--
Cadence Design Systems 


(C) COPYRIGHT, Cadence Design Systems, Inc. 2013
All Rights Reserved
Licensed Materials - Property of Cadence Design Systems

No part of this file may be reproduced, stored in a retrieval system,
or transmitted in any form or by any means electronic, mechanical,
photocopying, recording, or otherwise without prior written permission
of Cadence Design Systems, Inc. 

WARRANTY:
Use all material in this file at your own risk.  Cadence Design Systems
makes no claims about any material contained in this file.
-->
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    >

  <xs:include schemaLocation="common.xsd"/>

  <xs:attributeGroup name="CommonColumnAttrGrp">
    <xs:attribute name="attribute" type="xs:string"/>
    <xs:attribute name="alternateQuery">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="CLOCK"/>
          <xs:enumeration value="PIN_DELAY_PIN1"/>
          <xs:enumeration value="PIN_DELAY_PIN2"/>
          <xs:enumeration value="MULTI_GROUP"/>
          <xs:enumeration value="DRC_OBJECT"/>
          <!--FIXED_INDEX excluded deliberately - append index to attribute name after dot instead (e.g. MAX_OVERSHOOT.1)-->
          <xs:enumeration value="LAYER_INDEX"/>
          <xs:enumeration value="PARENT_REF"/>
          <xs:enumeration value="INSTANCE_REF"/>
          <xs:enumeration value="ATTRIBUTE_COL"/>
          <xs:enumeration value="STACKUP_COL"/>
          <xs:enumeration value="STACKUP_SPECIFIC"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="sortState" type="xs:unsignedInt"/>
  </xs:attributeGroup>

  <xs:group name="ObjectsGrp">
    <xs:sequence>
      <xs:element name="enableObjects" type="UIObjectListTp" minOccurs="0"/>
      <xs:element name="disableObjects" type="UIObjectListTp" minOccurs="0"/>
      <xs:element name="disableDisplay" type="UIObjectListTp" minOccurs="0"/>
      <xs:element name="qtModels" type="UIModelListTp" minOccurs="0"/>
    </xs:sequence>
  </xs:group>

  <xs:complexType name="UIObjectListTp">
    <xs:sequence>
      <xs:element name="o" type="UIObjectKindEnum" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="env"/>      
  </xs:complexType>

  <xs:complexType name="UIModelListTp">
    <xs:sequence>
      <xs:element name="m" type="UIModelKindEnum" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="env"/>
  </xs:complexType>
    
  <xs:simpleType name="UIOnlyObjectKindEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ElectricalNetClass"/>
      <xs:enumeration value="PhysicalNetClass"/>
      <xs:enumeration value="SpacingNetClass"/>
      <xs:enumeration value="SameNetSpacingNetClass"/>
      <xs:enumeration value="PhysicalRegionClass"/>
      <xs:enumeration value="SpacingRegionClass"/>
      <xs:enumeration value="SameNetSpacingRegionClass"/>
      <xs:enumeration value="MaskLayer"/>
      <xs:enumeration value="ConstrainableLayer"/>
      <xs:enumeration value="VoltageNet"/>
      <xs:enumeration value="ConductiveOnlyGLTs"/>
      <xs:enumeration value="AssemblyBucket"/>
	  <xs:enumeration value="DFTestBucket"/>
      <xs:enumeration value="PastemaskLayersPseudoGroup"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="UIObjectKindEnum">
    <xs:union memberTypes="ObjKindEnum UIOnlyObjectKindEnum"/>
  </xs:simpleType>
    
  <xs:simpleType name="UIModelKindEnum">
    <xs:union memberTypes="qtModel"/>
  </xs:simpleType>
    
  <xs:simpleType name="qtModel">
    <xs:restriction base="xs:string">
    <xs:enumeration value="mcfBased"/>
    <xs:enumeration value="ccMatrix"/>
    <xs:enumeration value="ilc"/>
    <xs:enumeration value="dff"/>
    <xs:enumeration value="dffTransposed"/>
	<xs:enumeration value="pkgToPkgSpacing"/>
    <xs:enumeration value="analysisModes"/>
    <xs:enumeration value="keepoutException"/>
    <xs:enumeration value="cnsLayerModel"/>
    <xs:enumeration value="properties"/>
    <xs:enumeration value="drcModel"/>
    </xs:restriction>
  </xs:simpleType>
    
  <xs:simpleType name="GeneralSettingsEnum">
      <xs:restriction base="xs:string">
          <xs:enumeration value="EnableAffectedByState"/>
      </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="GeneralSettingsListTp">
      <xs:sequence>
          <xs:element name="v" type="GeneralSettingsEnum" minOccurs="1" maxOccurs="unbounded"/>
      </xs:sequence>
  </xs:complexType>

  <xs:attributeGroup name="env">
      <xs:attribute name="env-if" type="xs:string" use="optional">
          <xs:annotation>
              <xs:documentation>Environment variable name that needs to be SET in order for this tag to be read</xs:documentation>
          </xs:annotation>
      </xs:attribute>
      <xs:attribute name="env-if-not" type="xs:string" use="optional">
          <xs:annotation>
              <xs:documentation>Environment variable name that needs to be NOT SET in order for this tag to be read</xs:documentation>
          </xs:annotation>
      </xs:attribute>
  </xs:attributeGroup>

</xs:schema>
