DIRECTORY CD, CDSimpleRules, NMos, NMosContacts, SymTab; NMosSimpleRulesImpl: CEDAR PROGRAM IMPORTS CDSimpleRules, NMos, NMosContacts, SymTab = BEGIN lambda: CD.Number = NMos.lambda; MinWidth: PROC [layer: CD.Layer] RETURNS [CD.Number] = BEGIN RETURN [SELECT layer FROM NMos.met => 3*lambda, NMos.met2 => 4*lambda, NMos.pol => 2*lambda, NMos.dif => 2*lambda, ENDCASE => 0 ] END; MinDist: PROC [l1, l2: CD.Layer] RETURNS [CD.Number] = BEGIN IF l1=l2 THEN RETURN [SELECT l1 FROM NMos.met => 3*lambda, NMos.met2 => 4*lambda, NMos.pol => 2*lambda, NMos.dif => 3*lambda, ENDCASE => 0 ]; IF l2=NMos.met THEN {l2 _ l1; l1 _ NMos.met}; IF l1=NMos.met THEN RETURN [SELECT l1 FROM NMos.cut => 2*lambda, ENDCASE => 0 ]; IF l2=NMos.met2 THEN {l2 _ l1; l1 _ NMos.met2}; IF l1=NMos.met2 THEN RETURN [SELECT l1 FROM NMos.cut2 => 2*lambda, ENDCASE => 0 ]; IF l2=NMos.pol THEN {l2 _ l1; l1 _ NMos.pol}; IF l1=NMos.pol THEN { IF l2=NMos.dif THEN RETURN[lambda]; IF l2=NMos.imp OR l2=NMos.imp0 OR l2=NMos.impWeak THEN RETURN[2*lambda]; IF l2=NMos.cut OR l2=NMos.bur THEN RETURN[2*lambda]; RETURN[0]; }; IF l2=NMos.dif THEN {l2 _ l1; l1 _ NMos.dif}; IF l1=NMos.dif THEN { RETURN [SELECT l1 FROM NMos.imp, NMos.imp0, NMos.impWeak => 2*lambda, NMos.cut, NMos.bur => 2*lambda, ENDCASE => 0 ]; }; RETURN [0] END; Contact: PROC [l1, l2: CD.Layer] RETURNS [ob: CD.Object _ NIL] = BEGIN IF l1#NMos.met AND l2=NMos.met THEN RETURN [Contact[l2, l1]]; IF l1=NMos.met THEN { IF l2=NMos.pol THEN RETURN [NMosContacts.CreatePolyCon[0]]; IF l2=NMos.met2 THEN RETURN [NMosContacts.CreateMmCon[0]]; IF l2=NMos.dif THEN RETURN [NMosContacts.CreateDifCon[0]]; }; END; Init: PROC [] = BEGIN layerTable: SymTab.Ref _ SymTab.Create[case: FALSE]; [] _ layerTable.Insert["n-diff", $dif]; [] _ layerTable.Insert["diff", $dif]; [] _ layerTable.Insert["poly", $pol]; [] _ layerTable.Insert["metal", $met]; [] _ layerTable.Insert["metal2", $met2]; CDSimpleRules.ImplementTechnology[ technology: NMos.nmos, minWidth: MinWidth, minDist: MinDist, contact: Contact, layerTable: layerTable ]; END; Init[]; END. ÈNMosSimpleRulesImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. by Ch. Jacobi, July 5, 1985 4:58:37 pm PDT last edited Christian Jacobi, September 23, 1985 6:39:16 pm PDT Ê³˜šœ™Jšœ Ïmœ1™šžœ žœ˜Jšžœ žœžœ"˜