EDIFAndCorePrivate.Mesa
Copyright c 1986 by Xerox Corporation. All rights reserved.
Spreitzer, January 30, 1986 2:02:49 pm PST
DIRECTORY Asserting, BasicTime, EDIFAndCore, HashTable, Imager, ImagerPixelMap, IO, Rope, Sets;
EDIFAndCorePrivate: CEDAR DEFINITIONS = {OPEN EDIFAndCore;
SyntaxError: ERROR [stream: IO.STREAM, index: INT, complaint: ROPE];
RefInt: TYPE = REF INT;
StdTail: TYPE = RECORD [c: Comments, ues: UserExtensions];
EDIFConversion: TYPE = REF EDIFConversionPrivate;
EDIFConversionPrivate: TYPE = RECORD [
rawDesigns, rawLibraries: Dictionary--of LORA--,
ew: EDIFWhole
];
CellConversion: TYPE = REF CellConversionPrivate;
CellConversionPrivate: TYPE = RECORD [
ec: EDIFConversion,
status: Status ← NIL,
viewMap: ViewMap ← NIL,
views: HashTable.Table,
comments: Comments,
ues: UserExtensions];
ViewConversion: TYPE = REF ViewConversionPrivate;
ViewConversionPrivate: TYPE = RECORD [
cc: CellConversion,
comments: Comments,
ues: UserExtensions];
Qual: TYPE = RECORD [outer, inner: ROPE];
ViewMap: TYPE = REF ViewMapPrivate;
ViewMapPrivate: TYPE = RECORD [
portMap: HashTable.Table--MappablePort b PortMapping--,
instanceMap: HashTable.Table--MappableInstance b InstanceMapping--,
comments: Comments,
ues: UserExtensions];
PortMapping: TYPE = REF PortMappingPrivate;
PortMappingPrivate: TYPE = RECORD [
equiv: MappablePortList,
comments: Comments,
ues: UserExtensions];
MappablePortList: TYPE = LIST OF MappablePort;
MappablePort: TYPE = REF MappablePortPrivate;
MappablePortPrivate: TYPE = RECORD [
viewName, portName: ATOM
];
InstanceMapping: TYPE = REF InstanceMappingPrivate;
InstanceMappingPrivate: TYPE = RECORD [
equiv: MappableInstanceList,
comments: Comments,
ues: UserExtensions];
MappableInstanceList: TYPE = LIST OF MappableInstance;
MappableInstance: TYPE = REF MappableInstancePrivate;
MappableInstancePrivate: TYPE = RECORD [
viewName: ATOM,
instantiationPath: ATOMList
];
ViewType: TYPE = {MaskLayout, Netlist, Schematic, Symbolic, Behavior, Document, Stranger};
View: TYPE = REF ViewPrivate;
ViewPrivate: TYPE = RECORD [
type: ViewType,
name: ROPE,
status: Status ← NIL,
interfaceSeen, contentsSeen: BOOLFALSE,
assns: ARRAY Publicity OF Assertions ← ALL[NIL],
std: ARRAY Publicity OF RECORD [head, tail: RECORD [comments: Comments, ues: UserExtensions]],
comments: Comments,
ues: UserExtensions];
Publicity: TYPE = {Interface, Contents};
Converter: TYPE = REF ConverterPrivate;
ConverterPrivate: TYPE = RECORD [
Convert: PROC [converterData: REF ANY, cc: CellConversion, v: View, part: LORA, pub: Publicity, context: ROPE],
converterData: REF ANYNIL
];
LexEDIF: PROC [from: IO.STREAM] RETURNS [stmt: LORA];
LcA: PROC [a: ATOM] RETURNS [la: ATOM];
la.PName = LowerCase[a.PName]
IDFromEDIF: PROC [a: ATOM] RETURNS [name: ROPE];
ParseTechnology: PROC [ec: EDIFConversion, lexed: LORA, context: ROPE] RETURNS [t: Technology];
ParseCell: PROC [ec: EDIFConversion, lexed: LORA, context: ROPE] RETURNS [ct: CoreCellType];
ParseViewMap: PROC [ec: EDIFConversion, lexed: LORA, context: ROPE] RETURNS [vm: ViewMap];
ParseStatus: PROC [lexedRA: REF ANY, context: ROPE] RETURNS [status: Status];
ParseComment: PROC [lexedRA: REF ANY, context: ROPE] RETURNS [comment: Comment];
CAppend: PROC [oldHead, oldTail: Comments, x: Comment] RETURNS [newHead, newTail: Comments];
ParseUserExtension: PROC [lexedRA: REF ANY, context: ROPE] RETURNS [ue: UserExtension];
UEAppend: PROC [oldHead, oldTail: LIST OF UserExtension, x: UserExtension] RETURNS [newHead, newTail: LIST OF UserExtension];
CheckLength: PROC [lora: LORA, context: ROPE, min: INT ← 0, max: INTLAST[INT]];
CheckHead: PROC [lexed: LORA, keyword: ATOM, context: ROPE];
Length: PROC [lora: LORA, max: INTLAST[INT]] RETURNS [length: INT];
LFetch: PROC [lora: LORA, index: NAT] RETURNS [ra: REF ANY];
ToQual: PROC [ra: REF ANY, bitch: ROPE] RETURNS [q: Qual];
ToATOM: PROC [ra: REF ANY, bitch: ROPE] RETURNS [a: ATOM];
ToLORA: PROC [ra: REF ANY, bitch: ROPE] RETURNS [lora: LORA];
ToROPE: PROC [ra: REF ANY, bitch: ROPE] RETURNS [r: ROPE];
ToINT: PROC [ra: REF ANY, bitch: ROPE, min: INTFIRST[INT], max: INTLAST[INT]] RETURNS [i: INT];
SetConverter: PROC [key: ATOM, pub: Publicity, c: Converter];
}.