<> <> <> <<>> DIRECTORY Core, CoreOps, Ports, PW, Rosemary, RosemaryUser, Sisyph; BalancedDelayAdderTest: CEDAR PROGRAM IMPORTS CoreOps, Ports, PW, Rosemary, RosemaryUser, Sisyph = BEGIN BDATestProc: RosemaryUser.TestProc = { CycleBDAdder: PROC = { <<-- Construct TT>> Step: TYPE = [0..8); levIn0: ARRAY Step OF Ports.Level _ [L, L, L, L, H, H, H, H]; levIn1: ARRAY Step OF Ports.Level _ [L, L, H, H, L, L, H, H]; levCarryIn: ARRAY Step OF Ports.Level _ [L, H, L, H, L, H, L, H]; levSum: ARRAY Step OF Ports.Level _ [L, H, H, L, H, L, L, H]; levCarryOut: ARRAY Step OF Ports.Level _ [L, L, L, H, L, H, H, H]; FOR step: Step IN Step DO p[In0].l _ levIn0[step]; p[In1].l _ levIn1[step]; p[CarryIn].l _ levCarryIn[step]; p[SumOut].l _ levSum[step]; p[CarryOut].l _ levCarryOut[step]; Eval[]; ENDLOOP; }; --CycleBDAdder p[In0].l _ p[In1].l _ p[CarryIn].l _ p[SumOut].l _ p[CarryOut].l _ L; Eval[! Rosemary.Stop => RESUME]; CycleBDAdder[]; }; --BDATestProc ct: Core.CellType _ Sisyph.ExtractSchematicByName["BalancedAdder.sch", Sisyph.Create[PW.OpenDesign["///Users/gunther.pa/chips/PrismCells"], Sisyph.defaultGlobalNames]]; Vdd: NAT = CoreOps.GetWireIndex[ct.public, "Vdd"]; Gnd: NAT = CoreOps.GetWireIndex[ct.public, "Gnd"]; In0: NAT = CoreOps.GetWireIndex[ct.public, "In0"]; In1: NAT = CoreOps.GetWireIndex[ct.public, "In1"]; CarryIn: NAT = CoreOps.GetWireIndex[ct.public, "CarryIn"]; SumOut: NAT = CoreOps.GetWireIndex[ct.public, "SumOut"]; CarryOut: NAT = CoreOps.GetWireIndex[ct.public, "CarryOut"]; [] _ Rosemary.SetFixedWire[ct.public[Vdd], H]; [] _ Rosemary.SetFixedWire[ct.public[Gnd], L]; FOR i: NAT IN [0..ct.public.size) DO [] _ Ports.InitPort[wire: ct.public[i], initType: l]; ENDLOOP; [] _ Ports.InitTesterDrive[wire: ct.public[In0], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[In1], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[CarryIn], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[SumOut], initDrive: expect]; [] _ Ports.InitTesterDrive[wire: ct.public[CarryOut], initDrive: expect]; RosemaryUser.MakeStandardViewer[name: "BDAdder Tester", cellType: ct, testButtons: LIST[["BDATest", BDATestProc]], displayWires: RosemaryUser.DisplayPortLeafWires[wire: ct.public], flatten: TRUE]; END. <<>>