DIRECTORY CD, CMosTransistors, CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, CMos; CMosTransistorCommands: CEDAR PROGRAM IMPORTS CDOps, CDSequencer, CDPanel, CDValue, TerminalIO, CMosTransistors, CMos = BEGIN lambda: CD.DesignNumber = CD.lambda; CreateAnyDifTransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; l: CD.Layer = CMos.CurrentDiffusion[comm.design]; TerminalIO.WriteRope["Create transistor (current dif)\n"]; ob _ CMosTransistors.CreateTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: l]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateTransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create transistor\n"]; ob _ CMosTransistors.CreateTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: CMos.ndif]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateAnyDifATransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; l: CD.Layer = CMos.CurrentDiffusion[comm.design]; TerminalIO.WriteRope["Create angle transistor (current dif)\n"]; ob _ CMosTransistors.CreateAngleTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: l]; 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 _ CMosTransistors.CreateAngleTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: CMos.ndif]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreatePTypeTransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create transistor\n"]; ob _ CMosTransistors.CreateTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: CMos.pdif]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreatePTypeATransistorComm: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.ObPtr; TerminalIO.WriteRope["Create angle transistor\n"]; ob _ CMosTransistors.CreateAngleTransistor[ w: CDValue.FetchInt[comm.design, $CMosTransistorW, technology]*lambda, l: CDValue.FetchInt[comm.design, $CMosTransistorL, technology]*lambda, difLev: CMos.pdif]; CDOps.AddAnObject[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; ImplCommands: PROC [] = BEGIN CDSequencer.ImplementCommand[$DrawNXstr, CreateTransistorComm, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPXstr, CreatePTypeTransistorComm, CMos.cmos]; CDSequencer.ImplementCommand[$DrawXstr, CreateAnyDifTransistorComm, CMos.cmos]; CDValue.EnregisterKey[$CMosTransistorW, CMos.cmos]; CDValue.EnregisterKey[$CMosTransistorL, CMos.cmos]; CDPanel.DefineIntEntry[cdValueKey: $CMosTransistorW, tech: CMos.cmos, text: "Transistor width:", min: 1, default: 4]; CDPanel.DefineIntEntry[cdValueKey: $CMosTransistorL, tech: CMos.cmos, text: "length:", min: 1, default: 2]; CDPanel.DefineNewLine[CMos.cmos]; CDSequencer.ImplementCommand[$DrawAngleNXstr, CreateATransistorComm, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAngleXstr, CreateAnyDifATransistorComm, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAnglePXstr, CreatePTypeATransistorComm, CMos.cmos]; END; ImplCommands[]; END. àCMosTransistorCommands.mesa (part of ChipNDale) Copyright c 1983, 1984 by Xerox Corporation. All rights reserved. by Christian Jacobi, June 24, 1983 5:03 pm last edited Christian Jacobi, February 8, 1984 10:57 am Ê¡˜šœ0™0Jšœ Ïmœ7™BJšœ,™,Jšœ8™8—J˜šÏk ˜ Jšžœ˜J˜J˜J˜ J˜J˜J˜ J˜J˜—šÏbœžœžœ˜&JšžœK˜R—Jšž˜J˜Jšœžœžœ˜$J˜šÏnœžœ˜>Jšž˜Jšœžœ˜ Jšœžœ,˜1J˜:˜&J˜FJ˜FJ˜ —J˜RJšžœ˜J˜—š œžœ˜8Jšž˜Jšœžœ˜ J˜,˜&J˜FJ˜FJ˜—J˜RJšžœ˜J˜—š œžœ˜?Jšž˜Jšœžœ˜ Jšœžœ,˜1J˜@˜+J˜FJ˜FJ˜ —J˜RJšžœ˜J˜—š œžœ˜9Jšž˜Jšœžœ˜ J˜2˜+J˜FJ˜FJ˜—J˜RJšžœ˜J˜—š œžœ˜=Jšž˜Jšœžœ˜ J˜,˜&J˜FJ˜FJ˜—J˜RJšžœ˜J˜—š œžœ˜>Jšž˜Jšœžœ˜ J˜2˜+J˜FJ˜FJ˜—J˜RJšžœ˜J˜—š  œžœ˜Jšž˜J˜JJ˜OJ˜OJšœ3˜3Jšœ3˜3˜EJ˜/—˜EJ˜%—J˜!JšœP˜PJšœU˜UJšœU˜UJšžœ˜J˜—J˜J˜Jšžœ˜J˜—…—äe