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];
Sisyph: CEDAR DEFINITIONS = BEGIN
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: REFNIL];
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.