com.sun.electric.technology.technologies
Class MoCMOS

java.lang.Object
  extended by com.sun.electric.technology.Technology
      extended by com.sun.electric.technology.technologies.MoCMOS
All Implemented Interfaces:
java.io.Serializable, java.lang.Comparable<Technology>

public class MoCMOS
extends Technology

This is the MOSIS CMOS technology.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.electric.technology.Technology
Technology.ArcLayer, Technology.CarbonNanotube, Technology.MultiCutData, Technology.NodeLayer, Technology.SizeCorrector, Technology.State, Technology.TechPoint
 
Field Summary
static Version changeOfMetal6
           
static int DEEPRULES
          Value for deep rules.
static int SCMOSRULES
          Value for standard SCMOS rules.
static int SUBMRULES
          Value for submicron rules.
static Variable.Key TECH_LAST_STATE
          key of Variable for saving technology state.
 
Fields inherited from class com.sun.electric.technology.Technology
ALWAYS_SKIP_WIPED_PINS, cachedRules, DISK_VERSION_1, DISK_VERSION_2, EMPTY_LIST, factoryMenuPalette, factoryRules, foundries, IMMUTABLE_TECHS, LAYERS_BY_HEIGHT, LAYERS_BY_HEIGHT_LIFT_CONTACTS, N_TYPE, NULL_ARRAY, oldArcNames, oldNodeNames, P_TYPE, paramFoundry, paramNumMetalLayers, SPECIALMENUCELL, SPECIALMENUEXPORT, SPECIALMENUHIGH, SPECIALMENUMISC, SPECIALMENUPORT, SPECIALMENUPURE, SPECIALMENUSEPARATOR, SPECIALMENUSPICE, SPECIALMENUTEXT, TECH_NODE, techFactory, TRANS_CONTACT, xmlTech
 
Constructor Summary
MoCMOS(Generic generic, TechFactory techFactory, java.util.Map<TechFactory.Param,java.lang.Object> techParams, Xml.Technology t)
           
 
Method Summary
 PrimitivePort convertOldPortName(java.lang.String portName, PrimitiveNode np)
          Method to convert old primitive port names to their proper PortProtos.
 java.util.Map<Setting,java.lang.Object> convertOldVariable(java.lang.String varName, java.lang.Object value)
          Method to convert any old-style variable information to the new options.
protected  void copyState(Technology that)
          SUPPORT METHODS
protected  void dumpExtraProjectSettings(java.io.PrintWriter out, java.util.Map<Setting,java.lang.Object> settings)
           
protected  void genShapeOfNode(AbstractShapeBuilder b, ImmutableNodeInst n, PrimitiveNode pn, Technology.NodeLayer[] primLayers)
          Puts into shape builder s the polygons that describe node "n", given a set of NodeLayer objects to use.
 Setting getAlternateActivePolyRulesSetting()
          Returns project preferences to tell whether this Technology is using alternate Active and Poly contact rules.
 Setting getAnalogSetting()
          Returns project preferences to tell whether this technology has layers for vertical NPN transistor pbase.
 Setting getDisallowStackedViasSetting()
          Returns project preferences to tell whether this Technology disallows stacked vias.
static Xml.Technology getPatchedXml(java.util.Map<TechFactory.Param,java.lang.Object> params)
          This method is called from TechFactory by reflection.
 int getRuleSet()
          Method to tell the current rule set for this Technology if Mosis is the foundry.
 Setting getRuleSetSetting()
          Method to set the rule set for this Technology.
 Setting getSecondPolysiliconSetting()
          Returns project preferences to tell a second polysilicon layer in this Technology.
protected  Poly[] getShapeOfNode(CellBackup.Memoization m, ImmutableNodeInst n, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers)
          Method to return a list of Polys that describe a given NodeInst.
 Technology.SizeCorrector getSizeCorrector(Version version, java.util.Map<Setting,java.lang.Object> projectSettings, boolean isJelib, boolean keepExtendOverMin)
           
static java.util.List<TechFactory.Param> getTechParams()
          This method is called from TechFactory by reflection.
 PortInst getTransistorBiasPort(NodeInst ni)
          Return a substrate PortInst for this transistor NodeInst
 boolean isAlternateActivePolyRules()
          Method to determine whether this Technology is using alternate Active and Poly contact rules.
 boolean isAnalog()
          Method to tell whether this technology has layers for vertical NPN transistor pbase.
 boolean isDisallowStackedVias()
          Method to determine whether this Technology disallows stacked vias.
 boolean isSecondPolysilicon()
          Method to tell the number of polysilicon layers in this Technology.
protected  XMLRules makeFactoryDesignRules()
          Method to build "factory" design rules, given the current technology settings.
 void setPrimitiveNodeSize(NodeInst ni, double width, double length)
          Method to set the size of a transistor NodeInst in this Technology.
 
Methods inherited from class com.sun.electric.technology.Technology
addArcProto, addLayer, addNodeProto, cleanUnusedNodesInLibrary, compareTo, computeShapeOfNode, convertOldArcName, convertOldNodeName, dump, findArcProto, findFoundry, findLayer, findLayerFromFunction, findNodeProto, findTechnology, findTechnology, getArcProto, getArcs, getArcsCollection, getCachedRules, getCMOS90Technology, getColorMap, getCurrent, getCurrentState, getDiffAlpha, getDiffAlphaSetting, getFactoryDesignRules, getFactoryMenuPalette, getFactoryResolution, getFactoryTransparentLayerColors, getFoundries, getGateCapacitance, getGateCapacitanceSetting, getGateIncludedSetting, getGateLengthSubtraction, getGateLengthSubtractionSetting, getGDSLayers, getGroundNetIncludedSetting, getId, getLayer, getLayer, getLayerFromOverride, getLayers, getLayersSortedByHeight, getLayersSortedByName, getMaxSeriesResistance, getMaxSeriesResistanceSetting, getMetalContactCluster, getMinCapacitance, getMinCapacitanceSetting, getMinResistance, getMinResistanceSetting, getMocmosTechnology, getMultiCutData, getNodeInstBaseRectangle, getNodes, getNodesCollection, getNodesSortedByName, getNumArcs, getNumLayers, getNumMetals, getNumMetalsSetting, getNumNodes, getNumTransparentLayers, getOldArcNames, getOldNodeNames, getParamValuesByXmlPath, getPrefFoundry, getPrefFoundrySetting, getPrimitiveFunction, getPrimitiveNode, getProjectSettings, getProjectSettingsRoot, getResistorSize, getRuleDifferences, getRuleNodeIndex, getScale, getScaleSetting, getScaleVariableName, getSelectedFoundry, getSetting, getSetting, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfNode, getShapeOfNode, getShapeOfPort, getShapeOfPort, getSpacingDistances, getSpiceHeaderLevel1, getSpiceHeaderLevel2, getSpiceHeaderLevel3, getTechDesc, getTechName, getTechnologies, getTechShortName, getTransistorActiveLength, getTransistorAltGatePort, getTransistorBasePort, getTransistorCollectorPort, getTransistorDrainPort, getTransistorEmitterPort, getTransistorGatePort, getTransistorSize, getTransistorSourcePort, getTransparentLayerColors, getTSMC180Technology, getWireRatio, getWireRatioSetting, getXmlTech, initAllTechnologies, isEasyShape, isEasyShape, isGateIncluded, isGroundNetIncluded, isLayout, isMultiCutCase, isMultiCutInTechnology, isNoDirectionalArcs, isNoNegatedArcs, isNonElectrical, isNonStandard, isNoPrimitiveNodes, isScaleRelevant, isSchematics, isStaticTechnology, isUniversalConnectivityPort, isValidVTPolyRule, isXmlTechAvailable, loadFactoryMenuPalette, makeBooleanSetting, makeDoubleSetting, makeInitialEnvironment, makeIntSetting, makeStringSetting, makeXml, newArcProto, newFoundry, parseComponentMenuXML, printlnBits, printlnSetting, sameLayer, setArcCorrection, setCachedRules, setColorMapFromLayers, setDefaultOutline, setFactoryLESettings, setFactoryParasitics, setFactoryResolution, setFactoryScale, setFactoryTransparentLayers, setNoDirectionalArcs, setNoNegatedArcs, setNonElectrical, setNonStandard, setNoPrimitiveNodes, setNotUsed, setPrimitiveFunction, setRuleVariables, setSpiceHeaderLevel1, setSpiceHeaderLevel2, setSpiceHeaderLevel3, setStaticTechnology, setTechDesc, setTechName, setTechShortName, setup, toString, whatTechnology, whatTechnology, withState, writeReplace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SCMOSRULES

public static final int SCMOSRULES
Value for standard SCMOS rules.

See Also:
Constant Field Values

SUBMRULES

public static final int SUBMRULES
Value for submicron rules.

See Also:
Constant Field Values

DEEPRULES

public static final int DEEPRULES
Value for deep rules.

See Also:
Constant Field Values

TECH_LAST_STATE

public static final Variable.Key TECH_LAST_STATE
key of Variable for saving technology state.


changeOfMetal6

public static final Version changeOfMetal6
Constructor Detail

MoCMOS

public MoCMOS(Generic generic,
              TechFactory techFactory,
              java.util.Map<TechFactory.Param,java.lang.Object> techParams,
              Xml.Technology t)
Method Detail

copyState

protected void copyState(Technology that)
SUPPORT METHODS

Overrides:
copyState in class Technology

dumpExtraProjectSettings

protected void dumpExtraProjectSettings(java.io.PrintWriter out,
                                        java.util.Map<Setting,java.lang.Object> settings)
Overrides:
dumpExtraProjectSettings in class Technology

getShapeOfNode

protected Poly[] getShapeOfNode(CellBackup.Memoization m,
                                ImmutableNodeInst n,
                                boolean electrical,
                                boolean reasonable,
                                Technology.NodeLayer[] primLayers)
Method to return a list of Polys that describe a given NodeInst. This method overrides the general one in the Technology object because of the unusual primitives in this Technology.

Overrides:
getShapeOfNode in class Technology
Parameters:
m - information about including cell which is necessary for computing
n - the ImmutableNodeInst that is being described.
electrical - true to get the "electrical" layers. This makes no sense for Schematics primitives.
reasonable - true to get only a minimal set of contact cuts in large contacts. This makes no sense for Schematics primitives.
primLayers - an array of NodeLayer objects to convert to Poly objects.
Returns:
an array of Poly objects.

genShapeOfNode

protected void genShapeOfNode(AbstractShapeBuilder b,
                              ImmutableNodeInst n,
                              PrimitiveNode pn,
                              Technology.NodeLayer[] primLayers)
Puts into shape builder s the polygons that describe node "n", given a set of NodeLayer objects to use. This method is overridden by specific Technologys.

Overrides:
genShapeOfNode in class Technology
Parameters:
b - shape builder where to put polygons
n - the ImmutableNodeInst that is being described.
pn - proto of the ImmutableNodeInst in this Technology
primLayers - an array of NodeLayer objects to convert to Poly objects. The prototype of this NodeInst must be a PrimitiveNode and not a Cell.

makeFactoryDesignRules

protected XMLRules makeFactoryDesignRules()
Method to build "factory" design rules, given the current technology settings.

Overrides:
makeFactoryDesignRules in class Technology
Returns:
the "factory" design rules for this Technology. Returns null if there is an error loading the rules.

getSizeCorrector

public Technology.SizeCorrector getSizeCorrector(Version version,
                                                 java.util.Map<Setting,java.lang.Object> projectSettings,
                                                 boolean isJelib,
                                                 boolean keepExtendOverMin)
Overrides:
getSizeCorrector in class Technology

getRuleSet

public int getRuleSet()
Method to tell the current rule set for this Technology if Mosis is the foundry.

Returns:
the current rule set for this Technology:
0: SCMOS rules
1: Submicron rules (the default)
2: Deep rules

getRuleSetSetting

public Setting getRuleSetSetting()
Method to set the rule set for this Technology.

Returns:
the new rule setting for this Technology, with values:
0: SCMOS rules
1: Submicron rules
2: Deep rules

isSecondPolysilicon

public boolean isSecondPolysilicon()
Method to tell the number of polysilicon layers in this Technology. The default is false.

Returns:
true if there are 2 polysilicon layers in this Technology. If false, there is only 1 polysilicon layer.

getSecondPolysiliconSetting

public Setting getSecondPolysiliconSetting()
Returns project preferences to tell a second polysilicon layer in this Technology.

Returns:
project preferences to tell a second polysilicon layer in this Technology.

isDisallowStackedVias

public boolean isDisallowStackedVias()
Method to determine whether this Technology disallows stacked vias. The default is false (they are allowed).

Returns:
true if the MOCMOS technology disallows stacked vias.

getDisallowStackedViasSetting

public Setting getDisallowStackedViasSetting()
Returns project preferences to tell whether this Technology disallows stacked vias.

Returns:
project preferences to tell whether this Technology disallows stacked vias.

isAlternateActivePolyRules

public boolean isAlternateActivePolyRules()
Method to determine whether this Technology is using alternate Active and Poly contact rules. The default is false.

Returns:
true if the MOCMOS technology is using alternate Active and Poly contact rules.

getAlternateActivePolyRulesSetting

public Setting getAlternateActivePolyRulesSetting()
Returns project preferences to tell whether this Technology is using alternate Active and Poly contact rules.

Returns:
project preferences to tell whether this Technology is using alternate Active and Poly contact rules.

isAnalog

public boolean isAnalog()
Method to tell whether this technology has layers for vertical NPN transistor pbase. The default is false.

Returns:
true if this Technology has layers for vertical NPN transistor pbase.

getAnalogSetting

public Setting getAnalogSetting()
Returns project preferences to tell whether this technology has layers for vertical NPN transistor pbase.

Returns:
project preferences to tell whether this technology has layers for vertical NPN transistor pbase.

convertOldVariable

public java.util.Map<Setting,java.lang.Object> convertOldVariable(java.lang.String varName,
                                                                  java.lang.Object value)
Method to convert any old-style variable information to the new options. May be overrideen in subclasses.

Overrides:
convertOldVariable in class Technology
Parameters:
varName - name of variable
value - value of variable
Returns:
true if variable was converted

getTechParams

public static java.util.List<TechFactory.Param> getTechParams()
This method is called from TechFactory by reflection. Don't remove. Returns a list of TechFactory.Params affecting this Technology

Returns:
list of TechFactory.Params affecting this Technology

getPatchedXml

public static Xml.Technology getPatchedXml(java.util.Map<TechFactory.Param,java.lang.Object> params)
This method is called from TechFactory by reflection. Don't remove. Returns patched Xml description of this Technology for specified technology params

Parameters:
params - values of technology params
Returns:
patched Xml description of this Technology

convertOldPortName

public PrimitivePort convertOldPortName(java.lang.String portName,
                                        PrimitiveNode np)
Method to convert old primitive port names to their proper PortProtos.

Overrides:
convertOldPortName in class Technology
Parameters:
portName - the unknown port name, read from an old Library.
np - the PrimitiveNode on which this port resides.
Returns:
the proper PrimitivePort to use for this name.

setPrimitiveNodeSize

public void setPrimitiveNodeSize(NodeInst ni,
                                 double width,
                                 double length)
Method to set the size of a transistor NodeInst in this Technology. Override because for MOCMOS sense of "width" and "length" are different for resistors and transistors.

Overrides:
setPrimitiveNodeSize in class Technology
Parameters:
ni - the NodeInst
width - the new width (positive values only)
length - the new length (positive values only)

getTransistorBiasPort

public PortInst getTransistorBiasPort(NodeInst ni)
Return a substrate PortInst for this transistor NodeInst

Overrides:
getTransistorBiasPort in class Technology
Parameters:
ni - the NodeInst
Returns:
a PortInst for the substrate contact of the transistor