DIRECTORY Convert, Core, CoreOps, ElectricalCoreClasses, Rope; ElectricalCoreClassesImpl: CEDAR PROGRAM IMPORTS Convert, CoreOps, Rope EXPORTS ElectricalCoreClasses = BEGIN OPEN Core, ElectricalCoreClasses; RopeFromV: PUBLIC PROC [v: V] 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 _ "Resistor", 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 _ "Inductor", 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 _ "Capacitor", 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]; }; bjtCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "BJT", recast: NIL]]; CreateBJT: PUBLIC PROC [args: BJTRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] ~ { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "c"], CoreOps.CreateWire[name: "b"], CoreOps.CreateWire[name: "e"] ]]; cellType _ CoreOps.CreateCellType[ class: bjtCellClass, public: public, data: NEW [BJTRec _ args], name: name, props: props]; }; diodeCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Diode", recast: NIL]]; CreateDiode: PUBLIC PROC [args: DiodeRec, 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: diodeCellClass, public: public, data: NEW [DiodeRec _ args], name: name, props: props]; }; coupledIndCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Coupled Inductors", recast: NIL]]; CreateCoupledInd: PUBLIC PROC [args: CoupledIndRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] ~ { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]], CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n2"], CoreOps.CreateWire[name: "n3"] ]]]]; cellType _ CoreOps.CreateCellType[ class: coupledIndCellClass, public: public, data: NEW [CoupledIndRec _ args], name: name, props: props]; }; losslessLineCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Lossless Line", recast: NIL]]; CreateLosslessLine: PUBLIC PROC [args: LosslessLineRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] ~ { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]], CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n2"], CoreOps.CreateWire[name: "n3"] ]]]]; cellType _ CoreOps.CreateCellType[ class: losslessLineCellClass, public: public, data: NEW [LosslessLineRec _ args], name: name, props: props]; }; linearSourceCellClass: PUBLIC CellClass_ NEW [CellClassRec _ [name: "Linear Source", recast: NIL]]; CreateLinearSource: PUBLIC PROC [args: LinearSourceRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [cellType: CellType] ~ { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n0"], CoreOps.CreateWire[name: "n1"] ]], CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n2"], CoreOps.CreateWire[name: "n3"] ]]]]; cellType _ CoreOps.CreateCellType[ class: linearSourceCellClass, public: public, data: NEW [LinearSourceRec _ args], name: name, props: props]; }; signalGeneratorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "SignalGenerator", recast: NIL]]; CreateSignalGenerator: PUBLIC PROC [args: SignalGeneratorRec, name: ROPE _ "SignalGenerator", 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]; }; sineGeneratorCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "SineGenerator", recast: NIL]]; CreateSineGenerator: PUBLIC PROC [args: SineGeneratorRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [sineGenerator: CellType] ~ { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n"] ]]; sineGenerator _ CoreOps.CreateCellType[ class: sineGeneratorCellClass, public: public, data: NEW [SineGeneratorRec _ args], name: name, props: props]; }; acSourceCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "ACSource", recast: NIL]]; CreateACSource: PUBLIC PROC [args: ACSourceRec, name: ROPE _ NIL, props: Properties _ NIL] RETURNS [acSource: CellType] = { public: Wire _ CoreOps.CreateWire[LIST[ CoreOps.CreateWire[name: "n"] ]]; acSource _ CoreOps.CreateCellType[ class: acSourceCellClass, public: public, data: NEW [ACSourceRec _ args], name: name, props: props]; }; probeCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Probe", recast: NIL]]; CreateProbe: PUBLIC PROC [args: ProbeRec, name: ROPE _ "Probe", 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 _ "Init", 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]; }; panelCellClass: PUBLIC CellClass _ NEW [CellClassRec _ [name: "Panel", recast: NIL]]; CreatePanel: PUBLIC PROC [args: PanelRec, name: ROPE _ "Control Panel", props: Properties _ NIL] RETURNS [cellType: CellType] = BEGIN public: Wire _ CoreOps.CreateWire[]; cellType _ CoreOps.CreateCellType[ class: panelCellClass, public: public, data: NEW [PanelRec _ args], name: name, props: props]; END; END. ŽElectricalCoreClassesImpl.mesa Copyright Σ 1987 by Xerox Corporation. All rights reserved. Written by: Pradeep Sindhu April 1, 1986 1:12:34 am PST Last Edited by: Last Edited by: Richley June 23, 1987 12:44:02 pm PDT Barth, July 8, 1988 11:59:13 am PDT Christian Le Cocq April 8, 1988 10:03:24 am PDT Christian LeCocq February 11, 1987 1:03:26 pm PST Bertrand Serlet April 15, 1987 4:11:42 pm PDT Pradeep Sindhu December 4, 1986 1:18:52 am PST Translation Procs for Basic Types Resistor Inductor Capacitor Bipolar Junction Transistor Diode Coupled Inductors Lossless Line Linear Sources SignalGenerator Sine Generator AC Source Probe Init Panel Κ A˜šœ™Icode™