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)* ')'