<> <> <> <> <> <> <> <> <<>> DIRECTORY Core, CoreFlat, EU2Utils, Rope, Rosemary, RosemaryUser, Ports; EU2Sim: CEDAR PROGRAM IMPORTS CoreFlat, EU2Utils, Rosemary, RosemaryUser, Ports = BEGIN OPEN Core, EU2Utils; <<-- A test program for simulation with Rosemary>> <<>> Vdd, Gnd, PadVdd, PadGnd, PhA, PhB, VRef, DPRejectB, DPData, -- 32 bits KBus, -- 32 bits EURdFromPBus3AB, EUWriteToPBus3AB, EUAluOp2AB, -- 4 bits Dragon.ALUOps EUCondSel2AB, -- 4 bits Dragon.CondSelects EUCondition2B, DShA, DShB, DShRd, DShWt, DShIn, DShOut, DHold, DStAd: NAT; allOnes: LONG CARDINAL _ LOOPHOLE[LONG[-1]]; Initialize: PROC [public: Wire] = { Vdd _ PortIndex[public, "Vdd"]; Gnd _ PortIndex[public, "Gnd"]; PadVdd _ PortIndex[public, "PadVdd"]; PadGnd _ PortIndex[public, "PadGnd"]; PhA _ PortIndex[public, "PhA"]; PhB _ PortIndex[public, "PhB"]; VRef _ PortIndex[public, "VRef"]; DPRejectB _ PortIndex[public, "DPRejectB"]; DPData _ PortIndex[public, "DPData"]; KBus _ PortIndex[public, "KBus"]; EURdFromPBus3AB _ PortIndex[public, "EURdFromPBus3AB"]; EUWriteToPBus3AB _ PortIndex[public, "EUWriteToPBus3AB"]; EUAluOp2AB _ PortIndex[public, "EUAluOp2AB"]; EUCondSel2AB _ PortIndex[public, "EUCondSel2AB"]; EUCondition2B _ PortIndex[public, "EUCondition2B"]; DShA _ PortIndex[public, "DShA"]; DShB _ PortIndex[public, "DShB"]; DShRd _ PortIndex[public, "DShRd"]; DShWt _ PortIndex[public, "DShWt"]; DShIn _ PortIndex[public, "DShIn"]; DShOut _ PortIndex[public, "DShOut"]; DHold _ PortIndex[public, "DHold"]; DStAd _ PortIndex[public, "DStAd"]; [] _ Rosemary.SetFixedWire[public[Vdd], H]; [] _ Rosemary.SetFixedWire[public[Gnd], L]; [] _ Rosemary.SetFixedWire[public[PadVdd], H]; [] _ Rosemary.SetFixedWire[public[PadGnd], L]; [] _ Rosemary.SetFixedWire[public[VRef], H]; [] _ Ports.InitTesterDrive[public[PhA], force]; [] _ Ports.InitTesterDrive[public[PhB], force]; [] _ Ports.InitTesterDrive[public[DPRejectB], force]; [] _ Ports.InitPort[public[DPData], lc]; [] _ Ports.InitTesterDrive[public[DPData], expect]; [] _ Ports.InitPort[public[KBus], lc]; [] _ Ports.InitTesterDrive[public[KBus], force]; [] _ Ports.InitTesterDrive[public[EURdFromPBus3AB], force]; [] _ Ports.InitTesterDrive[public[EUWriteToPBus3AB], force]; [] _ Ports.InitPort[public[EUAluOp2AB], c]; [] _ Ports.InitTesterDrive[public[EUAluOp2AB], force]; [] _ Ports.InitPort[public[EUCondSel2AB], c]; [] _ Ports.InitTesterDrive[public[EUCondSel2AB], force]; [] _ Ports.InitTesterDrive[public[EUCondition2B], expect]; [] _ Ports.InitTesterDrive[public[DShA], force]; [] _ Ports.InitTesterDrive[public[DShB], force]; [] _ Ports.InitTesterDrive[public[DShRd], force]; [] _ Ports.InitTesterDrive[public[DShWt], force]; [] _ Ports.InitTesterDrive[public[DShIn], force]; [] _ Ports.InitTesterDrive[public[DShOut], expect]; [] _ Ports.InitTesterDrive[public[DHold], force]; [] _ Ports.InitPort[public[DStAd], c]; [] _ Ports.InitTesterDrive[public[DStAd], force]; }; ExerciseRose: PUBLIC PROC [ct: CellType, cutSets: LIST OF Rope.ROPE _ NIL] RETURNS [tester: RosemaryUser.Tester] = { Initialize[ct.public]; <<-- If testing the cellType>> tester _ RosemaryUser.TestProcedureViewer[ cellType: ct, testButtons: LIST["Sanity Check"], name: "EU2Test", displayWires: RosemaryUser.DisplayPortLeafWires[ct], cutSet: CoreFlat.CreateCutSet[cellTypes: cutSets], steady: FALSE]; }; END.