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.Distance, Technology.DistanceContext, Technology.DistanceRule, Technology.MultiCutData, Technology.NodeLayer, Technology.SizeCorrector, Technology.TechPoint, Technology.TechSetting
 
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
cachedRules, DISK_VERSION_1, DISK_VERSION_2, DUPLICATEPOINTSAREBROKENOUTLINES, EMPTY_CONTEXT, EMPTY_LIST, factoryNodeGroups, factoryRules, foundries, HANDLEBROKENOUTLINES, LAYERS_BY_HEIGHT, LAYERS_BY_HEIGHT_LIFT_CONTACTS, N_TYPE, nodeGroups, NULL_ARRAY, oldArcNames, oldNodeNames, P_TYPE, SPECIALMENUCELL, SPECIALMENUEXPORT, SPECIALMENUHIGH, SPECIALMENUMISC, SPECIALMENUPORT, SPECIALMENUPURE, SPECIALMENUSPICE, SPECIALMENUTEXT, sysArtwork, sysFPGA, sysGeneric, sysSchematics, TECH_TMPVAR, TRANS_CONTACT, xmlTech
 
Constructor Summary
MoCMOS(Generic generic)
          Constructs MOCMOS technology without TSMC180 foundry.
MoCMOS(Generic generic, Xml.Technology t)
           
 
Method Summary
 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 dumpExtraProjectSettings(java.io.PrintWriter out)
           
 Setting getAlternateActivePolyRulesSetting()
          Returns project Setting to tell whether this Technology is using alternate Active and Poly contact rules.
 Setting getAnalogSetting()
          Returns project Setting to tell whether this technology has layers for vertical NPN transistor pbase.
 java.lang.Object[][] getDefaultNodesGrouped()
          Method to construct a default group of elements for the palette.
 Setting getDisallowStackedViasSetting()
          Returns project Setting to tell whether this Technology disallows stacked vias.
 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 Setting to tell a second polysilicon layer in this Technology.
protected  Poly[] getShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers, Layer layerOverride)
          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)
           
 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.
protected  void makeRuleSets(XmlParam.Technology t)
           
 void setPrimitiveNodeSize(NodeInst ni, double width, double length)
          Method to set the size of a transistor NodeInst in this Technology.
 void setRuleVariables(DRCRules newDRCRules)
          Method to be called from DRC:setRules
protected  void setStateNow()
          Method to set the technology to state "newstate", which encodes the number of metal layers, whether it is a deep process, and other rules.
 
Methods inherited from class com.sun.electric.technology.Technology
addArcProto, addLayer, addNodeProto, cacheTransparentLayerColors, cleanUnusedNodesInLibrary, compareTo, computeShapeOfNode, convertOldArcName, convertOldNodeName, convertOldPortName, dump, filterNodeGroups, findArcProto, findFoundry, findLayer, findLayerFromFunction, findNodeProto, findTechnology, findTechnology, getArcProto, getArcs, getArcsCollection, getCachedRules, getCMOS90Technology, getColorMap, getColorMap, getCurrent, getDiffAlpha, getDiffAlphaSetting, getDiskSettings, getFactoryColorMap, getFactoryDesignRules, getFactoryResolution, getFactoryTransparentLayerColors, getFoundries, getGateCapacitance, getGateCapacitanceSetting, getGateIncludedSetting, getGateLengthSubtraction, getGateLengthSubtractionSetting, getGDSLayers, getGroundNetIncludedSetting, getId, getIndex, getLayer, getLayerFromOverride, getLayers, getLayersSortedByHeight, getLayersSortedByName, getMaxSeriesResistance, getMaxSeriesResistanceSetting, getMinCapacitance, getMinCapacitanceSetting, getMinResistance, getMinResistanceSetting, getMocmosTechnology, getMultiCutData, getNodeInstBaseRectangle, getNodes, getNodesCollection, getNodesGrouped, getNodesGroupedXML, getNodesSortedByName, getNumArcs, getNumLayers, getNumMetals, getNumMetalsSetting, getNumNodes, getNumTransparentLayers, getOldArcNames, getOldNodeNames, getPrefComponentMenu, getPrefFoundry, getPrefFoundrySetting, getPrimitiveFunction, getPrimitiveNode, getProjectSettings, getResistorSize, getResolution, getRuleAliases, getRuleDifferences, getRuleNodeIndex, getRuleSuffix, getSavedLayerOrder, getScale, getScaleSetting, getScaleVariableName, getSelectedFoundry, getSetting, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfNode, getShapeOfNode, getShapeOfPort, getShapeOfPort, getSoftTechnologies, getSpacingDistances, getSpiceHeaderLevel1, getSpiceHeaderLevel2, getSpiceHeaderLevel3, getTechDesc, getTechName, getTechnologies, getTechnologyAllPreferences, getTechnologyPreferences, getTechnologyUserPreferences, getTechShortName, getTransistorActiveLength, getTransistorAltGatePort, getTransistorBasePort, getTransistorBiasPort, getTransistorCollectorPort, getTransistorDrainPort, getTransistorEmitterPort, getTransistorGatePort, getTransistorSize, getTransistorSourcePort, getTransparentLayerColors, getTSMC180Technology, getWireRatio, getWireRatioSetting, getXmlTech, initAllTechnologies, isEasyShape, isGateIncluded, isGroundNetIncluded, isLayout, isMultiCutCase, isMultiCutInTechnology, isNoDirectionalArcs, isNoNegatedArcs, isNonElectrical, isNonStandard, isNoPrimitiveNodes, isScaleRelevant, isSchematics, isStaticTechnology, isUniversalConnectivityPort, isValidVTPolyRule, make3d, makeBooleanSetting, makeIntSetting, makeNodeInst, makeNodeInst, makeStringSetting, makeXml, makeXmlParam, newArcProto, newFoundry, printlnBits, printlnSetting, resizeArcs, resizeXml, sameLayer, setArcCorrection, setCachedRules, setColorMap, setColorMapFromLayers, setCurrent, setDefaultOutline, setFactoryLESettings, setFactoryParasitics, setFactoryResolution, setFactoryScale, setFactoryTransparentLayers, setNodesGrouped, setNoDirectionalArcs, setNoNegatedArcs, setNonElectrical, setNonStandard, setNoPrimitiveNodes, setNotUsed, setNumTransparentLayers, setPrimitiveFunction, setResolution, setSavedLayerOrder, setSoftTechnologies, setSpiceHeaderLevel1, setSpiceHeaderLevel2, setSpiceHeaderLevel3, setState, setStaticTechnology, setTechDesc, setTechName, setTechShortName, setup, toString, whatTechnology, whatTechnology, 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,
              Xml.Technology t)

MoCMOS

public MoCMOS(Generic generic)
Constructs MOCMOS technology without TSMC180 foundry.

Method Detail

getDefaultNodesGrouped

public java.lang.Object[][] getDefaultNodesGrouped()
Method to construct a default group of elements for the palette.

Overrides:
getDefaultNodesGrouped in class Technology
Returns:
the default set of objects to display in the component menu.

setStateNow

protected void setStateNow()
Method to set the technology to state "newstate", which encodes the number of metal layers, whether it is a deep process, and other rules.

Overrides:
setStateNow in class Technology

dumpExtraProjectSettings

protected void dumpExtraProjectSettings(java.io.PrintWriter out)
Overrides:
dumpExtraProjectSettings in class Technology

makeRuleSets

protected void makeRuleSets(XmlParam.Technology t)
Overrides:
makeRuleSets in class Technology

getShapeOfNode

protected Poly[] getShapeOfNode(NodeInst ni,
                                boolean electrical,
                                boolean reasonable,
                                Technology.NodeLayer[] primLayers,
                                Layer layerOverride)
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:
ni - the NodeInst to describe.
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.
layerOverride - the layer to use for all generated polygons (if not null).
Returns:
an array of Poly objects.

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

setRuleVariables

public void setRuleVariables(DRCRules newDRCRules)
Method to be called from DRC:setRules

Overrides:
setRuleVariables in class Technology
Parameters:
newDRCRules -

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 Setting to tell a second polysilicon layer in this Technology.

Returns:
project Setting 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 Setting to tell whether this Technology disallows stacked vias.

Returns:
project Setting 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 Setting to tell whether this Technology is using alternate Active and Poly contact rules.

Returns:
project Setting 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 Setting to tell whether this technology has layers for vertical NPN transistor pbase.

Returns:
project Setting 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

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)