NMosContactCommands.mesa (part of Chipndale)
by Christian Jacobi June 24, 1983 5:03 pm
last edited Christian Jacobi February 8, 1984 11:01 am
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[0];
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[0];
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[
w: CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda,
l: CDValue.FetchInt[comm.design, $NMosContactL, technology]*lambda,
wex: 2*lambda,
lex: 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[0];
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];
--oldy--CDSequencer.ImplementCommand[$DrawButCon, CreateButCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawNButCon, CreateButCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawPolCon, CreatePolyCon, NMos.nmos];
--oldy--CDSequencer.ImplementCommand[$DrawDifCon, CreateDifCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawNDifCon, CreateDifCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawNDifShortCon, CreateDifShortCon, NMos.nmos];
--oldy--CDSequencer.ImplementCommand[$DrawBurCon, CreateBurCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawNBurCon, CreateBurCon, NMos.nmos];
CDSequencer.ImplementCommand[$DrawMm2Con, CreateMmCon, NMos.nmos];
END;
ImplCommands[];
END.