DIRECTORY PW; PrismArrayPW: CEDAR PROGRAM IMPORTS PW = BEGIN mulLib: PW.Design _ PW.OpenDesign["///Users/gunther.pa/chips/PrismCellLib.dale"]; NorIn: PW.Object _ PW.Get[mulLib, "NorLeft"]; Nor: PW.Object _ PW.Get[mulLib, "NorTop"]; OBufNoOp: PW.Object _ PW.Get[mulLib, "OBuffNull"]; Nand: PW.Object _ PW.Get[mulLib, "NandIn"]; TGA: PW.Object _ PW.Get[mulLib, "TGAdder"]; OBuf: PW.Object _ PW.Get[mulLib, "OBuffer"]; CLALeft: PW.Object _ PW.Get[mulLib, "CLAdderIn"]; CLA: PW.Object _ PW.Get[mulLib, "CLAdder"]; CLARight : PW.Object _ PW.Get[mulLib, "CLaddBuf"]; PropLeft: PW.Object _ PW.Get[mulLib, "PropIn"]; PropBuf: PW.Object _ PW.Get[mulLib, "OBufProp"]; PropRight: PW.Object _ PW.Get[mulLib, "PropBufNull"]; XBits, YBits: INT _ 4; ArrayGen: PW.UserProc = { NorRow: PW.Object _ PW.ArrayX[Nor, XBits-1]; fullNorRow: PW.Object _ PW.AbutX[NorIn, NorRow, OBufNoOp]; TGARow: PW.Object _ PW.ArrayX[TGA, XBits-1]; mulRow: PW.Object _ PW.AbutX[Nand, TGARow, OBuf]; fullMULArray: PW.Object _ PW.ArrayY[mulRow, YBits]; CLARow: PW.Object _ PW.ArrayX[CLA, XBits-1]; fullCLARow : PW.Object _ PW.AbutX[CLALeft, CLARow, CLARight]; PropArray: PW.Object _ PW.ArrayX[PropBuf, XBits-1]; fullPropRow: PW.Object _ PW.AbutX[PropLeft , PropArray, PropRight]; MUL: PW.Object _ PW.AbutY[fullPropRow, fullCLARow, fullMULArray, fullNorRow]; --CleanUp: PROC [design]; RETURN[MUL]; }; NorRowGen: PW.UserProc = { NorRow: PW.Object _ PW.ArrayX[Nor, XBits-1]; fullNorRow: PW.Object _ PW.AbutX[NorIn, NorRow, OBufNoOp]; --CleanUp: PROC [design]; RETURN[fullNorRow]; }; TGARowGen: PW.UserProc = { TGARow: PW.Object _ PW.ArrayX[TGA, XBits-1]; fullTGARow: PW.Object _ PW.AbutX[Nand, TGARow, OBuf]; --CleanUp: PROC [design]; RETURN[fullTGARow]; }; CLARowGen: PW.UserProc = { CLARow: PW.Object _ PW.ArrayX[CLA, XBits-1]; fullCLARow: PW.Object _ PW.AbutX[CLALeft, CLARow, CLARight]; --CleanUp: PROC [design]; RETURN[fullCLARow]; }; PropRowGen: PW.UserProc = { PropArray: PW.Object _ PW.ArrayX[PropBuf, XBits-1]; fullPropRow: PW.Object _ PW.AbutX[PropLeft , PropArray, PropRight]; --CleanUp: PROC [design]; RETURN[fullPropRow]; }; GiantArrayGen: PW.UserProc = { BigXBits, BigYBits: INT _ 16; NorRow: PW.Object _ PW.ArrayX[Nor, BigXBits-1]; fullNorRow: PW.Object _ PW.AbutX[NorIn, NorRow, OBufNoOp]; TGARow: PW.Object _ PW.ArrayX[TGA, BigXBits-1]; mulRow: PW.Object _ PW.AbutX[Nand, TGARow, OBuf]; fullMULArray: PW.Object _ PW.ArrayY[mulRow, BigYBits]; CLARow: PW.Object _ PW.ArrayX[CLA, BigXBits-1]; fullCLARow: PW.Object _ PW.AbutX[CLALeft, CLARow, CLARight]; PropArray: PW.Object _ PW.ArrayX[PropBuf, BigXBits-1]; fullPropRow: PW.Object _ PW.AbutX[PropLeft , PropArray, PropRight]; MUL: PW.Object _ PW.AbutY[fullPropRow, fullCLARow, fullMULArray, fullNorRow]; --CleanUp: PROC [design]; RETURN[MUL]; }; PW.Register[NorRowGen, "NorRow"]; PW.Register[TGARowGen, "TGARow"]; PW.Register[CLARowGen, "CLARow"]; PW.Register[PropRowGen, "PropRow"]; PW.Register[ArrayGen, "PrismArray"]; PW.Register[GiantArrayGen, "GiantArray"]; END. ΦPrismArrayPW.mesa Copyright c 1986 by Xerox Corporation. All rights reserved. Last Edited by: Neil Gunther February 24, 1986 12:13:40 pm PST Interface USING [Item], --AND gates --Adder pieces --Final sum pieces --Propogate pieces --NOTE: arg order Used to generate a 16x16 bit systolic multiplier < 10,000 xtors. On February 19, 1986, cell dimension was 3326x2500 (mm). Used by G. Beretta to test SOS. February 19, 1986 7:56:14 pm PST --NOTE: arg order Κ­˜šœ™Icodešœ Οmœ1™K™K™šΟk œ˜ Kšœ™Kšžœ˜—J˜š Οb œžœžœžœž˜.Jšœžœ žœ;˜QJšœ ™ Jšœžœ žœ˜-Jšœžœ žœ˜*Jšœ žœ žœ˜2Jšœ™Jšœžœ žœ˜+Jšžœžœ žœ˜+Jšœžœ žœ˜,Jšœ™Jšœ žœ žœ˜1Jšžœžœ žœ˜+Jšœ žœ žœ˜2Jšœ™Jšœ žœ žœ˜/Jšœ žœ žœ˜0Jšœ žœ žœ˜5Jšœžœ˜J˜šŸœžœ ˜Jšœžœ žœ˜,Jšœ žœ žœ ˜:Jšœžœ žœžœ ˜,Jšœžœ žœ˜1Jšœžœ žœ˜3Jšœžœ žœžœ ˜,Jšœ žœ žœ"˜=Jšœ žœ žœ˜3Jšœ žœ žœ(˜CJšœ™JšžŸžœ žœ:˜MJšœ žœ ˜Jšžœžœ˜Jšœ˜J˜—šŸ œžœ ˜Jšœžœ žœ˜,Jšœ žœ žœ ˜:Jšœ žœ ˜Jšžœ˜Jšœ˜J˜—šŸ œžœ ˜Jšœžœ žœžœ ˜,Jšœ žœ žœ˜5Jšœ žœ ˜Jšžœ˜Jšœ˜J˜—šŸ œžœ ˜Jšœžœ žœžœ ˜,Jšœ žœ žœ"˜