SXOutputPrivate.mesa
Copyright © 1984 by Xerox Corporation. All rights reserved.
Written by Shand, July 16, 1984 2:58:45 pm PDT
Last Edited by: Shand, March 10, 1985 10:28:08 pm PST
Last Edited by: Spreitzer, January 15, 1985 2:50:36 pm PST
GBB June 6, 1986 3:33:15 pm PDT
DIRECTORY
Ascii USING [],
Atom USING [],
CD USING [Design, Instance, Number, Object],
CDDirectory USING [],
CDIO USING [],
CDProperties USING [],
Convert USING [],
FS USING [],
IO USING [STREAM],
RefTab USING [],
Rope USING [ROPE],
SX USING [AreaPerimRec, Circuit, CircuitNode, LogicalCell, MergeRec, MergeRecList, NodeLinkage, SignalName, TechHandle],
SXAtoms USING [],
SXOutput USING [LinkageHousekeeper],
SymTab USING [],
TerminalIO USING [],
TiogaOps USING [];
SXOutputPrivate: CEDAR DEFINITIONS ~ BEGIN
TYPES from SX.
Circuit: TYPE ~ SX.Circuit;
CircuitNode: TYPE ~ SX.CircuitNode;
AreaPerimRec: TYPE ~ SX.AreaPerimRec;
NodeLinkage: TYPE ~ SX.NodeLinkage;
MergeRec: TYPE ~ SX.MergeRec;
TechHandle: TYPE ~ SX.TechHandle;
MergeRecList: TYPE ~ SX.MergeRecList;
SignalName: TYPE ~ SX.SignalName;
LogicalCell: TYPE ~ SX.LogicalCell;
TYPES from elsewhere.
ROPE: TYPE ~ Rope.ROPE;
ROPEList: TYPE ~ LIST OF ROPE;
Naming
Naming: TYPE ~ REF NamingRep;
NamingRep: TYPE ~ RECORD [next: Naming, named: REF ANY, prefixes: ROPEList, name: ROPE, explicit, collided, squash: BOOLFALSE, count: INTEGER ← CountBase-1];
named = NIL => this is not really a name for anything
named one of: REF CircuitNode, Instance, Object
GetANaming: PROC [thing: REF ANY, insistValid: BOOLFALSE] RETURNS [naming: Naming];
Valid: PROC [naming: Naming] RETURNS [valid: BOOL];
GetAName: PROC [thing: REF ANY] RETURNS [name: ROPE];
NamingName: PROC [naming: Naming] RETURNS [name: ROPE];
HasAskedName: PROC [thing: REF ANY] RETURNS [asked: BOOL];
NamingAsked: PROC [naming: Naming] RETURNS [asked: BOOL];
EnumerateNames: PROC [thing: REF ANY, PerName: PROC [name: ROPE, valid: BOOL], onlyValid: BOOLTRUE];
ReverseNamings: PROC [oldFirst: Naming] RETURNS [newFirst: Naming];
SortNamings: PROC [oldFirst: Naming] RETURNS [newFirst: Naming];
PrintNaming: PROC [to: IO.STREAM, naming: Naming, insert: ROPENIL];
Name generator customization
CountBase: INTEGER ~ 1;
Assistant procs
AddIntermediateNodes: PROC [cellList: LIST OF REF LogicalCell];
CleanUp: PROC [cellList: LIST OF REF LogicalCell];
Randomness
isPort, actualCellInstanceName, actualSignalName: ATOM;
ValidMerge: PROC [MergeRec] RETURNS [BOOL];
PrintRoseInstantiationTransformation: PROC [to: IO.STREAM, appl: CD.Instance];
PrintRoseInstanceBounds: PROC [to: IO.STREAM, appl: CD.Instance];
NameTransType: PROC [desWDir: ROPE, obj: CD.Object, dfStream: IO.STREAM, type, mode: ATOM, length, width: CD.Number] RETURNS [name: ROPE];
UnNameTransType: SXOutput.LinkageHousekeeper;
Types shared by SXOutputImplA and SXOutputImplC
QuoteProc: TYPE ~ PROCEDURE [name: ROPE] RETURNS [ROPE];
PrintStrayProc: TYPE ~ PROCEDURE [Stream: IO.STREAM, node: REF CircuitNode];
PrintNodeLocProc: TYPE ~ PROCEDURE [Stream: IO.STREAM, node: REF CircuitNode];
SXOutput.NodePrintProc
PrintHeadProc: TYPE ~ PROCEDURE [obj: CD.Object, name: ROPE];
PrintFormalProc: TYPE ~ PROCEDURE [qName: ROPE, first: BOOL, node: REF CircuitNode];
PrintStartBodyProc: TYPE ~ PROCEDURE [cellName: ROPE];
PrintLocalNodeProc: TYPE ~ PROCEDURE [node: REF CircuitNode];
PrintNodeAliasesProc: TYPE ~ PROCEDURE [node: REF CircuitNode, alias: Naming];
PrintInstanceHeadProc: TYPE ~ PROCEDURE [inst: CD.Instance, defName: ROPE];
PrintActualProc: TYPE ~ PROCEDURE [qActualNode, qFormalPort: ROPE, actualNum: CARDINAL];
PrintInstanceEndProc: TYPE ~ PROCEDURE [];
PrintBodyEndProc: TYPE ~ PROCEDURE [];
ComputeStray: PrintStrayProc;
InsertCell: PrintHeadProc;
InsertPort: PrintFormalProc;
EndPortList: PrintStartBodyProc;
InsertNode: PrintLocalNodeProc;
CreateInstance: PrintInstanceHeadProc;
InsertPortInstance: PrintActualProc;
EndPortInstanceList: PrintInstanceEndProc;
SetDesignProp: PROCEDURE [cdD: CD.Design]
END.
gbb August 7, 1985 2:56:34 pm PDT
Moved here declaration of types shared by SXOutputImplA and SXOutputImplC.
changes to: UnNameTransType, QuoteProc, PrintStrayProc, PrintBodyEndProc, END
gbb August 20, 1985 12:31:54 pm PDT
The Core definition module CoreRecordCells was renamed to CoreClasses along with some of its types
changes to: DIRECTORY, coreCellInstance: type name changed form RecordCell to RecordCellType, coreInstanceBuffer: type name changed form Instance to CellInstance
gbb November 24, 1985 4:10:16 pm PST
Removed stuff for Core output.