com.sun.electric.tool.generator.layout
Class TechType

java.lang.Object
  extended by com.sun.electric.tool.generator.layout.TechType
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
TechTypeMoCMOS

public abstract class TechType
extends java.lang.Object
implements java.io.Serializable

The TechType class holds technology dependent information for the layout generators. Most of the information is available from public static methods.

The TechType class queries the appropriate Technology object to get references to prototypes commonly used by the layout generators such as the metal 1 arc proto or the metal 1 pin proto. The Tech class also holds technology dependant dimensions such as the width of a diffusion contact.

The TechType class serves two purposes. First, it makes it convenient to access technology dependent information. Second, it hides foundry specific information that we're not allowed to distribute as open source software.

See Also:
Serialized Form

Nested Class Summary
static class TechType.MosInst
          Hide the differences between technologies.
static class TechType.TechTypeEnum
          These are the Electric technologies understood by the gate layout generators
 
Field Summary
protected  double diffCont_m1Width
           
protected  double diffContIncr
           
protected  double gateExtendPastMOS
           
protected  double gateLength
           
protected  double gateToDiffContSpace
           
protected  double gateToDiffContSpaceDogBone
           
protected  double gateToGateSpace
           
protected  double m1MinArea
           
protected  double offsetLShapePolyContact
           
protected  double offsetTShapePolyContact
           
protected  double p1ToP1Space
           
protected  double p1Width
           
protected  double selectSpace
           
protected  double selectSurround
           
protected  double selectSurroundDiffAlongGateInTrans
           
protected  double selectSurroundDiffInActiveContact
           
protected  double selectSurroundDiffInTrans
           
protected  double wellSurroundDiff
           
 
Constructor Summary
protected TechType(Technology techy, TechType.TechTypeEnum techEnum, java.lang.String[] layerNms)
           
 
Method Summary
 ArcProto closestLayer(PortProto port, ArcProto layer)
           
 PrimitiveNode essentialBounds()
          Essential-Bounds
 PrimitiveNode facetCenter()
          Facet-Center
 Variable.Key getAttrS()
           
 Variable.Key getAttrSN()
           
 Variable.Key getAttrSP()
           
 Variable.Key getAttrX()
           
 double getDiffCont_m1Width()
           
 double getDiffContIncr()
           
 double getDiffContWidth()
           
 TechType.TechTypeEnum getEnum()
           
 double getGateExtendPastMOS()
           
 double getGateLength()
           
 double getGateToDiffContSpace()
           
 double getGateToDiffContSpaceDogBone()
           
 double getGateToGateSpace()
           
 double getM1MinArea()
           
abstract  int getNumMetals()
           
 double getP1M1Width()
           
 double getP1ToP1Space()
           
 double getP1Width()
           
 double getPolyLShapeOffset()
           
 double getPolyTShapeOffset()
           
 double getSelectSpacingRule()
           
 double getSelectSurroundDiffInTrans()
           
 double getSelectSurroundOverPoly()
           
 Technology getTechnology()
           
 PrimitiveNode getViaFor(ArcProto a1, ArcProto a2)
           
 double getWellSurroundDiff()
           
 double getWellWidth()
           
 ArcProto highestLayer(PortProto port)
           
 ArcProto layerAtHeight(int layHeight)
           
 int layerHeight(ArcProto p)
           
 ArcProto m1()
           
 PrimitiveNode m1m2()
           
 PrimitiveNode m1Node()
          Layer nodes are sometimes used to patch notches
 PrimitiveNode m1pin()
           
 ArcProto m2()
           
 PrimitiveNode m2m3()
           
 PrimitiveNode m2Node()
           
 PrimitiveNode m2pin()
           
 ArcProto m3()
           
 PrimitiveNode m3m4()
           
 PrimitiveNode m3Node()
           
 PrimitiveNode m3pin()
           
 ArcProto m4()
           
 PrimitiveNode m4m5()
           
 PrimitiveNode m4Node()
           
 PrimitiveNode m4pin()
           
 ArcProto m5()
           
 PrimitiveNode m5m6()
           
 PrimitiveNode m5Node()
           
 PrimitiveNode m5pin()
           
 ArcProto m6()
           
 PrimitiveNode m6m7()
           
 PrimitiveNode m6Node()
           
 PrimitiveNode m6pin()
           
 ArcProto m7()
           
 PrimitiveNode m7m8()
           
 PrimitiveNode m7Node()
           
 PrimitiveNode m7pin()
           
 ArcProto m8()
           
 PrimitiveNode m8m9()
           
 PrimitiveNode m8Node()
           
 PrimitiveNode m8pin()
           
 ArcProto m9()
           
 PrimitiveNode m9Node()
           
 PrimitiveNode m9pin()
           
abstract  java.lang.String name()
           
 ArcProto ndiff()
           
 ArcProto ndiff18()
           
 ArcProto ndiff25()
           
 ArcProto ndiff33()
           
 PrimitiveNode ndm1()
           
 PrimitiveNode ndNode()
           
 PrimitiveNode ndpin()
          pins
abstract  TechType.MosInst newNmosInst(double x, double y, double w, double l, Cell parent)
           
abstract  TechType.MosInst newPmosInst(double x, double y, double w, double l, Cell parent)
           
 PrimitiveNode nmos()
          Transistors
 PrimitiveNode nmos18()
           
 PrimitiveNode nmos18contact()
          special threshold transistor contacts
 PrimitiveNode nmos25()
           
 PrimitiveNode nmos25contact()
           
 PrimitiveNode nmos33()
           
 PrimitiveNode nmos33contact()
           
 PrimitiveNode nselNode()
           
 PrimitiveNode nwell()
          Well
 PrimitiveNode nwm1()
          vias
 PrimitiveNode nwm1Y()
           
 PrimitiveNode od18()
          Transistor layer nodes
 PrimitiveNode od25()
           
 PrimitiveNode od33()
           
 ArcProto p1()
           
 PrimitiveNode p1m1()
           
 PrimitiveNode p1Node()
           
 PrimitiveNode p1pin()
           
 ArcProto pdiff()
          layers
 ArcProto pdiff18()
           
 ArcProto pdiff25()
           
 ArcProto pdiff33()
           
 PrimitiveNode pdm1()
           
 PrimitiveNode pdNode()
           
 PrimitiveNode pdpin()
           
 PrimitiveNode pmos()
           
 PrimitiveNode pmos18()
           
 PrimitiveNode pmos18contact()
           
 PrimitiveNode pmos25()
           
 PrimitiveNode pmos25contact()
           
 PrimitiveNode pmos33()
           
 PrimitiveNode pmos33contact()
           
 PrimitiveNode pselNode()
           
 PrimitiveNode pwell()
           
 PrimitiveNode pwm1()
           
 PrimitiveNode pwm1Y()
           
abstract  double reservedToLambda(int layer, double nbTracks)
           
abstract  double roundToGrid(double x)
          round to avoid MOCMOS CIF resolution errors
 double selectSurroundDiffAlongGateInTrans()
           
 double selectSurroundDiffInActiveContact()
           
 PrimitiveNode viaAbove(int layHeight)
           
 PrimitiveNode viaBelow(int layHeight)
           
 PrimitiveNode vth()
           
 PrimitiveNode vtl()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

gateLength

protected double gateLength

offsetLShapePolyContact

protected double offsetLShapePolyContact

offsetTShapePolyContact

protected double offsetTShapePolyContact

selectSpace

protected double selectSpace

selectSurroundDiffInTrans

protected double selectSurroundDiffInTrans

selectSurroundDiffAlongGateInTrans

protected double selectSurroundDiffAlongGateInTrans

selectSurround

protected double selectSurround

wellSurroundDiff

protected double wellSurroundDiff

gateExtendPastMOS

protected double gateExtendPastMOS

p1Width

protected double p1Width

p1ToP1Space

protected double p1ToP1Space

gateToGateSpace

protected double gateToGateSpace

gateToDiffContSpace

protected double gateToDiffContSpace

gateToDiffContSpaceDogBone

protected double gateToDiffContSpaceDogBone

selectSurroundDiffInActiveContact

protected double selectSurroundDiffInActiveContact

m1MinArea

protected double m1MinArea

diffCont_m1Width

protected double diffCont_m1Width

diffContIncr

protected double diffContIncr
Constructor Detail

TechType

protected TechType(Technology techy,
                   TechType.TechTypeEnum techEnum,
                   java.lang.String[] layerNms)
Method Detail

getNumMetals

public abstract int getNumMetals()

getTechnology

public Technology getTechnology()

getEnum

public TechType.TechTypeEnum getEnum()

pdiff

public ArcProto pdiff()
layers


ndiff

public ArcProto ndiff()

p1

public ArcProto p1()

m1

public ArcProto m1()

m2

public ArcProto m2()

m3

public ArcProto m3()

m4

public ArcProto m4()

m5

public ArcProto m5()

m6

public ArcProto m6()

m7

public ArcProto m7()

m8

public ArcProto m8()

m9

public ArcProto m9()

ndiff18

public ArcProto ndiff18()

pdiff18

public ArcProto pdiff18()

ndiff25

public ArcProto ndiff25()

pdiff25

public ArcProto pdiff25()

ndiff33

public ArcProto ndiff33()

pdiff33

public ArcProto pdiff33()

ndpin

public PrimitiveNode ndpin()
pins


pdpin

public PrimitiveNode pdpin()

p1pin

public PrimitiveNode p1pin()

m1pin

public PrimitiveNode m1pin()

m2pin

public PrimitiveNode m2pin()

m3pin

public PrimitiveNode m3pin()

m4pin

public PrimitiveNode m4pin()

m5pin

public PrimitiveNode m5pin()

m6pin

public PrimitiveNode m6pin()

m7pin

public PrimitiveNode m7pin()

m8pin

public PrimitiveNode m8pin()

m9pin

public PrimitiveNode m9pin()

nwm1

public PrimitiveNode nwm1()
vias


pwm1

public PrimitiveNode pwm1()

nwm1Y

public PrimitiveNode nwm1Y()

pwm1Y

public PrimitiveNode pwm1Y()

ndm1

public PrimitiveNode ndm1()

pdm1

public PrimitiveNode pdm1()

p1m1

public PrimitiveNode p1m1()

m1m2

public PrimitiveNode m1m2()

m2m3

public PrimitiveNode m2m3()

m3m4

public PrimitiveNode m3m4()

m4m5

public PrimitiveNode m4m5()

m5m6

public PrimitiveNode m5m6()

m6m7

public PrimitiveNode m6m7()

m7m8

public PrimitiveNode m7m8()

m8m9

public PrimitiveNode m8m9()

nmos

public PrimitiveNode nmos()
Transistors


pmos

public PrimitiveNode pmos()

nmos18

public PrimitiveNode nmos18()

pmos18

public PrimitiveNode pmos18()

nmos25

public PrimitiveNode nmos25()

pmos25

public PrimitiveNode pmos25()

nmos33

public PrimitiveNode nmos33()

pmos33

public PrimitiveNode pmos33()

nmos18contact

public PrimitiveNode nmos18contact()
special threshold transistor contacts


pmos18contact

public PrimitiveNode pmos18contact()

nmos25contact

public PrimitiveNode nmos25contact()

pmos25contact

public PrimitiveNode pmos25contact()

nmos33contact

public PrimitiveNode nmos33contact()

pmos33contact

public PrimitiveNode pmos33contact()

nwell

public PrimitiveNode nwell()
Well


pwell

public PrimitiveNode pwell()

m1Node

public PrimitiveNode m1Node()
Layer nodes are sometimes used to patch notches


m2Node

public PrimitiveNode m2Node()

m3Node

public PrimitiveNode m3Node()

m4Node

public PrimitiveNode m4Node()

m5Node

public PrimitiveNode m5Node()

m6Node

public PrimitiveNode m6Node()

m7Node

public PrimitiveNode m7Node()

m8Node

public PrimitiveNode m8Node()

m9Node

public PrimitiveNode m9Node()

p1Node

public PrimitiveNode p1Node()

pdNode

public PrimitiveNode pdNode()

ndNode

public PrimitiveNode ndNode()

pselNode

public PrimitiveNode pselNode()

nselNode

public PrimitiveNode nselNode()

od18

public PrimitiveNode od18()
Transistor layer nodes


od25

public PrimitiveNode od25()

od33

public PrimitiveNode od33()

vth

public PrimitiveNode vth()

vtl

public PrimitiveNode vtl()

essentialBounds

public PrimitiveNode essentialBounds()
Essential-Bounds


facetCenter

public PrimitiveNode facetCenter()
Facet-Center


getViaFor

public PrimitiveNode getViaFor(ArcProto a1,
                               ArcProto a2)

layerHeight

public int layerHeight(ArcProto p)

closestLayer

public ArcProto closestLayer(PortProto port,
                             ArcProto layer)

highestLayer

public ArcProto highestLayer(PortProto port)

layerAtHeight

public ArcProto layerAtHeight(int layHeight)

viaAbove

public PrimitiveNode viaAbove(int layHeight)

viaBelow

public PrimitiveNode viaBelow(int layHeight)

roundToGrid

public abstract double roundToGrid(double x)
round to avoid MOCMOS CIF resolution errors


newNmosInst

public abstract TechType.MosInst newNmosInst(double x,
                                             double y,
                                             double w,
                                             double l,
                                             Cell parent)

newPmosInst

public abstract TechType.MosInst newPmosInst(double x,
                                             double y,
                                             double w,
                                             double l,
                                             Cell parent)

name

public abstract java.lang.String name()

reservedToLambda

public abstract double reservedToLambda(int layer,
                                        double nbTracks)

getWellWidth

public double getWellWidth()
Returns:
min width of Well

getWellSurroundDiff

public double getWellSurroundDiff()
Returns:
amount that well surrounds diffusion

getGateExtendPastMOS

public double getGateExtendPastMOS()
Returns:
MOS edge to gate edge

getP1Width

public double getP1Width()
Returns:
min width of polysilicon 1

getP1ToP1Space

public double getP1ToP1Space()
Returns:
min spacing between polysilicon 1

getGateToGateSpace

public double getGateToGateSpace()
Returns:
min spacing between gates of series transistors

getGateToDiffContSpace

public double getGateToDiffContSpace()
Returns:
min spacing between MOS gate and diffusion edge of diff contact

getGateToDiffContSpaceDogBone

public double getGateToDiffContSpaceDogBone()
Returns:
min spacing between MOS gate and diffusion edge of diff contact when the diffusion width is larger than the gate width

getDiffContWidth

public double getDiffContWidth()
Returns:
min width of diffusion surrounding diff contact

getP1M1Width

public double getP1M1Width()
Returns:
min width of poly contact

getGateLength

public double getGateLength()
Returns:
gate length that depends on foundry

selectSurroundDiffInActiveContact

public double selectSurroundDiffInActiveContact()
Returns:
amount that select surrounds diffusion in well?

selectSurroundDiffAlongGateInTrans

public double selectSurroundDiffAlongGateInTrans()
Returns:
amount that Select surrounds MOS, along gate width dimension

getPolyLShapeOffset

public double getPolyLShapeOffset()
Returns:
y offset of poly arc connecting poly contact and gate in a L-Shape case

getPolyTShapeOffset

public double getPolyTShapeOffset()
Returns:
y offset of poly arc connecting poly contact and gate in a T-Shape case

getSelectSpacingRule

public double getSelectSpacingRule()
Returns:
select spacing rule

getSelectSurroundDiffInTrans

public double getSelectSurroundDiffInTrans()
Returns:
select surround active in transistors but not along the gate

getSelectSurroundOverPoly

public double getSelectSurroundOverPoly()
Returns:
select surround over poly

getM1MinArea

public double getM1MinArea()
Returns:
minimum metal1 area (sq lambda)

getDiffCont_m1Width

public double getDiffCont_m1Width()
Returns:
width of metal-1 in min sized diffusion contact

getDiffContIncr

public double getDiffContIncr()
Returns:
amount diffusion contact grows to accomodate an one additional contact cut

getAttrX

public Variable.Key getAttrX()

getAttrS

public Variable.Key getAttrS()

getAttrSP

public Variable.Key getAttrSP()

getAttrSN

public Variable.Key getAttrSN()