DIRECTORY Convert, Core, NewCoreClasses, CoreOps, Rope; NewCoreClassesImpl: CEDAR PROGRAM IMPORTS Convert, CoreOps, Rope EXPORTS NewCoreClasses = BEGIN OPEN Core, NewCoreClasses; RopeFromVolts: PUBLIC PROC [v: Volts] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[v], "V"]]; END; RopeFromKOhms: PUBLIC PROC [r: KOhms] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[r], "K"]]; END; RopeFrompF: PUBLIC PROC [c: pF] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[c], "pF"]]; END; RopeFromns: PUBLIC PROC [t: ns] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[t], "ns"]]; END; RopeFrommA: PUBLIC PROC [i: mA] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[i], "mA"]]; END; RopeFromuH: PUBLIC PROC [l: uH] RETURNS [rope: ROPE] = BEGIN RETURN [Rope.Cat[Convert.RopeFromReal[l], "uH"]]; END; resistorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Resistor", recast: NIL]]; CreateResistor: PUBLIC PROC [args: ResistorRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]]; cellType _ CoreOps.CreateCellType[ class: resistorCellClass, public: public, data: NEW [ResistorRec _ args], name: name, props: props]; }; inductorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Inductor", recast: NIL]]; CreateInductor: PUBLIC PROC [args: InductorRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]]; cellType _ CoreOps.CreateCellType[ class: inductorCellClass, public: public, data: NEW [InductorRec _ args], name: name, props: props]; }; capacitorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Capacitor", recast: NIL]]; CreateCapacitor: PUBLIC PROC [args: CapacitorRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]]; cellType _ CoreOps.CreateCellType[ class: capacitorCellClass, public: public, data: NEW [CapacitorRec _ args], name: name, props: props]; }; signalGeneratorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "SignalGenerator", recast: NIL]]; CreateSignalGenerator: PUBLIC PROC [args: SignalGeneratorRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n"] ]]; cellType _ CoreOps.CreateCellType[ class: signalGeneratorCellClass, public: public, data: NEW [SignalGeneratorRec _ args], name: name, props: props]; }; probeCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Probe", recast: NIL]]; CreateProbe: PUBLIC PROC [args: ProbeRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ SELECT args.type FROM Voltage => CoreOps.CreateWire[LIST[CoreOps.CreateWire[name: "n"]]], Current => CoreOps.CreateWire[LIST[CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"]]] ENDCASE => ERROR; cellType _ CoreOps.CreateCellType[ class: probeCellClass, public: public, data: NEW [ProbeRec _ args], name: name, props: props]; }; initCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Init", recast: NIL]]; CreateInit: PUBLIC PROC [args: InitRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = { public: Wire _ SELECT args.type FROM Voltage => CoreOps.CreateWire[LIST[CoreOps.CreateWire[name: "n"]]], Current => CoreOps.CreateWire[LIST[CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"]]] ENDCASE => ERROR; cellType _ CoreOps.CreateCellType[ class: initCellClass, public: public, data: NEW [InitRec _ args], name: name, props: props]; }; thymePanelCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "ThymePanel", recast: NIL]]; CreateThymePanel: PUBLIC PROC [args: ThymePanelRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] = BEGIN public: Wire _ CoreOps.CreateWire[]; cellType _ CoreOps.CreateCellType[ class: thymePanelCellClass, public: public, data: NEW [ThymePanelRec _ args], name: name, props: props]; END; END. ϊNewCoreClassesImpl.mesa Written by: Pradeep Sindhu April 1, 1986 1:12:34 am PST Last Edited by: Pradeep Sindhu April 30, 1986 10:32:23 pm PDT Translation Procs for Basic Types Resistor Inductor Capacitor SignalGenerator Probe Init ThymePanel Κ™˜™Icode™7™K™-——J™KšΟk œ.˜7K˜•StartOfExpansion[]šΟnœœ˜!Kšœ˜Kšœ˜Kšœœ˜ —head™!š ž œ œ œœ˜BKšœ*˜0Kšœ˜K˜—š ž œ œ œœ˜BKšœ*˜0Kšœ˜—K˜š ž œ œ œœ˜