Sisyph.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Created by Pradeep Sindhu and Bertrand Serlet, June 1, 1986 3:14:31 pm PDT
Pradeep Sindhu April 17, 1986 6:02:22 pm PST
Barth, January 13, 1986 3:31:45 pm PST
Abstract
Sisyph is a schematics to core extractor: it operates on instances of CD objects to produce Core CellTypes. Conceptually, its graphical input consists of a small number of different object types: wires, schematics, icons, and wireIcons. Wires represent the electrical notion of a wire (wires are unstructured for the moment, and will remain this way till Sinix is able to handle structure). Schematics represent the electrical notion of a circuit. Icons are simply graphical shorthands for schematics—they are the graphical equivalent of a procedure call where the schematic is the analog of the procedure. Finally, wireIcons serve the same function for wires as icons do for schematics.
DIRECTORY
AMModel USING [Context],
CD USING [Design, Object],
Core USING [CellType, ROPE, Wire, Wires],
Sinix USING [Mode],
SymTab USING [Ref];
Types
Context: TYPE = SymTab.Ref;
CellType: TYPE = Core.CellType;
Wire: TYPE = Core.Wire;
Wires: TYPE = Core.Wires;
Object: TYPE = CD.Object;
ROPE: TYPE = Core.ROPE;
Extraction
expressionsProp:
ATOM;
Property on CD objects and CD instances that holds Sisyph expressions.
designRope:
ROPE;
name of Sisyph variable that holds the ChipNDale design.
cellIconRope:
ROPE;
name of Sisyph variable that holds the Core for a cell icon.
wireIconRope:
ROPE;
name of Sisyph variable that holds the Core for a wire icon.
wireRope:
ROPE;
name of Sisyph variable that holds the Core for a wire.
nameRope:
ROPE;
name of Sisyph variable that represents the name of a wire or a cellType.
globalNamesRope:
ROPE;
name of Sisyph variable that represents a list of names of global wires.
corePropsRope:
ROPE;
name of Sisyph variable that represents a list of properties to be put on a CellType or Wire.
coreInstPropsRope:
ROPE;
name of Sisyph variable that represents a list of properties to be put on a CellType instance.
cdObjRope:
ROPE;
name of Sisyph variable that holds the CD object being extracted.
iconicProp:
ATOM;
property whose value is an atom; a NIL value indicates a schematic, a non-nil value indicates an iconicCell or an iconicWire depending on its value.
iconicCell:
ATOM;
value of iconicProp that indicates that the object is a cell icon.
iconicWire:
ATOM;
value of iconicProp that indicates that the object is an icon for a wire.
parmNamesProp:
ATOM;
property on icon that contains the names of the icon's parameters. A NIL value => any variable is potentially a parameter; a list with a rope="0" as its first element => 0 parameters.
cachedResultProp:
ATOM;
property containing cached core result.
defaultGlobalNames: LIST OF ROPE;
sisyphMode: Sinix.Mode;
mode record containing which properties Sinix should use.
ES, ExtractSchematicByName: PROC [name: ROPE, cx: Context] RETURNS [CellType];
IsResultExpression: PROC [expr: ROPE] RETURNS [BOOL];
Context Handling Procedures
Create: PUBLIC PROC [design: CD.Design, globalNames: LIST OF ROPE ← defaultGlobalNames] RETURNS [cx: Context];
Copy:
PUBLIC
PROC [cx: Context]
RETURNS [newCx: Context];
Creates a new context and copies cx to it.
Store:
PUBLIC
PROC [cx: Context, var:
ROPE, value:
REF ←
NIL];
Stores value into var in cx; if var didn't exist it is created; a NIL value removes var from cx.
Eval:
PUBLIC
PROC [cx: Context, expr:
ROPE, cedarCx: AMModel.Context ←
NIL];
Computes the value of expr in <cx, cedarCx>.
END.