DIRECTORY CD, Core, CoreCreate, PadFrame, PWCore, Convert, Rope, GList; MIPadFrame: CEDAR PROGRAM IMPORTS CoreCreate, PadFrame, GList = BEGIN CreateWholeChip: PUBLIC PROC [innerCt: CoreCreate.CellType] RETURNS [cellType: CoreCreate.CellType] = { padlist: PadFrame.Pads _ NIL; chipside: CHAR; count: NAT; innames: LIST OF CoreCreate.WR _ NIL; CP: PROC [side: CHAR, pos: NAT] RETURNS [NAT] = { RETURN[ (SELECT side FROM 'A =>136-pos, 'B => 102-pos, 'C => 68-pos, 'D => 34-pos, ENDCASE => 0)]; }; AddtoList: PROC [name: CoreCreate.WR, list: LIST OF CoreCreate.WR] RETURNS [LIST OF CoreCreate.WR] ={ RETURN[ IF GList.Member[name, list] OR GList.Member[name, LIST["Gnd", "Vdd"]] THEN list ELSE CONS[name, list]] }; MPad: PROC [ padname: CoreCreate.WR, type: ATOM, pa1, pa2, pa3, pa4: CoreCreate.PA _ []] = { count _ count + 1; padlist _ PadFrame.AddPad[padlist, padname, type, CP[chipside, count], pa1, pa2, pa3, pa4]; IF pa1 # [] THEN innames _ AddtoList[pa1.actual , innames]; IF pa2 # [] THEN innames _ AddtoList[pa2.actual , innames]; IF pa3 # [] THEN innames _ AddtoList[pa3.actual , innames]; IF pa4 # [] THEN innames _ AddtoList[pa4.actual , innames]; }; ASide: PROC = { chipside _ 'A; count _ 0; MPad[xpd[14],$IOTst,["toChip","PDin22"],["fromChip","PDout22"],["enable","DPadEnb"]]; MPad[xpd[15],$IOTst,["toChip","PDin23"],["fromChip","PDout23"],["enable","DPadEnb"]]; MPad[xpd[16],$IOTst,["toChip","PDin24"],["fromChip","PDout24"],["enable","DPadEnb"]]; MPad[xpd[17],$IOTst,["toChip","PDin25"],["fromChip","PDout25"],["enable","DPadEnb"]]; MPad["PadGnd",$PadGnd]; MPad[xpd[18],$IOTst,["toChip","PDin26"],["fromChip","PDout26"],["enable","DPadEnb"]]; MPad[xpd[19],$IOTst,["toChip","PDin27"],["fromChip","PDout27"],["enable","DPadEnb"]]; MPad[xpd[20],$IOTst,["toChip","PDin28"],["fromChip","PDout28"],["enable","DPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad["XCE'",$In,["toChip","CE'"]]; MPad[xpd[21],$IOTst,["toChip","PDin29"],["fromChip","PDout29"],["enable","DPadEnb"]]; MPad[xpd[22],$IOTst,["toChip","PDin30"],["fromChip","PDout30"],["enable","DPadEnb"]]; MPad[xpd[23],$IOTst,["toChip","PDin31"],["fromChip","PDout31"],["enable","DPadEnb"]]; MPad[xpd[24],$IOTst,["toChip","PDin32"],["fromChip","PDout32"],["enable","DPadEnb"]]; MPad[xpd[25],$IOTst,["toChip","PDin33"],["fromChip","PDout33"],["enable","DPadEnb"]]; MPad["Vdd",$Vdd]; MPad["SealRing",$PadGnd]; MPad["Gnd",$Gnd]; MPad[xpd[26],$IOTst,["toChip","PDin34"],["fromChip","PDout34"],["enable","DPadEnb"]]; MPad[xpd[27],$IOTst,["toChip","PDin35"],["fromChip","PDout35"],["enable","DPadEnb"]]; MPad[xpd[28],$IOTst,["toChip","PDin36"],["fromChip","PDout36"],["enable","DPadEnb"]]; MPad[xpd[29],$IOTst,["toChip","PDin37"],["fromChip","PDout37"],["enable","DPadEnb"]]; MPad[xpd[30],$IOTst,["toChip","PDin38"],["fromChip","PDout38"],["enable","DPadEnb"]]; MPad[xpd[31],$IOTst,["toChip","PDin39"],["fromChip","PDout39"],["enable","DPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad["XPDTP",$IOTst,["toChip","PDTPin"],["fromChip","PDTPout"],["enable","DPadEnb"]]; MPad[xd[0],$IOTst,["toChip","Din0"],["fromChip","Dout0"],["enable","DataDir"]]; MPad[xd[1],$IOTst,["toChip","Din1"],["fromChip","Dout1"],["enable","DataDir"]]; MPad["PadGnd",$PadGnd]; MPad[xd[2],$IOTst,["toChip","Din2"],["fromChip","Dout2"],["enable","DataDir"]]; MPad[xd[3],$IOTst,["toChip","Din3"],["fromChip","Dout3"],["enable","DataDir"]]; MPad[xd[4],$IOTst,["toChip","Din4"],["fromChip","Dout4"],["enable","DataDir"]]; MPad[xd[5],$IOTst,["toChip","Din5"],["fromChip","Dout5"],["enable","DataDir"]]; }; BSide: PROC = { chipside _ 'B; count _ 0; MPad[xa[3],$In,["toChip","A3"]]; MPad[xa[4],$In,["toChip","A4"]]; MPad[xd[6],$IOTst,["toChip","Din6"],["fromChip","Dout6"],["enable","DataDir"]]; MPad[xd[7],$IOTst,["toChip","Din7"],["fromChip","Dout7"],["enable","DataDir"]]; MPad["PadGnd",$PadGnd]; MPad[xd[8],$IOTst,["toChip","Din8"],["fromChip","Dout8"],["enable","DataDir"]]; MPad[xd[9],$IOTst,["toChip","Din9"],["fromChip","Dout9"],["enable","DataDir"]]; MPad["PadVdd",$PadVdd]; MPad[xd[10],$IOTst,["toChip","Din10"],["fromChip","Dout10"],["enable","DataDir"]]; MPad[xd[11],$IOTst,["toChip","Din11"],["fromChip","Dout11"],["enable","DataDir"]]; MPad[xd[12],$IOTst,["toChip","Din12"],["fromChip","Dout12"],["enable","DataDir"]]; MPad[xd[13],$IOTst,["toChip","Din13"],["fromChip","Dout13"],["enable","DataDir"]]; MPad[xd[14],$IOTst,["toChip","Din14"],["fromChip","Dout14"],["enable","DataDir"]]; MPad[xd[15],$IOTst,["toChip","Din15"],["fromChip","Dout15"],["enable","DataDir"]]; MPad["XIOW'",$In,["toChip","IOW'"]]; MPad["Gnd",$Gnd]; MPad["PadGnd",$PadGnd]; MPad["XCLOCK2",$In,["toChip","CLOCK2"]]; MPad["Vdd",$Vdd]; MPad["XIOR'",$In,["toChip","IOR'"]]; MPad[xa[5],$In,["toChip","A5"]]; MPad["XIORDY",$Tristate,["fromChip","Gnd"],["enable","IORDY"]]; MPad["XHOSTRESET",$In,["toChip","HOSTRESET"]]; MPad[xa[6],$In,["toChip","A6"]]; MPad[xa[7],$In,["toChip","A7"]]; MPad["PadVdd",$PadVdd]; MPad[xa[8],$In,["toChip","A8"]]; MPad["XLPRESET",$Out,["fromChip","LPRESET"]]; MPad["PadGnd",$PadGnd]; MPad["XHOLDA",$In,["toChip","HOLDA"]]; MPad["XHOLD",$Out,["fromChip","HOLD"]]; MPad["XPIRQ",$In,["toChip","PIRQ"]]; MPad["XXIRQ0",$Out,["fromChip","XIRQ0"]]; }; CSide: PROC = { chipside _ 'C; count _ 0; MPad["Substrate",$Gnd]; MPad[xa[9],$In,["toChip","A9"]]; MPad[xpa[0],$Tristate, ["fromChip","PA0"],["enable","RPadEnb"]]; MPad[xpa[1],$Tristate, ["fromChip","PA1"],["enable","RPadEnb"]]; MPad[xpa[2],$Tristate, ["fromChip","PA2"],["enable","RPadEnb"]]; MPad[xpa[3],$Tristate, ["fromChip","PA3"],["enable","RPadEnb"]]; MPad[xpa[4],$Tristate, ["fromChip","PA4"],["enable","RPadEnb"]]; MPad[xpa[5],$Tristate, ["fromChip","PA5"],["enable","RPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad[xpa[6],$Tristate, ["fromChip","PA6"],["enable","RPadEnb"]]; MPad[xpa[7],$Tristate, ["fromChip","PA7"],["enable","RPadEnb"]]; MPad[xpa[8],$Tristate, ["fromChip","PA8"],["enable","RPadEnb"]]; MPad[xpa[9],$Tristate, ["fromChip","PA9"],["enable","RPadEnb"]]; MPad[xpa[10 ],$Tristate, ["fromChip","PA10"],["enable","RPadEnb"]]; MPad[xpa[11],$Tristate, ["fromChip","PA11"],["enable","RPadEnb"]]; MPad["Gnd",$Gnd]; MPad["SealRing",$PadGnd]; MPad["Vdd",$Vdd]; MPad["XWENT'",$Out,["fromChip","WENT'"]]; MPad["XWENW'",$Out,["fromChip","WENW'"]]; MPad["XCAS'",$Tristate,["fromChip","CAS'"],["enable","RPadEnb"]]; MPad[xrasbar[0],$Tristate,["fromChip","RAS0'"],["enable","RPadEnb"]]; MPad[xrasbar[1],$Tristate,["fromChip","RAS1'"],["enable","RPadEnb"]]; MPad[xrasbar[2],$Tristate,["fromChip","RAS2'"],["enable","RPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad[xrasbar[3],$Tristate,["fromChip","RAS3'"],["enable","RPadEnb"]]; MPad[xa[10],$In,["toChip","A10"]]; MPad["XRASX'",$Tristate,["fromChip","RASX'"],["enable","RPadEnb"]]; MPad["PadGnd",$PadGnd]; MPad["XMEMRDY",$In,["toChip","MEMRDY"]]; MPad[xa[11],$In,["toChip","A11"]]; MPad["XPDWP",$IOTst,["toChip","PDWPin"],["fromChip","PDWPout"],["enable","DPadEnb"]]; MPad[xpdhi[0],$IOTst,["toChip","PDin0"],["fromChip","PDout0"],["enable","DPadEnb"]]; }; DSide: PROC = { chipside _ 'D; count _ 0; MPad[xa[12],$In,["toChip","A12"]]; MPad["XHINT",$Out,["fromChip","HINT"]]; MPad[xpdhi[1],$IOTst,["toChip","PDin1"],["fromChip","PDout1"],["enable","DPadEnb"]]; MPad[xpdhi[2],$IOTst,["toChip","PDin2"],["fromChip","PDout2"],["enable","DPadEnb"]]; MPad["PadGnd",$PadGnd]; MPad[xpdhi[3],$IOTst,["toChip","PDin3"],["fromChip","PDout3"],["enable","DPadEnb"]]; MPad[xpdhi[4],$IOTst,["toChip","PDin4"],["fromChip","PDout4"],["enable","DPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad[xpdhi[5],$IOTst,["toChip","PDin5"],["fromChip","PDout5"],["enable","DPadEnb"]]; MPad[xpdtag[0],$IOTst,["toChip","PDin6"],["fromChip","PDout6"],["enable","DPadEnb"]]; MPad[xpdtag[1],$IOTst,["toChip","PDin7"],["fromChip","PDout7"],["enable","DPadEnb"]]; MPad[xpd[0],$IOTst,["toChip","PDin8"],["fromChip","PDout8"],["enable","DPadEnb"]]; MPad[xpd[1],$IOTst,["toChip","PDin9"],["fromChip","PDout9"],["enable","DPadEnb"]]; MPad[xpd[2],$IOTst,["toChip","PDin10"],["fromChip","PDout10"],["enable","DPadEnb"]]; MPad[xpd[3],$IOTst,["toChip","PDin11"],["fromChip","PDout11"],["enable","DPadEnb"]]; MPad["Gnd",$Gnd]; MPad["PadGnd",$PadGnd]; MPad["XCLOCKOUT",$Out,["fromChip","CLOCKOUT"]]; MPad["Vdd",$Vdd]; MPad[xpd[4],$IOTst,["toChip","PDin12"],["fromChip","PDout12"],["enable","DPadEnb"]]; MPad[xpd[5],$IOTst,["toChip","PDin13"],["fromChip","PDout13"],["enable","DPadEnb"]]; MPad[xpd[6],$IOTst,["toChip","PDin14"],["fromChip","PDout14"],["enable","DPadEnb"]]; MPad[xpd[7],$IOTst,["toChip","PDin15"],["fromChip","PDout15"],["enable","DPadEnb"]]; MPad[xpd[8],$IOTst,["toChip","PDin16"],["fromChip","PDout16"],["enable","DPadEnb"]]; MPad[xpd[9],$IOTst,["toChip","PDin17"],["fromChip","PDout17"],["enable","DPadEnb"]]; MPad["PadVdd",$PadVdd]; MPad[xpd[10],$IOTst,["toChip","PDin18"],["fromChip","PDout18"],["enable","DPadEnb"]]; MPad[xpd[11],$IOTst,["toChip","PDin19"],["fromChip","PDout19"],["enable","DPadEnb"]]; MPad["PadGnd",$PadGnd]; MPad[xpd[12],$IOTst,["toChip","PDin20"],["fromChip","PDout20"],["enable","DPadEnb"]]; MPad[xpd[13],$IOTst,["toChip","PDin21"],["fromChip","PDout21"],["enable","DPadEnb"]]; MPad[xa[1],$In,["toChip","A1"]]; MPad[xa[2],$In,["toChip","A2"]]; }; xpd: Core.Wire _ CoreCreate.Seq["XPD", 32]; xpdhi: Core.Wire _ CoreCreate.Seq["XPDHI", 6]; xpdtag: Core.Wire _ CoreCreate.Seq["XPDTAG", 2]; xa: Core.Wire _ CoreCreate.Seq["XA", 16]; xd: Core.Wire _ CoreCreate.Seq["XD", 16]; xpa: Core.Wire _ CoreCreate.Seq["XPA", 12]; xrasbar: Core.Wire _ CoreCreate.Seq["XRAS'", 4]; public: Core.Wire _ CoreCreate.WireList[LIST[ xpd, xpdtag, xpdhi, xa, xd, xpa, xrasbar, "PadGnd", "PadVdd", "Gnd", "Vdd", "XCE'", "XPDTP", -- side A "XIOW'", "XCLOCK2", "XIOR'", "XIORDY", "XHOSTRESET", "XLPRESET", "XHOLDA", "XHOLD", "XPIRQ", "XXIRQ0", -- side B "XWENT'", "XWENW'", "XCAS'", "XRASX'", "XMEMRDY", "XPDWP", -- side C "XHINT", "XCLOCKOUT" -- side D ]]; ASide[]; BSide[]; CSide[]; DSide[]; cellType _ PadFrame.CreatePadFrame[ name: "WholeMiChip", public: public, onlyInternal: CoreCreate.WireList[innames], innerInstance: CoreCreate.Instance[innerCt], pads: padlist, params: [ nbPadsX: 34, nbPadsY: 34, outerChanWidth: 8*40, -- width of channel at periphery in CnD units powerCellWidth: 8*212 + 8, -- width of channel at periphery in CnD units horizLayer: "met", vertLayer: "met2", library: "TamarinPads.dale"] ]; }; END. 8MIPadFrame.mesa Copyright Σ 1987 by Xerox Corporation. All rights reserved. Bob Krivacic February 13, 1987 5:46:28 pm PST Last Edited by: Krivacic March 20, 1987 5:41:54 pm PST Make pad frame for Tamarin CMOS Memory Interface Chip -- A Side of Chip -- B Side of Chip -- C Side of Chip -- D Side of Chip Κ[˜šœ™Icode™