DIRECTORY AMModel USING [Context], CD USING [Design, Object, PropList], Core, Sinix USING [Mode], SymTab USING [Ref]; Sisyph: CEDAR DEFINITIONS = BEGIN Context: TYPE = SymTab.Ref; CellType: TYPE = Core.CellType; Wire: TYPE = Core.Wire; Wires: TYPE = Core.Wires; WireSeq: TYPE = Core.WireSeq; Object: TYPE = CD.Object; ROPE: TYPE = Core.ROPE; ROPES: TYPE = LIST OF ROPE; expressionsProp: ATOM; cellIconRope: ROPE; wireIconRope: ROPE; wireRope: ROPE; nameRope: ROPE; corePropsRope: ROPE; coreInstPropsRope: ROPE; parmNamesProp: ATOM; cachedResultProp: ATOM; defaultGlobalNames: ROPES; mode: Sinix.Mode; ES, ExtractSchematicByName: PROC [name: ROPE, cx: Context] RETURNS [CellType]; Create: PROC [design: CD.Design, previousCx: Context _ NIL] RETURNS [cx: Context]; Copy: PROC [cx: Context] RETURNS [newCx: Context]; Store: PROC [cx: Context, var: ROPE, value: REF _ NIL]; Insert: PROC [cx: Context, var: ROPE, value: REF _ NIL]; Eval: PROC [cx: Context, expr: ROPE, cedarCx: AMModel.Context _ NIL]; GetDesign: PROC [cx: Context] RETURNS [CD.Design]; GetGlobalNames: PROC [cx: Context] RETURNS [ROPES]; GetCDObj: PROC [cx: Context] RETURNS [Object]; iconClass: Core.CellClass; CreateIcon: PROC [cellType: CellType, name: ROPE _ NIL, props: Core.Properties _ NIL] RETURNS [icon: CellType]; EqualRopes: PROC [ropes1, ropes2: ROPES] RETURNS [BOOL]; Cons: PROC [r: ROPE, lor: ROPES] RETURNS [ROPES]; List: PROC [r1, r2, r3, r4, r5, r6: ROPE _ NIL] RETURNS [lor: ROPES]; GlobalNonAtomic: SIGNAL [record: CellType, name: ROPE, wire: Wire]; InterpreterError: SIGNAL [cx: Context, expr, errorRope: ROPE]; IsResultExpression: PROC [expr: ROPE] RETURNS [BOOL]; EvaluateParameters: PUBLIC PROC [userData: REF, obj: Object, properties: CD.PropList] RETURNS [cx: Context, resultRope: ROPE]; ProcessGlobalNames: PROC [record: CellType, cx: Context]; END. Sisyph.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Created by Sindhu and Serlet, November 26, 1985 1:02:25 am PDT Pradeep Sindhu November 15, 1986 11:24:25 pm PST Barth, January 13, 1986 3:31:45 pm PST Bertrand Serlet December 11, 1986 11:33:12 pm PST Types Extraction Property on CD objects and CD instances that holds Sisyph expressions. name of Sisyph variable that holds the Core for a cell icon. name of Sisyph variable that holds the Core for a wire icon. name of Sisyph variable that holds the Core for a wire. name of Sisyph variable that represents the name of a wire or a cellType. name of Sisyph variable that represents a list of properties to be put on a CellType or Wire. name of Sisyph variable that represents a list of properties to be put on a CellType instance. 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. property containing cached core result. mode record for Sinix.Extract or SinixOps.ExtractCDInstance. Context Handling Procedures Creates or copies to a new context (with globalNames initialized to defaultGlobalNames), and evaluates all design satellites in that context. Creates a new context and copies cx to it. Stores value into var in cx; if var didn't exist it is created; a NIL value removes var from cx. Stores value into var in cx only if var didn't exist Computes the value of expr in . Returns the current design Returns the current list of global names Returns the current object being extracted Icon class An icon cell type has the same Core data structure as some other cell type but has a new property list. Conveniences Equality of the 2 sets of ROPES. This function is useful to add a global variables to the global variables of a context. For example to have the global names be Vdd, Gnd, and Clock, just add as object satellite to the design: globalNames _ Cons["Clock", globalNames]. This function is necessary because CONS ["Clock", globalNames] would produce a LORA and not a LOR. This function is useful to set the global variables of a context. For example to have the global names be Vdd, Gnd, and Clock, just add as object satellite to the design: globalNames _ List["Vdd", "Gnd", "Clock"]. This function is necessary because LIST ["Vdd", "Gnd", "Clock"] would produce a LORA and not a LOR. Exceptions Semi-public Utilities The order of evaluation is: (1) expressions specified in expressionsProp property of object; (2) arguments specified in satellites of object (3) arguments specified in expressionsProp property of instance; (4) arguments specified in satellites of instance. Thus instance satellites take precedence over instance property exprs, which take precedence over object satellites, which take precedence over object property exprs. The evaluation is performed in two passes: the second pass handles result expressions while the first pass handles all others. When evaluating satellite exprs, an expression containing "_" is evaluated, an expression containing a ":" is assumed to be a property, while all other expressions are assumed to be a name. Modifies in place record to fuse global wires. Modification in place is always dangerous, so avoid using this function ... Κ’˜™ Jšœ Οmœ7™BIcodešœ;Οk™>Kšœ-ž™0Kšœ#ž™&Kšœ1™1—K˜šž ˜ Kšœžœ ˜Kšžœžœ˜$Kšœ˜Kšœžœ˜Kšœžœ˜—K˜KšΡblnœžœž œž˜!head™Kšœ žœ˜Kšœ žœ˜Kšœžœ ˜Kšœžœ˜Kšœ žœ˜Kšœžœžœ˜Kšžœžœžœ˜Kš žœžœžœžœžœ˜—™ šœžœ˜Kšœ žœ žœ*™GK˜—šœžœ˜Kšœ<™<—šœžœ˜K™<—šœ žœ˜Kšœ7™7—šœ žœ˜KšœI™I—šœžœ˜K™]—šœžœ˜K™^—šœžœ˜KšœEžœp™Έ—šœžœ˜K™'K™—Kšœžœ˜K˜šœ˜K™—™š ‘œžœžœžœžœ˜5K˜—š‘œžœžœ žœžœ žœžœ˜~Kšœε™εK˜—š‘œžœ!˜9J™0J™K—K˜K™—Kšžœ˜J™—…—@ή