DIRECTORY CD, CDAtomicObjects, CDOps, CDSequencer, TerminalIO, CMos; CMosObsCommands: CEDAR PROGRAM IMPORTS CDAtomicObjects, CDOps, CDSequencer, TerminalIO, CMos = BEGIN CreateXstr: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; size: CD.Position _ [8*CMos.lambda, 6*CMos.lambda]; TerminalIO.PutRope["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.PutRope[CDOps.LayerRope[layer]]; TerminalIO.PutRope["\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CTrans, size, comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] END; CreateLXstr: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.PutRope["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.PutRope[CDOps.LayerRope[layer]]; TerminalIO.PutRope["\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CLTrans, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] END; CreateCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.PutRope["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.PutRope[CDOps.LayerRope[layer]]; TerminalIO.PutRope["\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CSimpleCon, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] END; CreateDiffShortCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.PutRope["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.PutRope[CDOps.LayerRope[layer]]; TerminalIO.PutRope["\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CDifShortCon, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] END; CreateButtingCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; layer: CD.Layer; TerminalIO.PutRope["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.PutRope[CDOps.LayerRope[layer]]; TerminalIO.PutRope["\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CButtingCont, [0, 0], comm.design.technology, layer]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] END; CreateViaCont: PROC [comm: CDSequencer.Command] = BEGIN ob: CD.Object; TerminalIO.PutRope["create via\n"]; ob _ CDAtomicObjects.CreateAtomicOb[$CVia, [0, 0], comm.design.technology]; IF ob=NIL THEN TerminalIO.PutRope["not done\n"] ELSE CDOps.IncludeObjectI[design: comm.design, ob: ob, location: comm.pos] 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. Created by Christian Jacobi, June 24, 1983 5:03 pm Last edited by: Christian Jacobi, October 31, 1986 2:55:09 pm PST Κ+˜šœ)™)Jšœ Οmœ7™BJšœ3™3Icode™A—J˜šΟk ˜ Jšžœ˜J˜J˜J˜ J˜ J˜J˜—šΟbœžœžœ˜Jšžœ9˜@—Jšž˜J˜šΟn œžœ˜.Jšž˜Jšœžœ˜Jšœžœ˜Jšœžœ+˜3Jšœ)˜)šžœ ž˜Jšœ ˜ Jšœ"˜"Jšœ ˜ Jšœ"˜"Jšžœ˜—Jšœ+˜+Jšœ˜JšœR˜Ršžœžœž˜Jšœ ˜ —šž˜J˜E—Jšžœ˜J˜—š  œžœ˜/Jšž˜Jšœžœ˜Jšœžœ˜Jšœ+˜+šžœ ž˜Jšœ%˜%Jšœ'˜'Jšœ%˜%Jšœ'˜'Jšžœ˜—Jšœ+˜+Jšœ˜JšœU˜Ušžœžœž˜Jšœ ˜ —šž˜J˜E—Jšžœ˜J˜—š  œžœ˜.Jšž˜Jšœžœ˜Jšœžœ˜Jšœ&˜&šžœ ž˜Jšœ"˜"Jšœ$˜$Jšœ"˜"Jšœ$˜$Jšœ ˜ Jšœ(˜(Jšœ(˜(Jšžœ˜—Jšœ+˜+Jšœ˜JšœX˜Xšžœžœž˜Jšœ ˜ —šž˜J˜E—Jšžœ˜J˜—š œžœ˜7Jšž˜Jšœžœ˜Jšœžœ˜Jšœ1˜1šžœ ž˜Jšœ'˜'Jšœ)˜)Jšœ'˜'Jšœ)˜)Jšžœ˜—Jšœ+˜+Jšœ˜JšœZ˜Zšžœžœž˜Jšœ ˜ —šž˜J˜E—Jšžœ˜J˜—š œžœ˜5Jšž˜Jšœžœ˜Jšœžœ˜Jšœ.˜.šžœ ž˜Jšœ"˜"Jšœ$˜$Jšœ"˜"Jšœ$˜$Jšžœ˜—Jšœ+˜+Jšœ˜JšœZ˜Zšžœžœž˜Jšœ ˜ —šž˜J˜E—Jšžœ˜J˜—š  œžœ˜1Jšž˜Jšœžœ˜Jšœ#˜#JšœK˜Kšžœžœž˜Jšœ ˜ —šž˜J˜E—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˜—…—œ±