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


(C) COPYRIGHT, Cadence Design Systems, Inc. 2016
All Rights Reserved
Licensed Materials - PropertyA 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 id="dictionaryCommon"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

  <xs:annotation>
    <xs:documentation xml:lang="en">
      Cadence Allegro Constraint Manager property dictionary common schema.
      Copyright 2016 Cadence Design Systems LLC All rights reserved.
    </xs:documentation>
  </xs:annotation>
  
  <xs:complexType name="FlagListTp">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="s" type="FlagListEnum"/>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="OverlayFlagListTp">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" name="s" type="OverlayValueFlagEnum"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="OverlayValueFlagEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NoFlow">
        <xs:annotation>
          <xs:documentation>Property Flow: NO transfer to / from Physical (legacy)</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoF2BFlow">
        <xs:annotation>
          <xs:documentation>Property Flow: NO transfer to Physical</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoB2FFlow">
        <xs:annotation>
          <xs:documentation>Property Flow: NO transfer to Logical</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoEditor">
        <xs:annotation>
          <xs:documentation>Attribute value should not be editable in any user interface</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoMerge">
        <xs:annotation>
          <xs:documentation>Attribute will not be processed when a hierarchical block is merged into a higher-level design.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoReport">
        <xs:annotation>
          <xs:documentation>Differences for this attribute will not be reported.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ValueFlagEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Obsolete">
        <xs:annotation>
          <xs:documentation>Attribute has been obsoleted and no longer will be shown or written out.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Hidden">
        <xs:annotation>
          <xs:documentation>Attribute is for internal CM use only.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoInherit">
        <xs:annotation>
          <xs:documentation>Attribute is never inherited within the specified ValidObjects.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ReadOnly">
        <xs:annotation>
          <xs:documentation>Attribute cannot be set through the UI.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CanBeLocked">
        <xs:annotation>
          <xs:documentation>Attribute can be locked.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="VMode">
        <xs:annotation>
          <xs:documentation>Attribute is a verification mode.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Control">
        <xs:annotation>
          <xs:documentation>Attribute for controlling the behaviour of the CM.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DrvrPin">
        <xs:annotation>
          <xs:documentation>Attribute would be defined on Driver Pins.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RcvrPin">
        <xs:annotation>
          <xs:documentation>Attribute would be defined on Recevier Pins.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoUnitStr">
        <xs:annotation>
          <xs:documentation>Attribute does not require unit string appended to its value when sync'd with host application.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Package">
        <xs:annotation>
          <xs:documentation>Attribute is required for packaging.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Prefix">
        <xs:annotation>
          <xs:documentation>Attribute requires a prefix.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Suffix">
        <xs:annotation>
          <xs:documentation>Attribute requires a suffix.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PreserveName">
        <xs:annotation>
          <xs:documentation>Attribute's name is case sensitive.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UpperCaseValue">
        <xs:annotation>
          <xs:documentation>Attribute's values should all be in uppercase.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Instances">
        <xs:annotation>
          <xs:documentation>Attribute uses instances to support multiple overrides.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AskAppForData">
        <xs:annotation>
          <xs:documentation>Attribute value may be requested from the app "on fly"</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="AskAppForDataOnce">
        <xs:annotation>
          <xs:documentation>Attribute value may be requested from the app "on fly", but query the app ONLY ONE time.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MayUseViaZ">
        <xs:annotation>
          <xs:documentation>Attribute may use ViaZ info in the calculatons. Attribute added to meet requirements of the "Functional Specification for Constraint Manager Support for Via Delay". For the purpose of the Status Line update need to mark properties may use ViaZ</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ProcessAllObjects">
        <xs:annotation>
          <xs:documentation>Attribute contains a reference to an object that has links to other objects (such as a DRC). Whenever this attribute is processed for an object, all related objects must be processed.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="ForceOverrideAudit">
        <xs:annotation>
          <xs:documentation>Force Audit. For example: PIN_DELAY may be overwritten, but it can not be constraint. So, Audit Constraints skips check / report, but user want to see it. Flag must solve mentioned problem</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PackageCreatePart">
        <xs:annotation>
          <xs:documentation>Property Flow: Create a new physical part for each unique property value</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PackageSameValueOnly">
        <xs:annotation>
          <xs:documentation>Property Flow: Package instances with the same property value in one physical part</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="PackageSameValue">
        <xs:annotation>
          <xs:documentation>Property Flow: Package instances with the same property value in one physical part. If spare sections exist package instances that do not have.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CMOnly">
        <xs:annotation>
          <xs:documentation>
            Attribute exists only in CM, when linked with Allegro it will be saved in the attachment file.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CMEditOnly">
        <xs:annotation>
          <xs:documentation>Attribute value can only be edited in Constraint Manager</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MultiGroupAltQuery">
        <xs:annotation>
          <xs:documentation>Attribute requires AlternateQuery MULTI_GROUP support. It's internal CM stuff mainly required for display purposes and well covered in .mcf file. Status needs to be in dictionary to cover Worksheet customization. User may create user-defined column based on pre-defined attribute. In this case need to setup AltQuery for column, and use this status flag for it. In 15.5.1 it's equal sInstances</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoAliasMerge">
        <xs:annotation>
          <xs:documentation>Attribute is not processed when alias is created/dissolved.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="WriteCMDBSaveOnly">
        <xs:annotation>
          <xs:documentation>Attribute is only written to DCF file during CM DB Save.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CMDefined">
        <xs:annotation>
          <xs:documentation>Attribute is defined in CM for prototyping and will be automatically duplicated in Allegro.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="EditGroupOnly">
        <xs:annotation>
          <xs:documentation>Attribute can only be edited on group objects.  Other objects can only inherit.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnlyREDSValidation">
        <xs:annotation>
          <xs:documentation>Attribute validation happens only on REDS level, skip UI validation to protect attribute from re-formatting</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="IgnoreConversion">
        <xs:annotation>
          <xs:documentation>Preserve attribure from re-formatting on REDS level. So far works only for dString.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="UserDefined">
        <xs:annotation>
          <xs:documentation>Attribute is intended to be user defined but the GUI is unable to generate the precise settings. Attribute will be written to the DictionaryExtensions section of the customization files. Allowed for prototyping Advanced Constraints measurements but should never be delivered to ClearCase.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Super">
        <xs:annotation>
          <xs:documentation>Attribute used to represent common value for all related properties.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="Drawing"/>
      <xs:enumeration value="ObjectParent"/>
      <xs:enumeration value="ObjectReference"/>
      <xs:enumeration value="ObjectInstance"/>
      <xs:enumeration value="SkillMeasure"/>
      <xs:enumeration value="CommandStack"/>
      <xs:enumeration value="MustHaveValue">
        <xs:annotation>
          <xs:documentation>Attribute must have value. Empty string is not valid for the attribute and should not cause attribute deletion.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="CreateSync">
        <xs:annotation>
          <xs:documentation>Attribute can cause object creations that should be updated in CM.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="DeleteSync">
        <xs:annotation>
          <xs:documentation>Attribute can cause object deletions that should be updated in CM.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NotDerivedFromPin">
          <xs:annotation>
              <xs:documentation>Attribute will not be managed on the Pins for a PinPair.</xs:documentation>
          </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="MustSetAll">
        <xs:annotation>
          <xs:documentation>All related properties must be set.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnLineNotSupported">
        <xs:annotation>
          <xs:documentation>DRC Online checking is not supported.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="NoCopy">
          <xs:annotation>
              <xs:documentation>Do not copy attribute.</xs:documentation>
          </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value ="VisibleNeverInAllegro"/>
      <xs:enumeration value ="AtrAllegroPropertyFixed"/>
      <xs:enumeration value="RunDrcOnChangeInAllegro"/>
      <xs:enumeration value="DefaultToPass"/>
      <xs:enumeration value="UpdateDisplayName">
         <xs:annotation>
            <xs:documentation>Update object's display when property is set.</xs:documentation>
         </xs:annotation>
      </xs:enumeration>      
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FlagListEnum">
    <xs:union memberTypes="OverlayValueFlagEnum ValueFlagEnum"/>
  </xs:simpleType>

</xs:schema>
