Definitions:
Accounting: '(' 'Accounting' ! Identifier [String] ')'
Annotate: '(' 'Annotate' ! String Point Point Justify ')'
Apply: '(' 'Apply' ! WholeNumber Number 
(LogicInput | LogicOutput | Comment | UserData)* ')'
Arbitrate: '(' 'Arbitrate' ! Pairwise ')'
Arc: '(' 'Arc' ! Point Point Point ')'
ArrayDefinition: '(' 'ArrayDefinition' ! Identifier WholeNumber* ')'
ArrayRelatedInfo: '(' 'ArrayRelatedInfo' ! ArrayUse [(Socket | Plug)] 
(Comment | UserData)* ')'
ArrayUse: ('ArrayMacro' | 'ArraySite' | 'BaseArray')
Assign: '(' 'Assign' ! Identifier Expression* ')'
Block: '(' 'Block' ! Form* ')'
Body: '(' 'Body' ! (FigureGroup | Comment | Property)* ')'
Boolean: (0..0 & (True | False) | 1..2 & Expression)
BorderPattern: '(' 'BorderPattern' ! Integer String ')'
Build: '(' 'Build' ! KeyRef (FormalValue | ForEach | Index | Comment)* ')'
BuildName: '(' 'BuildName' ! String ')'
Cell: '(' 'Cell' ! Identifier [Status] [Rename] [ViewMap] 
(View | Comment | UserData)* ')'
Circle: '(' 'Circle' ! Point Point Property* ')'
Color: '(' 'Color' ! Integer Integer Integer ')'
Comment: '(' 'Comment' ! String* ')'
Condition: '(' 'Condition' ! WFF* ')'
Constraint: '(' 'Constraint' ! Boolean* Property* ')'
Contents: '(' 'Contents' ! 
(Define | Instance | Unused | Global | Joined | TwoDArrayJoin 
| MustJoin | Required | Measured | CriticalSignal | FigureGroup 
| Annotate | Wire | Section | <LogicModel> | Comment | UserData 
| Level1Ctl | Level2Ctl)* ')'
Coordinate: (0..0 & WholeNumber | 1..2 & Expression)
Corner: (Point | Arc)
CriticalSignal: '(' 'CriticalSignal' ! WholeNumber Identifier* ')'
Data: (String | Value | Boolean)
Default: 1..2 & '(' 'Default' ! PrimitiveData* ')'
Define: '(' 'Define' ! Direction Type DefineObjects [1..2 & Default] 
Rename* ')'
DefineObject: (Identifier | ArrayDefinition)
DefineObjects: (DefineObjectsAux | DefineObject)
DefineObjectsAux: '(' 'Multiple' ! DefineObject* ')'
Delay: '(' 'Delay' ! Transition* Reference* ')'
Design: '(' 'Design' ! Identifier Reference [Status] [Rename] 
(Comment | Property)* ')'
Direction: ('local' | 'input' | 'inout' | 'output' | 'unspecified')
Dot: '(' 'Dot' ! Point Property* ')'
EDIF: '(' 'EDIF' ! Identifier Status Keyword* [Rename] 
(Design | External | Library | Comment | UserData)* ')'
EDIFLevel: '(' 'EDIFLevel' ! EDIFLevelName ')'
EDIFLevelName: ('0' | '1' | '2')
EDIFVersion: '(' 'EDIFVersion' ! Integer Integer Integer ')'
Escape: '(' 'Escape' ! Boolean Form* ')'
Expression: (Primitive | Identifier | FunctionApplication)
External: '(' 'External' ! Identifier [Status] [Rename] ')'
Extra: '(' 'Extra' ! Identifier* ')'
False: '(' 'False' ! ')'
Figure: ('Polygon' | 'Path' | 'Rectangle' | 'Dot' | 'Shape' | 'OpenShape' 
| 'Circle' | 'Annotate')
FigureGroup: '(' 'FigureGroup' ! FigureGroupRef 
(Figure | SignalGroup | Comment | UserData)* ')'
FigureGroupDefault: '(' 'FigureGroupDefault' ! 
(FigureGroupSpecification | Comment | UserData)* ')'
FigureGroupRef: (Identifier | FigureGroupSpecification)
FigureGroupSpecification: '(' 'FigureGroupSpecification' ! Identifier 
(<Width> | <PathType> | <BorderPattern> | <FillPattern> | <Color> 
| Comment | UserData)* ')'
FillPattern: '(' 'FillPattern' ! Integer Integer String ')'
ForEach: '(' 'ForEach' ! NameRefs 
(FormalValue | ForEach | Index | Comment)* ')'
Formal: '(' 'Formal' ! Identifier* ')'
FormalValue: (String | Integer | Identifier | BuildName | Build)
FunctionApplication: '(' Identifier ! Expression* ')'
FunctionName: 1..2 & ('+' | '-' | '*' | '/' | 'abs' | 'floor' | 'fix' 
| 'ceiling' | 'xcoord' | 'ycoord' | 'point' | 'concat' | 'and' | 'or' 
| 'xor' | 'not' | 'false' | 'true' | 'andnot' | '<' | '=' | '>')
Global: '(' 'Global' ! Identifier* ')'
GridMap: '(' 'GridMap' ! Number Number ')'
IgnoreValue: '(' 'IgnoreValue' ! Identifier ')'
Index: '(' 'Index' ! Identifier ')'
Instance: '(' 'Instance' ! References Identifier Identifier [Rename] 
[Transform] Parameter* Property* PortInstance* ')'
InstanceMap: '(' 'InstanceMap' ! (Reference | Comment | UserData)* ')'
Interface: '(' 'Interface' ! 
(Define | Unused | Joined | TwoDArrayJoin | WeakJoined | MustJoin 
| Permutable | Timing | Simulate | <Body> | PortImplementation 
| <ArrayRelatedInfo> | Comment | UserData | Level1Ctl | Level2Ctl)* ')'
Isolated: '(' 'Isolated' ! Identifier ')'
Iterate: '(' 'Iterate' ! Form* ')'
Joined: '(' 'Joined' ! (Reference | Joined | WeakJoined)* ')'
Justify: ('LowerRight' | 'LowerCenter' | 'LowerLeft' | 'CenterRight' 
| 'CenterCenter' | 'CenterLeft' | 'UpperRight' | 'UpperCenter' 
| 'UpperLeft')
KeyRef: (Identifier | String)
Keyword: '(' 'Keyword' ! Identifier 
(Formal | Optional | Extra | FormalValue | ForEach | Comment)* ')'
Level1Ctl: 1..2 & (Repeat | Constraint | Assign)
Level2Ctl: 2..2 & (Block | Escape | Iterate | Redo)
Library: '(' 'Library' ! Identifier [Status] [Technology] [Rename] 
(Cell | Comment | UserData)* ')'
LogicInput: '(' 'LogicInput' ! NameRefs LogicWaveform ')'
LogicModel: '(' 'LogicModel' ! Identifier LogicOtherwise 
(LogicState | Comment | UserData)* ')'
LogicOtherwise: '(' 'LogicOtherwise' ! Identifier ')'
LogicOutput: '(' 'LogicOutput' ! NameRefs LogicWaveform ')'
LogicState: '(' 'LogicState' ! Condition* Result ')'
LogicWaveform: '(' 'LogicWaveform' ! Identifier* ')'
Measured: '(' 'Measured' ! Identifier Delay* ')'
Member: '(' 'Member' ! Name WholeNumber* ')'
MiNoMax: '(' 'MiNoMax' ! RangeValue RangeValue RangeValue ')'
MustJoin: '(' 'MustJoin' ! (Reference | Joined | WeakJoined)* ')'
Name: Identifier
NameRef: (Name | Member)
NameRefs: (NameRefsAux | Identifier)
NameRefsAux: '(' 'Multiple' ! Identifier* ')'
NonPermutable: '(' 'NonPermutable' ! 
(Identifier | NonPermutable | Permutable)* ')'
Number: (0..0 & (Integer | ScaledInteger) | 1..2 & Expression)
NumberDefinition: '(' 'NumberDefinition' ! UnitSystem 
(Scale | Comment | UserData)* ')'
OpenShape: '(' 'OpenShape' ! Corner* Property* ')'
Optional: '(' 'Optional' ! Identifier FormalValue ')'
Orientation: ('r0' | 'r90' | 'r180' | 'r270' | 'mx' | 'myr90' | 'my' 
| 'mxr90')
Pairwise: '(' 'Pairwise' ! Identifier* ')'
Parameter: '(' 'Parameter' ! Identifier ParameterValue ')'
ParameterValue: (0..0 & (ParameterValueAux | PrimitiveData) 
| 1..2 & (ParameterValueAux | Expression))
ParameterValueAux: (0..0 & '(' 'Multiple' ! PrimitiveData* ')' 
| 1..2 & '(' 'Multiple' ! Expression* ')')
Path: '(' 'Path' ! Point* Property* ')'
PathType: '(' 'PathType' ! Style Style ')'
Permutable: '(' 'Permutable' ! 
(Identifier | NonPermutable | Permutable)* ')'
Place: (Coordinate | Step)
Plug: '(' 'Plug' ! SocketSet* ')'
Point: (0..0 & '(' 'Point' ! Coordinate Coordinate ')' | 1..2 & Expression)
Polygon: '(' 'Polygon' ! Point* Property* ')'
PortImplementation: '(' 'PortImplementation' ! Identifier 
(FigureGroup | Comment | Property)* ')'
PortInstance: '(' 'PortInstance' ! Identifier Property* ')'
PortListAlias: '(' 'PortListAlias' ! Identifier NameRefs ')'
PortMap: '(' 'PortMap' ! (Reference | Comment | UserData)* ')'
Primitive: (String | Integer | ScaledInteger)
PrimitiveData: (Primitive | True | False)
Property: '(' 'Property' ! PropertyType Identifier [Data] 
(Comment | Property)* ')'
PropertyType: ('EDIF' | 'User' | Identifier)
RangeValue: (Number | Undefined | Unconstrained)
Rectangle: '(' 'Rectangle' ! Point Point Property* ')'
Redo: '(' 'Redo' ! Boolean Form* ')'
Reference: (ReferenceAux | NameRef)
ReferenceAux: '(' 'Qualify' ! NameRef* ')'
References: (ReferencesAux | Reference)
ReferencesAux: '(' 'Multiple' ! Reference* ')'
Rename: '(' 'Rename' ! Identifier String ')'
Repeat: 1..2 & '(' 'Repeat' ! Identifier Integer Integer Integer Form* ')'
Required: '(' 'Required' ! Identifier Delay* ')'
Result: '(' 'Result' ! WFF* ')'
Scale: '(' 'Scale' ! UnitType Number Number ')'
ScaledInteger: '(' 'e' ! Integer Integer ')'
ScaleX: '(' 'ScaleX' ! Coordinate Coordinate ')'
ScaleY: '(' 'ScaleY' ! Coordinate Coordinate ')'
Section: '(' 'Section' ! String (String | Instance | Section)* ')'
Shape: '(' 'Shape' ! Corner* Property* ')'
SignalGroup: '(' 'SignalGroup' ! Identifier 
(FigureGroup | Comment | UserData)* ')'
Simulate: '(' 'Simulate' ! Identifier Identifier 
(<Rename> | PortListAlias | <IgnoreValue> | WaveValue | Apply 
| Comment | UserData)* ')'
SimulationInfo: '(' 'SimulationInfo' ! Identifier SimulationValue 
Arbitrate Isolated [Rename] ')'
SimulationMap: '(' 'SimulationMap' ! Reference Reference 
(StateMap | Comment | UserData)* ')'
SimulationValue: '(' 'SimulationValue' ! Identifier* ')'
Socket: '(' 'Socket' ! Transform* ')'
SocketSet: '(' 'SocketSet' ! Instance* Transform* ')'
Stable: '(' 'Stable' ! Identifier Number Number Identifier Identifier 
Identifier ')'
StateMap: '(' 'StateMap' ! Identifier+ ')'
Status: '(' 'Status' ! [EDIFVersion] [EDIFLevel] 
(Written | Comment | UserData)* ')'
Step: '(' 'Step' ! Coordinate WholeNumber Coordinate ')'
Style: ('extend' | 'truncate' | 'round')
Technology: '(' 'Technology' ! Identifier [NumberDefinition] 
(Define | <Rename> | SimulationInfo | SimulationMap | <GridMap> 
| <FigureGroupDefault> | Comment | UserData | Level1Ctl 
| Level2Ctl)* ')'
TimeStamp: '(' 'TimeStamp' ! Integer Integer Integer Integer Integer 
Integer ')'
Timing: '(' 'Timing' ! Identifier 
(Delay | Stable | Comment | UserData)* ')'
Transform: '(' 'Transform' ! [ScaleX] [ScaleY] [Orientation] 
[Translate] ')'
Transition: '(' 'Transition' ! Identifier Identifier Value [Value] ')'
Translate: '(' 'Translate' ! Place Place ')'
True: '(' 'True' ! ')'
TwoDArrayJoin: '(' 'Repeat' Identifier WholeNumber WholeNumber '1' 
'(' 'Repeat' Identifier WholeNumber WholeNumber '1' 
'(' 'Repeat' Identifier WholeNumber WholeNumber '1' 
'(' 'Repeat' Identifier WholeNumber WholeNumber '1' 
'(' 'Joined' 
'(' 'Qualify' Identifier 
'(' 'Member' Identifier Identifier Identifier ')' ')' 
'(' 'Qualify' Identifier 
'(' 'Member' Identifier Identifier Identifier ')' ')' ')' ')' ')' ')' ')'
Type: ('figuregroup' | 'port' | 'signal' | 1..2 & 'String' 
| 1..2 & 'Integer' | 1..2 & 'Number' | 1..2 & 'Boolean' 
| 1..2 & 'Point' | 1..2 & UnitType)
Unconstrained: '(' 'Unconstrained' ! ')'
Undefined: '(' 'Undefined' ! ')'
UnitSystem: ('si' | Identifier)
UnitType: ('capacitance' | 'current' | 'distance' | 'resistance' 
| 'termperature' | 'time' | 'voltage')
Unused: '(' 'Unused' ! Reference* ')'
UserData: '(' 'UserData' ! Identifier Form* ')'
Value: (Number | MiNoMax)
View: '(' 'View' ! ViewType Identifier [Status] [Interface] [Contents] 
[Rename] (Comment | Property)* ')'
ViewMap: '(' 'ViewMap' ! 
(PortMap | InstanceMap | Comment | UserData | Level2Ctl)* ')'
ViewType: ('document' | 'behavior' | 'netlist' | 'schematic' | 'symbolic' 
| 'masklayout' | 'stranger')
WaveValue: '(' 'WaveValue' ! Identifier Number LogicWaveform ')'
WeakJoined: '(' 'WeakJoined' ! (Reference | Joined | WeakJoined)* ')'
WFF: '(' 'WFF' ! Identifier Identifier Number Number ')'
WholeNumber: (0..0 & Integer | 1..2 & Expression)
Width: '(' 'Width' ! Coordinate ')'
Wire: '(' 'Wire' ! Identifier Identifier [FigureGroup] Property* ')'
Written: '(' 'Written' ! TimeStamp (Accounting | Comment | UserData)* ')'
������Ê6��˜�Icode˜�KšÐbl˜Kšœ
Ïbœž
œÏi
œŸœžœ˜6Kš	œžœžœŸœžœ˜9šœžœžœ˜(Kšœ/Ïuœžœ˜4—Kšœžœž	œžœ˜)Kšœžœžœžœ˜&KšœžœžœŸ
œ œžœ˜Dšœžœžœ˜FKšœ œžœ˜—Kšœž
œž	œž	œ˜4Kšœ	žœžœŸ
œ œžœ˜1Kš
œžœžœŸ œžœ˜Kš	œžœžœ& œžœ˜:K˜4Kšœžœž
œŸœŸœžœ˜7Kš	œžœžœ4 œžœ˜JKš	œžœž	œŸœžœ˜'šœžœžœŸ
œ˜:Kšœ œžœ˜ —Kš	œ	žœžœ œžœ˜0Kš
œžœžœŸœŸœŸœžœ˜0Kš
œ
žœžœŸ œžœ˜$Kš	œžœž	œ œžœ˜%Kšœ
žœž
œ œ	 œžœ˜5šœžœžœ˜˜>K˜@K˜@Kšœ œžœ˜——K˜4K˜Kš
œžœžœŸ
 œžœ˜BKšœŸœ˜ Kš	œžœžœ œžœ˜2šœ	žœžœ2˜EKšœ œžœ˜—KšœŸ
œ˜,K˜0Kš	œžœžœ œžœ˜4Kšœžœžœ œ
 œžœ˜/šœ	žœžœŸ
œ˜>Kšœ œžœ˜—Kšœ
žœžœžœžœžœ˜CKš	œžœžœ œžœ˜$š	œžœžœŸ
œ œ
˜7Kšœ2 œžœ˜7—Kšœžœž	œžœ˜.Kšœžœžœžœ˜ Kš
œžœžœŸœŸœŸœžœ˜<Kš
œ	žœžœŸ œžœ˜(KšœŸ
œ˜:Kš	œžœžœŸ
œžœ˜;Kš
œžœžœŸ
 œžœ˜$Kšœžœžœžœ˜š
œ
žœžœž	œžœžœž	œ˜JKšœžœžœ˜—šœžœžœ˜0Kšœ+ œžœ˜0—šœžœžœ˜/Kšœ/ œžœ˜4—KšœŸ
œ˜7šœžœžœŸ
œ˜F˜BKšœ œžœ˜——Kš
œžœžœŸœŸœŸœžœ˜;šœ
žœžœ
˜"Kšœ) œžœ˜.—Kš
œ	žœžœŸ
 œžœ˜&KšœŸœŸœŸ
œ˜@Kš	œžœŸ
œ
 œžœ˜5šœžœžœžœžœžœžœžœ˜FKšœžœžœžœžœžœžœžœ˜FKšœžœžœžœžœžœžœžœžœ˜@—Kš
œ	žœžœŸ
 œžœ˜&Kšœ
žœžœžœ˜*Kš	œžœžœŸ
œžœ˜/Kš	œžœžœŸ
œžœ˜#š	œžœžœŸ
œŸ
œ
˜EKš	œ œ	 œ
 œžœ˜2—Kš	œžœžœ$ œžœ˜Fšœžœž	œ˜˜BK˜?KšœB œžœ˜G——Kš	œžœžœŸ
œžœ˜)Kš
œ
žœžœŸ œžœ˜"Kš	œ	žœžœ% œžœ˜=š	œž
œžœž	œžœ˜EKš	œžœž
œž
œžœ˜?Kšœž	œ˜—Kšœ	Ÿ
œŸœ˜šœ
žœžœŸ
œ˜$Kšœ= œžœ˜B—K˜0K˜3šœ
žœžœŸ
œ ˜CKšœ œžœ˜ —Kšœ
žœž
œžœ˜9šœ
žœž
œŸ
œ˜9Kšœ! œžœ˜&—Kš	œžœžœŸ
œžœ˜5Kšœžœžœžœ˜;Kš	œ
žœž
œ
 œ	žœ˜4Kš
œžœž
œŸ
 œžœ˜4KšœžœžœŸ
œ œžœ˜0Kš	œ	žœžœ œžœ˜,Kšœ
žœžœ&žœ˜=Kš	œžœžœ% œžœ˜AKšœŸ
˜K˜KšœŸ
œ˜$Kš
œžœžœŸ
 œžœ˜-šœžœž
œ˜%KšœŸ
œ œžœ˜.—KšœŸœ&˜>šœžœžœ˜6Kšœ œžœ˜!—Kšœžœž	œ
 œ	 œžœ˜2Kš	œžœžœŸ
œžœ˜5šœžœžœžœžœžœžœžœ˜EKšœžœ˜
—Kš
œžœžœŸ
 œžœ˜*Kš	œžœž	œŸ
œžœ˜:˜<K˜*—š	œžœžœ œžœ˜?Kš	œ
žœžœ œžœ˜*—Kšœžœžœ	 œ	 œžœ˜'Kšœžœžœžœ˜*šœ
žœž
œ˜KšœŸ
œ œžœ˜.—K˜Kš	œžœžœ
 œžœ˜!Kšœžœžœžœ˜KKšœ
žœžœ	 œ	 œžœ˜-šœžœžœŸ
œ˜:Kšœ" œžœ˜'—KšœžœžœŸ
œ	 œžœ˜;Kš	œžœž
œŸ
œžœ˜<Kš	œ
žœžœ$ œžœ˜>KšœŸœŸœ˜-K˜)šœžœžœŸ
œ˜:Kšœ œžœ˜—KšœžœžœŸ
œ˜,K˜0Kš	œžœž	œ œžœ˜6Kš
œžœžœŸ œžœ˜$K˜#Kš	œžœžœ œžœ˜*K˜'Kš	œžœžœ
 œžœ˜.Kšœ	žœžœŸ
œŸœžœ˜,KšœžœžœŸ
œŸœŸœŸœŸ œžœ˜JKšœžœžœŸ
œ œžœ˜0Kš	œ	žœžœ œžœ˜Kšœžœžœžœ˜/KšœžœžœŸœŸœžœ˜,Kšœ	žœžœžœ˜0Kšœ	žœžœžœ˜0Kš
œ
žœžœŸœŸœ œžœ˜BKšœžœžœ
 œ	 œžœ˜*šœžœžœŸ
œ˜,Kšœ" œžœ˜'—š	œžœžœŸ
œŸ
œ˜1˜>Kšœ œžœ˜——šœžœžœŸ
œ˜BKšœžœ˜—šœžœž
œ˜9Kšœ œžœ˜$—Kš
œžœžœŸ
 œžœ˜8Kš	œ	žœžœ
 œžœ˜%Kšœžœž	œ œ
 œžœ˜5šœ	žœžœŸ
œŸ
œŸ
œ˜FKšŸ
œžœ˜—Kš
œžœžœŸ
 œžœ˜*šœ	žœžœ˜1Kšœ œžœ˜#—Kšœžœžœ'žœ˜8Kšœ	žœžœžœ˜(šœ
žœž
œŸ
œ˜=˜@K˜8Kšœ œžœ˜——šœžœž	œŸœŸœŸœŸœŸœ˜EKšŸœžœ˜—šœ	žœžœŸ
œ˜"Kšœ% œžœ˜*—šœžœž	œ$˜=Kšœ
žœ˜—Kšœ
žœž
œŸ
œŸ
œžœ˜FKšœžœž	œžœ˜,Kšœžœžœžœ˜š	œžœžœŸ
œžœ˜Cš	œžœžœŸ
œžœ˜4š	œžœžœŸ
œžœ˜4š	œžœžœŸ
œžœ˜4šœžœžœ˜
šœžœžœŸ
œ˜KšœžœžœŸ
œŸ
œŸ
œžœžœ˜6—šœžœžœŸ
œ˜KšœžœžœŸ
œŸ
œŸ
œžœžœžœžœžœžœžœ˜I——————š	œžœžœžœžœ˜;Kšœ
žœžœžœ˜8Kšœ
žœ˜#—Kšœžœž
œžœ˜(Kšœžœž	œžœ˜ KšœžœŸ
œ˜š	œžœžœžœž
œ˜AKšœžœžœžœ˜&—Kš	œ	žœžœ
 œžœ˜%KšœžœžœŸ
œŸ œžœ˜/K˜šœžœžœ
Ÿ
œ!˜GKšœ œžœ˜"—šœ
žœžœ˜Kšœ8 œžœ˜=—šœžœžœžœž	œžœ˜JKšœž
œžœ˜—Kš	œžœž	œŸ
œžœ˜@Kš	œ
žœž
œ% œžœ˜EKšœžœžœŸ
œŸ
œžœ˜8KšœŸœ˜1Kšœžœžœžœ˜#Kš
œžœžœŸ
œŸ
œ œžœ˜DKš	œ
žœžœ/ œžœ˜I—�…—����+6��<r��