DIRECTORY Core, CrossRAM, Ports, Rosemary, RosemaryUser; CrossRAMTest: CEDAR PROGRAM IMPORTS Ports, Rosemary, RosemaryUser = BEGIN OPEN CrossRAM; Init: PROC [ct: Core.CellType] = { [] _ Rosemary.SetFixedWire[ct.public[Vdd], H]; [] _ Rosemary.SetFixedWire[ct.public[Gnd], L]; [] _ Rosemary.SetFixedWire[ct.public[PadVdd], H]; [] _ Rosemary.SetFixedWire[ct.public[PadGnd], L]; [] _ Ports.InitTesterDrive[wire: ct.public[nPrecharge], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[Access], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[Write], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[Read], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[Address], initDrive: force]; [] _ Ports.InitTesterDrive[wire: ct.public[Data], initDrive: none]; [] _ RosemaryUser.MakeStandardViewer[name: "CrossRAM Tester", cellType: ct, testButtons: LIST[["Write2Read2", Write2Read2]], displayWires: RosemaryUser.DisplayPortLeafWires[wire: ct.public]]; }; Write2Read2: RosemaryUser.TestProc = { AccessRAM: PROC [write: BOOL, address: CARDINAL, data: CARDINAL] = { p[Address].c _ address; p[nPrecharge].b _ FALSE; Eval[]; p[nPrecharge].b _ TRUE; Eval[]; p[Access].b _ TRUE; IF write THEN { p[Data].d _ force; p[Write].b _ TRUE; } ELSE { p[Data].d _ expect; p[Read].b _ TRUE; }; p[Data].c _ data; Eval[]; p[Access].b _ p[Write].b _ p[Read].b _ FALSE; p[Data].d _ none; Eval[]; }; p[Vdd].b _ TRUE; p[Gnd].b _ FALSE; p[PadVdd].b _ TRUE; p[PadGnd].b _ FALSE; p[nPrecharge].b _ TRUE; p[Access].b _ FALSE; p[Write].b _ FALSE; p[Read].b _ FALSE; Eval[! Rosemary.Stop => RESUME]; AccessRAM[write: TRUE, address: 0, data: 0]; AccessRAM[write: TRUE, address: 1, data: 0FFH]; AccessRAM[write: FALSE, address: 0, data: 0]; AccessRAM[write: FALSE, address: 1, data: 0FFH]; }; END. ˜CrossRAMTest.mesa Barth, March 25, 1986 11:39:53 am PST precharge enable select line if write then enable write drivers disable select line Κ0˜codešœ™K™%—K˜KšΟk œ/˜8K˜šΟn œœ˜Kšœ ˜'Kšœœ ˜—K˜šžœœ˜"K˜Kšœ.˜.Kšœ.˜.Kšœ1˜1Kšœ1˜1KšœJ˜JKšœF˜FKšœE˜EKšœD˜DKšœG˜GKšœC˜CK˜KšœYœb˜ΏK˜K˜—šž œ˜&J˜š ž œœ œ œœ˜DJ˜J™J™ Jšœœ˜J˜Jšœœ˜J˜J™J™Jšœœ˜J™J™"šœœ˜Jšœ˜Jšœ œ˜—šœœ˜Jšœ˜Jšœ œ˜J˜—Jšœ˜J˜J™J™Jšœ'œ˜-J™Jšœ˜J˜J˜J˜—J˜Jšœ œ œ˜"Jšœœœ˜(Jšœœœ˜,Jšœ œœ˜&J˜Jšœœ˜ J˜Jšœœ˜,Jšœœ˜/Jšœœ˜-Jšœœ˜0Kšœ˜—K˜Kšœ˜—…— δ