DIRECTORY Basics, BitOps, CD, CDCommandOps, CDProperties, CDSequencer, CDIO, Core, CoreFlat, CDViewer, Ports, Rosemary, RosemaryUser, Sisyph, TamPorts, TamDefs; TestLP: CEDAR PROGRAM IMPORTS CDCommandOps, CoreFlat, CDProperties, Ports, Rosemary, RosemaryUser, Sisyph, TamPorts ~ BEGIN OPEN TamDefs; load, nByteSel, selIBufData, shiftSel, selCur, selNext, selWrite, nWtIBuf, clock, xBus, opCode, ibufN, d1, d2, r, euControl, nEuControl, muxBus, euCC: NAT _ LAST[NAT]; Vdd, Gnd: NAT; cellType: Core.CellType _ NIL; tester: RosemaryUser.Tester; design: CD.Design _ NIL; EUSimpleTest: RosemaryUser.TestProc = { EUInitPortIndicies[cellType]; TamPorts.SetP[p, d1, 1]; TamPorts.SetP[p, d2, 2]; TamPorts.SetP[p, euControl, 27H]; TamPorts.SetP[p, nEuControl, 58H]; TamPorts.CheckP[p, r, 3]; TamPorts.SetP[p, muxBus, 0]; Eval[]; TamPorts.SetP[p, d1, 3]; TamPorts.SetP[p, d2, 2]; TamPorts.SetP[p, euControl, 21H]; TamPorts.SetP[p, nEuControl, 5EH]; TamPorts.CheckP[p, r, 2]; Eval[]; TamPorts.SetP[p, d1, 3]; TamPorts.SetP[p, d2, 2]; TamPorts.SetP[p, euControl, 10H]; TamPorts.SetP[p, nEuControl, 6FH]; TamPorts.CheckP[p, r, 5]; Eval[]; TamPorts.SetP[p, d1, 3]; TamPorts.SetP[p, d2, 2]; TamPorts.SetP[p, euControl, 11H]; TamPorts.SetP[p, nEuControl, 6EH]; TamPorts.CheckP[p, r, 6]; Eval[]; TamPorts.SetP[p, d1, 3]; TamPorts.SetP[p, d2, 4]; TamPorts.SetP[p, euControl, 30H]; TamPorts.SetP[p, nEuControl, 0FH]; TamPorts.SetP[p, muxBus, 2]; TamPorts.CheckP[p, r, 0C0000001H]; Eval[]; TamPorts.SetP[p, d1, 8FFFFFFH]; TamPorts.SetP[p, d2, 4]; TamPorts.SetP[p, euControl, 40H]; TamPorts.SetP[p, nEuControl, 3FH]; TamPorts.SetP[p, muxBus, 2]; TamPorts.CheckP[p, r, 00000001BH]; Eval[]; }; EUCDExtract: PROC [comm: CDSequencer.Command] = { design _ comm.design; cellType _ Sisyph.ExtractSchematicByName["ExecutionUnits.icon", Sisyph.Create[design]]; EUInitPortIndicies[cellType]; [] _ Ports.InitPorts[cellType, ls, force, "D1", "D2", "MuxBus", "EUControl", "nEUControl"]; [] _ Ports.InitPorts[cellType, ls, none, "R", "euCC"]; Ports.ITDList[cellType.public, LIST[d1, d2, euControl, nEuControl, muxBus], force]; Ports.ITDList[cellType.public, LIST[r, euCC], none]; [] _ Rosemary.SetFixedWire[cellType.public[Vdd], H]; [] _ Rosemary.SetFixedWire[cellType.public[Gnd], L]; tester _ RosemaryUser.TestProcedureViewer[ cellType: cellType, testButtons: LIST["EuSimpleTest"], name: "Execution Unit Tester", displayWires: RosemaryUser.DisplayPortLeafWires[cellType], cutSet: CoreFlat.CreateCutSet[ labels: LIST["Logic", "LogicMacro"], cellTypes: LIST["LU", "Adder", "Shifter", "Priority", "ExecutionUnits"] ] ]; CDProperties.PutDesignProp[design, $DAUserRoseDisplay, tester.display]; }; EUInitPortIndicies: PROC [ct: Core.CellType] ~ { [d1, d2, r, euControl, nEuControl, muxBus, euCC] _ Ports.PortIndexes[ct.public, "D1", "D2", "R", "EUControl", "nEUControl", "MuxBus", "euCC"]; Vdd _ Ports.PortIndex[ct.public, "Vdd"]; Gnd _ Ports.PortIndex[ct.public, "Gnd"]; }; InstDPSimpleTest: RosemaryUser.TestProc = { InstDPInitPortIndicies[cellType]; TamPorts.SetP[p, nByteSel, 070H]; TamPorts.SetP[p, load, 1]; TamPorts.SetP[p, selIBufData, 2]; TamPorts.SetP[p, shiftSel, 4]; TamPorts.SetP[p, selCur, 8]; TamPorts.SetP[p, selNext, 4 ]; TamPorts.SetP[p, nWtIBuf, 0]; TamPorts.SetP[p, xBus, 03020100H]; TamPorts.SetP[p, selWrite, 8]; TamPorts.SetP[p, xBus, 07060504H]; TamPorts.SetP[p, selWrite, 4]; TamPorts.SetP[p, xBus, 0B0A0908H]; TamPorts.SetP[p, selWrite, 2]; TamPorts.SetP[p, xBus, 0F0E0D0CH]; TamPorts.SetP[p, selWrite, 1]; TamPorts.SetP[p, xBus, 0]; TamPorts.SetP[p, selWrite, 80H]; TamPorts.SetP[p, selWrite, 40H]; TamPorts.SetP[p, selWrite, 20H]; TamPorts.SetP[p, selWrite, 10H]; TamPorts.SetP[p, selWrite, 00H]; TamPorts.SetP[p, selWrite, 0]; TamPorts.SetP[p, nWtIBuf, 1]; TamPorts.SetP[p, shiftSel, 0]; TamPorts.SetP[p, selIBufData, 1]; TamPorts.SetP[p, nByteSel, 000H]; TamPorts.SetP[p, selCur, 8]; TamPorts.SetP[p, selNext, 4 ]; TamPorts.SetP[p, shiftSel, 8]; TamPorts.CheckP[p, opCode, 0]; TamPorts.CheckP[p, d1, 04030201H]; TamPorts.SetP[p, shiftSel, 4]; TamPorts.CheckP[p, opCode, 1]; TamPorts.CheckP[p, d1, 05040302H]; TamPorts.SetP[p, shiftSel, 2]; TamPorts.CheckP[p, opCode, 2]; TamPorts.CheckP[p, d1, 06050403H]; TamPorts.SetP[p, shiftSel, 1]; TamPorts.CheckP[p, opCode, 3]; TamPorts.CheckP[p, d1, 07060504H]; }; InstDPCDExtract: PROC [comm: CDSequencer.Command] = { design _ comm.design; cellType _ Sisyph.ExtractSchematicByName["InstDP.icon", Sisyph.Create[design]]; InstDPInitPortIndicies[cellType]; [] _ Ports.InitPorts[cellType, l, none, "Vdd", "Gnd"]; [] _ Ports.InitPorts[cellType, ls, force, "R", "load", "nByteSel", "SelIBufData", "ShiftSel", "SelCur", "SelNext", "SelWrite", "nWtIBuf", "CK", "XBus"]; [] _ Ports.InitPorts[cellType, ls, none, "D1", "IbufN", "OpCode"]; Ports.ITDList[cellType.public, LIST[r, load, nByteSel, selIBufData, shiftSel, selCur, selNext, selWrite, nWtIBuf, clock, xBus], force]; Ports.ITDList[cellType.public, LIST[d1, opCode, ibufN], none]; [] _ Rosemary.SetFixedWire[cellType.public[Vdd], H]; [] _ Rosemary.SetFixedWire[cellType.public[Gnd], L]; tester _ RosemaryUser.TestProcedureViewer[ cellType: cellType, testButtons: LIST["InstDPSimpleTest/Cut"], name: "Instruction Unit Tester /Cut", displayWires: RosemaryUser.DisplayPortLeafWires[cellType], cutSet: CoreFlat.CreateCutSet[ labels: LIST["Logic", "LogicMacro"], cellTypes: LIST["LU", "Adder", "Shifter", "Priority", "InstDP"] ] ]; CDProperties.PutDesignProp[design, $DAUserRoseDisplay, tester.display]; }; InstDPCDExtractSwitch: PROC [comm: CDSequencer.Command] = { design _ comm.design; cellType _ Sisyph.ExtractSchematicByName["InstDP.icon", Sisyph.Create[design]]; InstDPInitPortIndicies[cellType]; [] _ Ports.InitPorts[cellType, ls, force, "R", "load", "nByteSel", "SelIBufData", "ShiftSel", "SelCur", "SelNext", "SelWrite", "nWtIBuf", "CK", "XBus"]; [] _ Ports.InitPorts[cellType, ls, none, "D1", "IbufN", "OpCode"]; Ports.ITDList[cellType.public, LIST[r, load, nByteSel, selIBufData, shiftSel, selCur, selNext, selWrite, nWtIBuf, clock, xBus], force]; Ports.ITDList[cellType.public, LIST[d1, opCode, ibufN], none]; [] _ Rosemary.SetFixedWire[cellType.public[Vdd], H]; [] _ Rosemary.SetFixedWire[cellType.public[Gnd], L]; tester _ RosemaryUser.TestProcedureViewer[ cellType: cellType, testButtons: LIST["InstDPSimpleTest/Switch"], name: "Instruction Unit Tester /Switch", displayWires: RosemaryUser.DisplayPortLeafWires[cellType] , cutSet: CoreFlat.CreateCutSet[ cellTypes: LIST["IBuf6TCell"] ] ]; CDProperties.PutDesignProp[design, $DAUserRoseDisplay, tester.display]; }; InstDPInitPortIndicies: PROC [ct: Core.CellType] ~ { [r, load, nByteSel, selIBufData, shiftSel, selCur, selNext, selWrite, nWtIBuf, clock, xBus] _ Ports.PortIndexes[ct.public, "R", "load", "nByteSel", "SelIBufData", "ShiftSel", "SelCur", "SelNext", "SelWrite", "nWtIBuf", "CK", "XBus"]; [d1, opCode, ibufN] _ Ports.PortIndexes[ct.public, "D1", "OpCode", "IbufN"]; Vdd _ Ports.PortIndex[ct.public, "Vdd"]; Gnd _ Ports.PortIndex[ct.public, "Gnd"]; }; RosemaryUser.RegisterTestProc["EuSimpleTest", EUSimpleTest]; CDCommandOps.RegisterWithMenu[ menu: $ProgramMenu, entry: "Extract & Rosmary EU", doc: "", proc: EUCDExtract ]; RosemaryUser.RegisterTestProc["InstDPSimpleTest/Cut", InstDPSimpleTest]; CDCommandOps.RegisterWithMenu[ menu: $ProgramMenu, entry: "Extract & Rosmary InstDP / Cut", doc: "", proc: InstDPCDExtract ]; RosemaryUser.RegisterTestProc["InstDPSimpleTest/Switch", InstDPSimpleTest]; CDCommandOps.RegisterWithMenu[ menu: $ProgramMenu, entry: "Extract & Rosmary InstDP / Switch", doc: "", proc: InstDPCDExtractSwitch ]; END. TestLP.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last Edited by: Krivacic April 10, 1987 1:05:00 pm PST Last Edited by: Alan Bell September 25, 1987 2:55:13 pm PDT -- EU Unit --------------------------------------------- --PROC [cellType: Core.CellType, p: Ports.Port, Eval: PROC]-- -- Add -- Shift -- Priority --Extract Logical Unit -- Instruction Buffer Tester ---------------------------------------------------- --PROC [cellType: Core.CellType, p: Ports.Port, Eval: PROC]-- TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; -- Fill buffer TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; -- Sit a Cycle TamPorts.GoClock[p, clock, Eval]; -- 1st Read & Compare TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; TamPorts.GoClock[p, clock, Eval]; --Extract Logical Unit --Extract Logical Unit labels: LIST["Logic", "LogicMacro"], -- Rosemary Registration ---------------------------------------------------- Κ ˜™ Icodešœ Οmœ1™Kšœ4˜4Kšœ4˜4K˜šœ ˜ šœ!˜!Kšœ˜Kšœ žœ˜+Kšœ&˜&Kšœ;˜;šœ˜Kšœžœ˜%Kšœ žœ1˜@Kšœ˜—Kšœ˜——K˜KšœG˜GK˜K˜K™—K˜K˜šŸœžœ ˜;K˜K™K˜Kšœ˜KšœO˜OKšœ!˜!Kšœ˜˜˜KšœB˜BKšœžœd˜‡Kšœžœ˜>Kšœ4˜4Kšœ4˜4K˜K˜šœ ˜ šœ!˜!Kšœ˜Kšœ žœ˜.Kšœ)˜)Kšœ;˜;šœ˜Kšœžœ™%Kšœ žœ˜Kšœ˜—Kšœ˜——KšœG˜GK˜K˜K˜K˜K™—šŸœžœ˜4Kšœι˜ιKšœL˜LKšœ(˜(Kšœ(˜(K˜K˜—K˜K˜K˜KšœM™MK˜Kšœ<˜