DIRECTORY CD, CDAtomicObjects, CDOps, CDSequencer, TerminalIO, CMos; CMosObsCommands: CEDAR PROGRAM IMPORTS CDAtomicObjects, CDOps, CDSequencer, TerminalIO, CMos = BEGIN lambda: CD.Number = CMos.lambda; CreateXstr: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; size: CD.Position _ [8*lambda, 6*lambda]; TerminalIO.WriteRope["create transistor "]; SELECT comm.key FROM $DrawNXstr => layer _ CMos.ndif; $DrawWNXstr => layer _ CMos.wndif; $DrawPXstr => layer _ CMos.pdif; $DrawWPXstr => layer _ CMos.wpdif; ENDCASE => layer _ CMos.ndif; TerminalIO.WriteRope[CDOps.LayerName[layer]]; TerminalIO.WriteLn[]; ob _ CDAtomicObjects.CreateAtomicOb[$CTrans, size, comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateLXstr: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.WriteRope["create L transistor "]; SELECT comm.key FROM $DrawAngleNXstr => layer _ CMos.ndif; $DrawAngleWNXstr => layer _ CMos.wndif; $DrawAnglePXstr => layer _ CMos.pdif; $DrawAngleWPXstr => layer _ CMos.wpdif; ENDCASE => layer _ CMos.ndif; TerminalIO.WriteRope[CDOps.LayerName[layer]]; TerminalIO.WriteLn[]; ob _ CDAtomicObjects.CreateAtomicOb[$CLTrans, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.WriteRope["create contact "]; SELECT comm.key FROM $DrawNDifCon => layer _ CMos.ndif; $DrawWNDifCon => layer _ CMos.wndif; $DrawPDifCon => layer _ CMos.pdif; $DrawWPDifCon => layer _ CMos.wpdif; $DrawPolCon => layer _ CMos.pol; $DrawNWCntCon => layer _ CMos.nwellCont; $DrawPWCntCon => layer _ CMos.pwellCont; ENDCASE => layer _ CMos.pol; TerminalIO.WriteRope[CDOps.LayerName[layer]]; TerminalIO.WriteLn[]; ob _ CDAtomicObjects.CreateAtomicOb[$CSimpleCon, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateDiffShortCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.WriteRope["create diff short contact "]; SELECT comm.key FROM $DrawNDifShortCon => layer _ CMos.ndif; $DrawWNDifShortCon => layer _ CMos.wndif; $DrawPDifShortCon => layer _ CMos.pdif; $DrawWPDifShortCon => layer _ CMos.wpdif; ENDCASE => layer _ CMos.ndif; TerminalIO.WriteRope[CDOps.LayerName[layer]]; TerminalIO.WriteLn[]; ob _ CDAtomicObjects.CreateAtomicOb[$CDifShortCon, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateButtingCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.WriteRope["create butting contact "]; SELECT comm.key FROM $DrawNButCon => layer _ CMos.ndif; $DrawWNButCon => layer _ CMos.wndif; $DrawPButCon => layer _ CMos.pdif; $DrawWPButCon => layer _ CMos.wpdif; ENDCASE => layer _ CMos.ndif; TerminalIO.WriteRope[CDOps.LayerName[layer]]; TerminalIO.WriteLn[]; ob _ CDAtomicObjects.CreateAtomicOb[$CButtingCont, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; CreateViaCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; TerminalIO.WriteRope["create via\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CVia, [0, 0], comm.design.technology]; IF ob=NIL THEN TerminalIO.WriteRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos, orientation: 0] END; ImplCommands: PROC [] = BEGIN CDSequencer.ImplementCommand[$DrawNXstr, CreateXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPXstr, CreateXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWNXstr, CreateXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWPXstr, CreateXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAngleNXstr, CreateLXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAnglePXstr, CreateLXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAngleWNXstr, CreateLXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawAngleWPXstr, CreateLXstr, CMos.cmos]; CDSequencer.ImplementCommand[$DrawNDifCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWNDifCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPDifCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWPDifCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPolCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawNWCntCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPWCntCon, CreateCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawNDifShortCon, CreateDiffShortCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWNDifShortCon, CreateDiffShortCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPDifShortCon, CreateDiffShortCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWPDifShortCon, CreateDiffShortCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawNButCon, CreateButtingCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWNButCon, CreateButtingCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawPButCon, CreateButtingCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawWPButCon, CreateButtingCont, CMos.cmos]; CDSequencer.ImplementCommand[$DrawMm2Con, CreateViaCont, CMos.cmos]; END; ImplCommands[]; END. ÜCMosObsCommands.mesa (part of Chipndale) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi, June 24, 1983 5:03 pm last edited Christian Jacobi, March 19, 1986 12:14:14 pm PST Ê8˜šœ)™)Jšœ Ïmœ7™BJšœ+™+Jšœ<™<—J˜šÏk ˜ Jšžœ˜J˜J˜J˜ J˜ J˜J˜—šÏbœžœžœ˜Jšžœ9˜@—Jšž˜J˜Jšœžœ˜ J˜šÏn œžœ˜.Jšž˜Jšœžœ˜Jšœžœ˜Jšœžœ!˜)Jšœ+˜+šžœ ž˜Jšœ ˜ Jšœ"˜"Jšœ ˜ Jšœ"˜"Jšžœ˜—Jšœ-˜-Jšœ˜JšœR˜Ršžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š  œžœ˜/Jšž˜Jšœžœ˜Jšœžœ˜Jšœ-˜-šžœ ž˜Jšœ%˜%Jšœ'˜'Jšœ%˜%Jšœ'˜'Jšžœ˜—Jšœ-˜-Jšœ˜JšœU˜Ušžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š  œžœ˜.Jšž˜Jšœžœ˜Jšœžœ˜Jšœ(˜(šžœ ž˜Jšœ"˜"Jšœ$˜$Jšœ"˜"Jšœ$˜$Jšœ ˜ Jšœ(˜(Jšœ(˜(Jšžœ˜—Jšœ-˜-Jšœ˜JšœX˜Xšžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š œžœ˜7Jšž˜Jšœžœ˜Jšœžœ˜Jšœ3˜3šžœ ž˜Jšœ'˜'Jšœ)˜)Jšœ'˜'Jšœ)˜)Jšžœ˜—Jšœ-˜-Jšœ˜JšœZ˜Zšžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š œžœ˜5Jšž˜Jšœžœ˜Jšœžœ˜Jšœ0˜0šžœ ž˜Jšœ"˜"Jšœ$˜$Jšœ"˜"Jšœ$˜$Jšžœ˜—Jšœ-˜-Jšœ˜JšœZ˜Zšžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š  œžœ˜1Jšž˜Jšœžœ˜Jšœ%˜%JšœK˜Kšžœžœž˜Jšœ"˜"—šž˜J˜U—Jšžœ˜J˜—š  œžœ˜Jšž˜Jšœ@˜@Jšœ@˜@JšœA˜AJšœA˜AJ˜JšœF˜FJšœF˜FJšœG˜GJšœG˜GJ˜JšœB˜BJšœC˜CJšœB˜BJšœC˜CJšœA˜AJšœC˜CJšœC˜CJ˜JšœP˜PJšœQ˜QJšœP˜PJšœQ˜QJ˜JšœI˜IJšœJ˜JJšœI˜IJšœJ˜JJ˜JšœD˜DJšžœ˜J˜—J˜Jšžœ˜J˜—…—"6