DIRECTORY CD, NMosTransistors, CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, NMos; NMosTransistorCommands: CEDAR PROGRAM IMPORTS CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, NMosTransistors, NMos = BEGIN lambda: CD.DesignNumber = CD.lambda; CreateTransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create transistor\n"]; ob _ NMosTransistors.CreateTransistor[ w: CDValue.FetchInt[comm.design, $NMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $NMosTransistorL, technology]*lambda, implant: CDValue.FetchInt[comm.design, $NMosTransistorImplant, technology] ]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateATransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create angle transistor\n"]; ob _ NMosTransistors.CreateAngleTransistor[ w: CDValue.FetchInt[comm.design, $NMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $NMosTransistorL, technology]*lambda, implant: CDValue.FetchInt[comm.design, $NMosTransistorImplant, technology] ]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreatePullUpComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create Pullup\n"]; ob _ NMosTransistors.CreatePullUp[ w: CDValue.FetchInt[comm.design, $NMosPullUpW, technology]*lambda, l: CDValue.FetchInt[comm.design, $NMosPullUpH, technology]*lambda ]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; ImplCommands: PROC [] = BEGIN CDSequencer.ImplementCommand[$DrawXstr, CreateTransistorComm, NMos.nmos]; CDValue.EnregisterKey[$NMosTransistorW, NMos.nmos]; CDValue.EnregisterKey[$NMosTransistorL, NMos.nmos]; CDValue.EnregisterKey[$NMosTransistorImplant, NMos.nmos]; CDPanel.DefineIntEntry[cdValueKey: $NMosTransistorW, tech: NMos.nmos, text: "Transistor width:", min: 1, default: 2]; CDPanel.DefineIntEntry[cdValueKey: $NMosTransistorL, tech: NMos.nmos, text: "length:", min: 1, default: 2]; CDPanel.DefineIntEntry[cdValueKey: $NMosTransistorImplant, tech: NMos.nmos, text: "implant:", min: 0, max: 3, default: 0]; CDPanel.DefineNewLine[NMos.nmos]; CDSequencer.ImplementCommand[$DrawAngleXstr, CreateATransistorComm, NMos.nmos]; CDSequencer.ImplementCommand[$DrawPullup, CreatePullUpComm, NMos.nmos]; CDValue.EnregisterKey[$NMosPullUpW, NMos.nmos]; CDValue.EnregisterKey[$NMosPullUpH, NMos.nmos]; CDPanel.DefineIntEntry[cdValueKey: $NMosPullUpW, tech: NMos.nmos, text: "PullUp width:", min: 1, default: 2]; CDPanel.DefineIntEntry[cdValueKey: $NMosPullUpH, tech: NMos.nmos, text: "height:", min: 1, default: 3]; CDPanel.DefineNewLine[NMos.nmos]; END; ImplCommands[]; END. žNMosTransistorCommands.mesa (part of Chipndale) by Christian Jacobi June 24, 1983 5:03 pm last edited Christian Jacobi February 8, 1984 11:00 am Êç˜Jšœ0™0Jšœ,™,Jšœ8™8J˜šÏk ˜ Jšœ˜J˜J˜J˜ J˜J˜J˜ J˜J˜—šÏbœœœ˜&JšœK˜R—Jš˜J˜Jšœœœ˜$J˜šÏnœœ˜8Jš˜Jšœœ˜ J˜,˜&J˜FJ˜FJ˜JJ˜—J˜RJšœ˜J˜—šŸœœ˜9Jš˜Jšœœ˜ J˜2˜+J˜FJ˜FJ˜JJ˜—J˜RJšœ˜J˜—šŸœœ˜4Jš˜Jšœœ˜ J˜(˜#J˜BJ˜AJ˜—J˜RJšœ˜—J˜šŸ œœ˜Jš˜J˜IJšœ4˜4Jšœ4˜4Jšœ8œ˜:˜EJ˜/—˜EJ˜%—˜KJ˜.—J˜!J˜OJ˜GJšœ0˜0Jšœ.œ˜0˜AJ˜+—˜AJ˜%—J˜!Jšœ˜J˜—J˜J˜Jšœ˜J˜—…— Ì Q