DIRECTORY CD, NMosContacts, CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, NMos; NMosContactCommands: CEDAR PROGRAM IMPORTS CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, NMosContacts, NMos = BEGIN lambda: CD.DesignNumber = CD.lambda; CreateButCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create button contact\n"]; ob _ NMosContacts.CreateButCon[]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreatePolyCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create contact (poly)\n"]; ob _ NMosContacts.CreatePolyCon[CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateDifCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create contact (dif)\n"]; ob _ NMosContacts.CreateDifCon[CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateDifShortCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create diffshort contact (NWell)\n"]; ob _ NMosContacts.CreateDifShortCon[]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateBurCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create burried contact \n"]; ob _ NMosContacts.CreateBurCon[ CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda, CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateMmCon: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create contact (Mm)\n"]; ob _ NMosContacts.CreateMmCon[CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; ImplCommands: PROC [] = BEGIN CDValue.EnregisterKey[$NMosContactL, NMos.nmos]; CDPanel.DefineIntEntry[cdValueKey: $NMosContactL, tech: NMos.nmos, text: "Contact length:", min: 4, default: 4]; CDPanel.DefineNewLine[NMos.nmos]; CDSequencer.ImplementCommand[$DrawButCon, CreateButCon, NMos.nmos]; CDSequencer.ImplementCommand[$DrawPolCon, CreatePolyCon, NMos.nmos]; CDSequencer.ImplementCommand[$DrawDifCon, CreateDifCon, NMos.nmos]; CDSequencer.ImplementCommand[$DrawDifShortCon, CreateDifShortCon, NMos.nmos]; CDSequencer.ImplementCommand[$DrawBurCon, CreateBurCon, NMos.nmos]; CDSequencer.ImplementCommand[$DrawMm2Con, CreateMmCon, NMos.nmos]; END; ImplCommands[]; END. šNMosContactCommands.mesa (part of Chipndale) by Christian Jacobi June 24, 1983 5:03 pm last edited Christian Jacobi February 8, 1984 11:01 am ÊC˜Jšœ-™-Jšœ,™,Jšœ8™8J˜šÏk ˜ Jšœ˜J˜ J˜J˜ J˜J˜J˜ J˜J˜—šÏbœœœ˜#JšœH˜O—Jš˜J˜Jšœœœ˜$J˜šÏn œœ˜0Jš˜Jšœœ˜ J˜0J˜!J˜RJšœ˜J˜—šŸ œœ˜1Jš˜Jšœœ˜ J˜0J˜aJ˜RJšœ˜J˜—šŸ œœ˜0Jš˜Jšœœ˜ J˜/J˜`J˜RJšœ˜J˜—šŸœœ˜5Jš˜Jšœœ˜ J˜;J˜&J˜RJšœ˜J˜—šŸ œœ˜0Jš˜Jšœœ˜ J˜2˜J˜AJ˜A—J˜RJšœ˜J˜—šŸ œœ˜/Jš˜Jšœœ˜ J˜.J˜_J˜RJšœ˜J˜J˜—šŸ œœ˜Jš˜Jšœ/œ˜1˜BJ˜-—J˜!JšœC˜CJ˜DJ˜CJšœM˜MJšœC˜CJšœB˜BJšœ˜J˜—J˜Jšœ˜J˜—…— – s